diff --git a/.github/ISSUE_TEMPLATE/PROBLEM_REPORT.yml b/.github/ISSUE_TEMPLATE/PROBLEM_REPORT.yml index 7abf449039..813fa74c47 100644 --- a/.github/ISSUE_TEMPLATE/PROBLEM_REPORT.yml +++ b/.github/ISSUE_TEMPLATE/PROBLEM_REPORT.yml @@ -1,6 +1,5 @@ name: Report a Problem description: Have you found something that does not work well, is too hard to do or is missing altogether? Please create a Problem Report. -title: "[Problem] " labels: ["needs triage"] body: - type: checkboxes @@ -35,6 +34,7 @@ body: - Addon Manager - Arch - Assembly + - CAM/Path - Core - Draft - Expressions @@ -44,7 +44,6 @@ body: - OpenSCAD - Part - PartDesign - - Path - Project Tools & Websites - Sketcher - Spreadsheet diff --git a/.github/labels.yml b/.github/labels.yml index e3f1298dea..8c771c9f3c 100644 --- a/.github/labels.yml +++ b/.github/labels.yml @@ -13,6 +13,9 @@ Core: Addon Manager: - 'src/Mod/AddonManager/**/*' +Materials: +- 'src/Mod/Material/**/*' + WB Arch: - 'src/Mod/Arch/**/*' @@ -37,11 +40,11 @@ WB OpenSCAD: WB Part: - 'src/Mod/Part/**/*' -WB PartDesign: +WB Part Design: - 'src/Mod/PartDesign/**/*' -WB Path: -- 'src/Mod/Path/**/*' +WB CAM: +- 'src/Mod/CAM/**/*' WB Points: - 'src/Mod/Points/**/*' diff --git a/.github/workflows/actions/runCPPTests/runAllTests/action.yml b/.github/workflows/actions/runCPPTests/runAllTests/action.yml index bc6b3972ba..3cd1376ee1 100644 --- a/.github/workflows/actions/runCPPTests/runAllTests/action.yml +++ b/.github/workflows/actions/runCPPTests/runAllTests/action.yml @@ -68,6 +68,13 @@ runs: testCommand: ${{ inputs.builddir }}/tests/Part_tests_run --gtest_output=json:${{ inputs.reportdir }}part_gtest_results.json testLogFile: ${{ inputs.reportdir }}Part_gtest_test_log.txt testName: Part + - name: C++ PartDesign tests + id: partdesign + uses: ./.github/workflows/actions/runCPPTests/runSingleTest + with: + testCommand: ${{ inputs.builddir }}/tests/PartDesign_tests_run --gtest_output=json:${{ inputs.reportdir }}partdesign_gtest_results.json + testLogFile: ${{ inputs.reportdir }}PartDesign_gtest_test_log.txt + testName: PartDesign - name: C++ Points tests id: points uses: ./.github/workflows/actions/runCPPTests/runSingleTest diff --git a/.gitmodules b/.gitmodules index 0f84846b75..42c9b757f4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "src/3rdParty/OndselSolver"] path = src/3rdParty/OndselSolver url = https://github.com/Ondsel-Development/OndselSolver.git +[submodule "tests/lib"] + path = tests/lib + url = https://github.com/google/googletest diff --git a/cMake/FindNETGEN.cmake b/cMake/FindNETGEN.cmake index 7c9563a3dd..7fbf372476 100644 --- a/cMake/FindNETGEN.cmake +++ b/cMake/FindNETGEN.cmake @@ -27,29 +27,7 @@ else(Netgen_FOUND) SET(NETGEN_DEFINITIONS -DNO_PARALLEL_THREADS -DOCCGEOMETRY) - IF(DEFINED MACPORTS_PREFIX OR DEFINED HOMEBREW_PREFIX) - # We haven't supported Netgen prior to 5.3.1 on MacOS, and the current - # plan is for the next Netgen version to be 6.1 (currently unreleased). - IF(DEFINED HOMEBREW_PREFIX) - SET(NGLIB_PREFIX ${HOMEBREW_PREFIX}) - ELSE(DEFINED HOMEBREW_PREFIX) - SET(NGLIB_PREFIX ${MACPORTS_PREFIX}) - ENDIF(DEFINED HOMEBREW_PREFIX) - - FIND_PATH(NGLIB_INCLUDE_DIR nglib.h ${NGLIB_PREFIX}/include) - - FIND_LIBRARY(NGLIB_LIBNGLIB nglib ${NGLIB_PREFIX}/lib) - FIND_LIBRARY(NGLIB_LIBMESH mesh ${NGLIB_PREFIX}/lib) - FIND_LIBRARY(NGLIB_LIBOCC occ ${NGLIB_PREFIX}/lib) - FIND_LIBRARY(NGLIB_LIBINTERFACE interface ${NGLIB_PREFIX}/lib) - SET(NGLIB_LIBRARIES ${NGLIB_LIBNGLIB} ${NGLIB_LIBMESH} - ${NGLIB_LIBOCC} ${NGLIB_LIBINTERFACE}) - - IF(NOT NETGENDATA) - SET(NETGENDATA ${NGLIB_PREFIX}/include/netgen) - ENDIF(NOT NETGENDATA) - - ELSEIF(WIN32) + IF(WIN32) FIND_PATH(NGLIB_INCLUDE_DIR NAMES nglib.h PATHS ${NETGEN_INCLUDEDIR}) SET(NETGEN_LIBS nglib mesh occ interface) SET(NGLIB_LIBRARIES "") @@ -72,7 +50,7 @@ else(Netgen_FOUND) SET(NETGENDATA netgen) ENDIF(NOT NETGENDATA) - ELSE(DEFINED MACPORTS_PREFIX OR DEFINED HOMEBREW_PREFIX) + ELSEIF(DEFINED MACPORTS_PREFIX OR DEFINED HOMEBREW_PREFIX) IF(NETGEN_ROOT) SET(NETGEN_INCLUDEDIR ${NETGEN_ROOT}/include) SET(NETGEN_LIBDIR ${NETGEN_ROOT}/lib) @@ -101,7 +79,6 @@ else(Netgen_FOUND) IF(NOT NETGENDATA) SET(NETGENDATA /usr/share/netgen/libsrc) ENDIF(NOT NETGENDATA) - ENDIF(DEFINED MACPORTS_PREFIX OR DEFINED HOMEBREW_PREFIX) FIND_PATH(NETGEN_DIR_include NAMES mydefs.hpp NO_DEFAULT_PATH PATHS ${NGLIB_INCLUDE_DIR}/include ${NETGENDATA}/include ${NETGEN_INCLUDEDIR} ${NGLIB_INCLUDE_DIR}) @@ -109,9 +86,7 @@ else(Netgen_FOUND) IF(NOT NGLIB_INCLUDE_DIR AND NOT NETGEN_DIR_include) MESSAGE(STATUS "Cannot find NETGEN header files.") ELSEIF(NOT NETGEN_VERSION) - file(STRINGS ${NETGEN_DIR_include}/mydefs.hpp NETGEN_VERSION - REGEX "#define PACKAGE_VERSION.*" - ) + file(STRINGS ${NETGEN_DIR_include}/mydefs.hpp NETGEN_VERSION REGEX "#define PACKAGE_VERSION.*") ENDIF() IF(NOT NGLIB_LIBRARIES) diff --git a/conda/conda-env.yaml b/conda/conda-env.yaml index 1bd63b1952..85f441dae3 100644 --- a/conda/conda-env.yaml +++ b/conda/conda-env.yaml @@ -3,6 +3,5 @@ channels: - conda-forge dependencies: - conda-devenv -- mamba==1.4.9 # NOTE: Pin to highest version supported by the devenv -- python==3.11.* # dependencies. If a higher version is installed, a crash - # occurs during the downgrade process. +- mamba +- python==3.11.* diff --git a/conda/environment.devenv.yml b/conda/environment.devenv.yml index fa434281b4..a2504b69e6 100644 --- a/conda/environment.devenv.yml +++ b/conda/environment.devenv.yml @@ -73,7 +73,7 @@ dependencies: - graphviz - hdf5 - libcxx -- mamba==1.4.9 +- mamba - matplotlib - ninja - numpy diff --git a/data/examples/CMakeLists.txt b/data/examples/CMakeLists.txt index 3ebfb2e6a8..8bda04eafb 100644 --- a/data/examples/CMakeLists.txt +++ b/data/examples/CMakeLists.txt @@ -6,9 +6,9 @@ SET(Examples_Files PartDesignExample.FCStd RobotExample.FCStd ArchDetail.FCStd + FemCalculixCantilever1D.FCStd FemCalculixCantilever2D.FCStd FemCalculixCantilever3D.FCStd - FemCalculixCantilever3D_newSolver.FCStd AssemblyExample.FCStd ) diff --git a/data/examples/FemCalculixCantilever1D.FCStd b/data/examples/FemCalculixCantilever1D.FCStd new file mode 100644 index 0000000000..5c0137567d Binary files /dev/null and b/data/examples/FemCalculixCantilever1D.FCStd differ diff --git a/data/examples/FemCalculixCantilever2D.FCStd b/data/examples/FemCalculixCantilever2D.FCStd index 625e5b85b0..3298567931 100644 Binary files a/data/examples/FemCalculixCantilever2D.FCStd and b/data/examples/FemCalculixCantilever2D.FCStd differ diff --git a/data/examples/FemCalculixCantilever3D.FCStd b/data/examples/FemCalculixCantilever3D.FCStd index 2dc9800e0e..39e4e59471 100644 Binary files a/data/examples/FemCalculixCantilever3D.FCStd and b/data/examples/FemCalculixCantilever3D.FCStd differ diff --git a/data/examples/FemCalculixCantilever3D_newSolver.FCStd b/data/examples/FemCalculixCantilever3D_newSolver.FCStd deleted file mode 100644 index 23894e5894..0000000000 Binary files a/data/examples/FemCalculixCantilever3D_newSolver.FCStd and /dev/null differ diff --git a/data/tests/ProjectTest.FCStd b/data/tests/ProjectTest.FCStd new file mode 100644 index 0000000000..86797eba45 Binary files /dev/null and b/data/tests/ProjectTest.FCStd differ diff --git a/data/tests/TestVRMLTextures.FCStd b/data/tests/TestVRMLTextures.FCStd new file mode 100644 index 0000000000..2c9e210d12 Binary files /dev/null and b/data/tests/TestVRMLTextures.FCStd differ diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 9efd29e297..ef5b4c610c 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -1140,7 +1140,7 @@ std::string Application::getResourceDir() #ifdef RESOURCEDIR // #6892: Conda may inject null characters => remove them std::string path = std::string(RESOURCEDIR).c_str(); - path.append("/"); + path += PATHSEP; QDir dir(QString::fromStdString(path)); if (dir.isAbsolute()) return path; @@ -1169,7 +1169,7 @@ std::string Application::getHelpDir() #ifdef DOCDIR // #6892: Conda may inject null characters => remove them std::string path = std::string(DOCDIR).c_str(); - path.append("/"); + path += PATHSEP; QDir dir(QString::fromStdString(path)); if (dir.isAbsolute()) return path; @@ -2635,7 +2635,7 @@ void Application::initConfig(int argc, char ** argv) std::string tmpPath = _pcUserParamMngr->GetGroup("BaseApp/Preferences/General")->GetASCII("TempPath"); Base::FileInfo di(tmpPath); if (di.exists() && di.isDir()) { - mConfig["AppTempPath"] = tmpPath + "/"; + mConfig["AppTempPath"] = tmpPath + PATHSEP; } @@ -3397,12 +3397,6 @@ std::string Application::FindHomePath(const char* sCall) pos = homePath.find_last_of(PATHSEP); homePath.assign(homePath,0,pos+1); - // switch to posix style - for (std::wstring::iterator it = homePath.begin(); it != homePath.end(); ++it) { - if (*it == '\\') - *it = '/'; - } - // fixes #0001638 to avoid to load DLLs from Windows' system directories before FreeCAD's bin folder std::wstring binPath = homePath; binPath += L"bin"; diff --git a/src/App/ApplicationPy.cpp b/src/App/ApplicationPy.cpp index 49b7cc28ca..9e5371fc32 100644 --- a/src/App/ApplicationPy.cpp +++ b/src/App/ApplicationPy.cpp @@ -697,7 +697,8 @@ PyObject* Application::sGetUserMacroPath(PyObject * /*self*/, PyObject *args) if (Base::asBoolean(actual)) { macroDir = App::GetApplication(). GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro") - ->GetASCII("MacroPath",macroDir.c_str()); + ->GetASCII("MacroPath", macroDir.c_str()); + std::replace(macroDir.begin(), macroDir.end(), '/', PATHSEP); } Py::String user_macro_dir(macroDir,"utf-8"); diff --git a/src/App/CMakeLists.txt b/src/App/CMakeLists.txt index 100addc08b..c809a0aeec 100644 --- a/src/App/CMakeLists.txt +++ b/src/App/CMakeLists.txt @@ -165,6 +165,7 @@ SET(Document_CPP_SRCS InventorObject.cpp MeasureDistance.cpp Placement.cpp + ProjectFile.cpp OriginFeature.cpp Range.cpp Transactions.cpp @@ -211,6 +212,7 @@ SET(Document_HPP_SRCS InventorObject.h MeasureDistance.h Placement.h + ProjectFile.h OriginFeature.h Range.h Transactions.h diff --git a/src/App/ComplexGeoData.cpp b/src/App/ComplexGeoData.cpp index 95df883b8f..cf99b2a22c 100644 --- a/src/App/ComplexGeoData.cpp +++ b/src/App/ComplexGeoData.cpp @@ -189,6 +189,17 @@ const std::string &ComplexGeoData::elementMapPrefix() { return prefix; } +std::string ComplexGeoData::getElementMapVersion() const { + return "4"; +} + +bool ComplexGeoData::checkElementMapVersion(const char * ver) const +{ + return !boost::equals(ver, "3") + && !boost::equals(ver, "4") + && !boost::starts_with(ver, "3."); +} + size_t ComplexGeoData::getElementMapSize(bool flush) const { if (flush) { @@ -626,7 +637,6 @@ unsigned int ComplexGeoData::getMemSize() const return 0; } - void ComplexGeoData::setMappedChildElements(const std::vector & children) { // DO NOT reset element map if there is one. Because we allow mixing child @@ -653,5 +663,18 @@ void ComplexGeoData::beforeSave() const } } +void ComplexGeoData::hashChildMaps() +{ + flushElementMap(); + if (_elementMap) + _elementMap->hashChildMaps(Tag); +} + +bool ComplexGeoData::hasChildElementMap() const +{ + flushElementMap(); + return _elementMap && _elementMap->hasChildElementMap(); +} + // NOLINTEND(cppcoreguidelines-pro-bounds-pointer-arithmetic) diff --git a/src/App/ComplexGeoData.h b/src/App/ComplexGeoData.h index a7a4fa290c..9fb24abc27 100644 --- a/src/App/ComplexGeoData.h +++ b/src/App/ComplexGeoData.h @@ -52,7 +52,7 @@ using BoundBox3d = BoundBox3; namespace Data { -struct MappedChildElements; +//struct MappedChildElements; /** Segments * Sub-element type of the ComplexGeoData type @@ -242,6 +242,12 @@ public: std::vector > getElementMappedNames(const IndexedName & element, bool needUnmapped=false) const; + /// Hash the child element map postfixes to shorten element name from hierarchical maps + void hashChildMaps(); + + /// Check if there is child element map + bool hasChildElementMap() const; + /// Append the Tag (if and only if it is non zero) into the element map virtual void reTagElementMap(long tag, App::StringHasherRef hasher, @@ -270,12 +276,8 @@ public: * * @return Returns the existing element map. */ - virtual ElementMapPtr resetElementMap(ElementMapPtr elementMap = ElementMapPtr(), - ElementMapResetPolicy forceEmpty = ForceEmptyMap) + virtual ElementMapPtr resetElementMap(ElementMapPtr elementMap = ElementMapPtr()) { - if (!elementMap && forceEmpty == ForceEmptyMap) { - elementMap = std::make_shared(); - } _elementMap.swap(elementMap); return elementMap; } @@ -289,9 +291,27 @@ public: /// Get the current element map size size_t getElementMapSize(bool flush=true) const; + /// Return the current element map version + virtual std::string getElementMapVersion() const; + + /// Return true to signal element map version change + virtual bool checkElementMapVersion(const char * ver) const; + /// Check if the given sub-name only contains an element name - static bool isElementName(const char *subName) { - return (subName != nullptr) && (*subName != 0) && findElementName(subName)==subName; + static bool isElementName(const char* subName) + { + return (subName != nullptr) && (*subName != 0) && findElementName(subName) == subName; + } + + /** Iterate through the history of the give element name with a given callback + * + * @param name: the input element name + * @param cb: trace callback with call signature. + * @sa TraceCallback + */ + void traceElement(const MappedName& name, TraceCallback cb) const + { + _elementMap->traceElement(name, Tag, cb); } /** Flush an internal buffering for element mapping */ diff --git a/src/App/ComplexGeoDataPy.xml b/src/App/ComplexGeoDataPy.xml index 2202ccf8d8..c60f905826 100644 --- a/src/App/ComplexGeoDataPy.xml +++ b/src/App/ComplexGeoDataPy.xml @@ -1,13 +1,13 @@ - @@ -16,7 +16,7 @@ - Return a list of element types + Return a list of element types present in the complex geometric data @@ -66,7 +66,7 @@ - Get the BoundBox of the object + Get the bounding box (BoundBox) of the complex geometric data. diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 0c7009717b..149a47fd7d 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -798,7 +798,7 @@ Document::Document(const char* documentName) #ifdef FC_LOGUPDATECHAIN Console().Log("+App::Document: %p\n", this); #endif - std::string CreationDateString = Base::TimeInfo::currentDateTimeString(); + std::string CreationDateString = Base::Tools::currentDateTimeString(); std::string Author = App::GetApplication() .GetParameterGroupByPath("User parameter:BaseApp/Preferences/Document") ->GetASCII("prefAuthor", ""); @@ -1606,7 +1606,7 @@ bool Document::save () TipName.setValue(Tip.getValue()->getNameInDocument()); } - std::string LastModifiedDateString = Base::TimeInfo::currentDateTimeString(); + std::string LastModifiedDateString = Base::Tools::currentDateTimeString(); LastModifiedDate.setValue(LastModifiedDateString.c_str()); // set author if needed bool saveAuthor = App::GetApplication().GetParameterGroupByPath @@ -1799,7 +1799,7 @@ private: if (useFCBakExtension) { std::stringstream str; Base::TimeInfo ti = fi.lastModified(); - time_t s =ti.getSeconds(); + time_t s = ti.getTime_t(); struct tm * timeinfo = localtime(& s); char buffer[100]; diff --git a/src/App/DocumentObject.cpp b/src/App/DocumentObject.cpp index 708b6ea3b9..5fa4e91c93 100644 --- a/src/App/DocumentObject.cpp +++ b/src/App/DocumentObject.cpp @@ -213,6 +213,28 @@ void DocumentObject::touch(bool noRecompute) _pDoc->signalTouchedObject(*this); } +/** + * @brief Set this document object freezed. + * A freezed document object does not recompute ever. + */ +void DocumentObject::freeze() +{ + StatusBits.set(ObjectStatus::Freeze); + // use the signalTouchedObject to refresh the Gui + if (_pDoc) + _pDoc->signalTouchedObject(*this); +} + +/** + * @brief Set this document object unfreezed. + * A freezed document object does not recompute ever. + */ +void DocumentObject::unfreeze(bool noRecompute) +{ + StatusBits.set(ObjectStatus::Freeze, false); + touch(noRecompute); +} + /** * @brief Check whether the document object is touched or not. * @return true if document object is touched, false if not. @@ -240,6 +262,9 @@ void DocumentObject::enforceRecompute() */ bool DocumentObject::mustRecompute() const { + if (StatusBits.test(ObjectStatus::Freeze)) + return false; + if (StatusBits.test(ObjectStatus::Enforce)) return true; @@ -723,9 +748,33 @@ void DocumentObject::onBeforeChange(const Property* prop) signalBeforeChange(*this,*prop); } +void DocumentObject::onEarlyChange(const Property *prop) +{ + if(GetApplication().isClosingAll()) + return; + + if(!GetApplication().isRestoring() && + !prop->testStatus(Property::PartialTrigger) && + getDocument() && + getDocument()->testStatus(Document::PartialDoc)) + { + static App::Document *warnedDoc; + if(warnedDoc != getDocument()) { + warnedDoc = getDocument(); + FC_WARN("Changes to partial loaded document will not be saved: " + << getFullName() << '.' << prop->getName()); + } + } + + signalEarlyChanged(*this, *prop); +} + /// get called by the container when a Property was changed void DocumentObject::onChanged(const Property* prop) { + if (isFreezed()) + return; + if(GetApplication().isClosingAll()) return; diff --git a/src/App/DocumentObject.h b/src/App/DocumentObject.h index b9b745ad54..4cc24107d3 100644 --- a/src/App/DocumentObject.h +++ b/src/App/DocumentObject.h @@ -67,6 +67,7 @@ enum ObjectStatus { PendingTransactionUpdate = 18, // mark that the object expects a call to onUndoRedoFinished() after transaction is finished. RecomputeExtension = 19, // mark the object to recompute its extensions TouchOnColorChange = 20, // inform view provider touch object on color change + Freeze = 21, // do not recompute ever }; /** Return object for feature execution @@ -110,6 +111,8 @@ public: boost::signals2::signal signalBeforeChange; /// signal on changed property of this object boost::signals2::signal signalChanged; + /// signal on changed property of this object before document scoped signalChangedObject + boost::signals2::signal signalEarlyChanged; /// returns the type name of the ViewProvider virtual const char* getViewProviderName() const { @@ -177,6 +180,12 @@ public: bool isRestoring() const {return StatusBits.test(ObjectStatus::Restore);} /// returns true if this objects is currently removed from the document bool isRemoving() const {return StatusBits.test(ObjectStatus::Remove);} + /// set this document object freezed (prevent recomputation) + void freeze(); + /// set this document object unfreezed (and touch it) + void unfreeze(bool noRecompute=false); + /// returns true if this objects is currently freezed + bool isFreezed() const {return StatusBits.test(ObjectStatus::Freeze);} /// return the status bits unsigned long getStatus() const {return StatusBits.to_ulong();} bool testStatus(ObjectStatus pos) const {return StatusBits.test(size_t(pos));} @@ -607,6 +616,8 @@ protected: void onBeforeChange(const Property* prop) override; /// get called by the container when a property was changed void onChanged(const Property* prop) override; + /// get called by the container when a property was changed + void onEarlyChange(const Property* prop) override; /// get called after a document has been fully restored virtual void onDocumentRestored(); /// get called after an undo/redo transaction is finished diff --git a/src/App/ElementMap.cpp b/src/App/ElementMap.cpp index d6263dd80e..d6012c7215 100644 --- a/src/App/ElementMap.cpp +++ b/src/App/ElementMap.cpp @@ -11,6 +11,8 @@ #include "App/Application.h" #include "Base/Console.h" +#include "Document.h" +#include "DocumentObject.h" #include #include @@ -562,6 +564,13 @@ MappedName ElementMap::setElementName(const IndexedName& element, const MappedNa } } + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + + // if(!_ElementMap) + // resetElementMap(std::make_shared()); + ElementIDRefs _sid; if (!sid) { sid = &_sid; @@ -1341,5 +1350,94 @@ long ElementMap::getElementHistory(const MappedName& name, long masterTag, Mappe } } +void ElementMap::traceElement(const MappedName& name, long masterTag, TraceCallback cb) const +{ + long encodedTag = 0; + int len = 0; + + auto pos = name.findTagInElementName(&encodedTag, &len, nullptr, nullptr, true); + if (cb(name, len, encodedTag, masterTag) || pos < 0) { + return; + } + + if (name.startsWith(POSTFIX_EXTERNAL_TAG, len)) { + return; + } + + std::set tagSet; + + std::vector names; + if (masterTag) { + tagSet.insert(std::abs(masterTag)); + } + if (encodedTag) { + tagSet.insert(std::abs(encodedTag)); + } + names.push_back(name); + + masterTag = encodedTag; + MappedName tmp; + bool first = true; + + // TODO: element tracing without object is inherently unsafe, because of + // possible external linking object which means the element may be encoded + // using external string table. Looking up the wrong table may accidentally + // cause circular mapping, and is actually quite easy to reproduce. See + // + // https://github.com/realthunder/FreeCAD_assembly3/issues/968 + // + // An arbitrary depth limit is set here to not waste time. 'tagSet' above is + // also used for early detection of 'recursive' mapping. + + for (int index = 0; index < 50; ++index) { + if (!len || len > pos) { + return; + } + if (first) { + first = false; + size_t offset = 0; + if (name.startsWith(ELEMENT_MAP_PREFIX)) { + offset = ELEMENT_MAP_PREFIX_SIZE; + } + tmp = MappedName(name, offset, len); + } + else { + tmp = MappedName(tmp, 0, len); + } + tmp = dehashElementName(tmp); + names.push_back(tmp); + encodedTag = 0; + pos = tmp.findTagInElementName(&encodedTag, &len, nullptr, nullptr, true); + if (pos >= 0 && tmp.startsWith(POSTFIX_EXTERNAL_TAG, len)) { + break; + } + + if (encodedTag && masterTag != std::abs(encodedTag) + && !tagSet.insert(std::abs(encodedTag)).second) { + if (FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) { + FC_WARN("circular element mapping"); + if (FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_TRACE)) { + auto doc = App::GetApplication().getActiveDocument(); + if (doc) { + auto obj = doc->getObjectByID(masterTag); + if (obj) { + FC_LOG("\t" << obj->getFullName() << obj->getFullName() << "." << name); + } + } + for (auto& errname : names) { + FC_ERR("\t" << errname); + } + } + } + break; + } + + if (cb(tmp, len, encodedTag, masterTag) || pos < 0) { + return; + } + masterTag = encodedTag; + } +} + }// Namespace Data diff --git a/src/App/ElementMap.h b/src/App/ElementMap.h index 195b6020dd..1902210ef9 100644 --- a/src/App/ElementMap.h +++ b/src/App/ElementMap.h @@ -45,6 +45,21 @@ namespace Data class ElementMap; using ElementMapPtr = std::shared_ptr; +/** Element trace callback + * + * The callback has the following call signature + * (const std::string &name, size_t offset, long encodedTag, long tag) -> bool + * + * @param name: the current element name. + * @param offset: the offset skipping the encoded element name for the next iteration. + * @param encodedTag: the tag encoded inside the current element, which is usually the tag + * of the previous step in the shape history. + * @param tag: the tag of the current shape element. + * + * @sa traceElement() + */ +typedef std::function TraceCallback; + /* This class provides for ComplexGeoData's ability to provide proper naming. * Specifically, ComplexGeoData uses this class for it's `_id` property. * Most of the operations work with the `indexedNames` and `mappedNames` maps. @@ -185,6 +200,15 @@ public: long masterTag, MappedName *original=nullptr, std::vector *history=nullptr) const; + /** Iterate through the history of the give element name with a given callback + * + * @param name: the input element name + * @param cb: trace callback with call signature. + * @sa TraceCallback + */ + void traceElement(const MappedName& name, long masterTag, TraceCallback cb) const; + + private: /** Serialize this map * @param stream: serialized stream diff --git a/src/App/ExtensionContainer.h b/src/App/ExtensionContainer.h index 68517fda3d..9a3b0e6fc0 100644 --- a/src/App/ExtensionContainer.h +++ b/src/App/ExtensionContainer.h @@ -125,6 +125,11 @@ public: bool hasExtensions() const; App::Extension* getExtension(Base::Type, bool derived = true, bool no_except=false) const; App::Extension* getExtension(const std::string& name) const; //this version does not check derived classes + // this version checks for derived types and doesn't throw + template + ExtensionT* getExtension() const { + return static_cast(getExtension(ExtensionT::getExtensionClassTypeId(), true, true)); + } //returns first of type (or derived from) and throws otherwise template diff --git a/src/App/GroupExtension.h b/src/App/GroupExtension.h index 9635ef536d..810ff0d410 100644 --- a/src/App/GroupExtension.h +++ b/src/App/GroupExtension.h @@ -147,6 +147,7 @@ public: //override the documentobjectextension functions to make them available in python bool allowObject(DocumentObject* obj) override { + Base::PyGILStateLocker locker; Py::Object pyobj = Py::asObject(obj->getPyObject()); EXTENSION_PROXY_ONEARG(allowObject, pyobj); diff --git a/src/App/IndexedName.h b/src/App/IndexedName.h index 85282b9545..7b152a2506 100644 --- a/src/App/IndexedName.h +++ b/src/App/IndexedName.h @@ -129,12 +129,16 @@ public: /// include the index. /// /// \param buffer A (possibly non-empty) string buffer to append the name to. - void appendToStringBuffer(std::string & buffer) const + /// \return A const char pointer to the name we appended to the buffer. + const char * appendToStringBuffer(std::string & buffer) const { + // Note! buffer is not cleared on purpose. + std::size_t offset = buffer.size(); buffer += this->type; if (this->index > 0) { buffer += std::to_string(this->index); } + return buffer.c_str() + offset; } /// Create and return a new std::string with this name in it. diff --git a/src/App/Link.cpp b/src/App/Link.cpp index 4328a2ebe1..088143bfb5 100644 --- a/src/App/Link.cpp +++ b/src/App/Link.cpp @@ -319,6 +319,12 @@ App::DocumentObjectExecReturn *LinkBaseExtension::extensionExecute() { syncCopyOnChange(); } + // the previous linked object could be deleted by syncCopyOnChange - #12281 + linked = getTrueLinkedObject(true); + if(!linked) { + return new App::DocumentObjectExecReturn("Error in processing variable link"); + } + PropertyPythonObject *proxy = nullptr; if(getLinkExecuteProperty() && !boost::iequals(getLinkExecuteValue(), "none") diff --git a/src/App/MappedElement.cpp b/src/App/MappedElement.cpp index 3a0c134945..137c0e8883 100644 --- a/src/App/MappedElement.cpp +++ b/src/App/MappedElement.cpp @@ -28,6 +28,7 @@ # include #endif +#include "DocumentObject.h" #include "MappedElement.h" using namespace Data; @@ -161,4 +162,11 @@ bool ElementNameComparator::operator()(const MappedName& leftName, } } return leftName.size() < rightName.size(); -} \ No newline at end of file +} + +HistoryItem::HistoryItem(App::DocumentObject *obj, const Data::MappedName &name) + :obj(obj),tag(0),element(name) +{ + if(obj) + tag = obj->getID(); +} diff --git a/src/App/MappedElement.h b/src/App/MappedElement.h index 2e1d63e60a..8c49016686 100644 --- a/src/App/MappedElement.h +++ b/src/App/MappedElement.h @@ -99,6 +99,15 @@ struct AppExport MappedElement } }; +struct AppExport HistoryItem { + App::DocumentObject *obj; + long tag; + Data::MappedName element; + Data::IndexedName index; + std::vector intermediates; + HistoryItem(App::DocumentObject *obj, const Data::MappedName &name); +}; + struct AppExport ElementNameComparator { /** Comparison function to make topo name more stable * diff --git a/src/App/MappedName.h b/src/App/MappedName.h index 355533e1bd..93c79682b6 100644 --- a/src/App/MappedName.h +++ b/src/App/MappedName.h @@ -332,7 +332,7 @@ public: MappedName& operator+=(const char* other) { if (other && (other[0] != 0)) { - this->postfix.append(other, -1); + this->postfix.append(other, static_cast(qstrlen(other))); } return *this; } diff --git a/src/App/ProjectFile.cpp b/src/App/ProjectFile.cpp new file mode 100644 index 0000000000..316d185689 --- /dev/null +++ b/src/App/ProjectFile.cpp @@ -0,0 +1,708 @@ +// 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" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "ProjectFile.h" +#include "DocumentObject.h" +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_USE +using namespace App; + +namespace { +class DocumentMetadata +{ +public: + explicit DocumentMetadata(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* xmlDocument) + : xmlDocument{xmlDocument} + {} + + ProjectFile::Metadata getMetadata() const + { + return metadata; + } + + void readXML() + { + readProgramVersion(); + + std::map propMap = initMap(); + + DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStr("Properties").unicodeForm()); + for (XMLSize_t i = 0; i < nodes->getLength(); i++) { + DOMNode* node = nodes->item(i); + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + auto elem = static_cast(node); // NOLINT + DOMNodeList* propList = elem->getElementsByTagName(XStr("Property").unicodeForm()); + for (XMLSize_t j = 0; j < propList->getLength(); j++) { + DOMNode* propNode = propList->item(j); + readProperty(propNode, propMap); + } + } + break; + } + + setMetadata(propMap); + } + +private: + void readProgramVersion() + { + if (DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStr("Document").unicodeForm())) { + for (XMLSize_t i = 0; i < nodes->getLength(); i++) { + DOMNode* node = nodes->item(i); + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + DOMNode* nameAttr = node->getAttributes()->getNamedItem(XStr("ProgramVersion").unicodeForm()); + if (nameAttr) { + std::string value = StrX(nameAttr->getNodeValue()).c_str(); + metadata.programVersion = value; + break; + } + } + } + } + } + static std::map initMap() + { + // clang-format off + std::map propMap = {{"Comment", ""}, + {"Company", ""}, + {"CreatedBy", ""}, + {"CreationDate", ""}, + {"Label", ""}, + {"LastModifiedBy", ""}, + {"LastModifiedDate", ""}, + {"License", ""}, + {"LicenseURL", ""}, + {"Uid", ""}}; + return propMap; + // clang-format on + } + + void setMetadata(const std::map& propMap) + { + metadata.comment = propMap.at("Comment"); + metadata.company = propMap.at("Company"); + metadata.createdBy = propMap.at("CreatedBy"); + metadata.creationDate = propMap.at("CreationDate"); + metadata.label = propMap.at("Label"); + metadata.lastModifiedBy = propMap.at("LastModifiedBy"); + metadata.lastModifiedDate = propMap.at("LastModifiedDate"); + metadata.license = propMap.at("License"); + metadata.licenseURL = propMap.at("LicenseURL"); + metadata.uuid = propMap.at("Uid"); + } + + static void readProperty(DOMNode* propNode, std::map& propMap) + { + DOMNode* nameAttr = propNode->getAttributes()->getNamedItem(XStr("name").unicodeForm()); + if (nameAttr) { + std::string name = StrX(nameAttr->getNodeValue()).c_str(); + auto it = propMap.find(name); + if (it != propMap.end()) { + it->second = readValue(propNode); + } + } + } + + static std::string readValue(DOMNode* node) + { + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + if (DOMElement* child = static_cast(node)->getFirstElementChild()) { // NOLINT + if (DOMNode* nameAttr = child->getAttributes()->getNamedItem(XStr("value").unicodeForm())) { + std::string value = StrX(nameAttr->getNodeValue()).c_str(); + return value; + } + } + } + + return {}; + } + +private: + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* xmlDocument; + ProjectFile::Metadata metadata; +}; +} + +ProjectFile::ProjectFile() + : xmlDocument(nullptr) +{} + +ProjectFile::ProjectFile(std::string zipArchive) + : stdFile(std::move(zipArchive)) + , xmlDocument(nullptr) +{} + +ProjectFile::~ProjectFile() +{ + delete xmlDocument; +} + +void ProjectFile::setProjectFile(const std::string& zipArchive) +{ + stdFile = zipArchive; + delete xmlDocument; + xmlDocument = nullptr; +} + +bool ProjectFile::loadDocument() +{ + if (xmlDocument) { + return true; // already loaded + } + + zipios::ZipFile project(stdFile); + if (!project.isValid()) { + return false; + } + std::unique_ptr str(project.getInputStream("Document.xml")); + if (str) { + std::unique_ptr parser(new XercesDOMParser); + parser->setValidationScheme(XercesDOMParser::Val_Auto); + parser->setDoNamespaces(false); + parser->setDoSchema(false); + parser->setValidationSchemaFullChecking(false); + parser->setCreateEntityReferenceNodes(false); + + try { + Base::StdInputSource inputSource(*str, stdFile.c_str()); + parser->parse(inputSource); + xmlDocument = parser->adoptDocument(); + return true; + } + catch (const XMLException&) { + return false; + } + catch (const DOMException&) { + return false; + } + } + + return false; +} + +ProjectFile::Metadata ProjectFile::getMetadata() const +{ + if (!xmlDocument) { + return {}; + } + + DocumentMetadata reader(xmlDocument); + reader.readXML(); + return reader.getMetadata(); +} + +std::list ProjectFile::getObjects() const +{ + std::list names; + if (!xmlDocument) { + return names; + } + + DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStr("Objects").unicodeForm()); + for (XMLSize_t i = 0; i < nodes->getLength(); i++) { + DOMNode* node = nodes->item(i); + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + DOMNodeList* objectList = + static_cast(node)->getElementsByTagName(XStr("Object").unicodeForm()); // NOLINT + for (XMLSize_t j = 0; j < objectList->getLength(); j++) { + DOMNode* objectNode = objectList->item(j); + DOMNode* typeAttr = + objectNode->getAttributes()->getNamedItem(XStr("type").unicodeForm()); + DOMNode* nameAttr = + objectNode->getAttributes()->getNamedItem(XStr("name").unicodeForm()); + if (typeAttr && nameAttr) { + Object obj; + obj.name = StrX(nameAttr->getNodeValue()).c_str(); + obj.type = Base::Type::fromName(StrX(typeAttr->getNodeValue()).c_str()); + names.push_back(obj); + } + } + } + } + + return names; +} + +std::list ProjectFile::getObjectsOfType(const Base::Type& typeId) const +{ + std::list names; + if (!xmlDocument) { + return names; + } + + DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStr("Objects").unicodeForm()); + for (XMLSize_t i = 0; i < nodes->getLength(); i++) { + DOMNode* node = nodes->item(i); + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + DOMNodeList* objectList = + static_cast(node)->getElementsByTagName(XStr("Object").unicodeForm()); // NOLINT + for (XMLSize_t j = 0; j < objectList->getLength(); j++) { + DOMNode* objectNode = objectList->item(j); + DOMNode* typeAttr = + objectNode->getAttributes()->getNamedItem(XStr("type").unicodeForm()); + DOMNode* nameAttr = + objectNode->getAttributes()->getNamedItem(XStr("name").unicodeForm()); + if (typeAttr && nameAttr) { + if (Base::Type::fromName(StrX(typeAttr->getNodeValue()).c_str()) == typeId) { + names.emplace_back(StrX(nameAttr->getNodeValue()).c_str()); + } + } + } + } + } + + return names; +} + +bool ProjectFile::restoreObject(const std::string& name, + App::PropertyContainer* obj, + bool verbose) +{ + Base::FileInfo fi(stdFile); + Base::ifstream file(fi, std::ios::in | std::ios::binary); + + zipios::ZipInputStream zipstream(file); + Base::XMLReader reader(stdFile.c_str(), zipstream); + reader.setVerbose(verbose); + + if (!reader.isValid()) { + return false; + } + + // skip document properties + reader.readElement("Properties"); + reader.readEndElement("Properties"); + + // skip objects + reader.readElement("Objects"); + reader.readEndElement("Objects"); + + reader.readElement("ObjectData"); + long Cnt = reader.getAttributeAsInteger("Count"); + for (long i = 0; i < Cnt; i++) { + reader.readElement("Object"); + std::string nameAttr = reader.getAttribute("name"); + + if (nameAttr == name) { + // obj->StatusBits.set(4); + obj->Restore(reader); + // obj->StatusBits.reset(4); + } + reader.readEndElement("Object"); + } + reader.readEndElement("ObjectData"); + + reader.readFiles(zipstream); + + return true; +} + +Base::Type ProjectFile::getTypeId(const std::string& name) const +{ + // + // + // + if (!xmlDocument) { + return Base::Type::badType(); + } + + DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStr("Objects").unicodeForm()); + for (XMLSize_t i = 0; i < nodes->getLength(); i++) { + DOMNode* node = nodes->item(i); + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + DOMNodeList* objectList = + static_cast(node)->getElementsByTagName(XStr("Object").unicodeForm()); // NOLINT + for (XMLSize_t j = 0; j < objectList->getLength(); j++) { + DOMNode* objectNode = objectList->item(j); + DOMNode* typeAttr = + objectNode->getAttributes()->getNamedItem(XStr("type").unicodeForm()); + DOMNode* nameAttr = + objectNode->getAttributes()->getNamedItem(XStr("name").unicodeForm()); + if (typeAttr && nameAttr) { + if (strcmp(name.c_str(), StrX(nameAttr->getNodeValue()).c_str()) == 0) { + std::string typeId = StrX(typeAttr->getNodeValue()).c_str(); + return Base::Type::fromName(typeId.c_str()); + } + } + } + } + } + + return Base::Type::badType(); +} + +std::list +ProjectFile::getPropertyFiles(const std::string& name) const +{ + // + // + // + // + // + // + // + // + // + if (!xmlDocument) { + return {}; + } + + std::list files; + DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStr("ObjectData").unicodeForm()); + for (XMLSize_t i = 0; i < nodes->getLength(); i++) { + DOMNode* node = nodes->item(i); + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + DOMNodeList* objectList = + static_cast(node)->getElementsByTagName(XStr("Object").unicodeForm()); // NOLINT + for (XMLSize_t j = 0; j < objectList->getLength(); j++) { + DOMNode* objectNode = objectList->item(j); + DOMNode* nameAttr = + objectNode->getAttributes()->getNamedItem(XStr("name").unicodeForm()); + if (nameAttr && strcmp(name.c_str(), StrX(nameAttr->getNodeValue()).c_str()) == 0) { + // now go recursively through the sub-tree (i.e. the properties) and collect + // every file attribute + findFiles(objectNode, files); + break; + } + } + } + } + return files; +} + +void ProjectFile::findFiles(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, + std::list& files) const +{ + if (node->hasAttributes()) { + ProjectFile::PropertyFile prop; + DOMNode* fileAttr = node->getAttributes()->getNamedItem(XStr("file").unicodeForm()); + if (fileAttr) { + DOMNode* parentNode = node->getParentNode(); + if (parentNode) { + DOMNode* nameAttr = + parentNode->getAttributes()->getNamedItem(XStr("name").unicodeForm()); + if (nameAttr) { + prop.name = StrX(nameAttr->getNodeValue()).c_str(); + } + + DOMNode* typeAttr = + parentNode->getAttributes()->getNamedItem(XStr("type").unicodeForm()); + if (typeAttr) { + prop.type = Base::Type::fromName(StrX(typeAttr->getNodeValue()).c_str()); + } + } + + prop.file = StrX(fileAttr->getNodeValue()).c_str(); + files.push_back(prop); + } + } + + DOMNodeList* subNodes = node->getChildNodes(); + for (XMLSize_t i = 0; i < subNodes->getLength(); i++) { + DOMNode* child = subNodes->item(i); + findFiles(child, files); + } +} + +std::list ProjectFile::getInputFiles(const std::string& name) const +{ + // + // + // + // + // + // + // + // + // + if (!xmlDocument) { + return {}; + } + + std::list files; + DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStr("ObjectData").unicodeForm()); + for (XMLSize_t i = 0; i < nodes->getLength(); i++) { + DOMNode* node = nodes->item(i); + if (node->getNodeType() == DOMNode::ELEMENT_NODE) { + DOMNodeList* objectList = + static_cast(node)->getElementsByTagName(XStr("Object").unicodeForm()); // NOLINT + for (XMLSize_t j = 0; j < objectList->getLength(); j++) { + DOMNode* objectNode = objectList->item(j); + DOMNode* nameAttr = + objectNode->getAttributes()->getNamedItem(XStr("name").unicodeForm()); + if (nameAttr && strcmp(name.c_str(), StrX(nameAttr->getNodeValue()).c_str()) == 0) { + // now go recursively through the sub-tree (i.e. the properties) and collect + // every file attribute + findFiles(objectNode, files); + break; + } + } + } + } + return files; +} + +void ProjectFile::findFiles(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, + std::list& files) const +{ + if (node->hasAttributes()) { + DOMNode* fileAttr = node->getAttributes()->getNamedItem(XStr("file").unicodeForm()); + if (fileAttr) { + files.emplace_back(StrX(fileAttr->getNodeValue()).c_str()); + } + } + + DOMNodeList* subNodes = node->getChildNodes(); + for (XMLSize_t i = 0; i < subNodes->getLength(); i++) { + DOMNode* child = subNodes->item(i); + findFiles(child, files); + } +} + +std::string ProjectFile::extractInputFile(const std::string& name) +{ + zipios::ZipFile project(stdFile); + std::unique_ptr str(project.getInputStream(name)); + if (str) { + // write it to a tmp. file as writing to the string stream + // might take too long + Base::FileInfo fi(Base::FileInfo::getTempFileName()); + Base::ofstream file(fi, std::ios::out | std::ios::binary); + std::streambuf* buf = file.rdbuf(); + (*str) >> buf; + file.flush(); + file.close(); + return fi.filePath(); + } + + return {}; +} + +void ProjectFile::readInputFile(const std::string& name, std::ostream& str) +{ + Base::FileInfo fi(extractInputFile(name)); + if (fi.exists()) { + Base::ifstream file(fi, std::ios::in | std::ios::binary); + file >> str.rdbuf(); + file.close(); + fi.deleteFile(); + } +} + +// Read the given input file from the zip directly into the given stream (not using a temporary +// file) +void ProjectFile::readInputFileDirect(const std::string& name, std::ostream& str) +{ + zipios::ZipFile project(stdFile); + std::unique_ptr istr(project.getInputStream(name)); + if (istr) { + *istr >> str.rdbuf(); + } +} + +std::string ProjectFile::replaceInputFile(const std::string& name, std::istream& inp) +{ + // create a new zip file with the name '.' + std::string uuid = Base::Uuid::createUuid(); + std::string fn = stdFile; + fn += "."; + fn += uuid; + Base::FileInfo tmp(fn); + Base::ofstream newZip(tmp, std::ios::out | std::ios::binary); + + // standard compression + const int compressionLevel = 6; + zipios::ZipOutputStream outZip(newZip); + outZip.setComment("FreeCAD Document"); + outZip.setLevel(compressionLevel); + + // open the original zip file + zipios::ZipFile project(stdFile); + zipios::ConstEntries files = project.entries(); + for (const auto& it : files) { + std::string file = it->getFileName(); + outZip.putNextEntry(file); + if (file == name) { + inp >> outZip.rdbuf(); + } + else { + std::unique_ptr str(project.getInputStream(file)); + if (str) { + *str >> outZip.rdbuf(); + } + } + } + + project.close(); + outZip.close(); + newZip.close(); + + return fn; +} + +std::string ProjectFile::replaceInputFiles(const std::map& inp) +{ + // create a new zip file with the name '.' + std::string uuid = Base::Uuid::createUuid(); + std::string fn = stdFile; + fn += "."; + fn += uuid; + Base::FileInfo tmp(fn); + Base::ofstream newZip(tmp, std::ios::out | std::ios::binary); + + // standard compression + const int compressionLevel = 6; + zipios::ZipOutputStream outZip(newZip); + outZip.setComment("FreeCAD Document"); + outZip.setLevel(compressionLevel); + + // open the original zip file + zipios::ZipFile project(stdFile); + zipios::ConstEntries files = project.entries(); + for (const auto& it : files) { + std::string file = it->getFileName(); + outZip.putNextEntry(file); + + auto jt = inp.find(file); + if (jt != inp.end()) { + *jt->second >> outZip.rdbuf(); + } + else { + std::unique_ptr str(project.getInputStream(file)); + if (str) { + *str >> outZip.rdbuf(); + } + } + } + + project.close(); + outZip.close(); + newZip.close(); + + return fn; +} + +std::string +ProjectFile::replacePropertyFiles(const std::map& props) +{ + // create a new zip file with the name '.' + std::string uuid = Base::Uuid::createUuid(); + std::string fn = stdFile; + fn += "."; + fn += uuid; + Base::FileInfo tmp(fn); + Base::ofstream newZip(tmp, std::ios::out | std::ios::binary); + + // open extra scope + { + // standard compression + const int compressionLevel = 6; + Base::ZipWriter writer(newZip); + writer.setComment("FreeCAD Document"); + writer.setLevel(compressionLevel); + + // open the original zip file + zipios::ZipFile project(stdFile); + zipios::ConstEntries files = project.entries(); + for (const auto& it : files) { + std::string file = it->getFileName(); + writer.putNextEntry(file.c_str()); + + auto jt = props.find(file); + if (jt != props.end()) { + jt->second->SaveDocFile(writer); + } + else { + std::unique_ptr str(project.getInputStream(file)); + if (str) { + *str >> writer.Stream().rdbuf(); + } + } + } + project.close(); + } + + return fn; +} + +bool ProjectFile::replaceProjectFile(const std::string& name, bool keepfile) +{ + std::string uuid = Base::Uuid::createUuid(); + std::string fn = stdFile; + fn += "."; + fn += uuid; + + // Now rename the original file to something unique + Base::FileInfo orig(stdFile); + if (!orig.renameFile(fn.c_str())) { + return false; + } + orig.setFile(fn); + + // rename the tmp.file to the original file name + Base::FileInfo other(name); + if (!other.renameFile(stdFile.c_str())) { + return false; + } + + // and delete the renamed original file. + if (!keepfile) { + if (!orig.deleteFile()) { + return false; + } + } + + return true; +} diff --git a/src/App/ProjectFile.h b/src/App/ProjectFile.h new file mode 100644 index 0000000000..b0b30038dc --- /dev/null +++ b/src/App/ProjectFile.h @@ -0,0 +1,204 @@ +// 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 APP_PROJECTFILE_H +#define APP_PROJECTFILE_H + +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +class DOMDocument; +class DOMElement; +class DOMNode; +XERCES_CPP_NAMESPACE_END + +namespace App +{ + +class PropertyContainer; +class Property; + +/** + * @code + * ProjectFile proj(project.fcstd); + * if (proj.loadDocument()) { + * std::list names = proj.getObjects(); + * std::list files = proj.getInputFiles(names.front().name); + * std::string meshFile = proj.extractInputFile(files.front()); + * std::ifstream str(meshFile.c_str(), std::ios::in | std::ios::binary); + * Mesh::MeshObject mesh; + * mesh.load(str); + * } + * @endcode + */ +class AppExport ProjectFile +{ +public: + struct Object + { + std::string name; + Base::Type type; + }; + struct PropertyFile + { + std::string file; + std::string name; + Base::Type type; + }; + struct Metadata + { + std::string comment; + std::string company; + std::string createdBy; + std::string creationDate; + std::string label; + std::string lastModifiedBy; + std::string lastModifiedDate; + std::string license; + std::string licenseURL; + std::string programVersion; + std::string uuid; + }; + /** + * Default constructor + */ + ProjectFile(); + /** + * Creates an instance of ProjectFile pointing to a project file. + * You have to call @ref loadDocument() afterwards. + */ + explicit ProjectFile(std::string zipArchive); + /** + * Destructor + */ + ~ProjectFile(); + /** + * Copy/move constructor & assignment + */ + ProjectFile(const ProjectFile&) = delete; + ProjectFile(ProjectFile&&) = delete; + ProjectFile& operator=(const ProjectFile&) = delete; + ProjectFile& operator=(ProjectFile&&) = delete; + /** + * Assigns the file name of another project file. This clears any internal data, thus + * @ref loadDocument() needs to be called afterwards. + */ + void setProjectFile(const std::string& zipArchive); + /** + * Loads the embedded document file of the project file. This is needed to query any information + * about objects, their type ids or any referenced input files. + */ + bool loadDocument(); + /** + * Return the meta data of the loaded document. + */ + Metadata getMetadata() const; + /** + * Returns a list of all object names with their type ids which are part of the project file. + */ + std::list getObjects() const; + /** + * Returns a list of object names of a given type id which are part of the project file. + */ + std::list getObjectsOfType(const Base::Type&) const; + /** + * Restores the object identified by its @a name and loads all properties of @a prop + * that match with the saved properties. + */ + bool restoreObject(const std::string& name, App::PropertyContainer*, bool verbose = true); + /** + * Retrieves the type id of a given object name. + */ + Base::Type getTypeId(const std::string& name) const; + /** + * Retrieves a list of input file names and their associated property names and type ids + * to the given object name. + * @see getInputFiles(). + */ + std::list getPropertyFiles(const std::string& name) const; + /** + * Retrieves a list of input file names referenced to the given object name. + * This method does the same as @ref getPropertyFiles() unless that it only + * returns the file names. + */ + std::list getInputFiles(const std::string& name) const; + /** + * Extracts an input file of @a name and saves it as file to the disk. + * It's up to the client code to delete the file if needed. + */ + std::string extractInputFile(const std::string& name); + /** + * Extracts, via a temporary file the content of an input file of @a name. + */ + void readInputFile(const std::string& name, std::ostream& str); + /** + * Directly extracts the content of an input file of @a name. + */ + void readInputFileDirect(const std::string& name, std::ostream& str); + /** + * Replaces the input file @a name with the content of the given @a stream. + * The method returns the file name of the newly created project file. + */ + std::string replaceInputFile(const std::string& name, std::istream& inp); + /** + * Replaces the input files with the streams of @a inp. + * The method returns the file name of the newly created project file. + * If you want to replace the original project file you must call the + * method @ref replaceProjectFile() with the returned file name as argument. + */ + std::string replaceInputFiles(const std::map& inp); + /** + * Replaces the property files with the content of the properties in @a props. + * The method returns the file name of the newly created project file. + * If you want to replace the original project file you must call the + * method @ref replaceProjectFile() with the returned file name as argument. + */ + std::string replacePropertyFiles(const std::map& props); + /** + * Replaces the project file with the given @a name. If @a keepfile is true + * then the renamed original file won't be deleted. + * Returns true if the replacement succeeded and false otherwise. + * If you want to replace the original project file you must call the + * method @ref replaceProjectFile() with the returned file name as argument. + */ + bool replaceProjectFile(const std::string& name, bool keepfile = false); + +private: + void findFiles(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode*, std::list&) const; + void findFiles(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode*, std::list&) const; + +private: + std::string stdFile; + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* xmlDocument; +}; + + +} // namespace APP + +#endif // APP_PROJECTFILE_H diff --git a/src/App/Property.cpp b/src/App/Property.cpp index a8bb121723..fd02085d85 100644 --- a/src/App/Property.cpp +++ b/src/App/Property.cpp @@ -211,8 +211,10 @@ void Property::destroy(Property *p) { void Property::touch() { PropertyCleaner guard(this); - if (father) + if (father) { + father->onEarlyChange(this); father->onChanged(this); + } StatusBits.set(Touched); } diff --git a/src/App/PropertyContainer.h b/src/App/PropertyContainer.h index 17a2102efc..1bb7ecd7db 100644 --- a/src/App/PropertyContainer.h +++ b/src/App/PropertyContainer.h @@ -237,6 +237,11 @@ public: protected: + /** get called by the container when a property has changed + * + * This function is called before onChanged() + */ + virtual void onEarlyChange(const Property* /*prop*/){} /// get called by the container when a property has changed virtual void onChanged(const Property* /*prop*/){} /// get called before the value is changed diff --git a/src/App/PropertyGeo.cpp b/src/App/PropertyGeo.cpp index bddff7d9a0..6ce4186d76 100644 --- a/src/App/PropertyGeo.cpp +++ b/src/App/PropertyGeo.cpp @@ -1244,6 +1244,40 @@ PropertyComplexGeoData::PropertyComplexGeoData() = default; PropertyComplexGeoData::~PropertyComplexGeoData() = default; +std::string PropertyComplexGeoData::getElementMapVersion(bool) const { + auto data = getComplexData(); + if(!data) + return std::string(); + auto owner = Base::freecad_dynamic_cast(getContainer()); + std::ostringstream ss; + if(owner && owner->getDocument() + && owner->getDocument()->getStringHasher()==data->Hasher) + ss << "1."; + else + ss << "0."; + ss << data->getElementMapVersion(); + return ss.str(); +} + +bool PropertyComplexGeoData::checkElementMapVersion(const char * ver) const +{ + auto data = getComplexData(); + if(!data) + return false; + auto owner = Base::freecad_dynamic_cast(getContainer()); + std::ostringstream ss; + const char *prefix; + if(owner && owner->getDocument() + && owner->getDocument()->getStringHasher() == data->Hasher) + prefix = "1."; + else + prefix = "0."; + if (!boost::starts_with(ver, prefix)) + return true; + return data->checkElementMapVersion(ver+2); +} + + void PropertyComplexGeoData::afterRestore() { auto data = getComplexData(); diff --git a/src/App/PropertyGeo.h b/src/App/PropertyGeo.h index 861442ed57..d6c78f0a52 100644 --- a/src/App/PropertyGeo.h +++ b/src/App/PropertyGeo.h @@ -541,6 +541,16 @@ public: Base::BoundBox3d getBoundingBox() const override = 0; //@} + /** Return the element map version + * + * @param persisted: if true, return the restored element map version. Or + * else, return the current element map version + */ + virtual std::string getElementMapVersion(bool restored=false) const; + + /// Return true to signal element map version change + virtual bool checkElementMapVersion(const char * ver) const; + void afterRestore() override; }; diff --git a/src/App/Resources/translations/App.ts b/src/App/Resources/translations/App.ts index 0c308f627c..4e2d7830d3 100644 --- a/src/App/Resources/translations/App.ts +++ b/src/App/Resources/translations/App.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed diff --git a/src/App/Resources/translations/App_be.ts b/src/App/Resources/translations/App_be.ts index 5f6eb0a922..58ab9ebe90 100644 --- a/src/App/Resources/translations/App_be.ts +++ b/src/App/Resources/translations/App_be.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed Без назвы diff --git a/src/App/Resources/translations/App_ca.ts b/src/App/Resources/translations/App_ca.ts index 8bf6fd8461..d35d5717cc 100644 --- a/src/App/Resources/translations/App_ca.ts +++ b/src/App/Resources/translations/App_ca.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed Sense nom diff --git a/src/App/Resources/translations/App_cs.ts b/src/App/Resources/translations/App_cs.ts index a103f2a431..d6964caab2 100644 --- a/src/App/Resources/translations/App_cs.ts +++ b/src/App/Resources/translations/App_cs.ts @@ -14,7 +14,7 @@ které odkazují na stejný konfigurovatelný objekt QObject - + Unnamed Nepojmenovaný diff --git a/src/App/Resources/translations/App_de.ts b/src/App/Resources/translations/App_de.ts index b08221a5af..9d0c65c800 100644 --- a/src/App/Resources/translations/App_de.ts +++ b/src/App/Resources/translations/App_de.ts @@ -14,7 +14,7 @@ angewendet werden soll, die das gleiche konfigurierbare Objekt referenzieren QObject - + Unnamed Unbenannt diff --git a/src/App/Resources/translations/App_el.ts b/src/App/Resources/translations/App_el.ts index 3c5f2080e1..b7c79814d2 100644 --- a/src/App/Resources/translations/App_el.ts +++ b/src/App/Resources/translations/App_el.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Ανώνυμο diff --git a/src/App/Resources/translations/App_es-AR.ts b/src/App/Resources/translations/App_es-AR.ts index ce6ec90855..662eecdc23 100644 --- a/src/App/Resources/translations/App_es-AR.ts +++ b/src/App/Resources/translations/App_es-AR.ts @@ -14,7 +14,7 @@ que hacen referencia al mismo objeto configurable QObject - + Unnamed Sin nombre diff --git a/src/App/Resources/translations/App_es-ES.ts b/src/App/Resources/translations/App_es-ES.ts index 0dbc5a3169..dd0def32a5 100644 --- a/src/App/Resources/translations/App_es-ES.ts +++ b/src/App/Resources/translations/App_es-ES.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed Sin nombre diff --git a/src/App/Resources/translations/App_eu.ts b/src/App/Resources/translations/App_eu.ts index 6f735414cb..69c3772ad5 100644 --- a/src/App/Resources/translations/App_eu.ts +++ b/src/App/Resources/translations/App_eu.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed Izenik gabea diff --git a/src/App/Resources/translations/App_fi.ts b/src/App/Resources/translations/App_fi.ts index b51c12ec33..29648fd5ce 100644 --- a/src/App/Resources/translations/App_fi.ts +++ b/src/App/Resources/translations/App_fi.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Nimetön diff --git a/src/App/Resources/translations/App_fr.ts b/src/App/Resources/translations/App_fr.ts index 5550763181..d83f25311b 100644 --- a/src/App/Resources/translations/App_fr.ts +++ b/src/App/Resources/translations/App_fr.ts @@ -7,13 +7,13 @@ Stores the last user choice of whether to apply CopyOnChange setup to all links that reference the same configurable object - Enregistre le dernier choix de l'utilisateur concernant l'application de la configuration CopyOnChange à tous les liens qui font référence au même objet configurable + Enregistre le dernier choix de l'utilisateur concernant la configuration de CopyOnChange sur tous les liens qui font référence au même objet configurable. QObject - + Unnamed Sans nom diff --git a/src/App/Resources/translations/App_gl.ts b/src/App/Resources/translations/App_gl.ts index a6f6707945..f304127e69 100644 --- a/src/App/Resources/translations/App_gl.ts +++ b/src/App/Resources/translations/App_gl.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Sen nome diff --git a/src/App/Resources/translations/App_hr.ts b/src/App/Resources/translations/App_hr.ts index d830370d4a..d1114f4926 100644 --- a/src/App/Resources/translations/App_hr.ts +++ b/src/App/Resources/translations/App_hr.ts @@ -14,7 +14,7 @@ na sve veze koje referenciraju isti konfigurabilni objekt QObject - + Unnamed Neimenovano diff --git a/src/App/Resources/translations/App_hu.ts b/src/App/Resources/translations/App_hu.ts index 7d4c875ef4..f13dfc60e5 100644 --- a/src/App/Resources/translations/App_hu.ts +++ b/src/App/Resources/translations/App_hu.ts @@ -14,7 +14,7 @@ amelyek ugyanarra a konfigurálható tárgyra hivatkoznak QObject - + Unnamed Névtelen diff --git a/src/App/Resources/translations/App_id.ts b/src/App/Resources/translations/App_id.ts index a0bf0506d8..d3c0c96f87 100644 --- a/src/App/Resources/translations/App_id.ts +++ b/src/App/Resources/translations/App_id.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed Tanpa nama diff --git a/src/App/Resources/translations/App_it.ts b/src/App/Resources/translations/App_it.ts index 8e67b294b2..92f886758a 100644 --- a/src/App/Resources/translations/App_it.ts +++ b/src/App/Resources/translations/App_it.ts @@ -14,7 +14,7 @@ che fanno riferimento allo stesso oggetto configurabile QObject - + Unnamed Senza nome diff --git a/src/App/Resources/translations/App_ja.ts b/src/App/Resources/translations/App_ja.ts index 361941765b..3753b111e6 100644 --- a/src/App/Resources/translations/App_ja.ts +++ b/src/App/Resources/translations/App_ja.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed 名称未設定 diff --git a/src/App/Resources/translations/App_ka.ts b/src/App/Resources/translations/App_ka.ts index 7267a4020f..8bd9aa5e63 100644 --- a/src/App/Resources/translations/App_ka.ts +++ b/src/App/Resources/translations/App_ka.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed უსახელო diff --git a/src/App/Resources/translations/App_ko.ts b/src/App/Resources/translations/App_ko.ts index 9d64d2e556..35acfef3e5 100644 --- a/src/App/Resources/translations/App_ko.ts +++ b/src/App/Resources/translations/App_ko.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed 이름없음 diff --git a/src/App/Resources/translations/App_nl.ts b/src/App/Resources/translations/App_nl.ts index cf996e3281..e2537f41e9 100644 --- a/src/App/Resources/translations/App_nl.ts +++ b/src/App/Resources/translations/App_nl.ts @@ -14,7 +14,7 @@ die verwijzen naar hetzelfde configureerbare object QObject - + Unnamed Naamloos diff --git a/src/App/Resources/translations/App_pl.ts b/src/App/Resources/translations/App_pl.ts index d2706eaf64..3e10d9b5cd 100644 --- a/src/App/Resources/translations/App_pl.ts +++ b/src/App/Resources/translations/App_pl.ts @@ -14,7 +14,7 @@ które odnoszą się do tego samego obiektu konfigurowalnego QObject - + Unnamed Nienazwany diff --git a/src/App/Resources/translations/App_pt-BR.ts b/src/App/Resources/translations/App_pt-BR.ts index cc5f30c986..7345733c77 100644 --- a/src/App/Resources/translations/App_pt-BR.ts +++ b/src/App/Resources/translations/App_pt-BR.ts @@ -14,7 +14,7 @@ que referenciam o mesmo objeto configurável QObject - + Unnamed Sem nome diff --git a/src/App/Resources/translations/App_pt-PT.ts b/src/App/Resources/translations/App_pt-PT.ts index e8eee89e5a..e3439b9c8e 100644 --- a/src/App/Resources/translations/App_pt-PT.ts +++ b/src/App/Resources/translations/App_pt-PT.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Sem nome diff --git a/src/App/Resources/translations/App_ro.ts b/src/App/Resources/translations/App_ro.ts index 71da65f444..78f366bc09 100644 --- a/src/App/Resources/translations/App_ro.ts +++ b/src/App/Resources/translations/App_ro.ts @@ -14,7 +14,7 @@ care fac referire la același obiect configurabil QObject - + Unnamed Nedenumit diff --git a/src/App/Resources/translations/App_ru.ts b/src/App/Resources/translations/App_ru.ts index a984cdb692..bc3ae7a4f0 100644 --- a/src/App/Resources/translations/App_ru.ts +++ b/src/App/Resources/translations/App_ru.ts @@ -13,7 +13,7 @@ that reference the same configurable object QObject - + Unnamed Безымянный diff --git a/src/App/Resources/translations/App_sl.ts b/src/App/Resources/translations/App_sl.ts index 9162d65cbe..c7acb8f567 100644 --- a/src/App/Resources/translations/App_sl.ts +++ b/src/App/Resources/translations/App_sl.ts @@ -14,7 +14,7 @@ za vse povezave, ki se sklicujejo na isti nastavljivi predmet QObject - + Unnamed Neimenovan diff --git a/src/App/Resources/translations/App_sr-CS.ts b/src/App/Resources/translations/App_sr-CS.ts index 495f3812ce..9c98c88fb2 100644 --- a/src/App/Resources/translations/App_sr-CS.ts +++ b/src/App/Resources/translations/App_sr-CS.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Bez imena diff --git a/src/App/Resources/translations/App_sr.ts b/src/App/Resources/translations/App_sr.ts index 8ef1d0b1e1..d8ba2d4265 100644 --- a/src/App/Resources/translations/App_sr.ts +++ b/src/App/Resources/translations/App_sr.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Без имена diff --git a/src/App/Resources/translations/App_sv-SE.ts b/src/App/Resources/translations/App_sv-SE.ts index 753756d73c..26469d0e42 100644 --- a/src/App/Resources/translations/App_sv-SE.ts +++ b/src/App/Resources/translations/App_sv-SE.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Namnlös diff --git a/src/App/Resources/translations/App_tr.ts b/src/App/Resources/translations/App_tr.ts index 5b04ac2312..4c2a823d03 100644 --- a/src/App/Resources/translations/App_tr.ts +++ b/src/App/Resources/translations/App_tr.ts @@ -14,7 +14,7 @@ uygulanmayacağına ilişkin son kullanıcı seçimini saklar QObject - + Unnamed İsimsiz diff --git a/src/App/Resources/translations/App_uk.ts b/src/App/Resources/translations/App_uk.ts index f95abbba01..2b898df5d7 100644 --- a/src/App/Resources/translations/App_uk.ts +++ b/src/App/Resources/translations/App_uk.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Без назви diff --git a/src/App/Resources/translations/App_val-ES.ts b/src/App/Resources/translations/App_val-ES.ts index 4cb0c02a1d..3fd22203db 100644 --- a/src/App/Resources/translations/App_val-ES.ts +++ b/src/App/Resources/translations/App_val-ES.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed Sense nom diff --git a/src/App/Resources/translations/App_zh-CN.ts b/src/App/Resources/translations/App_zh-CN.ts index ae5bd9a8b9..0f833eef9f 100644 --- a/src/App/Resources/translations/App_zh-CN.ts +++ b/src/App/Resources/translations/App_zh-CN.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed 未命名 diff --git a/src/App/Resources/translations/App_zh-TW.ts b/src/App/Resources/translations/App_zh-TW.ts index e7a484d9a4..81adb53dc4 100644 --- a/src/App/Resources/translations/App_zh-TW.ts +++ b/src/App/Resources/translations/App_zh-TW.ts @@ -14,7 +14,7 @@ that reference the same configurable object QObject - + Unnamed 未命名 diff --git a/src/App/VRMLObject.cpp b/src/App/VRMLObject.cpp index 8b7aff85fc..8dd6ae1f2c 100644 --- a/src/App/VRMLObject.cpp +++ b/src/App/VRMLObject.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -55,6 +56,10 @@ short VRMLObject::mustExecute() const void VRMLObject::onChanged(const App::Property* prop) { + if (restoreData) { + return; + } + if (prop == &VrmlFile) { std::string orig = VrmlFile.getOriginalFileName(); if (!orig.empty()) { @@ -67,10 +72,11 @@ void VRMLObject::onChanged(const App::Property* prop) // save the relative paths to the resource files in the project file Resources.setSize(Urls.getSize()); const std::vector& urls = Urls.getValues(); - int index=0; - for (std::vector::const_iterator it = urls.begin(); it != urls.end(); ++it, ++index) { - std::string output = getRelativePath(this->vrmlPath, *it); + int index = 0; + for (const auto& it : urls) { + std::string output = getRelativePath(this->vrmlPath, it); Resources.set1Value(index, output); + ++index; } } GeoFeature::onChanged(prop); @@ -104,7 +110,7 @@ std::string VRMLObject::getRelativePath(const std::string& prefix, const std::st return str; } -std::string VRMLObject::fixRelativePath(const std::string& name, const std::string& resource) const +std::string VRMLObject::fixRelativePath(const std::string& name, const std::string& resource) { // the part before the first '/' must match with object's internal name std::string::size_type pos = resource.find('/'); @@ -123,10 +129,13 @@ void VRMLObject::makeDirectories(const std::string& path, const std::string& sub std::string::size_type pos = subdir.find('/'); while (pos != std::string::npos) { std::string sub = subdir.substr(0, pos); - std::string dir = path + "/" + sub; + std::string dir = path; + dir += '/'; + dir += sub; Base::FileInfo fi(dir); - if (!fi.createDirectory()) + if (!fi.createDirectory()) { break; + } pos = subdir.find('/', pos+1); } } @@ -141,7 +150,7 @@ void VRMLObject::Save (Base::Writer &writer) const writer.addFile(url.c_str(), this); } - this->index = 0; + this->indexSave = 0; } void VRMLObject::Restore(Base::XMLReader &reader) @@ -155,14 +164,14 @@ void VRMLObject::Restore(Base::XMLReader &reader) reader.addFile(url.c_str(), this); } - this->index = 0; + this->indexRestore = 0; } void VRMLObject::SaveDocFile (Base::Writer &writer) const { // store the inline files of the VRML file - if (this->index < Urls.getSize()) { - std::string url = Urls[this->index]; + if (this->indexSave < Urls.getSize()) { + std::string url = Urls[this->indexSave]; Base::FileInfo fi(url); // it can happen that the transient directory has changed after @@ -170,12 +179,12 @@ void VRMLObject::SaveDocFile (Base::Writer &writer) const // try again with the new transient directory. if (!fi.exists()) { std::string path = getDocument()->TransientDir.getValue(); - url = Resources[this->index]; + url = Resources[this->indexSave]; url = path + "/" + url; fi.setFile(url); } - this->index++; + this->indexSave++; Base::ifstream file(fi, std::ios::in | std::ios::binary); if (file) { writer.Stream() << file.rdbuf(); @@ -183,20 +192,21 @@ void VRMLObject::SaveDocFile (Base::Writer &writer) const } } -void VRMLObject::RestoreDocFile(Base::Reader &reader) +bool VRMLObject::restoreTextureFinished(Base::Reader &reader) { - if (this->index < Resources.getSize()) { + Base::StateLocker locker(restoreData, true); + if (this->indexRestore < Resources.getSize()) { std::string path = getDocument()->TransientDir.getValue(); - std::string url = Resources[this->index]; + std::string url = Resources[this->indexRestore]; std::string intname = this->getNameInDocument(); url = fixRelativePath(intname, url); - Resources.set1Value(this->index, url); + Resources.set1Value(this->indexRestore, url); makeDirectories(path, url); url = path + "/" + url; Base::FileInfo fi(url); - Urls.set1Value(this->index, url); - this->index++; + Urls.set1Value(this->indexRestore, url); + this->indexRestore++; Base::ofstream file(fi, std::ios::out | std::ios::binary); if (file) { @@ -204,11 +214,23 @@ void VRMLObject::RestoreDocFile(Base::Reader &reader) file.close(); } - // after restoring all inline files reload the VRML file - if (this->index == Urls.getSize()) { - VrmlFile.touch(); - Base::FileInfo fi(VrmlFile.getValue()); - this->vrmlPath = fi.dirPath(); - } + return (this->indexRestore == Urls.getSize()); + } + + return false; +} + +void VRMLObject::reloadFile() +{ + // after restoring all inline files reload the VRML file + VrmlFile.touch(); + Base::FileInfo fi(VrmlFile.getValue()); + this->vrmlPath = fi.dirPath(); +} + +void VRMLObject::RestoreDocFile(Base::Reader &reader) +{ + if (restoreTextureFinished(reader)) { + reloadFile(); } } diff --git a/src/App/VRMLObject.h b/src/App/VRMLObject.h index 064da42a96..f2f8abf2d4 100644 --- a/src/App/VRMLObject.h +++ b/src/App/VRMLObject.h @@ -61,13 +61,19 @@ public: protected: void onChanged(const App::Property*) override; - std::string getRelativePath(const std::string&, const std::string&) const; - std::string fixRelativePath(const std::string&, const std::string&) const; - void makeDirectories(const std::string&, const std::string&); + +private: + std::string getRelativePath(const std::string& prefix, const std::string& resource) const; + static std::string fixRelativePath(const std::string& name, const std::string& resource); + static void makeDirectories(const std::string& path, const std::string& subdir); + bool restoreTextureFinished(Base::Reader &reader); + void reloadFile(); private: mutable std::string vrmlPath; - mutable int index{0}; + mutable int indexRestore {0}; + mutable int indexSave {0}; + mutable bool restoreData {false}; }; } //namespace App diff --git a/src/Base/CMakeLists.txt b/src/Base/CMakeLists.txt index a21b6c240a..85a48dae43 100644 --- a/src/Base/CMakeLists.txt +++ b/src/Base/CMakeLists.txt @@ -264,7 +264,6 @@ SET(FreeCADBase_CPP_SRCS Stream.cpp Swap.cpp ${SWIG_SRCS} - TimeInfo.cpp Tools.cpp Tools2D.cpp Tools3D.cpp diff --git a/src/Base/FileInfo.cpp b/src/Base/FileInfo.cpp index ee70cb4f9a..526300f671 100644 --- a/src/Base/FileInfo.cpp +++ b/src/Base/FileInfo.cpp @@ -451,9 +451,26 @@ bool FileInfo::isDir() const unsigned int FileInfo::size() const { - // not implemented - assert(0); - return 0; + unsigned int bytes {}; + if (exists()) { + +#if defined(FC_OS_WIN32) + std::wstring wstr = toStdWString(); + struct _stat st; + if (_wstat(wstr.c_str(), &st) == 0) { + bytes = st.st_size; + } + +#elif defined(FC_OS_LINUX) || defined(FC_OS_CYGWIN) || defined(FC_OS_MACOSX) || defined(FC_OS_BSD) + struct stat st + { + }; + if (stat(FileName.c_str(), &st) == 0) { + bytes = st.st_size; + } +#endif + } + return bytes; } TimeInfo FileInfo::lastModified() const diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp index a9aa721c3c..2f84e0cb14 100644 --- a/src/Base/Interpreter.cpp +++ b/src/Base/Interpreter.cpp @@ -592,6 +592,8 @@ void initInterpreter(int argc, char* argv[]) PyStatus status; PyConfig config; PyConfig_InitIsolatedConfig(&config); + config.isolated = 0; + config.user_site_directory = 1; status = PyConfig_SetBytesArgv(&config, argc, argv); if (PyStatus_Exception(status)) { diff --git a/src/Base/PreCompiled.h b/src/Base/PreCompiled.h index b38b44a68d..791715b249 100644 --- a/src/Base/PreCompiled.h +++ b/src/Base/PreCompiled.h @@ -37,6 +37,7 @@ #include #include #include +#include #ifdef FC_OS_WIN32 #define _USE_MATH_DEFINES #endif // FC_OS_WIN32 diff --git a/src/Base/Resources/translations/Base_hu.ts b/src/Base/Resources/translations/Base_hu.ts index cb43f62f59..01eca4e0e7 100644 --- a/src/Base/Resources/translations/Base_hu.ts +++ b/src/Base/Resources/translations/Base_hu.ts @@ -6,12 +6,12 @@ Standard (mm, kg, s, °) - Standard (mm, kg, s, °) + Alapértelmezett (mm, kg, s, °) MKS (m, kg, s, °) - MKS (m, kg, s, °) + MKS rendszer (m, kg, s, °) @@ -41,7 +41,7 @@ Imperial for Civil Eng (ft, ft/s) - Imperial for Civil Eng (ft, ft/s) + Imperial polgári mérnöki (láb, láb/sec) diff --git a/src/Base/Resources/translations/Base_nl.ts b/src/Base/Resources/translations/Base_nl.ts index 6d5c3318fc..25e89877fa 100644 --- a/src/Base/Resources/translations/Base_nl.ts +++ b/src/Base/Resources/translations/Base_nl.ts @@ -6,12 +6,12 @@ Standard (mm, kg, s, °) - Standard (mm, kg, s, °) + Standaard (mm, kg, s, graden) MKS (m, kg, s, °) - MKS (m, kg, s, °) + MKS (m, kg, s, graden) @@ -41,7 +41,7 @@ Imperial for Civil Eng (ft, ft/s) - Imperial for Civil Eng (ft, ft/s) + Engelse eenheden voor Civiele Engineering (ft, ft/sec) diff --git a/src/Base/Rotation.cpp b/src/Base/Rotation.cpp index f4f3197375..e1c871e0f7 100644 --- a/src/Base/Rotation.cpp +++ b/src/Base/Rotation.cpp @@ -1022,6 +1022,7 @@ void Rotation::setEulerAngles(EulerSequence theOrder, quat[1] = values[2]; quat[2] = values[3]; quat[3] = values[0]; + this->evaluateVector(); } void Rotation::getEulerAngles(EulerSequence theOrder, diff --git a/src/Base/TimeInfo.cpp b/src/Base/TimeInfo.cpp deleted file mode 100644 index 0fd6bb9fe9..0000000000 --- a/src/Base/TimeInfo.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2011 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 * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" - -#ifndef _PreComp_ -#include -#include -#if defined(FC_OS_LINUX) || defined(__MINGW32__) -#include -#endif -#endif - -#include "TimeInfo.h" - - -using namespace Base; - - -/** - * A constructor. - * A more elaborate description of the constructor. - */ -TimeInfo::TimeInfo() -{ - setCurrent(); -} - -/** - * A destructor. - * A more elaborate description of the destructor. - */ -TimeInfo::~TimeInfo() = default; - - -//************************************************************************** -// separator for other implementation aspects - -void TimeInfo::setCurrent() -{ - // clang-format off -#if defined(FC_OS_BSD) || defined(FC_OS_LINUX) || defined(__MINGW32__) - struct timeval tv {}; - gettimeofday(&tv, nullptr); - timebuffer.time = tv.tv_sec; - timebuffer.millitm = tv.tv_usec / 1000; -#elif defined(FC_OS_WIN32) - _ftime(&timebuffer); -#else - ftime(&timebuffer); // deprecated -#endif - // clang-format on -} - -void TimeInfo::setTime_t(int64_t seconds) -{ - timebuffer.time = seconds; -} - -std::string TimeInfo::currentDateTimeString() -{ - return QDateTime::currentDateTime() - .toTimeSpec(Qt::OffsetFromUTC) - .toString(Qt::ISODate) - .toStdString(); -} - -std::string TimeInfo::diffTime(const TimeInfo& timeStart, const TimeInfo& timeEnd) -{ - std::stringstream str; - str << diffTimeF(timeStart, timeEnd); - return str.str(); -} - -float TimeInfo::diffTimeF(const TimeInfo& timeStart, const TimeInfo& timeEnd) -{ - int64_t ds = int64_t(timeEnd.getSeconds() - timeStart.getSeconds()); - int dms = int(timeEnd.getMiliseconds()) - int(timeStart.getMiliseconds()); - - return float(ds) + float(dms) * 0.001F; -} - -TimeInfo TimeInfo::null() -{ - TimeInfo ti; - ti.timebuffer = {}; - return ti; -} - -bool TimeInfo::isNull() const -{ - return (*this) == TimeInfo::null(); -} diff --git a/src/Base/TimeInfo.h b/src/Base/TimeInfo.h index ae9164d41d..433fb7c764 100644 --- a/src/Base/TimeInfo.h +++ b/src/Base/TimeInfo.h @@ -1,5 +1,6 @@ /*************************************************************************** * Copyright (c) 2011 Jürgen Riegel * + * Copyright (c) 2024 Ladislav Michl * * * * This file is part of the FreeCAD CAx development system. * * * @@ -24,135 +25,109 @@ #ifndef BASE_TIMEINFO_H #define BASE_TIMEINFO_H -// Std. configurations - - -#include -#if defined(FC_OS_BSD) -#include -#else -#include -#endif -#include - -#ifdef __GNUC__ -#include -#endif - +#include +#include #include #include -#if defined(FC_OS_BSD) -struct timeb -{ - int64_t time; - unsigned short millitm; -}; -#endif - namespace Base { -/// BaseClass class and root of the type system -class BaseExport TimeInfo + +using Clock = std::chrono::system_clock; + +class TimeInfo: public std::chrono::time_point { +private: + bool _null; public: - /// Construction - TimeInfo(); + TimeInfo() + { + setCurrent(); + } + TimeInfo(const TimeInfo&) = default; TimeInfo(TimeInfo&&) = default; - /// Destruction - ~TimeInfo(); + ~TimeInfo() = default; - /// sets the object to the actual system time - void setCurrent(); - void setTime_t(int64_t seconds); - - int64_t getSeconds() const; - unsigned short getMiliseconds() const; - - TimeInfo& operator=(const TimeInfo& time) = default; - TimeInfo& operator=(TimeInfo&& time) = default; - bool operator==(const TimeInfo& time) const; - bool operator!=(const TimeInfo& time) const; - - bool operator<(const TimeInfo& time) const; - bool operator<=(const TimeInfo& time) const; - bool operator>=(const TimeInfo& time) const; - bool operator>(const TimeInfo& time) const; - - static std::string currentDateTimeString(); - static std::string diffTime(const TimeInfo& timeStart, const TimeInfo& timeEnd = TimeInfo()); - static float diffTimeF(const TimeInfo& timeStart, const TimeInfo& timeEnd = TimeInfo()); - bool isNull() const; - static TimeInfo null(); - -private: - // clang-format off -#if defined(_MSC_VER) - struct _timeb timebuffer; -#elif defined(__GNUC__) - struct timeb timebuffer {}; -#endif - // clang-format on -}; - - -inline int64_t TimeInfo::getSeconds() const -{ - return timebuffer.time; -} - -inline unsigned short TimeInfo::getMiliseconds() const -{ - return timebuffer.millitm; -} - -inline bool TimeInfo::operator!=(const TimeInfo& time) const -{ - return (timebuffer.time != time.timebuffer.time - || timebuffer.millitm != time.timebuffer.millitm); -} - -inline bool TimeInfo::operator==(const TimeInfo& time) const -{ - return (timebuffer.time == time.timebuffer.time - && timebuffer.millitm == time.timebuffer.millitm); -} - -inline bool TimeInfo::operator<(const TimeInfo& time) const -{ - if (timebuffer.time == time.timebuffer.time) { - return timebuffer.millitm < time.timebuffer.millitm; + void setCurrent() + { + static_cast&>(*this) = Clock::now(); + _null = false; } - return timebuffer.time < time.timebuffer.time; -} -inline bool TimeInfo::operator<=(const TimeInfo& time) const -{ - if (timebuffer.time == time.timebuffer.time) { - return timebuffer.millitm <= time.timebuffer.millitm; + void setTime_t(std::time_t time) + { + static_cast&>(*this) = Clock::from_time_t(time); + _null = false; } - return timebuffer.time <= time.timebuffer.time; -} -inline bool TimeInfo::operator>=(const TimeInfo& time) const -{ - if (timebuffer.time == time.timebuffer.time) { - return timebuffer.millitm >= time.timebuffer.millitm; + std::time_t getTime_t() + { + return Clock::to_time_t(*this); } - return timebuffer.time >= time.timebuffer.time; -} -inline bool TimeInfo::operator>(const TimeInfo& time) const -{ - if (timebuffer.time == time.timebuffer.time) { - return timebuffer.millitm > time.timebuffer.millitm; + static float diffTimeF(const TimeInfo& start, const TimeInfo& end = TimeInfo()) + { + const std::chrono::duration duration = end - start; + return duration.count(); } - return timebuffer.time > time.timebuffer.time; -} + + static std::string diffTime(const TimeInfo& start, const TimeInfo& end = TimeInfo()) + { + std::stringstream ss; + const std::chrono::duration secs = end - start; + ss << secs.count(); + return ss.str(); + } + + bool isNull() const + { + return _null; + } + + static TimeInfo null() + { + TimeInfo ti; + ti._null = true; + return ti; + } +}; // class TimeInfo + +using Ticks = std::chrono::steady_clock; + +class TimeElapsed: public std::chrono::time_point +{ +public: + TimeElapsed() + { + setCurrent(); + } + + TimeElapsed(const TimeElapsed&) = default; + TimeElapsed(TimeElapsed&&) = default; + ~TimeElapsed() = default; + + void setCurrent() + { + static_cast&>(*this) = Ticks::now(); + } + + static float diffTimeF(const TimeElapsed& start, const TimeElapsed& end = TimeElapsed()) + { + const std::chrono::duration duration = end - start; + return duration.count(); + } + + static std::string diffTime(const TimeElapsed& start, const TimeElapsed& end = TimeElapsed()) + { + std::stringstream ss; + const std::chrono::duration secs = end - start; + ss << secs.count(); + return ss.str(); + } +}; // class TimeElapsed } // namespace Base - #endif // BASE_TIMEINFO_H diff --git a/src/Base/Tools.cpp b/src/Base/Tools.cpp index 54a494c7fd..b164164489 100644 --- a/src/Base/Tools.cpp +++ b/src/Base/Tools.cpp @@ -26,7 +26,7 @@ #include #include #include -#include +#include #endif #include "PyExport.h" @@ -365,61 +365,10 @@ std::string Base::Tools::joinList(const std::vector& vec, const std return str.str(); } -// ---------------------------------------------------------------------------- - -using namespace Base; - -struct StopWatch::Private +std::string Base::Tools::currentDateTimeString() { - QElapsedTimer t; -}; - -StopWatch::StopWatch() - : d(new Private) -{} - -StopWatch::~StopWatch() -{ - delete d; -} - -void StopWatch::start() -{ - d->t.start(); -} - -int StopWatch::restart() -{ - return d->t.restart(); -} - -int StopWatch::elapsed() -{ - return d->t.elapsed(); -} - -std::string StopWatch::toString(int ms) const -{ - int total = ms; - int msec = total % 1000; - total = total / 1000; - int secs = total % 60; - total = total / 60; - int mins = total % 60; - int hour = total / 60; - std::stringstream str; - str << "Needed time: "; - if (hour > 0) { - str << hour << "h " << mins << "m " << secs << "s"; - } - else if (mins > 0) { - str << mins << "m " << secs << "s"; - } - else if (secs > 0) { - str << secs << "s"; - } - else { - str << msec << "ms"; - } - return str.str(); + return QDateTime::currentDateTime() + .toTimeSpec(Qt::OffsetFromUTC) + .toString(Qt::ISODate) + .toStdString(); } diff --git a/src/Base/Tools.h b/src/Base/Tools.h index 4f2c957b4b..b17907bbc4 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -145,29 +145,6 @@ inline T fmod(T numerator, T denominator) // ---------------------------------------------------------------------------- -class BaseExport StopWatch -{ -public: - StopWatch(); - ~StopWatch(); - - void start(); - int restart(); - int elapsed(); - std::string toString(int ms) const; - - StopWatch(const StopWatch&) = delete; - StopWatch(StopWatch&&) = delete; - StopWatch& operator=(const StopWatch&) = delete; - StopWatch& operator=(StopWatch&&) = delete; - -private: - struct Private; - Private* d; -}; - -// ---------------------------------------------------------------------------- - // NOLINTBEGIN template struct FlagToggler @@ -346,6 +323,8 @@ struct BaseExport Tools * @return */ static std::string joinList(const std::vector& vec, const std::string& sep = ", "); + + static std::string currentDateTimeString(); }; diff --git a/src/Base/TypePy.xml b/src/Base/TypePy.xml index 55addb1fc6..25e868a6ac 100644 --- a/src/Base/TypePy.xml +++ b/src/Base/TypePy.xml @@ -17,12 +17,9 @@ namespace Base { This is the Type class - Base.BaseType class. + BaseTypePy class. -This class is not intended to create instances of itself, but to get information -from the different types and create instances of them. -Regarding instantiation, this is possible in cases that inherit from the -Base::BaseClass class and are not abstract classes. + This class provides functionality related to type management in the Base module. It's not intended for direct instantiation but for accessing type information and creating instances of various types. Instantiation is possible for classes that inherit from the Base::BaseClass class and are not abstract. diff --git a/src/Doc/BuildDocDoxyFull.cfg b/src/Doc/BuildDocDoxyFull.cfg index 99eff7ccc6..6b5323f8b9 100644 --- a/src/Doc/BuildDocDoxyFull.cfg +++ b/src/Doc/BuildDocDoxyFull.cfg @@ -593,7 +593,7 @@ REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. +# link to the source code. Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES diff --git a/src/FCConfig.h b/src/FCConfig.h index a075b010ea..294d16ad4c 100644 --- a/src/FCConfig.h +++ b/src/FCConfig.h @@ -31,7 +31,6 @@ #define FC_CONFIG_H - //************************************************************************** // switching the operating systems @@ -43,7 +42,7 @@ # ifndef FC_OS_WIN64 # define FC_OS_WIN64 # endif -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) +#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) # ifndef FC_OS_WIN32 # define FC_OS_WIN32 # endif @@ -52,10 +51,6 @@ # include # endif // HAVE_CONFIG_H -# endif -#elif defined(__MWERKS__) && defined(__INTEL__) -# ifndef FC_OS_WIN32 -# define FC_OS_WIN32 # endif #elif defined(__APPLE__) # ifndef FC_OS_MACOSX @@ -99,7 +94,7 @@ // Standard types for Windows #if defined(__MINGW32__) -// nothing specific here +// Do not remove this line! #elif defined (FC_OS_WIN64) || defined (FC_OS_WIN32) #ifndef HAVE_INT8_T @@ -209,7 +204,7 @@ typedef unsigned __int64 uint64_t; # define QT_NO_KEYWORDS #endif -#if defined (FC_OS_WIN32) || defined(FC_OS_CYGWIN) +#if defined (FC_OS_WIN32) # ifndef QT_DLL # define QT_DLL # endif @@ -226,7 +221,7 @@ typedef unsigned __int64 uint64_t; //************************************************************************** // Coin3D -#if defined (FC_OS_WIN32) || defined(FC_OS_CYGWIN) +#if defined (FC_OS_WIN32) # ifndef FCGui //COIN_DLL is defined in the FreeCADGui target # ifndef COIN_DLL # define COIN_DLL @@ -236,7 +231,7 @@ typedef unsigned __int64 uint64_t; //************************************************************************** // Quarter -#if defined (FC_OS_WIN32) || defined(FC_OS_CYGWIN) +#if defined (FC_OS_WIN32) # ifndef QUARTER_INTERNAL # ifndef QUARTER_DLL # define QUARTER_DLL diff --git a/src/Gui/Action.cpp b/src/Gui/Action.cpp index 279447a86b..55961557ea 100644 --- a/src/Gui/Action.cpp +++ b/src/Gui/Action.cpp @@ -325,7 +325,7 @@ QString Action::createToolTip(QString helpText, // // The long winding code is to deal with the fact that Qt will auto wrap // a rich text tooltip but the width is too short. We can escape the auto - // wrappin using

. + // wrapping using

. QString shortcut = shortCut; if (!shortcut.isEmpty() && helpText.endsWith(shortcut)) { diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index a6a2fadd58..4b033b6262 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -1260,6 +1260,10 @@ void Application::viewActivated(MDIView* pcView) #endif signalActivateView(pcView); + getMainWindow()->setWindowTitle(pcView->buildWindowTitle()); + if (auto document = pcView->getGuiDocument()) { + getMainWindow()->setWindowModified(document->isModified()); + } // Set the new active document which is taken of the activated view. If, however, // this view is passive we let the currently active document unchanged as we would diff --git a/src/Gui/AutoSaver.cpp b/src/Gui/AutoSaver.cpp index 9e89ab081b..8ff9a9013f 100644 --- a/src/Gui/AutoSaver.cpp +++ b/src/Gui/AutoSaver.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -171,9 +172,8 @@ void AutoSaver::saveDocument(const std::string& name, AutoSaveProperty& saver) getMainWindow()->showMessage(tr("Please wait until the AutoRecovery file has been saved..."), 5000); //qApp->processEvents(); + Base::TimeElapsed startTime; // open extra scope to close ZipWriter properly - Base::StopWatch watch; - watch.start(); { if (!this->compressed) { RecoveryWriter writer(saver); @@ -220,8 +220,7 @@ void AutoSaver::saveDocument(const std::string& name, AutoSaveProperty& saver) } } - std::string str = watch.toString(watch.elapsed()); - Base::Console().Log("Save AutoRecovery file: %s\n", str.c_str()); + Base::Console().Log("Save AutoRecovery file in %fs\n", Base::TimeElapsed::diffTimeF(startTime,Base::TimeElapsed())); hGrp->SetBool("SaveThumbnail",save); } } diff --git a/src/Gui/BlenderNavigationStyle.cpp b/src/Gui/BlenderNavigationStyle.cpp index 269dbfdb49..cb6775ccf8 100644 --- a/src/Gui/BlenderNavigationStyle.cpp +++ b/src/Gui/BlenderNavigationStyle.cpp @@ -256,10 +256,13 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) case BUTTON1DOWN: case CTRLDOWN|BUTTON1DOWN: // make sure not to change the selection when stopping spinning - if (curmode == NavigationStyle::SPINNING || this->lockButton1 && curmode != NavigationStyle::SELECTION) + if (curmode == NavigationStyle::SPINNING + || (this->lockButton1 && curmode != NavigationStyle::SELECTION)) { newmode = NavigationStyle::IDLE; - else + } + else { newmode = NavigationStyle::SELECTION; + } break; case BUTTON1DOWN|BUTTON2DOWN: newmode = NavigationStyle::PANNING; diff --git a/src/Gui/CADNavigationStyle.cpp b/src/Gui/CADNavigationStyle.cpp index b5464695e4..931eafaf5a 100644 --- a/src/Gui/CADNavigationStyle.cpp +++ b/src/Gui/CADNavigationStyle.cpp @@ -260,10 +260,13 @@ SbBool CADNavigationStyle::processSoEvent(const SoEvent * const ev) break; case BUTTON1DOWN: // make sure not to change the selection when stopping spinning - if (curmode == NavigationStyle::SPINNING || this->lockButton1 && curmode != NavigationStyle::SELECTION) + if (curmode == NavigationStyle::SPINNING + || (this->lockButton1 && curmode != NavigationStyle::SELECTION)) { newmode = NavigationStyle::IDLE; - else + } + else { newmode = NavigationStyle::SELECTION; + } break; case BUTTON3DOWN: if (curmode == NavigationStyle::SPINNING) { break; } diff --git a/src/Gui/CommandActionPy.cpp b/src/Gui/CommandActionPy.cpp index 389f68783c..b3671882bb 100644 --- a/src/Gui/CommandActionPy.cpp +++ b/src/Gui/CommandActionPy.cpp @@ -59,7 +59,7 @@ Py::Object CommandActionPy::getAction() PythonWrapper wrap; wrap.loadWidgetsModule(); - return wrap.fromQObject(action->action()); + return wrap.fromQAction(action->action()); } else { return Py::None(); diff --git a/src/Gui/CommandFeat.cpp b/src/Gui/CommandFeat.cpp index e80dae50f7..931b3b188a 100644 --- a/src/Gui/CommandFeat.cpp +++ b/src/Gui/CommandFeat.cpp @@ -26,6 +26,7 @@ #endif #include +#include #include "Application.h" #include "CommandT.h" #include "DockWindowManager.h" @@ -86,29 +87,44 @@ void StdCmdRandomColor::activated(int iMsg) { Q_UNUSED(iMsg); + auto setRandomColor = [](ViewProvider* view) { + // NOLINTBEGIN + auto fMax = (float)RAND_MAX; + auto fRed = (float)rand()/fMax; + auto fGrn = (float)rand()/fMax; + auto fBlu = (float)rand()/fMax; + // NOLINTEND + auto objColor = App::Color(fRed, fGrn, fBlu); + + auto vpLink = dynamic_cast(view); + if (vpLink) { + if (!vpLink->OverrideMaterial.getValue()) { + vpLink->OverrideMaterial.setValue(true); + } + vpLink->ShapeMaterial.setDiffuseColor(objColor); + } + else if (view) { + if (auto color = dynamic_cast(view->getPropertyByName("ShapeColor"))) { + // get the view provider of the selected object and set the shape color + color->setValue(objColor); + } + } + }; + // get the complete selection std::vector sel = Selection().getCompleteSelection(); Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set Random Color")); for (const auto & it : sel) { - auto fMax = (float)RAND_MAX; - auto fRed = (float)rand()/fMax; - auto fGrn = (float)rand()/fMax; - auto fBlu = (float)rand()/fMax; - auto objColor = App::Color(fRed, fGrn, fBlu); + ViewProvider* view = Application::Instance->getViewProvider(it.pObject); + setRandomColor(view); - ViewProvider* view = Application::Instance->getDocument(it.pDoc)->getViewProvider(it.pObject); - auto vpLink = dynamic_cast(view); - if(vpLink) { - if(!vpLink->OverrideMaterial.getValue()) - vpLink->OverrideMaterial.setValue(true); - vpLink->ShapeMaterial.setDiffuseColor(objColor); - continue; - } - auto color = dynamic_cast(view->getPropertyByName("ShapeColor")); - if (color) { - // get the view provider of the selected object and set the shape color - color->setValue(objColor); + if (auto grp = it.pObject->getExtension()) { + std::vector objs = grp->getObjects(); + for (auto obj : objs) { + ViewProvider* view = Application::Instance->getViewProvider(obj); + setRandomColor(view); + } } } @@ -120,6 +136,55 @@ bool StdCmdRandomColor::isActive() return (Gui::Selection().size() != 0); } +//=========================================================================== +// Std_ToggleFreeze +//=========================================================================== +DEF_STD_CMD_A(StdCmdToggleFreeze) + +StdCmdToggleFreeze::StdCmdToggleFreeze() + : Command("Std_ToggleFreeze") +{ + sGroup = "File"; + sMenuText = QT_TR_NOOP("Toggle freeze"); + static std::string toolTip = std::string("

") + + QT_TR_NOOP("Toggles freeze state of the selected objects. A freezed object is not recomputed when its parents change.") + + "

"; + sToolTipText = toolTip.c_str(); + sStatusTip = sToolTipText; + sWhatsThis = "Std_ToggleFreeze"; + sPixmap = "Std_ToggleFreeze"; + sAccel = ""; + eType = AlterDoc; +} + +void StdCmdToggleFreeze::activated(int iMsg) +{ + Q_UNUSED(iMsg); + getActiveGuiDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Toggle freeze")); + + std::vector sels = Gui::Selection().getCompleteSelection(); + + for (Gui::SelectionSingleton::SelObj& sel : sels) { + App::DocumentObject* obj = sel.pObject; + if (!obj) + continue; + + if (obj->isFreezed()) + obj->unfreeze(); + else + obj->freeze(); + } + + getActiveGuiDocument()->commitCommand(); +} + +bool StdCmdToggleFreeze::isActive() +{ + return (Gui::Selection().size() != 0); +} + + + //=========================================================================== // Std_SendToPythonConsole @@ -221,6 +286,7 @@ void CreateFeatCommands() CommandManager &rcCmdMgr = Application::Instance->commandManager(); rcCmdMgr.addCommand(new StdCmdFeatRecompute()); + rcCmdMgr.addCommand(new StdCmdToggleFreeze()); rcCmdMgr.addCommand(new StdCmdRandomColor()); rcCmdMgr.addCommand(new StdCmdSendToPythonConsole()); } diff --git a/src/Gui/CommandLink.cpp b/src/Gui/CommandLink.cpp index 41dc31c699..d5243d5d91 100644 --- a/src/Gui/CommandLink.cpp +++ b/src/Gui/CommandLink.cpp @@ -208,12 +208,9 @@ StdCmdLinkMake::StdCmdLinkMake() { sGroup = "Link"; sMenuText = QT_TR_NOOP("Make link"); - static std::string toolTip = std::string("

") - + QT_TR_NOOP("A Link is an object that references or links to another object in the same " - "document, or in another document.Unlike Clones, Links reference the original Shape directly, " - " making them more memory efficient which helps with the creation of complex assemblies.") - + "

"; - sToolTipText = toolTip.c_str(); + sToolTipText = QT_TR_NOOP("A Link is an object that references or links to another object in the same document, " + "or in another document. Unlike Clones, Links reference the original Shape directly, " + "making them more memory-efficient, which helps with the creation of complex assemblies."); sWhatsThis = "Std_LinkMake"; sStatusTip = sToolTipText; eType = AlterDoc; diff --git a/src/Gui/CommandPyImp.cpp b/src/Gui/CommandPyImp.cpp index 09cbf9fcd5..57d6b9bac2 100644 --- a/src/Gui/CommandPyImp.cpp +++ b/src/Gui/CommandPyImp.cpp @@ -274,10 +274,10 @@ PyObject* CommandPy::getAction(PyObject *args) if (group) { const auto actions = group->actions(); for (auto a : actions) - list.append(wrap.fromQObject(a)); + list.append(wrap.fromQAction(a)); } else if (action) { - list.append(wrap.fromQObject(action->action())); + list.append(wrap.fromQAction(action->action())); } return Py::new_reference_to(list); diff --git a/src/Gui/CommandStructure.cpp b/src/Gui/CommandStructure.cpp index d586d909ae..fdb68d1fca 100644 --- a/src/Gui/CommandStructure.cpp +++ b/src/Gui/CommandStructure.cpp @@ -49,13 +49,9 @@ StdCmdPart::StdCmdPart() { sGroup = "Structure"; sMenuText = QT_TR_NOOP("Create part"); - static std::string toolTip = std::string("

") - + QT_TR_NOOP("A Part is is a general purpose container to keep together a " - "group of objects so that they act as a unit in the 3D view.\n" - "It is meant to arrange objects that have a Part TopoShape, like Part Primitives, PartDesign" - " Bodies, and other Parts.") - + "

"; - sToolTipText = toolTip.c_str(); + sToolTipText = QT_TR_NOOP("A Part is a general purpose container to keep together a group of objects so that they " + "act as a unit in the 3D view. It is meant to arrange objects that have a Part " + "TopoShape, like Part Primitives, PartDesign Bodies, and other Parts."); sWhatsThis = "Std_Part"; sStatusTip = sToolTipText; sPixmap = "Geofeaturegroup"; @@ -96,13 +92,9 @@ StdCmdGroup::StdCmdGroup() { sGroup = "Structure"; sMenuText = QT_TR_NOOP("Create group"); - static std::string toolTip = std::string("

") - + QT_TR_NOOP("A Group is a general purpose container to group objects in the " - "Tree view, regardless of their data type. It is a simple folder to organize " - "the objects in a model.") - + "

"; - - sToolTipText = toolTip.c_str(); + sToolTipText = QT_TR_NOOP("A Group is a general purpose container to group objects in the " + "Tree view, regardless of their data type. It is a simple folder to organize " + "the objects in a model."); sWhatsThis = "Std_Group"; sStatusTip = sToolTipText; sPixmap = "folder"; diff --git a/src/Gui/CommandView.cpp b/src/Gui/CommandView.cpp index d13169785c..fc6eb26396 100644 --- a/src/Gui/CommandView.cpp +++ b/src/Gui/CommandView.cpp @@ -1633,6 +1633,40 @@ bool StdCmdViewFitSelection::isActive() return getGuiApplication()->sendHasMsgToActiveView("ViewSelection"); } +//=========================================================================== +// Std_ViewCommandGroup +//=========================================================================== +class StdCmdViewGroup: public Gui::GroupCommand +{ +public: + StdCmdViewGroup() + : GroupCommand("Std_ViewGroup") + { + sGroup = "Standard-View"; + 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"; + sPixmap = "view-isometric"; + eType = Alter3DView; + + setCheckable(false); + setRememberLast(true); + + addCommand("Std_ViewIsometric"); + addCommand("Std_ViewFront"); + addCommand("Std_ViewRight"); + addCommand("Std_ViewRear"); + addCommand("Std_ViewBottom"); + addCommand("Std_ViewLeft"); + } + + const char* className() const override + { + return "StdCmdViewGroup"; + } +}; + //=========================================================================== // Std_ViewDock //=========================================================================== @@ -4180,6 +4214,7 @@ void CreateViewStdCommands() rcCmdMgr.addCommand(new StdCmdViewRotateRight()); rcCmdMgr.addCommand(new StdStoreWorkingView()); rcCmdMgr.addCommand(new StdRecallWorkingView()); + rcCmdMgr.addCommand(new StdCmdViewGroup()); rcCmdMgr.addCommand(new StdCmdViewExample1()); rcCmdMgr.addCommand(new StdCmdViewExample2()); diff --git a/src/Gui/DAGView/DAGModel.cpp b/src/Gui/DAGView/DAGModel.cpp index 5b9833924d..b005fc4453 100644 --- a/src/Gui/DAGView/DAGModel.cpp +++ b/src/Gui/DAGView/DAGModel.cpp @@ -460,7 +460,7 @@ void Model::updateSlot() //for speed. Not doing yet, as I want a simple algorithm until //a more complete picture is formed. - Base::TimeInfo startTime; + Base::TimeElapsed startTime; //here we will cycle through the graph updating edges. //we have to do this first and in isolation because everything is dependent on an up to date graph. @@ -761,7 +761,7 @@ void Model::updateSlot() //Modeling_Challenge_Casting_ta4 with 59 features: "Initialize DAG View time: 0.007" //keeping algo simple with extra loops only added 0.002 to above number. -// std::cout << "Initialize DAG View time: " << Base::TimeInfo::diffTimeF(startTime, Base::TimeInfo()) << std::endl; +// std::cout << "Initialize DAG View time: " << Base::TimeElapsed::diffTimeF(startTime, Base::TimeElapsed()) << std::endl; // outputGraphviz(*theGraph, "./graphviz.dot"); graphDirty = false; diff --git a/src/Gui/DlgExpressionInput.cpp b/src/Gui/DlgExpressionInput.cpp index ff93a60adc..a2d8a7cf91 100644 --- a/src/Gui/DlgExpressionInput.cpp +++ b/src/Gui/DlgExpressionInput.cpp @@ -90,8 +90,6 @@ DlgExpressionInput::DlgExpressionInput(const App::ObjectIdentifier & _path, #endif setAttribute(Qt::WA_NoSystemBackground, true); setAttribute(Qt::WA_TranslucentBackground, true); - - qApp->installEventFilter(this); } else { ui->expression->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); @@ -109,7 +107,6 @@ DlgExpressionInput::DlgExpressionInput(const App::ObjectIdentifier & _path, DlgExpressionInput::~DlgExpressionInput() { - qApp->removeEventFilter(this); delete ui; } @@ -282,34 +279,5 @@ void DlgExpressionInput::show() ui->expression->selectAll(); } -void DlgExpressionInput::showEvent(QShowEvent* ev) -{ - QDialog::showEvent(ev); -} - -bool DlgExpressionInput::eventFilter(QObject *obj, QEvent *ev) -{ - // if the user clicks on a widget different to this - if (ev->type() == QEvent::MouseButtonPress && obj != this) { - // Since the widget has a transparent background we cannot rely - // on the size of the widget. Instead, it must be checked if the - // cursor is on this or an underlying widget or outside. - if (!underMouse()) { - // if the expression fields context-menu is open do not close the dialog - auto menu = qobject_cast(obj); - if (menu && menu->parentWidget() == ui->expression) { - return false; - } - bool on = ui->expression->completerActive(); - // Do this only if the completer is not shown - if (!on) { - qApp->removeEventFilter(this); - reject(); - } - } - } - return false; -} - #include "moc_DlgExpressionInput.cpp" diff --git a/src/Gui/DlgExpressionInput.h b/src/Gui/DlgExpressionInput.h index 180cdf2000..8bad8ae59f 100644 --- a/src/Gui/DlgExpressionInput.h +++ b/src/Gui/DlgExpressionInput.h @@ -76,13 +76,10 @@ public: QPoint expressionPosition() const; void setExpressionInputSize(int width, int height); - bool eventFilter(QObject *obj, QEvent *event) override; - public Q_SLOTS: void show(); protected: - void showEvent(QShowEvent*) override; void mouseReleaseEvent(QMouseEvent*) override; void mousePressEvent(QMouseEvent*) override; diff --git a/src/Gui/DlgKeyboard.ui b/src/Gui/DlgKeyboard.ui index 8ff9076675..2c0ba36062 100644 --- a/src/Gui/DlgKeyboard.ui +++ b/src/Gui/DlgKeyboard.ui @@ -134,7 +134,7 @@ - Multi-key sequence delay: + Multi-key sequence delay: @@ -153,9 +153,9 @@ - Time in milliseconds to wait for the next key stroke of the current key sequence. + Time in milliseconds to wait for the next keystroke of the current key sequence. For example, pressing 'F' twice in less than the time delay setting here will be -be treated as shorctcut key sequence 'F, F'. +treated as shortcut key sequence 'F, F'. 10000 diff --git a/src/Gui/DlgLocationPos.ui b/src/Gui/DlgLocationPos.ui index d778fc2c59..e862a92455 100644 --- a/src/Gui/DlgLocationPos.ui +++ b/src/Gui/DlgLocationPos.ui @@ -159,7 +159,7 @@ - 5 m + 5 m diff --git a/src/Gui/DlgPreferencesImp.cpp b/src/Gui/DlgPreferencesImp.cpp index b6db2e073a..cf6be8493d 100644 --- a/src/Gui/DlgPreferencesImp.cpp +++ b/src/Gui/DlgPreferencesImp.cpp @@ -927,7 +927,7 @@ void DlgPreferencesImp::restorePageDefaults(PreferencesPageItem* item) page->resetSettingsToDefaults(); /** * Let's save the restart request before the page object is deleted and replaced with - * the newPage object (wich has restartRequired initialized to false) + * the newPage object (which has restartRequired initialized to false) */ restartRequired = restartRequired || page->isRestartRequired(); diff --git a/src/Gui/DlgPropertyLink.cpp b/src/Gui/DlgPropertyLink.cpp index c611f1531d..973a5d1e70 100644 --- a/src/Gui/DlgPropertyLink.cpp +++ b/src/Gui/DlgPropertyLink.cpp @@ -525,7 +525,14 @@ void DlgPropertyLink::onItemSelectionChanged() auto vp = Base::freecad_dynamic_cast( doc->getViewProvider(obj)); if(vp) { - doc->setActiveView(vp, Gui::View3DInventor::getClassTypeId()); + // If the view provider uses a special window for rendering, switch to it + MDIView *view = vp->getMDIView(); + if (view) { + doc->setActiveWindow(view); + } + else { + doc->setActiveView(vp, Gui::View3DInventor::getClassTypeId()); + } } } } diff --git a/src/Gui/ExpressionCompleter.cpp b/src/Gui/ExpressionCompleter.cpp index 27c3cd5338..015a2dc135 100644 --- a/src/Gui/ExpressionCompleter.cpp +++ b/src/Gui/ExpressionCompleter.cpp @@ -959,25 +959,18 @@ void ExpressionLineEdit::keyPressEvent(QKeyEvent* e) void ExpressionLineEdit::contextMenuEvent(QContextMenuEvent* event) { QMenu* menu = createStandardContextMenu(); - menu->addSeparator(); - QAction* match = menu->addAction(tr("Exact match")); if (completer) { + menu->addSeparator(); + QAction *match = menu->addAction(tr("Exact match")); match->setCheckable(true); match->setChecked(completer->filterMode() == Qt::MatchStartsWith); + QObject::connect(match, &QAction::toggled, + this, &Gui::ExpressionLineEdit::setExactMatch); } - else { - match->setVisible(false); - } + menu->setAttribute(Qt::WA_DeleteOnClose); - QAction* action = menu->exec(event->globalPos()); - - if (completer) { - if (action == match) - setExactMatch(match->isChecked()); - } - - delete menu; + menu->popup(event->globalPos()); } diff --git a/src/Gui/Icons/Std_ToggleFreeze.svg b/src/Gui/Icons/Std_ToggleFreeze.svg new file mode 100644 index 0000000000..dbae009f61 --- /dev/null +++ b/src/Gui/Icons/Std_ToggleFreeze.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/resource.qrc b/src/Gui/Icons/resource.qrc index 072fa97833..6911a75902 100644 --- a/src/Gui/Icons/resource.qrc +++ b/src/Gui/Icons/resource.qrc @@ -270,10 +270,8 @@ image-plane.svg image-scaling.svg VarSet.svg + Std_ToggleFreeze.svg - - - index.theme diff --git a/src/Gui/Language/FreeCAD.ts b/src/Gui/Language/FreeCAD.ts index 6e9fdfc4b7..94968fb3f2 100644 --- a/src/Gui/Language/FreeCAD.ts +++ b/src/Gui/Language/FreeCAD.ts @@ -42,24 +42,24 @@
- - + + Angle - - + + Axis - + Position - + Enum @@ -112,12 +112,12 @@ Command - + Edit - + Import @@ -188,8 +188,8 @@
- + Transform @@ -421,42 +421,42 @@ EditMode - + Default - + The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform - + The object will have its placement editable with the Std TransformManip command - + Cutting - + This edit mode is implemented as available but currently does not seem to be used by any object - + Color - + The object will have the color of its individual faces editable with the Part FaceColors command @@ -6058,15 +6058,15 @@ Do you want to save your changes? - + Graphviz format - + Export graph @@ -6562,7 +6562,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object @@ -6570,12 +6570,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error - + Object not found @@ -7409,7 +7409,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view @@ -7417,7 +7417,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search @@ -7425,183 +7425,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... - + Search for objects - + Activate document - + Activate document %1 - + Tree settings - + Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group - + Labels & Attributes - + Description - + Show items hidden in tree view - + Show items that are marked as 'hidden' in the tree view - + Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view - + Create group... - + Create a group - - + + Rename - + Rename object - + Finish editing - + Finish editing object - + Add dependent objects to selection - + Adds all dependent objects to the selection - + Close document - + Close the document - + Reload document - + Reload a partially loaded document - + Skip recomputes - + Enable or disable recomputations of document - + Allow partial recomputes - + Enable or disable recomputating editing object when 'skip recomputation' is enabled - + Mark to recompute - + Mark this object to be recomputed - + Recompute object - + Recompute the selected object - + (but must be executed) - + %1, Internal name: %2 @@ -7897,45 +7897,45 @@ Do you want to specify another directory?
- - - + + + Unknown filetype - - + + Cannot open unknown filetype: %1 - + Export failed - + Cannot save to unknown filetype: %1 - + Workbench failure - + %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version @@ -7986,8 +7986,8 @@ Do you want to specify another directory?
- + Unsaved document @@ -8455,36 +8455,36 @@ Choose 'Abort' to abort - - + + Finish - - + + Clear - - - + + + Cancel - + Inner - + Outer - + Split @@ -8522,12 +8522,12 @@ Please open a browser window and type in: http://localhost:%1. - + Out of memory - + Not enough memory available to display the data. @@ -8543,7 +8543,7 @@ Please open a browser window and type in: http://localhost:%1. - + Navigation styles @@ -8714,8 +8714,8 @@ underscore, and must not start with a digit. - - + + Drag & drop failed @@ -8812,7 +8812,7 @@ the current copy will be lost. - + Edit %1 @@ -8837,8 +8837,8 @@ the current copy will be lost. - + Toggle floating window @@ -8854,187 +8854,192 @@ the current copy will be lost. - + UI - + Tree view - + Item background color - + Item background padding - + Resizable columns - + + Show visibility icon + + + + Hide extra column - + Hide scroll bar - + Hide header - + IconSize - + FontSize - + ItemSpacing - + Overlay - + Hide tab bar - + Hide property view scroll bar - + Auto hide in non 3D view - + Auto mouse pass through - + Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) - + Alpha test radius - + Check Navigation Cube - + Hint trigger size - + Hint width - + Left panel hint offset - + Left panel hint length - + Right panel hint offset - + Right panel hint length - + Top panel hint offset - + Top panel hint length - + Bottom panel hint offset - + Bottom panel hint length - + Hint show tab bar - + Hint delay (ms) - + Splitter auto hide delay (ms) - + Activate on hover - + Layout delay (ms) - + Animation duration (ms) - + Animation curve type @@ -9043,6 +9048,16 @@ the current copy will be lost. Active object + + + UnSuppress + + + + + Suppress + +
SelectionFilter @@ -9967,8 +9982,8 @@ the current copy will be lost. - + Unnamed @@ -11612,35 +11627,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. - + Tree view item background padding. - + Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + + Workbench diff --git a/src/Gui/Language/FreeCAD_be.ts b/src/Gui/Language/FreeCAD_be.ts index f9e92c98d5..31fbc33773 100644 --- a/src/Gui/Language/FreeCAD_be.ts +++ b/src/Gui/Language/FreeCAD_be.ts @@ -42,24 +42,24 @@ <пусты> - - + + Angle Вугал - - + + Axis Вось - + Position Становішча - + Enum Пералічэнне @@ -112,12 +112,12 @@ Command - + Edit Змяніць - + Import Імпарт @@ -188,8 +188,8 @@ Размясціць - + Transform Пераўтварыць @@ -421,42 +421,42 @@ EditMode - + Default Першапачаткова - + The object will be edited using the mode defined internally to be the most appropriate for the object type Аб'ект будзе зменены з ужываннем рэжыму, вызначанага ўнутры як найбольш прыдатны для дадзенага тыпу аб'екта - + Transform Пераўтварыць - + The object will have its placement editable with the Std TransformManip command Размяшчэнне аб'екту будзе даступна для змены з дапамогай каманды Std TransformManip - + Cutting Абрэзка - + This edit mode is implemented as available but currently does not seem to be used by any object Рэжым змены рэалізаваны як даступны, але ў цяперашні час, падобна, не ўжываецца ні адным аб'ектам - + Color Колер - + The object will have the color of its individual faces editable with the Part FaceColors command Колер асобных граняў аб'екта можна будзе мяняць з дапамогай каманды Part FaceColors @@ -2930,12 +2930,12 @@ VBO забяспечваюць значны прырост эфектыўнас Letter color: - Letter color: + Колер літары: Axis letter color - Axis letter color + Колер літары восі @@ -4123,12 +4123,12 @@ You can also use the form: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Празрыстасць, калі стан неактыўны Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Празрыстасць куб навігацыі, калі ён не сфакусаваны @@ -6121,15 +6121,15 @@ Do you want to save your changes? Фармат PDF - + Graphviz format Фармат Graphviz - + Export graph Экспартаваць дыяграму @@ -6629,7 +6629,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Змяніць звязаны аб'ект @@ -6637,12 +6637,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Памылка - + Object not found Аб'ект не знойдзены @@ -7043,7 +7043,7 @@ Do you want to specify another directory? Position - Position + Становішча @@ -7481,7 +7481,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Прагляд дрэва @@ -7489,7 +7489,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Пошук @@ -7497,184 +7497,184 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Пошук... - + Search for objects Пошук аб'ектаў - + Activate document Задзейнічаць дакумент - + Activate document %1 Задзейнічаць дакумент %1 - + Tree settings Налады дрэва - + Show description column Паказаць слупок апісання - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Паказаць дадатковы слупок прагляду дрэва для апісання элемента. Апісанне элемента можна задаць, калі націснуць клавішу <F2> (ці кнопку змены ў вашай аперацыйнай сістэме), альбо змяніць уласцівасць 'label2'. - + Group Суполка - + Labels & Attributes Надпісы і атрыбуты - + Description Апісанне - + Show items hidden in tree view Паказаць схаваныя элементы ў праглядзе дрэва - + Show items that are marked as 'hidden' in the tree view Паказвае элементы, якія пазначаныя як 'схаваныя' у праглядзе дрэва - + Toggle visibility in tree view Пераключыць бачнасць у праглядзе дрэва - + Toggles the visibility of selected items in the tree view Пераключае бачнасць абраных элементаў у праглядзе дрэва - + Create group... Стварыць суполку... - + Create a group Стварыць суполку - - + + Rename Пераназваць - + Rename object Пераназваць аб'ект - + Finish editing Скончыць змену - + Finish editing object Скончыць змену аб'екта - + Add dependent objects to selection Дадаць залежныя аб'екты да выдзялення - + Adds all dependent objects to the selection Дадаць усе залежныя аб'екты да выдзялення - + Close document Зачыніць дакумент - + Close the document Закрыць дакумент - + Reload document Перазагрузіць дакумент - + Reload a partially loaded document Перазагрузіць часткова загружаныя дакументы - + Skip recomputes Прапусціць вылічэнні - + Enable or disable recomputations of document Уключае ці адключае паўторныя вылічэнні дакумента - + Allow partial recomputes Дазволіць частковыя вылічэнні - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Уключае ці адключае паўторныя вылічэнні аб'екта змены, калі ўключана налада 'Прапусціць вылічэнні' - + Mark to recompute Адзначыць для пераліку - + Mark this object to be recomputed Адзначыць аб'ект да пералічэння - + Recompute object Вылічыць аб'ект - + Recompute the selected object Вылічыць абраны аб'ект - + (but must be executed) (але павінен быць выкананы) - + %1, Internal name: %2 %1, унутраная назва: %2 @@ -7970,47 +7970,47 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Невядомы тып файла - - + + Cannot open unknown filetype: %1 Не атрмылася адчыніць невядомы тып файла: %1 - + Export failed Экспартаваць не атрымалася - + Cannot save to unknown filetype: %1 Не атрымалася захаваць у невядомым тыпе файла: %1 - + Workbench failure Памылка загрузкі варштату - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Ваша сістэма працуе пад кіраваннем OpenGL%1.%2. Для FreeCAD патрабуецца OpenGL версіі 2.0 ці вышэй. Калі ласка, абновіце ваш графічны драйвер і/ці відэакарту па неабходнасці. - + Invalid OpenGL Version Хібная версія OpenGL @@ -8061,8 +8061,8 @@ Do you want to specify another directory? Экспарт у PDF... - + Unsaved document Незахаваны дакумент @@ -8542,36 +8542,36 @@ Choose 'Abort' to abort Захаваць макрас - - + + Finish Скончыць - - + + Clear Ачысціць - - - + + + Cancel Скасаваць - + Inner Унутры - + Outer Звонку - + Split Падзяліць @@ -8611,12 +8611,12 @@ Please open a browser window and type in: http://localhost:%1. Налады... - + Out of memory Не хапае памяці - + Not enough memory available to display the data. Недастаткова памяці для адлюстравання дадзеных. @@ -8632,7 +8632,7 @@ Please open a browser window and type in: http://localhost:%1. Не атрымалася знайсці файл %1 ні ў %2, ні ў %3 - + Navigation styles Стылі навігацыі @@ -8803,8 +8803,8 @@ underscore, and must not start with a digit. Не атрымалася дадаць уласцівасць да '%1': %2 - - + + Drag & drop failed Не атрымалася перамясціць @@ -8905,7 +8905,7 @@ the current copy will be lost. Пераназначыць колеры... - + Edit %1 Змяніць %1 @@ -8930,8 +8930,8 @@ the current copy will be lost. Пераключыць накладанне - + Toggle floating window Пераключыць акно, якое плавае @@ -8947,187 +8947,192 @@ the current copy will be lost. Націсніце <Esc>, каб схаваць падказку - + UI Інтэрфейс карыстальніка - + Tree view Прагляд дрэва - + Item background color Колер фону элемента - + Item background padding Запаўненне фону элемента - + Resizable columns Памеры слупкоў, якія мяняюцца - + + Show visibility icon + Паказаць гузік бачнасці + + + Hide extra column Схаваць дадатковы слупок - + Hide scroll bar Схаваць паласу пракруткі - + Hide header Схаваць загаловак - + IconSize Памер гузіка - + FontSize Памер шрыфту - + ItemSpacing Адлегласць паміж элементамі - + Overlay Накладанне - + Hide tab bar Схаваць панэль укладак - + Hide property view scroll bar Схаваць паласу пракруткі выгляду ўласцівасцяў - + Auto hide in non 3D view Аўтаматычна хаваць, калі не трохмернае прадстаўленне - + Auto mouse pass through Аўтаматычны пераход мышы - + Auto mouse wheel pass through Аўтаматычны пераход праз кола мышы - + Delay mouse wheel pass through (ms) Затрымка пераходу праз кола мышы (мс) - + Alpha test radius Радыус альфа-тэсту - + Check Navigation Cube Праверыць куб навігацыі - + Hint trigger size Памер трыгеру падказкі - + Hint width Шырыня падказкі - + Left panel hint offset Зрушэнне панэлі падказак злева - + Left panel hint length Даўжыня панэлі падказак злева - + Right panel hint offset Зрушэнне панэлі падказак справа - + Right panel hint length Даўжыня панэлі падказак справа - + Top panel hint offset Зрушэнне панэлі падказак зверху - + Top panel hint length Даўжыня панэлі падказак зверху - + Bottom panel hint offset Зрушэнне панэлі падказак знізу - + Bottom panel hint length Даўжыня панэлі падказак знізу - + Hint show tab bar Падказка, каб паказаць панэль укладак - + Hint delay (ms) Затрымка падказкі (мс) - + Splitter auto hide delay (ms) Затрымка аўтаматычнага хавання падзельніка (мс) - + Activate on hover Задзейнічаць пры навядзенні курсора - + Layout delay (ms) Затрымка макету (мс) - + Animation duration (ms) Працягласць анімацыі (мс) - + Animation curve type Тып крывой анімацыі @@ -9136,6 +9141,16 @@ the current copy will be lost. Active object Бягучы аб'ект + + + UnSuppress + Не хаваць + + + + Suppress + Хаваць + SelectionFilter @@ -10062,8 +10077,8 @@ the current copy will be lost. Стварыць новы пусты дакумент - + Unnamed Без назвы @@ -11715,35 +11730,41 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. Паказаць элемент прагляду дрэва ў фоне. Эфектыўны толькі пры працы ў рэжыме накладання. - + Tree view item background padding. Запаўненне фону элемента прагляду дрэва. - + Hide extra tree view column for item description. Схаваць дадатковы слупок прагляду для апісання элементу. - + Hide tree view scroll bar in dock overlay. Схаваць паласу пракруткі прагляду дрэва ў прымацаваным накладанні. - + Hide tree view header view in dock overlay. Схаваць загаловак прагляду дрэва ў прымацаваным накладанні. - + Allow tree view columns to be manually resized. Дазволіць уручную змяняць памер слупкоў прагляду дрэва. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Калі ўключана, паказаць гузік вачэй перад элементамі прагляду дрэва, які паказвае стан бачнасці элементаў. +Пры націску на яго бачнасць пераключаецца + Workbench diff --git a/src/Gui/Language/FreeCAD_ca.ts b/src/Gui/Language/FreeCAD_ca.ts index 14e8b684c1..82a22bb728 100644 --- a/src/Gui/Language/FreeCAD_ca.ts +++ b/src/Gui/Language/FreeCAD_ca.ts @@ -42,24 +42,24 @@ <buit> - - + + Angle Angle - - + + Axis Eix - + Position Position - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Edita - + Import Importa @@ -188,8 +188,8 @@ Posició - + Transform Transformar @@ -421,42 +421,42 @@ EditMode - + Default Per defecte - + The object will be edited using the mode defined internally to be the most appropriate for the object type L'objecte s'editarà fent servir el mode definit internament com el més apropiat segons el tipus d'objecte - + Transform Transformar - + The object will have its placement editable with the Std TransformManip command L'objecte tindrà el seu lloc editable amb el comandament Std TransformManip - + Cutting Tall - + This edit mode is implemented as available but currently does not seem to be used by any object Aquest mode d'edició es troba implementat com a disponible, però ara mateix no sembla que cap objecte l'usi - + Color Color - + The object will have the color of its individual faces editable with the Part FaceColors command L'objecte tindrà el color de les seves cares individuals editables amb el comandament Part FaceColors @@ -6118,15 +6118,15 @@ Do you want to save your changes? Format PDF - + Graphviz format Graphviz format - + Export graph Exporta el gràfic @@ -6623,7 +6623,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Canvia l'objecte enllaçat @@ -6631,12 +6631,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Error - + Object not found No s'ha trobat l'objecte. @@ -7471,7 +7471,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Vista d'arbre @@ -7479,7 +7479,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Cerca @@ -7487,183 +7487,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Cerca... - + Search for objects Cerca objectes - + Activate document Activa el document - + Activate document %1 Activa el document %1 - + Tree settings Opcions d'Arbre - + Show description column Mostra la columna descripció - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Mostra una columna addicional a la vista d'arbre per la descripció d'element. La descripció d'element es pot establir prement F2 (o el botó editar del vostre sistema operatiu) o bé editant la propietat 'label2'. - + Group Grup - + Labels & Attributes Etiquetes i atributs - + Description Descripció - + Show items hidden in tree view Mostra objectes amagats en la vista en arbre - + Show items that are marked as 'hidden' in the tree view Mostra objectes marcats com a "ocults" a la vista en arbre - + Toggle visibility in tree view Commuta la visibilitat en la vista en arbre - + Toggles the visibility of selected items in the tree view Commuta la visibilitat dels objectes seleccionats - + Create group... Crea un grup... - + Create a group Crea un grup - - + + Rename Reanomena - + Rename object Reanomena l'objecte - + Finish editing Finalitza l'edició - + Finish editing object Finalitza l'edició de l'objecte - + Add dependent objects to selection Afegiu objectes dependents a la selecció - + Adds all dependent objects to the selection Afegiu tots els objectes dependents a la selecció - + Close document Tanca document - + Close the document Tanca el document - + Reload document Torneu a carregar el document - + Reload a partially loaded document Torna a carregar un document que s'ha carregat parcialment - + Skip recomputes Omet el recàlcul - + Enable or disable recomputations of document Activa o desactiva els recàlculs del document - + Allow partial recomputes Permet recàlculs parcials - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Habilita o inhabilita el recàlcul de l'edició d'objectes quan estigui activat «Omet el recàlcul» - + Mark to recompute Marca per a recalcular - + Mark this object to be recomputed Marca aquest objecte per a recalcular-lo - + Recompute object Recalcula l'objecte - + Recompute the selected object Recalcula l'objecte seleccionat - + (but must be executed) (però s'ha d'executar) - + %1, Internal name: %2 %1, nom intern: %2 @@ -7959,45 +7959,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype El tipus de fitxer és desconegut. - - + + Cannot open unknown filetype: %1 No es pot obrir el tipus de fitxer desconegut: %1 - + Export failed Exportació fallida - + Cannot save to unknown filetype: %1 No es pot desar el tipus de fitxer desconegut: %1 - + Workbench failure Fallada del banc de treball - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8048,8 +8048,8 @@ Do you want to specify another directory? S'està exportant a PDF... - + Unsaved document El document no s'ha desat @@ -8526,36 +8526,36 @@ Trieu «Interromp» per a interrompre Desa la macro - - + + Finish Finalitza - - + + Clear Neteja - - - + + + Cancel Cancel·la - + Inner Interior - + Outer Exterior - + Split Dividir @@ -8593,12 +8593,12 @@ Please open a browser window and type in: http://localhost:%1. Opcions... - + Out of memory No hi ha prou memòria. - + Not enough memory available to display the data. No hi ha prou memòria disponible per a mostrar les dades. @@ -8614,7 +8614,7 @@ Please open a browser window and type in: http://localhost:%1. No s'ha trobat el fitxer %1 ni en %2 ni en %3 - + Navigation styles Estils de navegació @@ -8786,8 +8786,8 @@ guions baixos i no ha de començar amb un dígit. No s'ha pogut afegir la propietat a «%1»: %2 - - + + Drag & drop failed S'ha produït un error en arrossegar i deixar anar @@ -8888,7 +8888,7 @@ la còpia actual es perdrà. Sobreescriu els colors... - + Edit %1 Editar %1 @@ -8913,8 +8913,8 @@ la còpia actual es perdrà. Toggle overlay - + Toggle floating window Toggle floating window @@ -8930,187 +8930,192 @@ la còpia actual es perdrà. Press ESC to hide hint - + UI UI - + Tree view Vista d'arbre - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9119,6 +9124,16 @@ la còpia actual es perdrà. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10043,8 +10058,8 @@ la còpia actual es perdrà. Crea un document buit nou - + Unnamed Sense nom @@ -11696,35 +11711,40 @@ Encara voleu continuar? TreeParams - + Tree view item background. Only effective in overlay. La vista en arbre d'objectes està al fons. Només serà efectiva en superposició. - + Tree view item background padding. Farciment del fons de la vista en arbre d'objecte. - + Hide extra tree view column for item description. Amaga la columna extra de vista en arbre per la descripció de l'objecte. - + Hide tree view scroll bar in dock overlay. Amaga la barra de desplaçament de la vista en arbre al moll superposat. - + Hide tree view header view in dock overlay. Amaga la vista de la capçalera de la vista en arbre en la superposició del moll. - + Allow tree view columns to be manually resized. Permet redimensionar manualment les columnes de la vista en arbre. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_cs.ts b/src/Gui/Language/FreeCAD_cs.ts index 07126c6ef9..f33705f377 100644 --- a/src/Gui/Language/FreeCAD_cs.ts +++ b/src/Gui/Language/FreeCAD_cs.ts @@ -42,24 +42,24 @@ <prázdné> - - + + Angle Úhel - - + + Axis Osa - + Position Poloha - + Enum Výčet @@ -112,12 +112,12 @@ Command - + Edit Upravit - + Import Import @@ -188,8 +188,8 @@ Umístění - + Transform Transformace @@ -421,42 +421,42 @@ EditMode - + Default Výchozí - + The object will be edited using the mode defined internally to be the most appropriate for the object type Objekt bude upraven pomocí vnitřního režimu tak, aby byl nejvhodnější pro typ objektu - + Transform Transformace - + The object will have its placement editable with the Std TransformManip command Objekt bude mít upravitelné umístění pomocí příkazu Std TransformManip - + Cutting Řez - + This edit mode is implemented as available but currently does not seem to be used by any object Tento režim úprav je implementován jako dostupný, ale v současné době se zdá, že jej žádný objekt nepoužívá - + Color Barva - + The object will have the color of its individual faces editable with the Part FaceColors command Objekt bude mít barvu svých jednotlivých ploch upravitelných příkazem část FaceColors @@ -6122,15 +6122,15 @@ Chcete uložit provedené změny? PDF formát - + Graphviz format Formát Graphvizu - + Export graph Exportovat graf @@ -6632,7 +6632,7 @@ V pravém pohledu jsou %2 body vybrány. Gui::PropertyEditor::LinkLabel - + Change the linked object Změnit propojený objekt @@ -6640,12 +6640,12 @@ V pravém pohledu jsou %2 body vybrány. Gui::PropertyEditor::LinkSelection - + Error Chyba - + Object not found Objekt nenalezen @@ -7042,7 +7042,7 @@ Do you want to specify another directory? Position - Position + Poloha @@ -7480,7 +7480,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Stromové zobrazení @@ -7488,7 +7488,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Hledat @@ -7496,183 +7496,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Hledat... - + Search for objects Hledání objektů - + Activate document Aktivovat dokument - + Activate document %1 Aktivovat dokumentu %1 - + Tree settings Nastavení stromu - + Show description column Zobrazit sloupec popisu - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Zobrazit extra sloupec stromového zobrazení pro popis položky. Popis položky lze nastavit stisknutím klávesy F2 (nebo tlačítka úprav vašeho OS) nebo úpravou vlastnosti 'label2'. - + Group Skupina - + Labels & Attributes Štítky & atributy - + Description Popis - + Show items hidden in tree view Zobrazit položky skryté ve stromovém zobrazení - + Show items that are marked as 'hidden' in the tree view Zobrazit položky, které jsou označeny jako 'skryté' ve stromovém zobrazení - + Toggle visibility in tree view Přepnout viditelnost ve stromovém zobrazení - + Toggles the visibility of selected items in the tree view Přepíná viditelnost vybraných položek ve stromovém zobrazení - + Create group... Vytvořit skupinu... - + Create a group Vytvořit skupinu - - + + Rename Přejmenovat - + Rename object Přejmenovat objekt - + Finish editing Dokončení úprav - + Finish editing object Dokončení úprav objektu - + Add dependent objects to selection Přidat závislé objekty k výběru - + Adds all dependent objects to the selection Přidá do výběru všechny závislé objekty - + Close document Zavřít dokument - + Close the document Zavřít dokument - + Reload document Znovu načíst dokument - + Reload a partially loaded document Znovu načíst částečně načtený dokument - + Skip recomputes Přeskočit přepočítání - + Enable or disable recomputations of document Povolit nebo zakázat přepočítání dokumentu - + Allow partial recomputes Povolit částečné přepočty - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Povolit nebo zakázat přepočítávání objektu, když je povoleno 'přeskočit přepočítávání' - + Mark to recompute Označit k přepočítání - + Mark this object to be recomputed Označit objekt k přepočítání - + Recompute object Přepočítat objekt - + Recompute the selected object Přepočítat vybraný objekt - + (but must be executed) (ale musí být provedeno) - + %1, Internal name: %2 %1, vnitřní název: %2 @@ -7968,45 +7968,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Neznámý typ souboru - - + + Cannot open unknown filetype: %1 Nelze otevřít neznámý typ souboru: %1 - + Export failed Export selhal - + Cannot save to unknown filetype: %1 Nelze uložit neznámý typ souboru: %1 - + Workbench failure Selhání v pracovním prostředí - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Tento systém běží na OpenGL %1.%2. FreeCAD vyžaduje OpenGL 2.0 nebo vyšší. Aktualizujte prosím své grafické ovladače a/nebo kartu podle potřeby. - + Invalid OpenGL Version Neplatná verze OpenGL @@ -8057,8 +8057,8 @@ Do you want to specify another directory? Exportovat PDF... - + Unsaved document Neuložený dokument @@ -8537,36 +8537,36 @@ Zvolte 'Přerušit' pro zrušení Uložit makro - - + + Finish Dokončit - - + + Clear Vyčistit - - - + + + Cancel Zrušit - + Inner Vnitřní - + Outer Vnější - + Split Rozdělit @@ -8606,12 +8606,12 @@ Prosím, otevřete okno prohlížeče a zadejte: http://localhost:%1.Možnosti... - + Out of memory Nedostatek paměti - + Not enough memory available to display the data. Není dostatek paměti pro zobrazení dat. @@ -8627,7 +8627,7 @@ Prosím, otevřete okno prohlížeče a zadejte: http://localhost:%1.Nelze najít soubor %1 %2 ani v %3 - + Navigation styles Styly navigace @@ -8799,8 +8799,8 @@ podtržítko a nesmí začínat číslicí. Selhalo přidání vlastnosti do '%1': %2 - - + + Drag & drop failed Přetažení se nezdařilo @@ -8903,7 +8903,7 @@ na aktuální kopii budou ztraceny. Přepsat barvy... - + Edit %1 Upravit %1 @@ -8928,8 +8928,8 @@ na aktuální kopii budou ztraceny. Přepnout překrytí - + Toggle floating window Přepnout plovoucí okno @@ -8945,187 +8945,192 @@ na aktuální kopii budou ztraceny. Stiskněte ESC pro skrytí náznaku - + UI Rozhraní - + Tree view Stromové zobrazení - + Item background color Barva pozadí položky - + Item background padding Výplň pozadí položky - + Resizable columns Rozšiřitelné sloupce - + + Show visibility icon + Show visibility icon + + + Hide extra column Skrýt extra sloupec - + Hide scroll bar Skrýt posuvník - + Hide header Skrýt záhlaví - + IconSize Velikost ikon - + FontSize Velikost písma - + ItemSpacing Mezery mezi položkami - + Overlay Překrytí - + Hide tab bar Skrýt titulek - + Hide property view scroll bar Skrýt posuvník vlastností - + Auto hide in non 3D view Automaticky skrýt v jiném než 3D pohledu - + Auto mouse pass through Automaticky projít skrz myší - + Auto mouse wheel pass through Automaticky projít skrz kolečkem myši - + Delay mouse wheel pass through (ms) Zpoždění projítí skrz kolečkem myši (ms) - + Alpha test radius Poloměr testu alfy - + Check Navigation Cube Zkontrolovat navigační kostku - + Hint trigger size Šířka spuštění náznaku - + Hint width Šířka náznaku - + Left panel hint offset Odsazení náznaku levého panelu - + Left panel hint length Délka náznaku levého panelu - + Right panel hint offset Odsazení náznaku pravého panelu - + Right panel hint length Délka náznaku pravého panelu - + Top panel hint offset Odsazení náznaku horního panelu - + Top panel hint length Délka náznaku horního panelu - + Bottom panel hint offset Odsazení náznaku dolního panelu - + Bottom panel hint length Délka náznaku dolního panelu - + Hint show tab bar Zobrazit titulek na náznaku - + Hint delay (ms) Zpoždění náznaku (ms) - + Splitter auto hide delay (ms) Zpoždění automatické skrytí rozdělovače (ms) - + Activate on hover Aktivovat při přejetí - + Layout delay (ms) Zpoždění rozložení (ms) - + Animation duration (ms) Trvání animace (ms) - + Animation curve type Typ animační křivky @@ -9134,6 +9139,16 @@ na aktuální kopii budou ztraceny. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10058,8 +10073,8 @@ na aktuální kopii budou ztraceny. Vytvořit nový prázdný dokument - + Unnamed Nepojmenovaný @@ -11711,35 +11726,40 @@ Chcete pokračovat? TreeParams - + Tree view item background. Only effective in overlay. Pozadí položky stromového zobrazení. Účinné pouze v překryvném zobrazení. - + Tree view item background padding. Výplň pozadí položky stromového zobrazení. - + Hide extra tree view column for item description. Skrytí dalšího sloupce stromového zobrazení pro popis položky. - + Hide tree view scroll bar in dock overlay. Skrytí posuvníku stromového zobrazení v dokovatelném překrytí. - + Hide tree view header view in dock overlay. Skrytí zobrazení záhlaví stromového zobrazení v dokovatelném překrytí. - + Allow tree view columns to be manually resized. Umožnit ruční změnu velikosti sloupců stromového zobrazení. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench @@ -12134,17 +12154,17 @@ po spuštění FreeCADu XY-Plane - XY-Plane + Rovina XY XZ-Plane - XZ-Plane + Rovina XZ YZ-Plane - YZ-Plane + Rovina YZ @@ -12154,7 +12174,7 @@ po spuštění FreeCADu Offset: - Offset: + Odsazení: diff --git a/src/Gui/Language/FreeCAD_de.ts b/src/Gui/Language/FreeCAD_de.ts index 2e217799d8..a90b3a3eac 100644 --- a/src/Gui/Language/FreeCAD_de.ts +++ b/src/Gui/Language/FreeCAD_de.ts @@ -42,24 +42,24 @@ <Leer> - - + + Angle Winkel - - + + Axis Achse - + Position Position - + Enum Aufzählung @@ -112,12 +112,12 @@ Command - + Edit Bearbeiten - + Import Importieren @@ -188,8 +188,8 @@ Positionierung - + Transform Transformieren @@ -421,42 +421,42 @@ EditMode - + Default Standard - + The object will be edited using the mode defined internally to be the most appropriate for the object type Das Objekt wird mit dem intern als dafür am geeignetsten gekennzeichneten Modus bearbeitet - + Transform Bewegen - + The object will have its placement editable with the Std TransformManip command Die Objektplatzierung wird mit dem Befehl Std TransformManip editierbar sein - + Cutting Schneiden - + This edit mode is implemented as available but currently does not seem to be used by any object Dieser Bearbeitungsmodus ist als verfügbar implementiert, scheint aber von keinem Objekt verwendet zu werden - + Color Farbe - + The object will have the color of its individual faces editable with the Part FaceColors command Das Objekt wird seine einzelnen Flächenfarben mit dem Befehl Part FaceColors editierbar haben @@ -2931,12 +2931,12 @@ Hinweis: Manchmal kann diese Funktion zu unerwarteten Problemen führen, die von Letter color: - Letter color: + Textfarbe: Axis letter color - Axis letter color + Achsenbuchstabenfarbe @@ -3637,7 +3637,7 @@ Sie können auch das Formular verwenden: John Doe <john@doe.com> Default license - Standard Lizenz + Standard-Lizenz @@ -4129,12 +4129,12 @@ Sie können auch das Formular verwenden: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Deckkraft wenn inaktiv Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Deckkraft des Navigationswürfels, wenn nicht im Fokus @@ -6119,15 +6119,15 @@ Sollen die Änderungen gespeichert werden? PDF-Format - + Graphviz format Graphviz-Format - + Export graph Graphik exportieren @@ -6627,7 +6627,7 @@ ODER ALT-Taste + rechte Maustaste drücken ODER Bild auf/Bild ab auf der Tastatu Gui::PropertyEditor::LinkLabel - + Change the linked object Verknüpftes Objekt ändern @@ -6635,12 +6635,12 @@ ODER ALT-Taste + rechte Maustaste drücken ODER Bild auf/Bild ab auf der Tastatu Gui::PropertyEditor::LinkSelection - + Error Fehlermeldungen - + Object not found Objekt nicht gefunden @@ -7479,7 +7479,7 @@ Möchten Sie ein anderes Verzeichnis angeben? Gui::TreeDockWidget - + Tree view Baumansicht @@ -7487,7 +7487,7 @@ Möchten Sie ein anderes Verzeichnis angeben? Gui::TreePanel - + Search Suche @@ -7495,183 +7495,183 @@ Möchten Sie ein anderes Verzeichnis angeben? Gui::TreeWidget - + Search... Suche... - + Search for objects Suche nach Objekten - + Activate document Dokument aktivieren - + Activate document %1 Dokument %1 aktivieren - + Tree settings Baumeinstellungen - + Show description column Spalte Beschreibung anzeigen - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Zeigt eine weitere Spalte in der Baumansicht an für die Beschreibung des Objekts. Diese Beschreibung kann nach Drücken von F2 (oder der entsprechenden Taste des Betriebssystems) bearbeitet werden oder indem die Eigenschaft 'label2' editiert wird. - + Group Gruppe - + Labels & Attributes Bezeichnungen & Eigenschaften - + Description Beschreibung - + Show items hidden in tree view In der Baumansicht ausgeblendete Elemente anzeigen - + Show items that are marked as 'hidden' in the tree view Elemente anzeigen, die in der Baumansicht als 'ausgeblendet' gekennzeichnet sind - + Toggle visibility in tree view Sichtbarkeit in der Baumansicht umschalten - + Toggles the visibility of selected items in the tree view Schaltet die Sichtbarkeit ausgewählter Elemente in der Baumansicht um - + Create group... Gruppe erstellen... - + Create a group Erstelle eine Gruppe - - + + Rename Umbenennen - + Rename object Objekt umbenennen - + Finish editing Bearbeitung beenden - + Finish editing object Bearbeitung des Objekts beenden - + Add dependent objects to selection Abhängige Objekte zur Auswahl hinzufügen - + Adds all dependent objects to the selection Fügt alle abhängigen Objekte zur Auswahl hinzu - + Close document Dokument schließen - + Close the document Das Dokument schließen - + Reload document Dokument neu laden - + Reload a partially loaded document Ein teilweise geladenes Dokument neu laden - + Skip recomputes Neuberechnungen überspringen - + Enable or disable recomputations of document Aktivieren oder Deaktivieren von Neuberechnungen des Dokuments - + Allow partial recomputes Teilweise Neuberechnungen erlauben - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Aktivieren oder deaktivieren der Neuberechnung des Editierungsobjekts, wenn 'Neuberechnung überspringen' aktiviert ist - + Mark to recompute Markieren, um neu zu berechnen - + Mark this object to be recomputed Markiere dieses Objekt um es neu zu berechnen - + Recompute object Objekt neu berechnen - + Recompute the selected object Ausgewähltes Objekt neu berechnen - + (but must be executed) (muss aber ausgeführt werden) - + %1, Internal name: %2 %1, Interner Name:%2 @@ -7967,45 +7967,45 @@ Möchten Sie ein anderes Verzeichnis angeben? Python - - - + + + Unknown filetype Unbekannter Dateityp - - + + Cannot open unknown filetype: %1 Kann unbekannten Dateityp nicht öffnen: %1 - + Export failed Fehler beim Exportieren - + Cannot save to unknown filetype: %1 Kann in unbekannten Dateityp nicht speichern: %1 - + Workbench failure Wechsel von Arbeitsbereich fehlgeschlagen - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Dieses System verwendet OpenGL %1.%2. FreeCAD benötigt OpenGL 2.0 oder höher. Bitte aktualisieren Sie Ihren Grafiktreiber und/oder Ihre Grafikkarte wenn erforderlich. - + Invalid OpenGL Version Ungültige OpenGL-Version @@ -8056,8 +8056,8 @@ Möchten Sie ein anderes Verzeichnis angeben? Exportiert als PDF... - + Unsaved document Nicht gespeichertes Dokument @@ -8537,36 +8537,36 @@ Wählen Sie 'Abbrechen' um abzubrechen Makro speichern - - + + Finish Fertig - - + + Clear Leeren - - - + + + Cancel Abbrechen - + Inner Innen - + Outer Außen - + Split Teilen @@ -8606,12 +8606,12 @@ Bitte starten Sie einen Browser und geben darin ein: http://localhost:%1.Einstellungen... - + Out of memory Nicht genügend Speicher - + Not enough memory available to display the data. Nicht genügend Speicher verfügbar, um die Daten darstellen zu können. @@ -8627,7 +8627,7 @@ Bitte starten Sie einen Browser und geben darin ein: http://localhost:%1.Kann Datei %1 weder in %2 noch in %3 finden - + Navigation styles Navigationsstile @@ -8799,8 +8799,8 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.Das Hinzufügen der Eigenschaft %2 zu '%1' ist fehlgeschlagen - - + + Drag & drop failed Drag & Drop fehlgeschlagen @@ -8900,7 +8900,7 @@ the current copy will be lost. Farben überschreiben... - + Edit %1 %1 bearbeiten @@ -8925,8 +8925,8 @@ the current copy will be lost. Überlagerungsmodus umschalten - + Toggle floating window Schwebendes Fenster umschalten @@ -8942,187 +8942,192 @@ the current copy will be lost. ESC drücken, um den Hinweis zu verbergen - + UI Benutzeroberfläche - + Tree view Baumansicht - + Item background color Elementhintergrundfarbe - + Item background padding Element Hintergrund Innenabstand - + Resizable columns Spalten mit variabler Breite - + + Show visibility icon + Sichtbarkeitssymbol anzeigen + + + Hide extra column Zusätzliche Spalte verbergen - + Hide scroll bar Scrollleiste ausblenden - + Hide header Titel ausblenden - + IconSize Symbolgröße - + FontSize Schrifthöhe - + ItemSpacing Elementabstand - + Overlay Überlagerungsmodus - + Hide tab bar Registerkarten-Leiste ausblenden - + Hide property view scroll bar Eigenschaften-Bildlaufleiste ausblenden - + Auto hide in non 3D view Automatisch verbergen in Nicht-3D-Ansicht - + Auto mouse pass through Automatisches Weitergeben der Maus - + Auto mouse wheel pass through Automatisches Weitergeben des Mausrads - + Delay mouse wheel pass through (ms) Verzögert Mausrad Weitergabe (ms) - + Alpha test radius Durchsicht-Testradius - + Check Navigation Cube Navigationswürfel anzeigen - + Hint trigger size Hinweis Triggergröße - + Hint width Hinweisbreite - + Left panel hint offset Hinweis-Versatz des linkes Paneels - + Left panel hint length Hinweis-Länge des linkes Paneels - + Right panel hint offset Hinweis-Versatz des rechten Paneels - + Right panel hint length Hinweis-Länge des rechten Paneels - + Top panel hint offset Hinweis-Versatz des oberen Paneels - + Top panel hint length Hinweis-Länge des oberen Paneels - + Bottom panel hint offset Hinweis-Versatz des unteren Paneels - + Bottom panel hint length Hinweis-Länge des unteren Paneels - + Hint show tab bar Hinweis Tab Leiste anzeigen - + Hint delay (ms) Hinweis-Verzögerung (ms) - + Splitter auto hide delay (ms) Verzögerung beim automatischen Ausblenden des Teilers (ms) - + Activate on hover Beim Darüberschweben aktivieren - + Layout delay (ms) Layoutverzögerung (ms) - + Animation duration (ms) Dauer der Animation (ms) - + Animation curve type Animations-Kurven-Typ @@ -9131,6 +9136,16 @@ the current copy will be lost. Active object Aktives Objekt + + + UnSuppress + Unterdrücken aufheben + + + + Suppress + Unterdrücken + SelectionFilter @@ -10055,8 +10070,8 @@ the current copy will be lost. Neues Dokument erstellen - + Unnamed Unbenannt @@ -10134,8 +10149,8 @@ the current copy will be lost. A Part is is a general purpose container to keep together a group of objects so that they act as a unit in the 3D view. It is meant to arrange objects that have a Part TopoShape, like Part Primitives, PartDesign Bodies, and other Parts. - Ein Teil ist ein allgemeiner Zweck-Container, um eine Gruppe von Objekten zusammenzuhalten, so dass sie als Einheit in der 3D-Ansicht agieren. -Es ist dazu gedacht, Objekte zu arrangieren, die eine Topoform von Teilen haben, wie Primitive, PartDesign und andere Teile. + Ein Part-Objekt ist ein universell verwendbarer Behälter, der eine Gruppe von Objekten zusammenhält, sodass sie in der 3D-Ansicht als Einheit agieren. +Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten, wie Part-Grundkörper, PartDesign-Körper und andere Part-Objekte. @@ -11708,35 +11723,40 @@ Trotzdem fortfahren? TreeParams - + Tree view item background. Only effective in overlay. Hintergrund in der Baumansicht. Nur im Overlay sichtbar. - + Tree view item background padding. Abstand zum Nachbarn in der Baumansicht (padding). - + Hide extra tree view column for item description. Zusätzliche Spalte für die Elementbeschreibung in der Baumansicht ausblenden. - + Hide tree view scroll bar in dock overlay. Den Scrollbar für die Baumansicht im Dock-Overlay ausblenden. - + Hide tree view header view in dock overlay. Die Kopfzeile im Dock-Overlay ausblenden. - + Allow tree view columns to be manually resized. Manuelle Größenanpassung der Spalten in der Baumansicht erlauben. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Wenn aktiviert, wird ein Augensymbol vor den Elementen im Baum angezeigt, das den Sichtbarkeits-Status der Elemente anzeigt. Mit einem Klick darauf wird die Sichtbarkeit umgeschaltet + Workbench diff --git a/src/Gui/Language/FreeCAD_el.ts b/src/Gui/Language/FreeCAD_el.ts index 73a68a3fea..70bd0b5848 100644 --- a/src/Gui/Language/FreeCAD_el.ts +++ b/src/Gui/Language/FreeCAD_el.ts @@ -42,24 +42,24 @@ <κενό> - - + + Angle Γωνία - - + + Axis Άξονας - + Position Position - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Επεξεργασία - + Import Εισάγετε @@ -188,8 +188,8 @@ Τοποθέτηση - + Transform Μετατόπιση @@ -421,42 +421,42 @@ EditMode - + Default Προεπιλεγμένο - + The object will be edited using the mode defined internally to be the most appropriate for the object type Το αντικείμενο θα επεξεργαστεί χρησιμοποιώντας τη λειτουργία που έχει οριστεί εσωτερικά ώστε να είναι η καταλληλότερη για τον τύπο αντικειμένου - + Transform Μετατόπιση - + The object will have its placement editable with the Std TransformManip command Η τοποθέτησή του θα είναι επεξεργάσιμη με την εντολή Std TransformManip - + Cutting Περικοπή - + This edit mode is implemented as available but currently does not seem to be used by any object Αυτή η λειτουργία επεξεργασίας 'είναι διαθέσιμη, αλλά προς το παρόν δεν φαίνεται να χρησιμοποιείται από κανένα αντικείμενο - + Color Χρώμα - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6127,15 +6127,15 @@ Do you want to save your changes? Μορφή PDF - + Graphviz format Graphviz format - + Export graph Εξαγωγή γραφικού @@ -6635,7 +6635,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Αλλαγή του συνδεδεμένου αντικειμένου @@ -6643,12 +6643,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Σφάλμα - + Object not found Το αντικείμενο δεν βρέθηκε @@ -7486,7 +7486,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Προβολή δενδροδιαγράμματος @@ -7494,7 +7494,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Αναζήτηση @@ -7502,183 +7502,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Αναζήτηση... - + Search for objects Αναζήτηση για αντικείμενα - + Activate document Ενεργοποίηση εγγράφου - + Activate document %1 Ενεργοποίηση του εγγράφου %1 - + Tree settings Tree settings - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Εμφάνιση μιας επιπλέον στήλης προβολής δέντρου για την περιγραφή αντικειμένου. Η περιγραφή του στοιχείου μπορεί να οριστεί πατώντας το F2 (ή το κουμπί επεξεργασίας του OS) ή επεξεργάζοντας την ιδιότητα 'label2'. - + Group Ομάδα - + Labels & Attributes Ετικέτες & Χαρακτηριστικά - + Description Περιγραφή - + Show items hidden in tree view Εμφάνιση κρυφών αντικειμένων στην προβολή δέντρου - + Show items that are marked as 'hidden' in the tree view Εμφάνιση αντικειμένων που έχουν επισημανθεί ως 'κρυμμένα' στην προβολή δέντρου - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Δημιουργήστε ομάδα... - + Create a group Δημιουργήστε μια ομάδα - - + + Rename Μετονομασία - + Rename object Μετονομασία αντικειμένου - + Finish editing Ολοκλήρωση επεξεργασίας - + Finish editing object Ολοκλήρωση επεξεργασίας του αντικειμένου - + Add dependent objects to selection Add dependent objects to selection - + Adds all dependent objects to the selection Adds all dependent objects to the selection - + Close document Close document - + Close the document Close the document - + Reload document Reload document - + Reload a partially loaded document Reload a partially loaded document - + Skip recomputes Παράλειψη επανεκτέλεσης υπoλογισμών - + Enable or disable recomputations of document Ενεργοποιήστε ή απενεργοποιήστε την επανεκτέλεση υπολογισμών του εγγράφου - + Allow partial recomputes Allow partial recomputes - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Enable or disable recomputating editing object when 'skip recomputation' is enabled - + Mark to recompute Επισημάνετε για επανεκτέλεση υπολογισμών - + Mark this object to be recomputed Επισημάνετε αυτό το αντικείμενο για επανεκτέλεση των υπολογισμών του - + Recompute object Recompute object - + Recompute the selected object Recompute the selected object - + (but must be executed) (but must be executed) - + %1, Internal name: %2 %1, Εσωτερικό όνομα: %2 @@ -7974,45 +7974,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Άγνωστος τύπος αρχείου - - + + Cannot open unknown filetype: %1 Αδυναμία ανοίγματος του αγνώστου τύπου αρχείου: %1 - + Export failed Αποτυχία της εξαγωγής - + Cannot save to unknown filetype: %1 Αδυναμία αποθήκευσης στον άγνωστο τύπο αρχείου: %1 - + Workbench failure Αποτυχία πάγκου εργασίας - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8063,8 +8063,8 @@ Do you want to specify another directory? Πραγματοποιείται εξαγωγή αρχείου PDF... - + Unsaved document Μη αποθηκευμένο έγγραφο @@ -8545,36 +8545,36 @@ Choose 'Abort' to abort Αποθήκευση Μακροεντολής - - + + Finish Ολοκλήρωση - - + + Clear Εκκαθάριση - - - + + + Cancel Ακύρωση - + Inner Εσωτερικό - + Outer Εξωτερικό - + Split Χωρισμός @@ -8614,12 +8614,12 @@ Please open a browser window and type in: http://localhost:%1. Επιλογές... - + Out of memory Μνήμη πλήρης - + Not enough memory available to display the data. Δεν υπάρχει αρκετή μνήμη διαθέσιμη για την προβολή των δεδομένων. @@ -8635,7 +8635,7 @@ Please open a browser window and type in: http://localhost:%1. Αδυναμία εύρεσης του αρχείου %1 τόσο στο %2 όσο και στο %3 - + Navigation styles Τύποι μορφοποίησης πλοήγησης @@ -8807,8 +8807,8 @@ underscore, and must not start with a digit. Failed to add property to '%1': %2 - - + + Drag & drop failed Drag & drop failed @@ -8908,7 +8908,7 @@ the current copy will be lost. Αντικατάσταση χρωμάτων... - + Edit %1 Επεξεργασία %1 @@ -8933,8 +8933,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8950,187 +8950,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Προβολή δενδροδιαγράμματος - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9139,6 +9144,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10063,8 +10078,8 @@ the current copy will be lost. Δημιουργήστε ένα νέο κενό έγγραφο - + Unnamed Ανώνυμο @@ -11717,35 +11732,40 @@ Do you still want to proceed; TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_es-AR.ts b/src/Gui/Language/FreeCAD_es-AR.ts index b476393518..52b4cc5063 100644 --- a/src/Gui/Language/FreeCAD_es-AR.ts +++ b/src/Gui/Language/FreeCAD_es-AR.ts @@ -42,24 +42,24 @@ <vacío> - - + + Angle Ángulo - - + + Axis Eje - + Position Posición - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Editar - + Import Importar @@ -188,8 +188,8 @@ Ubicación - + Transform Transformar @@ -421,42 +421,42 @@ EditMode - + Default Predeterminado - + The object will be edited using the mode defined internally to be the most appropriate for the object type El objeto será editado utilizando el modo definido internamente que es más apropiado para el tipo de objeto - + Transform Transformar - + The object will have its placement editable with the Std TransformManip command El objeto tendrá su ubicación editable con el comando Std TransformManip - + Cutting Corte - + This edit mode is implemented as available but currently does not seem to be used by any object Este modo de edición está implementado como disponible pero actualmente no parece ser utilizado por ningún objeto - + Color Color - + The object will have the color of its individual faces editable with the Part FaceColors command El objeto tendrá el color de sus caras individuales editables con el comando Part FaceColors @@ -1903,7 +1903,7 @@ same time. The one with the highest priority will be triggered. Open Addon Manager where macros created by the community and other addons can be downloaded. - Abrir el gestor de complementos donde se pueden descargar macros creadas por la comunidad y otros complementos. + Abrir el administrador de complementos donde se pueden descargar macros creadas por la comunidad y otros complementos. @@ -2392,7 +2392,7 @@ Especifique otro directorio, por favor. Open Addon Manager... - Abrir gestor de complementos... + Abrir administrador de complementos... @@ -2935,12 +2935,12 @@ esta configuración como activada al buscar soporte en los foros de FreeCAD Letter color: - Letter color: + Color de la letra: Axis letter color - Axis letter color + Color del eje de la letra @@ -4133,12 +4133,12 @@ También puede utilizar el formulario: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Opacidad cuando está inactivo Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Opacidad del cubo de navegación cuando no está enfocado @@ -6122,15 +6122,15 @@ Desea guardar los cambios? Formato PDF - + Graphviz format Formato Graphviz - + Export graph Exportar gráfico @@ -6313,7 +6313,7 @@ Desea guardar los cambios? Open Addon Manager - Abrir gestor de complementos + Abrir administrador de complementos @@ -6627,7 +6627,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Cambiar el objeto vinculado @@ -6635,12 +6635,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Error - + Object not found Objeto no encontrado @@ -7479,7 +7479,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Vista de árbol @@ -7487,7 +7487,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Búsqueda @@ -7495,183 +7495,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Búsqueda... - + Search for objects Búsqueda de objetos - + Activate document Activar documento - + Activate document %1 Activar documento %1 - + Tree settings Ajustes del árbol - + Show description column Mostrar columna de descripción - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Muestra una columna extra de vista de árbol para la descripción del artículo. La descripción del elemento se puede establecer pulsando F2 (o el botón de edición de tu sistema operativo) o editando la propiedad 'label2'. - + Group Grupo - + Labels & Attributes Etiquetas & Atributos - + Description Descripción - + Show items hidden in tree view Mostrar elementos ocultos en la vista de árbol - + Show items that are marked as 'hidden' in the tree view Mostrar elementos marcados como 'ocultos' en la vista de árbol - + Toggle visibility in tree view Cambiar visibilidad en la vista de árbol - + Toggles the visibility of selected items in the tree view Cambia la visibilidad de los elementos seleccionados en la vista de árbol - + Create group... Crear grupo... - + Create a group Crear un grupo - - + + Rename Renombrar - + Rename object Renombrar objeto - + Finish editing Finalizar edición - + Finish editing object Finalizar edición de objeto - + Add dependent objects to selection Añadir objetos dependientes a la selección - + Adds all dependent objects to the selection Agrega todos los objetos dependientes a la selección - + Close document Cerrar documento - + Close the document Cerrar el documento - + Reload document Recargar documento - + Reload a partially loaded document Recargar un documento parcialmente cargado - + Skip recomputes Saltar recálculo - + Enable or disable recomputations of document Activar o desactivar el recálculo del documento - + Allow partial recomputes Permitir recalculado parcial - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Activar o desactivar el recálculo del objeto de edición cuando 'saltar recálculo' está habilitado - + Mark to recompute Marcar para recalcular - + Mark this object to be recomputed Marca este objeto para ser recalculado - + Recompute object Recalcular objeto - + Recompute the selected object Recalcular el objeto seleccionado - + (but must be executed) (pero debe ser ejecutado) - + %1, Internal name: %2 %1, Nombre interno: %2 @@ -7967,45 +7967,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Tipo de archivo desconocido - - + + Cannot open unknown filetype: %1 No es posible abrir el tipo de archivo desconocido: %1 - + Export failed Exportación fallida - + Cannot save to unknown filetype: %1 No es posible guardar el tipo de archivo desconocido: %1 - + Workbench failure Fallo del entorno de trabajo - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Este sistema está ejecutando OpenGL %1.%2. FreeCAD requiere OpenGL 2.0 o superior. Por favor actualice su controlador gráfico y/o tarjeta de ser necesario. - + Invalid OpenGL Version Versión OpenGL inválida @@ -8056,8 +8056,8 @@ Do you want to specify another directory? Exportando a PDF... - + Unsaved document Documento sin guardar @@ -8535,36 +8535,36 @@ Elija 'Anular' para anular Guardar Macro - - + + Finish Finalizar - - + + Clear Limpiar - - - + + + Cancel Cancelar - + Inner Interior - + Outer Exterior - + Split Dividir @@ -8604,12 +8604,12 @@ Por favor abra una ventana del navegador y escriba en ella: http://localhost:%1. Opciones... - + Out of memory Memoria insuficiente - + Not enough memory available to display the data. Insuficiente memoria disponible para mostrar los datos. @@ -8625,7 +8625,7 @@ Por favor abra una ventana del navegador y escriba en ella: http://localhost:%1. No se pueden encontrar los archivos %1 ni %2 ni %3 - + Navigation styles Estilos de navegación @@ -8796,8 +8796,8 @@ underscore, and must not start with a digit. Error al añadir la propiedad a '%1': %2 - - + + Drag & drop failed Error al arrastrar y soltar @@ -8900,7 +8900,7 @@ la copia actual se perderá. Anular colores... - + Edit %1 Editar %1 @@ -8925,8 +8925,8 @@ la copia actual se perderá. Alternar superposición - + Toggle floating window Alternar ventana flotante @@ -8942,187 +8942,192 @@ la copia actual se perderá. Presionar ESC para ocultar pista - + UI Interfaz de usuario - + Tree view Vista de árbol - + Item background color Color de fondo del elemento - + Item background padding Relleno del fondo del elemento - + Resizable columns Columnas redimensionables - + + Show visibility icon + Mostrar icono de visibilidad + + + Hide extra column Ocultar columna extra - + Hide scroll bar Ocultar barra de desplazamiento - + Hide header Ocultar cabecera - + IconSize Tamaño de iconos - + FontSize Tamaño de letra - + ItemSpacing Espaciado de elementos - + Overlay Superposición - + Hide tab bar Ocultar barra de pestañas - + Hide property view scroll bar Ocultar barra de desplazamiento de vista de propiedades - + Auto hide in non 3D view Ocultar automáticamente en vista no 3D - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Radio de prueba alfa - + Check Navigation Cube Comprobar cubo de navegación - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9131,6 +9136,16 @@ la copia actual se perderá. Active object Active object + + + UnSuppress + Anular la supresión + + + + Suppress + Suprimir + SelectionFilter @@ -10055,8 +10070,8 @@ la copia actual se perderá. Crea un documento vacío nuevo - + Unnamed Sin nombre @@ -11708,35 +11723,40 @@ Por favor, compruebe la Vista de Reportes para más detalles. TreeParams - + Tree view item background. Only effective in overlay. Fondo de la vista del árbol. Solo efectivo en la superposición. - + Tree view item background padding. Relleno de fondo del elemento en la vista de árbol. - + Hide extra tree view column for item description. Oculta la columna extra en la vista de árbol para la descripción del artículo. - + Hide tree view scroll bar in dock overlay. Ocultar barra de desplazamiento de vista de árbol en la superposición de muelle. - + Hide tree view header view in dock overlay. Ocultar vista de cabecera del árbol en la superposición de dock. - + Allow tree view columns to be manually resized. Permite cambiar el tamaño de las columnas en la vista de árbol. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Si está activado, mostrar un icono con forma de ojo antes de los elementos de la vista del árbol, mostrando el estado de visibilidad de los elementos. Cuando se hace clic la visibilidad alterna + Workbench @@ -12145,7 +12165,7 @@ after FreeCAD launches Reverse direction - Dirección inversa + Invertir dirección @@ -13579,7 +13599,7 @@ the region are non-opaque. Toggle overlay - Alternar capa + Alternar superposición diff --git a/src/Gui/Language/FreeCAD_es-ES.ts b/src/Gui/Language/FreeCAD_es-ES.ts index f61e594cb5..63403ef5fc 100644 --- a/src/Gui/Language/FreeCAD_es-ES.ts +++ b/src/Gui/Language/FreeCAD_es-ES.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Ángulo - - + + Axis Eje - + Position Posición - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Editar - + Import Importar @@ -188,8 +188,8 @@ Ubicación - + Transform Transformar @@ -421,42 +421,42 @@ EditMode - + Default Por defecto - + The object will be edited using the mode defined internally to be the most appropriate for the object type El objeto será editado utilizando el modo definido internamente que es más apropiado para el tipo de objeto - + Transform Transformar - + The object will have its placement editable with the Std TransformManip command El objeto tendrá su ubicación editable con el comando Std TransformManip - + Cutting Corte - + This edit mode is implemented as available but currently does not seem to be used by any object Este modo de edición está implementado como disponible pero actualmente no parece ser utilizado por ningún objeto - + Color Color - + The object will have the color of its individual faces editable with the Part FaceColors command El objeto tendrá el color de sus caras individuales editables con el comando Part FaceColors @@ -1903,7 +1903,7 @@ same time. The one with the highest priority will be triggered. Open Addon Manager where macros created by the community and other addons can be downloaded. - Abrir el gestor de complementos donde se pueden descargar macros creadas por la comunidad y otros complementos. + Abrir el administrador de complementos donde se pueden descargar macros creadas por la comunidad y otros complementos. @@ -2392,7 +2392,7 @@ Especifique otro directorio, por favor. Open Addon Manager... - Abrir gestor de complementos... + Abrir administrador de complementos... @@ -2937,12 +2937,12 @@ esta configuración como activada al buscar soporte en los foros de FreeCAD Letter color: - Letter color: + Color de la letra: Axis letter color - Axis letter color + Color del eje de la letra @@ -4136,12 +4136,12 @@ También puede utilizar el formulario: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Opacidad cuando está inactivo Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Opacidad del cubo de navegación cuando no está enfocado @@ -5021,7 +5021,7 @@ La columna 'Estado' muestra si el documento puede ser recuperado. Download Manager - Gestor de descargas + Administrador de descargas @@ -6125,15 +6125,15 @@ Desea guardar los cambios? Formato PDF - + Graphviz format Formato Graphviz - + Export graph Exportar gráfico @@ -6316,7 +6316,7 @@ Desea guardar los cambios? Open Addon Manager - Abrir gestor de complementos + Abrir administrador de complementos @@ -6630,7 +6630,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Cambiar el objeto vinculado @@ -6638,12 +6638,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Error - + Object not found Objeto no encontrado @@ -7482,7 +7482,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Vista en árbol @@ -7490,7 +7490,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Buscar @@ -7498,183 +7498,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Buscar... - + Search for objects Búsqueda de objetos - + Activate document Activar documento - + Activate document %1 Activar documento %1 - + Tree settings Ajustes del árbol - + Show description column Mostrar columna de descripción - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Mostrar una columna extra de vista de árbol para la descripción del elemento. La descripción del elemento se puede establecer pulsando F2 (o el botón de edición de tu sistema operativo) o editando la propiedad 'label2'. - + Group Grupo - + Labels & Attributes Etiquetas & Atributos - + Description Descripción - + Show items hidden in tree view Mostrar elementos ocultos en la vista de árbol - + Show items that are marked as 'hidden' in the tree view Mostrar elementos marcados como 'ocultos' en la vista de árbol - + Toggle visibility in tree view Cambiar visibilidad en la vista de árbol - + Toggles the visibility of selected items in the tree view Cambia la visibilidad de los elementos seleccionados en la vista de árbol - + Create group... Crear grupo... - + Create a group Crear un grupo - - + + Rename Renombrar - + Rename object Renombrar objeto - + Finish editing Finalizar la edición - + Finish editing object Finalizar edición del objeto - + Add dependent objects to selection Añadir objetos dependientes a la selección - + Adds all dependent objects to the selection Agrega todos los objetos dependientes a la selección - + Close document Cerrar documento - + Close the document Cerrar el documento - + Reload document Recargar documento - + Reload a partially loaded document Recargar un documento parcialmente cargado - + Skip recomputes - Saltar recalculado + Omitir recálculos - + Enable or disable recomputations of document Activar o desactivar el recalculado del documento - + Allow partial recomputes Permitir recalculado parcial - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Activar o desactivar el recalculado del objeto de edición cuando 'saltar recalculado' está activado - + Mark to recompute Marcar para recalcular - + Mark this object to be recomputed Marca este objeto para ser recalculado - + Recompute object Recalcular objeto - + Recompute the selected object Recalcular el objeto seleccionado - + (but must be executed) (pero debe ser ejecutado) - + %1, Internal name: %2 %1, Nombre interno: %2 @@ -7970,45 +7970,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Tipo de archivo desconocido - - + + Cannot open unknown filetype: %1 No es posible abrir el tipo de archivo desconocido: %1 - + Export failed Exportación fallida - + Cannot save to unknown filetype: %1 No es posible guardar el tipo de archivo desconocido: %1 - + Workbench failure Fallo del entorno de trabajo - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Este sistema está ejecutando OpenGL %1.%2. FreeCAD requiere OpenGL 2.0 o superior. Por favor actualice su controlador gráfico y/o tarjeta de ser necesario. - + Invalid OpenGL Version Versión OpenGL inválida @@ -8059,8 +8059,8 @@ Do you want to specify another directory? Exportando a PDF... - + Unsaved document Documento sin guardar @@ -8538,36 +8538,36 @@ Seleccione 'Abortar' para abortar Guardar macro - - + + Finish Terminado - - + + Clear Limpiar - - - + + + Cancel Cancelar - + Inner Interior - + Outer Exterior - + Split Dividir @@ -8607,12 +8607,12 @@ Por favor abra una ventana del navegador y escriba en ella: http://localhost:%1. Opciones... - + Out of memory Memoria insuficiente - + Not enough memory available to display the data. Insuficiente memoria disponible para mostrar los datos. @@ -8628,7 +8628,7 @@ Por favor abra una ventana del navegador y escriba en ella: http://localhost:%1. No se pueden encontrar los archivos %1 ni %2 ni %3 - + Navigation styles Estilos de navegación @@ -8799,8 +8799,8 @@ underscore, and must not start with a digit. Error al añadir la propiedad a '%1': %2 - - + + Drag & drop failed Error al arrastrar y soltar @@ -8903,7 +8903,7 @@ la copia actual se perderá. Anular colores... - + Edit %1 Editar %1 @@ -8928,8 +8928,8 @@ la copia actual se perderá. Alternar superposición - + Toggle floating window Alternar ventana flotante @@ -8945,187 +8945,192 @@ la copia actual se perderá. Presiona ESC para ocultar pista - + UI IU - + Tree view Vista en árbol - + Item background color Color de fondo del elemento - + Item background padding Relleno de fondo del elemento - + Resizable columns Columnas redimensionables - + + Show visibility icon + Mostrar icono de visibilidad + + + Hide extra column Ocultar columna adicional - + Hide scroll bar Ocultar barra de desplazamiento - + Hide header Ocultar cabecera - + IconSize Tamaño de iconos - + FontSize Tamaño de letra - + ItemSpacing Espaciado de elementos - + Overlay Superposición - + Hide tab bar Ocultar barra de pestañas - + Hide property view scroll bar Ocultar barra de desplazamiento de vista de propiedades - + Auto hide in non 3D view Ocultar automáticamente en vista no 3D - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Radio de prueba alfa - + Check Navigation Cube Comprobar cubo de navegación - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9134,6 +9139,16 @@ la copia actual se perderá. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10058,8 +10073,8 @@ la copia actual se perderá. Crea un documento vacío nuevo - + Unnamed Sin nombre @@ -11200,7 +11215,7 @@ Está pensado para organizar objetos que tienen una parte de TopoShape, como pri &Windows... - &Ventanas... + Venta&nas... @@ -11711,35 +11726,40 @@ Por favor, compruebe la Vista de Reportes para más detalles. TreeParams - + Tree view item background. Only effective in overlay. Fondo de la vista del árbol. Sólo efectivo en la superposición. - + Tree view item background padding. Relleno de fondo del elemento de vista de árbol. - + Hide extra tree view column for item description. Ocultar columna extra de vista de árbol para la descripción del artículo. - + Hide tree view scroll bar in dock overlay. Ocultar barra de desplazamiento de vista de árbol en la superposición de muelle. - + Hide tree view header view in dock overlay. Ocultar vista de cabecera del árbol en la superposición de dock. - + Allow tree view columns to be manually resized. Permitir cambiar el tamaño de las columnas de vista de árbol. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench @@ -13617,7 +13637,7 @@ the region are non-opaque. Document utility... - Document utility... + Utilidad del documento... @@ -13631,7 +13651,7 @@ the region are non-opaque. Lock toolbars - Lock toolbars + Bloquear barras de herramientas diff --git a/src/Gui/Language/FreeCAD_eu.ts b/src/Gui/Language/FreeCAD_eu.ts index a473281ea5..d7b6bcddf7 100644 --- a/src/Gui/Language/FreeCAD_eu.ts +++ b/src/Gui/Language/FreeCAD_eu.ts @@ -42,24 +42,24 @@ <hutsik> - - + + Angle Angelua - - + + Axis Ardatza - + Position Posizioa - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Editatu - + Import Inportatu @@ -188,8 +188,8 @@ Kokapena - + Transform Transformatu @@ -421,42 +421,42 @@ EditMode - + Default Lehenetsia - + The object will be edited using the mode defined internally to be the most appropriate for the object type Objektua barnean definitutako modua erabiliz editatuko da, objektu mota egokiena izan dadin - + Transform Transformatu - + The object will have its placement editable with the Std TransformManip command Objektuaren kokapena editatu ahal izango da Std TransformManip komandoaren bidez - + Cutting Moztea - + This edit mode is implemented as available but currently does not seem to be used by any object Edizio modua erabilgarri gisa inplementatu da, baina badirudi momentuan ez dagoela objekturik hura erabiltzen - + Color Kolorea - + The object will have the color of its individual faces editable with the Part FaceColors command Objektuaren banakako aurpegien kolorea editatu ahal izango da piezen FaceColors komandoarekin @@ -6131,15 +6131,15 @@ Aldaketak gorde nahi dituzu? PDF formatua - + Graphviz format Graphviz formatua - + Export graph Esportatu grafikoa @@ -6639,7 +6639,7 @@ Nola jarraitu nahi duzu? Gui::PropertyEditor::LinkLabel - + Change the linked object Aldatu estekatutako objektua @@ -6647,12 +6647,12 @@ Nola jarraitu nahi duzu? Gui::PropertyEditor::LinkSelection - + Error Errorea - + Object not found Ez da objektua aurkitu @@ -7491,7 +7491,7 @@ Beste direktorio bat aukeratu nahi al duzu? Gui::TreeDockWidget - + Tree view Zuhaitz-bista @@ -7499,7 +7499,7 @@ Beste direktorio bat aukeratu nahi al duzu? Gui::TreePanel - + Search Bilatu @@ -7507,183 +7507,183 @@ Beste direktorio bat aukeratu nahi al duzu? Gui::TreeWidget - + Search... Bilatu... - + Search for objects Bilatu objektuak - + Activate document Aktibatu dokumentua - + Activate document %1 Aktibatu %1 dokumentua - + Tree settings Zuhaitz-ezarpenak - + Show description column Erakutsi deskribapen-zutabea - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Erakutsi zutabe gehigarria zuhaitz-bistan elementuen deskribapenerako. Deskribapena ezartzeko, sakatu F2 (edo SEaren edizio-botoia) edo editatu 'label2' propietatea. - + Group Taldea - + Labels & Attributes Etiketak eta atributuak - + Description Deskribapena - + Show items hidden in tree view Erakutsi zuhaitz-bistan ezkutatutako elementuak - + Show items that are marked as 'hidden' in the tree view Erakutsi zuhaitz-bistan "ezkutuan" markatuta dauden elementuak - + Toggle visibility in tree view Aldatu ikuspena zuhaitz-bistan - + Toggles the visibility of selected items in the tree view Aukeratutako elementuen ikuspena zuhaitz-bistan aldatzen du - + Create group... Sortu taldea... - + Create a group Sortu talde bat - - + + Rename Aldatu izena - + Rename object Aldatu objektuaren izena - + Finish editing Amaitu edizioa - + Finish editing object Amaitu objektuaren edizioa - + Add dependent objects to selection Gehitu mendeko objektuak hautapenari - + Adds all dependent objects to the selection Mendeko objektu guztiak hautapenari gehitzen dizkio - + Close document Itxi dokumentua - + Close the document Itxi dokumentua - + Reload document Birkargatu dokumentua - + Reload a partially loaded document Birkargatu partzialki kargatutako dokumentu bat - + Skip recomputes Saltatu birkalkuluak - + Enable or disable recomputations of document Gaitu edo desgaitu dokumentuaren birkalkuluak - + Allow partial recomputes Onartu birkalkulu partzialak - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Gaitu edo desgaitu objektuaren edizioa birkalkulatzea 'Saltatu birkalkulua' gaituta dagoenean - + Mark to recompute Markatu birkalkulurako - + Mark this object to be recomputed Markatu objektu hau birkalkulatua izan dadin - + Recompute object Birkalkulatu objektua - + Recompute the selected object Birkalkulatu hautatutako objektua - + (but must be executed) (baina exekutatu behar da) - + %1, Internal name: %2 %1, barne-izena: %2 @@ -7979,45 +7979,45 @@ Beste direktorio bat aukeratu nahi al duzu? Python - - - + + + Unknown filetype Fitxategi mota ezezaguna - - + + Cannot open unknown filetype: %1 Ezin da ireki fitxategi mota ezezaguna: %1 - + Export failed Esportazioak huts egin du - + Cannot save to unknown filetype: %1 Ezin da gorde fitxategi mota ezezagunera: %1 - + Workbench failure Lan-mahaiaren hutsegitea - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Sistema honek OpenGL %1.%2 bertsioa du. FreeCADek OpenGL 2.0 edo berriagoa behar du. Eguneratu zure txartel grafikoa edo bere kontrolagailua. - + Invalid OpenGL Version OpenGL bertsio baliogabea @@ -8068,8 +8068,8 @@ Beste direktorio bat aukeratu nahi al duzu? PDFa esportatzen... - + Unsaved document Gorde gabeko dokumentua @@ -8549,36 +8549,36 @@ Aukeratu 'Abortatu' abortatzeko. Gorde makroa - - + + Finish Amaitu - - + + Clear Garbitu - - - + + + Cancel Utzi - + Inner Barnekoa - + Outer Kanpokoa - + Split Zatitu @@ -8618,12 +8618,12 @@ Mesedez, ireki nabigatzaile-leiho bat eta idatzi: http://localhost:%1.Aukerak... - + Out of memory Memoria gutxiegi - + Not enough memory available to display the data. Ez dago nahiko memoriarik datuak bistaratzeko. @@ -8639,7 +8639,7 @@ Mesedez, ireki nabigatzaile-leiho bat eta idatzi: http://localhost:%1.Ez da %1 fitxategia aurkitu ez %2 ez %3 tokietan - + Navigation styles Nabigazio-estiloak @@ -8811,8 +8811,8 @@ eduki ditzakete eta ez dira digitu batekin hasi behar. Huts egin du '%1' objektuari propietatea gehitzeak: %2 - - + + Drag & drop failed Arrastatu eta jaregiteak huts egin du @@ -8913,7 +8913,7 @@ egindako aldaketak galdu egingo direla. Gainidatzi koloreak... - + Edit %1 Editatu %1 @@ -8938,8 +8938,8 @@ egindako aldaketak galdu egingo direla. Txandakatu gainjartzea - + Toggle floating window Txandakatu leiho flotagarria @@ -8955,187 +8955,192 @@ egindako aldaketak galdu egingo direla. Sakatu ESC oharra ezkutatzeko - + UI EIa - + Tree view Zuhaitz-bista - + Item background color Elementuaren atzeko planoaren kolorea - + Item background padding Elementuaren atzeko planoaren betegarria - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Ezkutatu korritze-barra - + Hide header Ezkutatu goiburua - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Aktibatu gainetik igarotzean - + Layout delay (ms) Diseinuaren atzerapena (ms) - + Animation duration (ms) Animazio-iraupena (ms) - + Animation curve type Animazioaren kurba mota @@ -9144,6 +9149,16 @@ egindako aldaketak galdu egingo direla. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10068,8 +10083,8 @@ egindako aldaketak galdu egingo direla. Sortu dokumentu huts berri bat - + Unnamed Izenik gabea @@ -11721,35 +11736,40 @@ Jarraitu nahi al duzu? TreeParams - + Tree view item background. Only effective in overlay. Zuhaitz-bistaren elementuen atzeko planoa. Gainjartzean soilik du eragina. - + Tree view item background padding. Zuhaitz-bistaren elementuaren atzeko planoaren betegarria. - + Hide extra tree view column for item description. Ezkutatu elementuaren deskribapenerako zuhaitz-bistaren zutabe gehigarria. - + Hide tree view scroll bar in dock overlay. Ezkutatu zuhaitz-bistaren korritze-barra panela gainjartzean. - + Hide tree view header view in dock overlay. Ezkutatu zuhaitz-bistaren goiburuaren bista panela gainjartzean. - + Allow tree view columns to be manually resized. Onartu zuhaitz-bistaren zutabeen tamaina eskuz aldatu ahal izan daitezen. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_fi.ts b/src/Gui/Language/FreeCAD_fi.ts index 95f0243bc2..53e5831722 100644 --- a/src/Gui/Language/FreeCAD_fi.ts +++ b/src/Gui/Language/FreeCAD_fi.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Kulma - - + + Axis Akseli - + Position Sijainti - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Muokkaa - + Import Tuonti @@ -188,8 +188,8 @@ Sijainti - + Transform Muunna @@ -421,42 +421,42 @@ EditMode - + Default Oletus - + The object will be edited using the mode defined internally to be the most appropriate for the object type The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform Muunna - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Leikkuu - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Väri - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6129,15 +6129,15 @@ Do you want to save your changes? PDF-muoto - + Graphviz format Graphviz format - + Export graph Vie kaavio @@ -6636,7 +6636,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Vaihda linkitetty objekti @@ -6644,12 +6644,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Virhe - + Object not found Objektia ei löydy @@ -7487,7 +7487,7 @@ Haluatko valita toisen hakemiston? Gui::TreeDockWidget - + Tree view Puunäkymä @@ -7495,7 +7495,7 @@ Haluatko valita toisen hakemiston? Gui::TreePanel - + Search Haku @@ -7503,183 +7503,183 @@ Haluatko valita toisen hakemiston? Gui::TreeWidget - + Search... Etsi... - + Search for objects Etsi objekteja - + Activate document Aktivoi asiakirja - + Activate document %1 Aktivoi asiakirja %1 - + Tree settings Puunäkymän asetukset - + Show description column Näytä kuvauksien sarake - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Näytä lisäsarake, jossa näkyy kuvaus toiminnosta. Toiminnon kuvaus voidaan asettaa näppäimellä F2 (tai käyttöjärjestelmän muokkaa-toiminnolla), tai muokkaamalla 'label2'-ominaisuutta. - + Group Ryhmä - + Labels & Attributes Nimilaput & Määritteet - + Description Kuvaus - + Show items hidden in tree view Show items hidden in tree view - + Show items that are marked as 'hidden' in the tree view Show items that are marked as 'hidden' in the tree view - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Luo ryhmä... - + Create a group Ryhmän luominen - - + + Rename Nimeä uudelleen - + Rename object Nimeä objekti uudelleen - + Finish editing Lopeta muokkaaminen - + Finish editing object Lopeta objektin muokkaaminen - + Add dependent objects to selection Lisää riippuvaisia objekteja valintaan - + Adds all dependent objects to the selection Lisää kaikki riippuvaiset objektit valintaan - + Close document Sulje asiakirja - + Close the document Sulje asiakirja - + Reload document Lataa asiakirja uudelleen - + Reload a partially loaded document Lataa osittain ladattu asiakirja uudelleen - + Skip recomputes Ohita uudelleenlaskenta - + Enable or disable recomputations of document Ota käyttöön tai poista käytöstä asiakirjan uudelleenlaskenta - + Allow partial recomputes Salli osittainen uudelleenlaskenta - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Ota käyttöön tai poista käytöstä kohteen uudelleenlaskenta kun 'ohita uudelleenlaskenta' on käytössä - + Mark to recompute Merkitse laskettavaksi uudelleen - + Mark this object to be recomputed Merkitse tämä objekti laskettavaksi uudelleen - + Recompute object Laske objekti uudelleen - + Recompute the selected object Laske uudelleen valittu objekti - + (but must be executed) (mutta on suoritettava) - + %1, Internal name: %2 %1, Sisäinen nimi: %2 @@ -7975,45 +7975,45 @@ Haluatko valita toisen hakemiston? Python - - - + + + Unknown filetype Tuntematon tiedostotyyppi - - + + Cannot open unknown filetype: %1 Ei voida avata tuntematonta tiedostotyyppiä:%1 - + Export failed Vienti epäonnistui - + Cannot save to unknown filetype: %1 Ei voi tallentaa tuntematonta tiedostotyyppiä:%1 - + Workbench failure Työpöydän häiriö - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8064,8 +8064,8 @@ Haluatko valita toisen hakemiston? Viedään PDF... - + Unsaved document Tallentamaton asiakirja @@ -8545,36 +8545,36 @@ Valitse 'Abort' keskeyttääksesi Tallenna makro - - + + Finish Valmis - - + + Clear Tyhjennä - - - + + + Cancel Peruuta - + Inner Sisempi - + Outer Ulompi - + Split Jaa osiin @@ -8612,12 +8612,12 @@ Please open a browser window and type in: http://localhost:%1. Asetukset... - + Out of memory Muisti loppui - + Not enough memory available to display the data. Muisti ei riitä tietojen näyttämiseen. @@ -8633,7 +8633,7 @@ Please open a browser window and type in: http://localhost:%1. Ei voida löytää tiedostoja %1, %2 ja %3 - + Navigation styles Navigointityylit @@ -8805,8 +8805,8 @@ alaviivoja, eikä se saa alkaa numerolla. Ominaisuutta ei voitu lisätä kohteeseen '%1': %2 - - + + Drag & drop failed Vedä & pudota epäonnistui @@ -8909,7 +8909,7 @@ the current copy will be lost. Ohita värejä... - + Edit %1 Muokkaa %1 @@ -8934,8 +8934,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8951,187 +8951,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Puunäkymä - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animaation kesto (ms) - + Animation curve type Animation curve type @@ -9140,6 +9145,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10064,8 +10079,8 @@ the current copy will be lost. Luo uusi tyhjä asiakirja - + Unnamed Nimetön @@ -11717,35 +11732,40 @@ Haluatko silti jatkaa? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_fr.ts b/src/Gui/Language/FreeCAD_fr.ts index 55d1a53b17..62108f640c 100644 --- a/src/Gui/Language/FreeCAD_fr.ts +++ b/src/Gui/Language/FreeCAD_fr.ts @@ -42,24 +42,24 @@ <vide> - - + + Angle Angle - - + + Axis Axe de rotation - + Position Position - + Enum Enumération @@ -112,12 +112,12 @@ Command - + Edit Éditer - + Import Importer @@ -188,8 +188,8 @@ Position - + Transform Transformer @@ -421,42 +421,42 @@ EditMode - + Default Défaut - + The object will be edited using the mode defined internally to be the most appropriate for the object type L’objet sera modifié à l’aide du mode défini de manière interne comme étant le plus approprié au type d’objet - + Transform Transformer - + The object will have its placement editable with the Std TransformManip command L’objet aura un positionnement modifiable à l’aide de la commande Transformer - + Cutting Couper - + This edit mode is implemented as available but currently does not seem to be used by any object Ce mode de modification est implémenté comme étant disponible, mais il ne semble pas être actuellement utilisé par un objet quelconque - + Color Colorier - + The object will have the color of its individual faces editable with the Part FaceColors command La couleur de chaque face de l’objet est modifiable à l’aide de la commande Part Définir les couleurs. @@ -561,7 +561,7 @@ Please wait until the AutoRecovery file has been saved... - Veuillez patienter jusqu'à ce que le fichier de récupération automatique ait été enregistré... + Patienter jusqu'à ce que le fichier de récupération automatique ait été enregistré... @@ -2135,7 +2135,7 @@ Peut-être une erreur de permission du fichier ? You have no write permission for the directory. Please, choose another one. - Vous n'avez pas d'autorisation en écriture pour ce répertoire. Veuillez en choisir un autre. + Vous n'avez pas les droits en écriture pour le répertoire. Veuillez en choisir un autre. @@ -2598,7 +2598,7 @@ Specify another directory, please. License URL - URL de licence + URL de la licence @@ -2714,7 +2714,7 @@ Specify another directory, please. If enabled, then 3D view selection will be synchronized with full object hierarchy. - Si activé, la sélection de la vue 3D sera synchronisée avec la hiérarchie complète des objets. + Si cette option est cochée, la sélection de la vue 3D sera synchronisée avec la hiérarchie complète des objets. @@ -2927,12 +2927,12 @@ Remarque : cette fonction peut parfois conduire à une foule de problèmes diff Letter color: - Letter color: + Couleur des lettres : Axis letter color - Axis letter color + Couleur des lettres des axes @@ -3149,7 +3149,7 @@ la taille de la boîte englobante de l'objet 3D affichée. Open a new viewer or restart %1 to apply anti-aliasing changes. - Ouvrir une nouvelle visionneuse ou redémarrer %1 pour appliquer les modifications d'anticrénelage. + Ouvrir une nouvelle fenêtre ou redémarrer %1 pour appliquer les modifications d'anticrénelage. @@ -3708,7 +3708,7 @@ Vous pouvez également utiliser la forme : John Doe <john@doe.com> License URL - URL de licence + URL de la licence @@ -4125,17 +4125,17 @@ Vous pouvez également utiliser la forme : John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Opacité en cas d'inactivité Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Opacité du cube de navigation lorsqu'il n'est pas activé. Color - Couleur + Colorier @@ -4940,12 +4940,12 @@ La colonne "État" indique si le document a pu être récupéré. Error saving: %1 - Erreur d'enregistrement: %1 + Erreur d'enregistrement : %1 Network Error: %1 - Erreur réseau : %1 + Erreur de réseau : %1 @@ -5018,7 +5018,7 @@ La colonne "État" indique si le document a pu être récupéré. 1 Download - 1 Téléchargement + 1 téléchargement @@ -6118,15 +6118,15 @@ Voulez enregistrer les modifications ? Format PDF - + Graphviz format Format Graphviz - + Export graph Exporter un graphique @@ -6623,7 +6623,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Modifiez l’objet lié @@ -6631,12 +6631,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Erreur - + Object not found Objet introuvable @@ -7473,7 +7473,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Vue en arborescence @@ -7481,7 +7481,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Rechercher @@ -7489,183 +7489,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Rechercher... - + Search for objects Rechercher des objets - + Activate document Activer le document - + Activate document %1 Activer document %1 - + Tree settings Paramètres de la vue en arborescence - + Show description column Afficher la colonne de description - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Afficher une colonne supplémentaire dans la vue en arborescence pour la description de l'élément. La description de l'élément peut être définie en appuyant sur F2 (ou le bouton d'édition de votre OS) ou en modifiant la propriété "label2". - + Group Groupe - + Labels & Attributes Étiquettes & attributs - + Description Description - + Show items hidden in tree view Afficher les éléments masqués dans la vue en arborescence - + Show items that are marked as 'hidden' in the tree view Afficher les éléments qui sont marqués comme "cachés" dans la vue en arborescence - + Toggle visibility in tree view Activer/désactiver la visibilité dans l'arborescence - + Toggles the visibility of selected items in the tree view Active/désactive la visibilité des éléments sélectionnés dans l'arborescence - + Create group... Créer un groupe... - + Create a group Créer un groupe - - + + Rename Renommer - + Rename object Renommer un objet - + Finish editing Terminer l'édition - + Finish editing object Terminer l'édition de l'objet - + Add dependent objects to selection Ajouter des objets dépendants à la sélection - + Adds all dependent objects to the selection Ajouter tous les objets dépendants à la sélection - + Close document Fermer le document - + Close the document Ferme le document - + Reload document Recharger le document - + Reload a partially loaded document Recharger un document partiellement chargé - + Skip recomputes Ignorer les recalculs - + Enable or disable recomputations of document Activer ou désactiver le recalcul du document - + Allow partial recomputes Autoriser les recalculs partiels - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Active ou désactive le recalcul de l'objet édité quand 'ignorer le recalcul' est activé - + Mark to recompute Marquer pour recalculer - + Mark this object to be recomputed Marquer cet objet pour être recalculé - + Recompute object Recalculer l'objet - + Recompute the selected object Recalculer l'objet sélectionné - + (but must be executed) (mais doit être exécuté) - + %1, Internal name: %2 %1, nom interne : %2 @@ -7961,45 +7961,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Type de fichier inconnu - - + + Cannot open unknown filetype: %1 Impossible d'ouvrir un type de fichier inconnu : %1 - + Export failed Échec de l'exportation - + Cannot save to unknown filetype: %1 Impossible de sauvegarder ce type de fichier inconnu : %1 - + Workbench failure Atelier défaillant - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Ce système utilise OpenGL %1.%2. FreeCAD nécessite OpenGL 2.0 ou supérieur. Veuillez mettre à jour votre pilote graphique et/ou votre carte si nécessaire. - + Invalid OpenGL Version Version d'OpenGL non valide @@ -8050,8 +8050,8 @@ Do you want to specify another directory? Exportation PDF ... - + Unsaved document Document non sauvegardé @@ -8529,36 +8529,36 @@ Choisissez "Abandonner" pour annuler Enregistrer la macro - - + + Finish Terminer - - + + Clear Effacer - - - + + + Cancel Annuler - + Inner Intérieur - + Outer Extérieur - + Split Séparer @@ -8598,12 +8598,12 @@ Veuillez ouvrir une fenêtre de navigateur et saisir : http://localhost:%1.Options... - + Out of memory Mémoire insuffisante - + Not enough memory available to display the data. Mémoire insuffisante pour afficher les données. @@ -8619,7 +8619,7 @@ Veuillez ouvrir une fenêtre de navigateur et saisir : http://localhost:%1.Impossible de trouver le fichier %1 ni dans %2 ni dans %3 - + Navigation styles Styles de navigation @@ -8791,8 +8791,8 @@ des tirets bas, et ne doit pas commender par un chiffre. Impossible d'ajouter la propriété à '%1': %2 - - + + Drag & drop failed Erreur lors du glisser/déposer @@ -8895,7 +8895,7 @@ apportée à la copie en cours sera perdue. Remplacer les couleurs... - + Edit %1 Editer %1 @@ -8920,8 +8920,8 @@ apportée à la copie en cours sera perdue. Activer/désactiver la superposition - + Toggle floating window Activer/désactiver la fenêtre flottante @@ -8937,187 +8937,192 @@ apportée à la copie en cours sera perdue. Appuyez sur Echap pour masquer l'indice - + UI Interface utilisateur - + Tree view Vue en arborescence - + Item background color Couleur d'arrière-plan des éléments - + Item background padding Remplissage de l’arrière-plan des éléments - + Resizable columns Colonnes redimensionnables - + + Show visibility icon + Afficher l'icône de visibilité + + + Hide extra column Masquer une colonne supplémentaire - + Hide scroll bar Masquer la barre de défilement - + Hide header Masquer l'en-tête - + IconSize Taille de l'icône - + FontSize Taille de la police - + ItemSpacing Espacement des éléments - + Overlay Superposition - + Hide tab bar Masquer la barre des onglets - + Hide property view scroll bar Masquer la barre de défilement de la vue des propriétés - + Auto hide in non 3D view Masquer automatiquement dans la vue non 3D - + Auto mouse pass through Passage automatique de la souris - + Auto mouse wheel pass through Passage automatique de la molette de la souris - + Delay mouse wheel pass through (ms) Délai de passage de la molette de la souris (ms) - + Alpha test radius Test alpha de rayon - + Check Navigation Cube Vérifier le cube de navigation - + Hint trigger size Taille de l'indice de déclenchement - + Hint width Largeur de l'indice - + Left panel hint offset Décalage de l'indice du panneau gauche - + Left panel hint length Longueur de l'indice du panneau gauche - + Right panel hint offset Décalage de l'indice du panneau droit - + Right panel hint length Longueur de l'indice du panneau droit - + Top panel hint offset Décalage de l'indice du panneau supérieur - + Top panel hint length Longueur de l'indice du panneau supérieur - + Bottom panel hint offset Décalage de l'indice du panneau inférieur - + Bottom panel hint length Longueur de l'indice du panneau inférieur - + Hint show tab bar Afficher la barre des onglets - + Hint delay (ms) Indice visuel (ms) - + Splitter auto hide delay (ms) Délai de masquage automatique du séparateur (ms) - + Activate on hover Activer le survol - + Layout delay (ms) Délai de la surimposition (ms) - + Animation duration (ms) Durée de l'animation (ms) - + Animation curve type Type de courbe d'animation @@ -9126,6 +9131,16 @@ apportée à la copie en cours sera perdue. Active object L'objet actif + + + UnSuppress + Annuler la suppression + + + + Suppress + Supprimer + SelectionFilter @@ -10051,8 +10066,8 @@ Contrairement aux clones, les liens font directement référence à la forme d'o Créer un nouveau document vide - + Unnamed Sans nom @@ -11706,35 +11721,40 @@ Voulez-vous tout de même continuer ? TreeParams - + Tree view item background. Only effective in overlay. Arrière-plan de l’élément dans la vue en arborescence. Ne fonctionne qu’en cas de superposition. - + Tree view item background padding. Remplissage de l’arrière-plan des éléments dans la vue en arborescence. - + Hide extra tree view column for item description. Masquer la colonne supplémentaire de la vue en arborescence pour la description de l'élément. - + Hide tree view scroll bar in dock overlay. Masquer la barre de défilement de la vue en arborescence dans la superposition du dock. - + Hide tree view header view in dock overlay. Masquer l'en-tête de la vue en arborescence dans la superposition du dock. - + Allow tree view columns to be manually resized. Permettre de redimensionner manuellement les colonnes de la vue en arborescence. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Si cette option est cochée, une icône en forme d'œil apparaît devant les éléments de la vue en arborescence, indiquant l'état de visibilité des éléments. Lorsque l'on clique sur l'icône, la visibilité est modifiée. + Workbench @@ -12706,10 +12726,9 @@ after FreeCAD launches will be substituted with locale separator, except in Python Console and Macro Editor where a dot/period will always be printed. - Si activé, le séparateur décimal du pavé numérique -sera remplacé par le séparateur de la langue du système, -sauf dans la console Python et l'éditeur de Macro où un -point sera toujours affiché. + Si cette option est cochée, le séparateur décimal du pavé numérique sera remplacé +par le séparateur de la langue du système, sauf dans la console Python et l'éditeur +de macro où un point sera toujours affiché. diff --git a/src/Gui/Language/FreeCAD_gl.ts b/src/Gui/Language/FreeCAD_gl.ts index b316f5b1da..19d8edef93 100644 --- a/src/Gui/Language/FreeCAD_gl.ts +++ b/src/Gui/Language/FreeCAD_gl.ts @@ -42,24 +42,24 @@ <baleiro> - - + + Angle Ángulo - - + + Axis Eixo - + Position Position - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Editar - + Import Importar @@ -188,8 +188,8 @@ Emprazamento - + Transform Transformar @@ -421,42 +421,42 @@ EditMode - + Default Por defecto - + The object will be edited using the mode defined internally to be the most appropriate for the object type The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform Transformar - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Tallado - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Cor - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6131,15 +6131,15 @@ Quere gardar os cambios? Formato PDF - + Graphviz format Graphviz format - + Export graph Exportar gráfico @@ -6641,7 +6641,7 @@ No lado dereito escolléronse %2. Gui::PropertyEditor::LinkLabel - + Change the linked object Trocar obxecto ligado @@ -6649,12 +6649,12 @@ No lado dereito escolléronse %2. Gui::PropertyEditor::LinkSelection - + Error Erro - + Object not found Obxecto non atopado @@ -7493,7 +7493,7 @@ Quere especificar outro directorio? Gui::TreeDockWidget - + Tree view Vista en árbore @@ -7501,7 +7501,7 @@ Quere especificar outro directorio? Gui::TreePanel - + Search Busca @@ -7509,183 +7509,183 @@ Quere especificar outro directorio? Gui::TreeWidget - + Search... Atopar... - + Search for objects Atopar para obxectos - + Activate document Activar o documento - + Activate document %1 Activar o documento %1 - + Tree settings Tree settings - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group Grupo - + Labels & Attributes Etiquetas & Atributos - + Description Descrición - + Show items hidden in tree view Show items hidden in tree view - + Show items that are marked as 'hidden' in the tree view Show items that are marked as 'hidden' in the tree view - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Crear grupo... - + Create a group Crear un grupo - - + + Rename Renomear - + Rename object Renomear obxecto - + Finish editing Rematar a edición - + Finish editing object Rematar a edición do obxecto - + Add dependent objects to selection Add dependent objects to selection - + Adds all dependent objects to the selection Adds all dependent objects to the selection - + Close document Pechar o documento - + Close the document Pecha o documento - + Reload document Recargar o documento - + Reload a partially loaded document Volve cargar un documento parcialmente cargado - + Skip recomputes Saltarse o recalculado - + Enable or disable recomputations of document Activar ou desactivar o recalculado do documento - + Allow partial recomputes Permitir recálculos parciais - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Enable or disable recomputating editing object when 'skip recomputation' is enabled - + Mark to recompute Marcar para recalcular - + Mark this object to be recomputed Marca este obxecto para ser recalculado - + Recompute object Recalcular obxecto - + Recompute the selected object Recalcular o obxecto seleccionado - + (but must be executed) (pero debe ser executado) - + %1, Internal name: %2 %1, nome interno: %2 @@ -7981,45 +7981,45 @@ Quere especificar outro directorio? Python - - - + + + Unknown filetype Tipo de ficheiro descoñecido - - + + Cannot open unknown filetype: %1 Non se pode abrir o ficheiro de tipo descoñecido: %1 - + Export failed Erro ao exportar - + Cannot save to unknown filetype: %1 Non se pode gardar o ficheiro de tipo descoñecido: %1 - + Workbench failure Falla da bancada de traballo - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8070,8 +8070,8 @@ Quere especificar outro directorio? Exportando en PDF... - + Unsaved document Documento non gardado @@ -8548,36 +8548,36 @@ Choose 'Abort' to abort Gardar Macro - - + + Finish Rematar - - + + Clear Baleirar - - - + + + Cancel Cancelar - + Inner Interno - + Outer Externo - + Split Dividir @@ -8617,12 +8617,12 @@ Por favor, abra un buscador e escriba: http://localhost:%1. Opcións... - + Out of memory Sen memoria - + Not enough memory available to display the data. Non hai memoria dispoñíbel para visualizar os datos. @@ -8638,7 +8638,7 @@ Por favor, abra un buscador e escriba: http://localhost:%1. Non se pode atopar o ficheiro %1 nin en %2 nin en %3 - + Navigation styles Estilos de navegación @@ -8810,8 +8810,8 @@ underscore, and must not start with a digit. Failed to add property to '%1': %2 - - + + Drag & drop failed Drag & drop failed @@ -8914,7 +8914,7 @@ the current copy will be lost. Override colors... - + Edit %1 Editar %1 @@ -8939,8 +8939,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8956,187 +8956,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Vista en árbore - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9145,6 +9150,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10069,8 +10084,8 @@ the current copy will be lost. Abrir un documento novo baleiro - + Unnamed Sen nome @@ -11722,35 +11737,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_hr.ts b/src/Gui/Language/FreeCAD_hr.ts index d72673fa45..c569d42192 100644 --- a/src/Gui/Language/FreeCAD_hr.ts +++ b/src/Gui/Language/FreeCAD_hr.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Kut - - + + Axis Osi - + Position Položaj - + Enum Nabrajanja @@ -112,12 +112,12 @@ Command - + Edit Uredi - + Import Uvoz @@ -188,8 +188,8 @@ Položaj - + Transform Transformiraj @@ -421,42 +421,42 @@ EditMode - + Default Inicijalno - + The object will be edited using the mode defined internally to be the most appropriate for the object type Objekt će se uređivati pomoću definiranog unutarnjeg načina rada kako bi bio najprimjereniji za vrstu objekta - + Transform Transformiraj - + The object will have its placement editable with the Std TransformManip command Objekt će imati svoju poziciju uređivu pomoću naredbe Std TransformManip - + Cutting Rezanje - + This edit mode is implemented as available but currently does not seem to be used by any object Ovaj način uređivanja implementiran je kao dostupan, ali trenutno se ne čini da ga koristi niti jedan objekt - + Color Boja - + The object will have the color of its individual faces editable with the Part FaceColors command Objekt će imati boju svojih pojedinačnih površina uređivu pomoću naredbe Part FaceColors @@ -6161,15 +6161,15 @@ Do you want to save your changes? PDF format - + Graphviz format Graphviz format - + Export graph Izvoz grafikona @@ -6675,7 +6675,7 @@ Kako želite nastaviti? Gui::PropertyEditor::LinkLabel - + Change the linked object Promjena povezanog objekta @@ -6683,12 +6683,12 @@ Kako želite nastaviti? Gui::PropertyEditor::LinkSelection - + Error Pogreška - + Object not found Objekt nije pronađen @@ -7526,7 +7526,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Pogled hijerarhije @@ -7534,7 +7534,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Pretraživanje @@ -7542,185 +7542,185 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Pretraživanje... - + Search for objects Potraga za objektima - + Activate document Aktiviraj dokument - + Activate document %1 Aktiviraj dokument %1 - + Tree settings Postavke Stabla - + Show description column Prikaži opisni stupac - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Prikaži dodatni stupac prikaza stabla za opis stavke. Opis stavke može se postaviti pritiskom na F2 (ili gumb za uređivanje vašeg OS-a) ili uređivanjem svojstva 'label2'. - + Group Grupa - + Labels & Attributes Etikete i atributi - + Description Opis - + Show items hidden in tree view Prikaži elemente skrivene u prikazu stabla - + Show items that are marked as 'hidden' in the tree view Prikaži elemente koji su označeni kao 'skriveni' u prikazu stabla - + Toggle visibility in tree view Prebaci vidljivost u prikazu stabla - + Toggles the visibility of selected items in the tree view Prebaci vidljivost označenih stavki u prikazu stabla - + Create group... Napravi grupu ... - + Create a group Napravite grupu - - + + Rename Preimenuj - + Rename object Preimenovanje objekta - + Finish editing Završi uređivanje - + Finish editing object Završi uređivanje objekta - + Add dependent objects to selection Dodajte ovisne objekte odabiru - + Adds all dependent objects to the selection Dodaje sve ovisne objekte odabiru - + Close document Zatvori dokument - + Close the document Zatvori dokument - + Reload document Dokument ponovo učitati - + Reload a partially loaded document Učitajte ponovo djelomično učitan dokument - + Skip recomputes Preskoči recomputes - + Enable or disable recomputations of document Omogućavanje ili onemogućavanje recomputations dokumenta - + Allow partial recomputes Djelomično omogući preračunavanje - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Omogućite ili onemogućite ponovno računanje objekta uređivanja kada je omogućeno 'preskoči ponovno računanje' - + Mark to recompute Označi za preračunaj - + Mark this object to be recomputed Označi ovaj objekt da se preračuna - + Recompute object Ponovno računanje objekta - + Recompute the selected object Ponovno računanje odabranog objekta - + (but must be executed) (ali mora biti izvršen) - + %1, Internal name: %2 %1, Interni naziv: %2 @@ -8016,45 +8016,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Nepoznata vrsta datoteke - - + + Cannot open unknown filetype: %1 Ne mogu otvoriti nepoznatu vrstu datoteke: %1 - + Export failed Izvoz neuspješan - + Cannot save to unknown filetype: %1 Ne mogu spremiti nepoznatu vrstu datoteke: %1 - + Workbench failure Workbench neuspjeh - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Ovaj sustav radi OpenGL %1.%2. FreeCAD zahtijeva OpenGL 2.0 ili noviji. Po potrebi nadogradite grafički upravljački program i/ili karticu. - + Invalid OpenGL Version Pogrešna OpenGL Verzija @@ -8105,8 +8105,8 @@ Do you want to specify another directory? Izvoz PDF ... - + Unsaved document Nespremljeni dokument @@ -8593,36 +8593,36 @@ Odaberite "Prekini" za prekid Spremi Makro - - + + Finish Završiti - - + + Clear Brisanje - - - + + + Cancel Otkazati - + Inner Unutrašnji - + Outer Vanjski - + Split Razdjeli @@ -8660,12 +8660,12 @@ Please open a browser window and type in: http://localhost:%1. Opcije ... - + Out of memory Bez memorije - + Not enough memory available to display the data. Nema dovoljno dostupne memorije za prikaz podataka. @@ -8681,7 +8681,7 @@ Please open a browser window and type in: http://localhost:%1. Ne mogu pronaći datoteku %1 niti u %2 niti u %3 - + Navigation styles Načini navigacije @@ -8853,8 +8853,8 @@ podcrtavanje, ne smije se započeti s znamenkom. Nije moguće dodati svojstvo u '%1':%2 - - + + Drag & drop failed Povlačenje i ispuštanje nije uspjelo @@ -8955,7 +8955,7 @@ trenutnu kopiju će biti izgubljene. Nadjačava boje... - + Edit %1 Uređivanje %1 @@ -8980,8 +8980,8 @@ trenutnu kopiju će biti izgubljene. Uključite/isključite prekrivanje - + Toggle floating window Uključite/isključite slobodan prozor @@ -8997,187 +8997,192 @@ trenutnu kopiju će biti izgubljene. Pritisni ESC za skrivanje savjeta - + UI UI (Korisničko sučelje) - + Tree view Pogled hijerarhije - + Item background color Boja pozadine stavke - + Item background padding Ispuna pozadine stavke - + Resizable columns Promjenjive kolone - + + Show visibility icon + Show visibility icon + + + Hide extra column Skriva dodatnu kolonu - + Hide scroll bar Skriva klizač - + Hide header Skriva zaglavlje - + IconSize Veličina Ikone - + FontSize Veličina Pisma - + ItemSpacing Razmak stavke - + Overlay Preklapanje - + Hide tab bar Skriva traku kartica - + Hide property view scroll bar Skriva klizač prikaza svojstava - + Auto hide in non 3D view Automatski sakrij u ne-3D pogledu - + Auto mouse pass through Automatsko propuštanje miša - + Auto mouse wheel pass through Automatsko propuštanje kotača miša - + Delay mouse wheel pass through (ms) Kašnjenje prolaska miša (ms) - + Alpha test radius Alfa test polumjer - + Check Navigation Cube Provjeri Navigacijsku kocku - + Hint trigger size Veličina praga obavijesti - + Hint width Širina obavijesti - + Left panel hint offset Odmak nagovijesti lijevog panela - + Left panel hint length Dužina obavijesti lijevog panela - + Right panel hint offset Odmak nagovijesti desnog panela - + Right panel hint length Dužina nagovijesti desnog panela - + Top panel hint offset Odmak nagovijesti gornjeg panela - + Top panel hint length Dužina nagovijesti gornjeg panela - + Bottom panel hint offset Odmak nagovijesti donjeg panela - + Bottom panel hint length Dužina nagovijesti donjeg panela - + Hint show tab bar Obavijest pokaži traku kartica - + Hint delay (ms) Kašnjenje nagovijesti (ms) - + Splitter auto hide delay (ms) Razmak sakrij automatski kašnjenje (ms) - + Activate on hover Aktiviraj kod lebdenja - + Layout delay (ms) Razmještaj kašnjenje (ms) - + Animation duration (ms) Trajanje animacije (ms) - + Animation curve type Vrsta krivulje animacije @@ -9186,6 +9191,16 @@ trenutnu kopiju će biti izgubljene. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10117,8 +10132,8 @@ trenutnu kopiju će biti izgubljene. Kreira novi prazni dokument - + Unnamed Neimenovano @@ -11780,35 +11795,40 @@ Molimo provjerite Pregled izvještaja za više pojedinosti. TreeParams - + Tree view item background. Only effective in overlay. Pozadina stavke stabla. Učinkovito samo u preklapanju. - + Tree view item background padding. Ispuna pozadine stavke stabla. - + Hide extra tree view column for item description. Sakrij dodatni stupac prikaza stabla za opis stavke. - + Hide tree view scroll bar in dock overlay. Sakrij traku za pomicanje prikaza stabla u dock preklapanju. - + Hide tree view header view in dock overlay. Sakrij prikaz zaglavlja stabla u dock preklapanju. - + Allow tree view columns to be manually resized. Dopusti ručno mijenjanje veličine stupaca prikaza stabla. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_hu.ts b/src/Gui/Language/FreeCAD_hu.ts index dc873011d9..f1f0891dbf 100644 --- a/src/Gui/Language/FreeCAD_hu.ts +++ b/src/Gui/Language/FreeCAD_hu.ts @@ -42,24 +42,24 @@ <üres> - - + + Angle Szög - - + + Axis Tengely - + Position Pozíció - + Enum Felsorolás @@ -112,12 +112,12 @@ Command - + Edit Szerkesztés - + Import Importálás @@ -188,8 +188,8 @@ Elhelyezés - + Transform Átalakítás @@ -421,42 +421,42 @@ EditMode - + Default Alapértelmezett - + The object will be edited using the mode defined internally to be the most appropriate for the object type A tárgy szerkesztése a belsőleg meghatározott, az tárgy típusnak legmegfelelőbb módban történik - + Transform Átalakítás - + The object will have its placement editable with the Std TransformManip command A tárgy elhelyezése az Std TransformManip paranccsal lesz szerkeszthető - + Cutting Vágás - + This edit mode is implemented as available but currently does not seem to be used by any object Ez a szerkesztési mód elérhető, de jelenleg úgy tűnik, hogy egyetlen tárgy sem használja - + Color Szín - + The object will have the color of its individual faces editable with the Part FaceColors command A tárgy egyes felületeinek színe a alkatrész FaceColors paranccsal lesz szerkeszthető @@ -2935,12 +2935,12 @@ jelentse ezt a beállítást engedélyezve, amikor támogatást kér a FreeCAD f Letter color: - Letter color: + Betűszín: Axis letter color - Axis letter color + Tengely betűszín @@ -4134,12 +4134,12 @@ Használhatja az űrlapot is: Gipsz Jakab <gipsz@jakab.hu> Opacity when inactive - Opacity when inactive + Átlátszatlanság inaktív állapotban Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + A navigációs kocka átlátszatlansága, amikor nincs fókuszálva @@ -6124,15 +6124,15 @@ El akarja menteni a változásokat? PDF formátum - + Graphviz format Graphviz formátum - + Export graph Export grafikon @@ -6634,7 +6634,7 @@ a jobboldali nézetben %2 pont lett jelölve. Gui::PropertyEditor::LinkLabel - + Change the linked object Hivatkozott objektum megváltoztatása @@ -6642,12 +6642,12 @@ a jobboldali nézetben %2 pont lett jelölve. Gui::PropertyEditor::LinkSelection - + Error Hiba - + Object not found Az objektum nem található @@ -7484,7 +7484,7 @@ Meg szeretne adni egy másik könyvtárat? Gui::TreeDockWidget - + Tree view Fanézet @@ -7492,7 +7492,7 @@ Meg szeretne adni egy másik könyvtárat? Gui::TreePanel - + Search Keresés @@ -7500,183 +7500,183 @@ Meg szeretne adni egy másik könyvtárat? Gui::TreeWidget - + Search... Keres... - + Search for objects Objektumok keresése - + Activate document Dokumentum aktiválása - + Activate document %1 A %1 dokumentum aktiválása - + Tree settings Fa beállításai - + Show description column A leírás oszlop megjelenítése - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Egy extra fa nézet oszlop megjelenítése az elem leírásához. Az elem leírását az F2 (vagy az operációs rendszer szerkesztőgombjának) megnyomásával vagy a 'label2' tulajdonság szerkesztésével lehet beállítani. - + Group Csoport - + Labels & Attributes Cimkék & Tulajdonságok - + Description Leírás - + Show items hidden in tree view Fa nézetben elrejtett elemek megjelenítése - + Show items that are marked as 'hidden' in the tree view Fa nézetben a "rejtett"-ként jelölt elemek megjelenítése - + Toggle visibility in tree view Láthatóság váltása a fa nézetben - + Toggles the visibility of selected items in the tree view Fa nézetben a kiválasztott elemek láthatóságának váltása - + Create group... Csoport létrehozása... - + Create a group Új csoport létrehozása - - + + Rename Átnevezés - + Rename object Tárgy átnevezése - + Finish editing Szerkesztés befejezése - + Finish editing object Objektumszerkesztés befejezése - + Add dependent objects to selection Függő tárgyak hozzáadása a kijelöléshez - + Adds all dependent objects to the selection Összes függőben lévő tárgy hozzáadása a kijelöléshez - + Close document Dokumentum bezárása - + Close the document A dokumentum bezárása - + Reload document Dokumentum újratöltése - + Reload a partially loaded document Részlegesen betöltött dokumentum újratöltése - + Skip recomputes Újraszámítás átugrása - + Enable or disable recomputations of document Dokumentum újraszámításának engedélyezése vagy letiltása - + Allow partial recomputes Részleges újraszámítás engedélyezése - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Szerkesztési tárgy újraszámításának engedélyezése vagy letiltása, ha a 'újraszámítás kihagyása' engedélyezve van - + Mark to recompute Jelölje, újraszámításhoz - + Mark this object to be recomputed Jelölje ezt az objektumot az újraszámoláshoz - + Recompute object Tárgy újraszámítás - + Recompute the selected object A kijelölt tárgy újraszámítása - + (but must be executed) (de végre kell hajtanom) - + %1, Internal name: %2 %1, Belső név: %2 @@ -7972,45 +7972,45 @@ Meg szeretne adni egy másik könyvtárat? Python - - - + + + Unknown filetype Ismeretlen filetípus - - + + Cannot open unknown filetype: %1 Nem megnyitható fájltípus: %1 - + Export failed Exportálás sikertelen - + Cannot save to unknown filetype: %1 Nem menthető fájltípus: %1 - + Workbench failure Munkafelület hiba - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Ezen a rendszeren OpenGL %1.%2 fut. A FreeCAD-hez OpenGL 2.0 vagy magasabb verziószám szükséges. Kérjük, szükség szerint frissítse grafikus illesztőprogramját és/vagy kártyáját. - + Invalid OpenGL Version Érvénytelen OpenGL verzió @@ -8061,8 +8061,8 @@ Meg szeretne adni egy másik könyvtárat? PDF exportálása... - + Unsaved document Nem mentett dokumentum @@ -8542,36 +8542,36 @@ A 'Megszakítás' választásával megszakít Mentse a makrót - - + + Finish Befejezés - - + + Clear Törlés - - - + + + Cancel Mégse - + Inner Belső - + Outer Külső - + Split Feloszt @@ -8610,12 +8610,12 @@ Nyisson meg egy böngészőt, és írja be: http://localhost:%1. Beállítások... - + Out of memory Kevés a memória - + Not enough memory available to display the data. Nincs elég memória az adatok megjelenítéséhez. @@ -8631,7 +8631,7 @@ Nyisson meg egy böngészőt, és írja be: http://localhost:%1. Nem talál fájlt %1 -ben %2 -ben, sem %3 -ban - + Navigation styles Navigációs stílusok @@ -8803,8 +8803,8 @@ underscore, and must not start with a digit. Nem sikerült tulajdonságot hozzáadni a következőhöz: '%1': %2 - - + + Drag & drop failed A fogd & vidd sikertelen @@ -8907,7 +8907,7 @@ az aktuális példány elveszik. Színek felülbírálása... - + Edit %1 %1 szerkesztése @@ -8932,8 +8932,8 @@ az aktuális példány elveszik. Átfedés váltása - + Toggle floating window Lebegő ablak váltása @@ -8949,187 +8949,192 @@ az aktuális példány elveszik. Nyomja meg az ESC gombot a súgó elrejtéséhez - + UI Felhasználói felület - + Tree view Fanézet - + Item background color Elem háttér szín - + Item background padding Elem hátterének kitöltése - + Resizable columns Átméretezhető oszlopok - + + Show visibility icon + Megjeleníti a láthatóság ikont + + + Hide extra column Extra oszlop elrejtése - + Hide scroll bar Görgetősáv elrejtése - + Hide header Fejléc elrejtése - + IconSize Ikon méret - + FontSize Betűméret - + ItemSpacing Elem elhelyezkedés - + Overlay Átfedés - + Hide tab bar Tabsáv elrejtése - + Hide property view scroll bar Tulajdonságnézet görgetősáv elrejtése - + Auto hide in non 3D view Automatikus elrejtés nem 3D nézetben - + Auto mouse pass through Automatikus egér áthaladás - + Auto mouse wheel pass through Automatikus egér görgő áthaladás - + Delay mouse wheel pass through (ms) Az egérgörgő áthaladásának késleltetése (ms) - + Alpha test radius Átlátszó tesztsugár - + Check Navigation Cube Navigációs négyzet vizsgálata - + Hint trigger size Tipp kapcsoló mérete - + Hint width Tipp szélesség - + Left panel hint offset Bal oldali panel tipp eltolás - + Left panel hint length Bal oldali panel tipp hossz - + Right panel hint offset Jobb oldali panel tipp eltolás - + Right panel hint length Jobb oldali panel tipp hossz - + Top panel hint offset Felső panel tipp eltolás - + Top panel hint length Felső panel tipp hossz - + Bottom panel hint offset Alsó panel tipp eltolás - + Bottom panel hint length Alsó panel tipp hossz - + Hint show tab bar Tipp tabulátor sáv megjelenítése - + Hint delay (ms) Tipp késleltetés (ms) - + Splitter auto hide delay (ms) Osztó automatikus elrejtési késleltetés (ms) - + Activate on hover Aktiválás rámutatáskor - + Layout delay (ms) Elrendezési késleltetés (ms) - + Animation duration (ms) Animáció hossza (ms) - + Animation curve type Animációs görbe típusa @@ -9138,6 +9143,16 @@ az aktuális példány elveszik. Active object Aktív tárgy + + + UnSuppress + Némítás visszavonása + + + + Suppress + Elnémít + SelectionFilter @@ -10062,8 +10077,8 @@ az aktuális példány elveszik. Új üres munkalap létrehozása - + Unnamed Névtelen @@ -11715,35 +11730,40 @@ Még mindig fojtatni szeretné? TreeParams - + Tree view item background. Only effective in overlay. A fanézet tárgy háttere. Csak a kivetésre vonatkozó. - + Tree view item background padding. Töltse ki a fanézet elem hátterét. - + Hide extra tree view column for item description. A fanézet egy további oszlopának elrejtése a cikk leírásához. - + Hide tree view scroll bar in dock overlay. Fa görgetősáv elrejtése a dokkoló fedvényben. - + Hide tree view header view in dock overlay. Fa görgetősáv fejléc nézet elrejtése a dokkoló fedvényben. - + Allow tree view columns to be manually resized. Engedélyezze a fanézet oszlopainak manuális átméretezését. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Ha engedélyezett, a fa nézet elemei előtt megjelenik egy szem ikon, amely az elemek láthatósági állapotát mutatja. Kattintásra a láthatóság változik + Workbench diff --git a/src/Gui/Language/FreeCAD_id.ts b/src/Gui/Language/FreeCAD_id.ts index 2ff121adf3..5f63f510b7 100644 --- a/src/Gui/Language/FreeCAD_id.ts +++ b/src/Gui/Language/FreeCAD_id.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Sudut - - + + Axis Axis - + Position Posisi - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Edit - + Import Impor @@ -188,8 +188,8 @@ Penempatan - + Transform Transform @@ -421,42 +421,42 @@ EditMode - + Default Bawaan - + The object will be edited using the mode defined internally to be the most appropriate for the object type The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform Transform - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Pemotongan - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Warna - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6121,15 +6121,15 @@ Do you want to save your changes? Format PDF - + Graphviz format Graphviz format - + Export graph Grafik ekspor @@ -6626,7 +6626,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Ubah objek yang terhubung @@ -6634,12 +6634,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Kesalahan - + Object not found objek tidak ditemukan @@ -7035,7 +7035,7 @@ Do you want to specify another directory? Position - Position + Posisi @@ -7473,7 +7473,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Tampilan pohon @@ -7481,7 +7481,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Pencarian @@ -7489,183 +7489,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Search... - + Search for objects Search for objects - + Activate document Aktifkan dokumen - + Activate document %1 Aktifkan dokumen % 1 - + Tree settings Tree settings - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group Kelompok - + Labels & Attributes Label & Atribut - + Description Description - + Show items hidden in tree view Show items hidden in tree view - + Show items that are marked as 'hidden' in the tree view Show items that are marked as 'hidden' in the tree view - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Membuat grup... - + Create a group Buat grup - - + + Rename Ganti nama - + Rename object Ganti nama objek - + Finish editing Selesai mengedit - + Finish editing object Selesai mengedit objek - + Add dependent objects to selection Add dependent objects to selection - + Adds all dependent objects to the selection Adds all dependent objects to the selection - + Close document Tutup dokumen - + Close the document Tutup dokumen ini - + Reload document Muat ulang dokumen - + Reload a partially loaded document Reload a partially loaded document - + Skip recomputes Lewati rekomputasi - + Enable or disable recomputations of document Mengaktifkan atau menonaktifkan rekomputasi dokumen - + Allow partial recomputes Allow partial recomputes - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Enable or disable recomputating editing object when 'skip recomputation' is enabled - + Mark to recompute Tandai untuk menghitung ulang - + Mark this object to be recomputed Tandai objek ini untuk dihitung ulang - + Recompute object Recompute object - + Recompute the selected object Recompute the selected object - + (but must be executed) (but must be executed) - + %1, Internal name: %2 % 1, Nama internal: % 2 @@ -7961,45 +7961,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Filetype tidak diketahui - - + + Cannot open unknown filetype: %1 Tidak dapat membuka jenis filetype yang tidak diketahui: % 1 - + Export failed Export failed - + Cannot save to unknown filetype: %1 Tidak dapat menyimpan ke jenis filetype yang tidak diketahui: % 1 - + Workbench failure Kegagalan workbench - + %1 % 1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8050,8 +8050,8 @@ Do you want to specify another directory? Mengekspor PDF... - + Unsaved document Dokumen yang belum disimpan @@ -8528,36 +8528,36 @@ Choose 'Abort' to abort Simpan Makro - - + + Finish Selesai - - + + Clear Bersih - - - + + + Cancel Membatalkan - + Inner Batin - + Outer Luar - + Split Split @@ -8595,12 +8595,12 @@ Please open a browser window and type in: http://localhost:%1. Pilihan... - + Out of memory Kehabisan memori - + Not enough memory available to display the data. Memori tidak cukup tersedia untuk menampilkan data. @@ -8616,7 +8616,7 @@ Please open a browser window and type in: http://localhost:%1. Tidak dapat menemukan file % 1 tidak di % 2 maupun di % 3 - + Navigation styles Gaya navigasi @@ -8704,7 +8704,7 @@ Please open a browser window and type in: http://localhost:%1. Edit text - Edit teks + Edit text @@ -8788,8 +8788,8 @@ underscore, and must not start with a digit. Failed to add property to '%1': %2 - - + + Drag & drop failed Drag & drop failed @@ -8892,7 +8892,7 @@ the current copy will be lost. Override colors... - + Edit %1 Edit %1 @@ -8917,8 +8917,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8934,187 +8934,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Tampilan pohon - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9123,6 +9128,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10047,8 +10062,8 @@ the current copy will be lost. Buat dokumen kosong baru - + Unnamed Tanpa nama @@ -11700,35 +11715,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_it.ts b/src/Gui/Language/FreeCAD_it.ts index f1c827f346..8870ef00be 100644 --- a/src/Gui/Language/FreeCAD_it.ts +++ b/src/Gui/Language/FreeCAD_it.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Angolo - - + + Axis Asse - + Position Posizione - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Modifica - + Import Importa @@ -188,8 +188,8 @@ Posizionamento - + Transform Trasforma @@ -421,42 +421,42 @@ EditMode - + Default Predefinito - + The object will be edited using the mode defined internally to be the most appropriate for the object type L'oggetto verrà modificato usando la modalità definita internamente per essere il più appropriato per il tipo di oggetto - + Transform Trasforma - + The object will have its placement editable with the Std TransformManip command L'oggetto avrà il suo posizionamento modificabile con il comando Std TransformManip - + Cutting Taglio - + This edit mode is implemented as available but currently does not seem to be used by any object Questa modalità di modifica è disponibile, ma al momento non sembra essere utilizzata da nessun oggetto - + Color Colore - + The object will have the color of its individual faces editable with the Part FaceColors command L'oggetto avrà il colore delle singole facce modificabile con il comando Part FaceColors @@ -2935,7 +2935,7 @@ segnalare che questa impostazione è stata abilitata quando si cerca supporto su Letter color: - Letter color: + Colore della lettera: @@ -6125,15 +6125,15 @@ Si desidera salvare le modifiche? Formato PDF - + Graphviz format Formato Graphviz - + Export graph Esporta grafico @@ -6632,7 +6632,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Cambia l'oggetto collegato @@ -6640,12 +6640,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Errore - + Object not found Oggetto non trovato @@ -7484,7 +7484,7 @@ Vuoi specificare un'altra cartella? Gui::TreeDockWidget - + Tree view Struttura @@ -7492,7 +7492,7 @@ Vuoi specificare un'altra cartella? Gui::TreePanel - + Search Trova @@ -7500,183 +7500,183 @@ Vuoi specificare un'altra cartella? Gui::TreeWidget - + Search... Cerca... - + Search for objects Cerca oggetti - + Activate document Attiva documento - + Activate document %1 Attiva il documento %1 - + Tree settings Impostazioni albero - + Show description column Mostra colonna descrizione - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Mostra una colonna extra nella vista ad albero per la descrizione degli elementi. La descrizione dell'elemento può essere impostata premendo F2 (o il pulsante di modifica del sistema operativo) o modificando la proprietà 'label2'. - + Group Gruppo - + Labels & Attributes Etichette & Attributi - + Description Descrizione - + Show items hidden in tree view Mostra gli elementi nascosti nella vista ad albero - + Show items that are marked as 'hidden' in the tree view Mostra gli elementi contrassegnati come 'nascosti' nella vista ad albero - + Toggle visibility in tree view Commuta la visibilità nella vista ad albero - + Toggles the visibility of selected items in the tree view Commuta la visibilità degli elementi selezionati nella vista ad albero - + Create group... Crea gruppo... - + Create a group Crea un gruppo - - + + Rename Rinomina - + Rename object Rinomina oggetto - + Finish editing Completa la modifica - + Finish editing object Completa la modifica dell'oggetto - + Add dependent objects to selection Aggiungi oggetti dipendenti alla selezione - + Adds all dependent objects to the selection Aggiunge tutti gli oggetti dipendenti alla selezione - + Close document Chiudi il documento - + Close the document Chiude il documento - + Reload document Ricarica il documento - + Reload a partially loaded document Ricarica un documento caricato parzialmente - + Skip recomputes Salta il ricalcolo - + Enable or disable recomputations of document Abilita o disabilita il ricalcolo del documento - + Allow partial recomputes Consenti i ricalcoli parziali - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Abilita o disabilita il ricalcolo dell'oggetto in modifica quando 'salta il ricalcolo' è abilitato - + Mark to recompute Segna da ricalcolare - + Mark this object to be recomputed Contrassegna questo oggetto come oggetto da ricalcolare - + Recompute object Ricalcola l'oggetto - + Recompute the selected object Ricalcola l'oggetto selezionato - + (but must be executed) (ma deve essere eseguito) - + %1, Internal name: %2 %1, nome interno: %2 @@ -7972,45 +7972,45 @@ Vuoi specificare un'altra cartella? Python - - - + + + Unknown filetype Tipo di file sconosciuto - - + + Cannot open unknown filetype: %1 Non è possibile aprire il tipo di file sconosciuto: %1 - + Export failed Esportazione fallita - + Cannot save to unknown filetype: %1 Non è possibile salvare il tipo di file sconosciuto: %1 - + Workbench failure Avaria ambiente - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Versione OpenGL Non Valida @@ -8061,8 +8061,8 @@ Vuoi specificare un'altra cartella? Esportazione PDF... - + Unsaved document Documento non salvato @@ -8542,36 +8542,36 @@ Scegli 'Annulla' per interrompere Salva macro - - + + Finish Termina - - + + Clear Pulisci - - - + + + Cancel Annulla - + Inner Interno - + Outer Esterno - + Split Dividi @@ -8611,12 +8611,12 @@ Aprire una finestra browser e scrivere http://localhost:%1. Opzioni... - + Out of memory Memoria insufficiente - + Not enough memory available to display the data. Memoria disponibile insufficiente per visualizzare i dati. @@ -8632,7 +8632,7 @@ Aprire una finestra browser e scrivere http://localhost:%1. Impossibile trovare il file %1 nè in %2 nè in %3 - + Navigation styles Stile di navigazione @@ -8804,8 +8804,8 @@ e sottolineato e non deve iniziare con un numero. Impossibile aggiungere la proprietà a '%1': %2 - - + + Drag & drop failed Trascinamento della selezione non riuscito @@ -8908,7 +8908,7 @@ la copia corrente andranno perse. Sostituisci colori... - + Edit %1 Edita %1 @@ -8933,8 +8933,8 @@ la copia corrente andranno perse. Attiva/disattiva sovrapposizione - + Toggle floating window Attiva/disattiva finestra fluttuante @@ -8950,187 +8950,192 @@ la copia corrente andranno perse. Premi ESC per nascondere il suggerimento - + UI Interfaccia utente - + Tree view Struttura - + Item background color Colore di sfondo dell'elemento - + Item background padding Spaziatura sfondo elemento - + Resizable columns Colonne ridimensionabili - + + Show visibility icon + Mostra icona di visibilità + + + Hide extra column Nascondi colonna aggiuntiva - + Hide scroll bar Nascondi barra di scorrimento - + Hide header Nascondi intestazione - + IconSize Grandezza icona - + FontSize Grandezza font - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Controlla Cubo Di Navigazione - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Ritardo suggerimento (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Durata animazione (ms) - + Animation curve type Animation curve type @@ -9139,6 +9144,16 @@ la copia corrente andranno perse. Active object Oggetto attivo + + + UnSuppress + Annullare soppressione + + + + Suppress + Sopprime + SelectionFilter @@ -10063,8 +10078,8 @@ la copia corrente andranno perse. Crea un documento vuoto - + Unnamed Senza nome @@ -11716,35 +11731,40 @@ Si desidera ancora procedere? TreeParams - + Tree view item background. Only effective in overlay. Sfondo dell'elemento vista ad albero. Efficace solo in sovrapposizione. - + Tree view item background padding. Padding sfondo elemento in vista ad albero. - + Hide extra tree view column for item description. Nascondi la colonna vista ad albero extra per la descrizione degli elementi. - + Hide tree view scroll bar in dock overlay. Nasconde la barra di scorrimento della vista albero nella sovrapposizione dock. - + Hide tree view header view in dock overlay. Nasconde l'intestazione della vista ad albero nella sovrapposizione del dock. - + Allow tree view columns to be manually resized. Consenti di ridimensionare manualmente le colonne della vista ad albero. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Se abilitata, mostra un'icona ad occhio prima degli elementi della vista ad albero che mostran lo stato di visibilità degli elementi. Quando fai clic sulla visibilità viene attivata o meno + Workbench diff --git a/src/Gui/Language/FreeCAD_ja.ts b/src/Gui/Language/FreeCAD_ja.ts index 8a6dfd4339..cd319c5bf1 100644 --- a/src/Gui/Language/FreeCAD_ja.ts +++ b/src/Gui/Language/FreeCAD_ja.ts @@ -42,24 +42,24 @@ <空> - - + + Angle 角度 - - + + Axis - + Position 位置 - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit 編集 - + Import インポート @@ -188,8 +188,8 @@ 配置 - + Transform 変換 @@ -421,42 +421,42 @@ EditMode - + Default デフォルト - + The object will be edited using the mode defined internally to be the most appropriate for the object type オブジェクトは、オブジェクト型に最も適した、内部的に定義されたモードを使用して編集されます。 - + Transform 変換 - + The object will have its placement editable with the Std TransformManip command オブジェクトの配置は Std TransformManip コマンドで編集可能です。 - + Cutting 切断 - + This edit mode is implemented as available but currently does not seem to be used by any object この編集モードは利用可能な状態で実装されていますが、現在はどのオブジェクトでも使用されていないようです。 - + Color - + The object will have the color of its individual faces editable with the Part FaceColors command オブジェクトはそれぞれの面の色を持ち、Part FaceColors コマンドで編集可能です。 @@ -6099,15 +6099,15 @@ Do you want to save your changes? PDF形式 - + Graphviz format Graphviz format - + Export graph グラフをエクスポート @@ -6604,7 +6604,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object リンクされたオブジェクトを変更 @@ -6612,12 +6612,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error エラー - + Object not found オブジェクトが見つかりません @@ -7017,7 +7017,7 @@ Do you want to specify another directory? Position - Position + 位置 @@ -7455,7 +7455,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view ツリービュー @@ -7463,7 +7463,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search 検索  @@ -7471,183 +7471,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... 検索... - + Search for objects オブジェクトの検索 - + Activate document ドキュメントをアクティブにする - + Activate document %1 文書の %1をアクティブにする - + Tree settings ツリー設定 - + Show description column 説明列を表示 - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. アイテム説明のための追加のツリービュー列を表示します。 項目の説明は、F2 (または使用している OS の編集ボタン) を押すか、「label2」プロパティを編集することで設定できます。 - + Group グループ - + Labels & Attributes ラベルと属性 - + Description 説明 - + Show items hidden in tree view ツリービューの非表示アイテムを表示 - + Show items that are marked as 'hidden' in the tree view ツリービューで「非表示」としてマークされているアイテムを表示 - + Toggle visibility in tree view ツリー ビューでの表示を切り替え - + Toggles the visibility of selected items in the tree view ツリー ビューで選択したアイテムの表示を切り替えます。 - + Create group... グループを作成... - + Create a group グループを作成します。 - - + + Rename 名前の変更 - + Rename object オブジェクトの名前を変更します。 - + Finish editing 編集を終了 - + Finish editing object オブジェクトの編集を終了します。 - + Add dependent objects to selection 依存オブジェクトを追加選択 - + Adds all dependent objects to the selection すべての依存オブジェクトを追加選択 - + Close document ドキュメントを閉じる - + Close the document ドキュメントを閉じる - + Reload document ドキュメントを再読み込み - + Reload a partially loaded document 特定の読み込み済みドキュメントを再読み込み - + Skip recomputes 再計算をスキップ - + Enable or disable recomputations of document ドキュメントの再計算の有効、無効を切り替え - + Allow partial recomputes 部分的な再計算を許可 - + Enable or disable recomputating editing object when 'skip recomputation' is enabled 「再計算のスキップ」が有効な場合の編集オブジェクト再計算の有効、無効を切り替え - + Mark to recompute 再計算用にマーク - + Mark this object to be recomputed このオブジェクトを再計算のためにマーク - + Recompute object オブジェクトを再計算 - + Recompute the selected object 選択したオブジェクトを再計算する - + (but must be executed) (実行する必要があります) - + %1, Internal name: %2 %1、内部名: %2 @@ -7943,45 +7943,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype 不明なファイル形式 - - + + Cannot open unknown filetype: %1 %1:不明なファイルタイプを開くことができません。 - + Export failed エクスポート失敗 - + Cannot save to unknown filetype: %1 不明なファイル形式に保存できません: %1 - + Workbench failure ワークベンチのエラー - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8032,8 +8032,8 @@ Do you want to specify another directory? PDF ファイルをエクスポートしています - + Unsaved document 未保存のドキュメント @@ -8512,36 +8512,36 @@ Choose 'Abort' to abort マクロを保存します。 - - + + Finish 完了 - - + + Clear クリア - - - + + + Cancel キャンセル - + Inner 内側 - + Outer 外側 - + Split スプリット @@ -8580,12 +8580,12 @@ Please open a browser window and type in: http://localhost:%1. オプション... - + Out of memory メモリ不足 - + Not enough memory available to display the data. データを表示するのに十分なメモリがありません。 @@ -8601,7 +8601,7 @@ Please open a browser window and type in: http://localhost:%1. %2 にも %3 にもファイル %1 が見つかりません。 - + Navigation styles ナビゲーションスタイル @@ -8772,8 +8772,8 @@ underscore, and must not start with a digit. '%1' へプロパティの追加に失敗しました: %2 - - + + Drag & drop failed ドラッグ&ドロップ失敗 @@ -8872,7 +8872,7 @@ the current copy will be lost. 色を上書き... - + Edit %1 %1を編集 @@ -8897,8 +8897,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8914,187 +8914,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view ツリービュー - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9103,6 +9108,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10027,8 +10042,8 @@ the current copy will be lost. 新しい空のドキュメントを作成 - + Unnamed Unnamed @@ -11680,35 +11695,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. ツリービューアイテムの背景。オーバーレイ時のみ有効。 - + Tree view item background padding. ツリービューアイテムの背景余白。 - + Hide extra tree view column for item description. アイテム説明のためのツリービューの追加列を非表示。 - + Hide tree view scroll bar in dock overlay. ドックオーバーレイ時にツリービューのスクロールバーを非表示。 - + Hide tree view header view in dock overlay. ドックオーバーレイ時にツリービューのヘッダービューを非表示。 - + Allow tree view columns to be manually resized. ツリービューの列の手動でのサイズ変更を許可。 + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_ka.ts b/src/Gui/Language/FreeCAD_ka.ts index dac6b217af..278aa95c9b 100644 --- a/src/Gui/Language/FreeCAD_ka.ts +++ b/src/Gui/Language/FreeCAD_ka.ts @@ -42,24 +42,24 @@ <ცარიელი> - - + + Angle კუთხე - - + + Axis ღერძი - + Position მდებარეობა - + Enum სია @@ -112,12 +112,12 @@ Command - + Edit ჩასწორება - + Import შემოტანა @@ -188,8 +188,8 @@ მდებარეობა - + Transform გარდაქმნა @@ -421,42 +421,42 @@ EditMode - + Default ნაგულისხმევი - + The object will be edited using the mode defined internally to be the most appropriate for the object type ობიექტი ჩასწორდება რეჟიმით, რომელიც შიგნით ამ ობიექტის ტიპისთვის ყველაზე შესაფერისია - + Transform გარდაქმნა - + The object will have its placement editable with the Std TransformManip command ობიექტს Std TransformManip ბრძანებით ჩასწორებადი მდებარეობა ექნება - + Cutting ამოჭრა - + This edit mode is implemented as available but currently does not seem to be used by any object ეს ჩასწორების რეჟიმი განხორციელებულია, როგორც ხელმისაწვდომი, მაგრამ ამჟამად, როგორც ჩანს, არც ერთი ობიექტის მიერ არ გამოიყენება - + Color ფერი - + The object will have the color of its individual faces editable with the Part FaceColors command ობიექტს თითოეული ზედაპირის Part FaceColors ბრძანებით ჩასწორებადი ფერი ექნება @@ -2933,12 +2933,12 @@ VBO-ს გააჩნია წარმადობის მნიშვნ Letter color: - Letter color: + ასოების ფერი: Axis letter color - Axis letter color + ღერძის ასოების ფერი @@ -4132,12 +4132,12 @@ You can also use the form: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + გაუმჭვირვალე, როცა არააქტიურია Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + ნავიგაციის კუბის გაუმჭვირვალობა, როცა ფოკუსი არ აქვს @@ -6123,15 +6123,15 @@ Do you want to save your changes? PDF ფორმატი - + Graphviz format Graphviz-ის ფორმატი - + Export graph გრაფიკის გატანა @@ -6631,7 +6631,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object მიბმული ობიექტის შეცვლა @@ -6639,12 +6639,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error შეცდომა - + Object not found ობიექტი ნაპოვნი არაა @@ -7045,7 +7045,7 @@ Do you want to specify another directory? Position - Position + მდებარეობა @@ -7483,7 +7483,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view ხის ხედი @@ -7491,7 +7491,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search ძებნა @@ -7499,183 +7499,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... ძებნა... - + Search for objects ობიექტების ძებნა - + Activate document დოკუმენტის აქტივაცია - + Activate document %1 დოკუმენტის აქტივაცია %1 - + Tree settings ხის მორგება - + Show description column აღწერის სვეტის ჩვენება - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. ელემენტის აღწერისთვის დამატებითი სვეტის ჩვენება. ელემენტის აღწერა F2 (ან თქვენი ოს-ის ჩასწორების ღილაკით) ღილაკით ან 'label2' თვისების ჩასწორებით შეგძლიათ. - + Group ჯგუფი - + Labels & Attributes ჭდეები & ატრიბუტები - + Description აღწერა - + Show items hidden in tree view ხის ხედში დამალული ელემენტების ჩვენება - + Show items that are marked as 'hidden' in the tree view ხის ხედში 'დამალულად' მონიშნული ელემენტების ჩვენება - + Toggle visibility in tree view ხის ხედში ხილვადობის გადართვა - + Toggles the visibility of selected items in the tree view ხის ხედში მონიშნული ელემენტების ხილვადობის გადართვა - + Create group... ჯგუფის შექმნა... - + Create a group ჯგუფის შექმნა - - + + Rename გადარქმევა - + Rename object ობიექტის სახელის გადარქმევა - + Finish editing ჩასწორების დასრულება - + Finish editing object ობიექტის ჩასწორების დასრულება - + Add dependent objects to selection დამოკიდებული ობიექტების მონიშნულში ჩამატება - + Adds all dependent objects to the selection მონიშნულში ყველა დამოკიდებული ობიექტის ჩამატება - + Close document დოკუმენტის დახურვა - + Close the document დოკუმენტის დახურვა - + Reload document დოკუმენტის თავიდან ჩატვირთვა - + Reload a partially loaded document ნაწილობრივ ჩატვირთული დოკუმენტის თავიდან ჩატვირთვა - + Skip recomputes გადათვლების გამოტოვება - + Enable or disable recomputations of document დოკუმენტის გადათვლების ჩართვა ან გამორთვა - + Allow partial recomputes ნაწილობრივი გადაანგარიშებების ჩართვა - + Enable or disable recomputating editing object when 'skip recomputation' is enabled როცა 'გადათვლის გამოტოვება' ჩართულია, რთავს ან თიშავს ობიექტის გადათვლას მისი ჩასწორებისას - + Mark to recompute გადათვლისთვის მონიშვნა - + Mark this object to be recomputed ამ ობიექტის მონიშვნა, როგორც გადასართველის - + Recompute object ობიექტის გადათვლა - + Recompute the selected object მონიშნული ობიექტის თავიდან გამოთვლა - + (but must be executed) (მაგრამ უნდა შესრულდეს) - + %1, Internal name: %2 %1, შიდა სახელი: %2 @@ -7971,45 +7971,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype ფაილის უცნობი ტიპი - - + + Cannot open unknown filetype: %1 ფაილის უცნობი ტიპი: %1 - + Export failed გატანის შეცდომა - + Cannot save to unknown filetype: %1 უცნობ ფაილის ტიპში ჩაწერის შეცდომა: %1 - + Workbench failure სამუშაო მაგიდის შეცდომა - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. თქვენს სისტემაზე გაშვებული OpenGL-ის ვერსიაა %1.%2. FreeCAD-ს სამუშაოდ OpenGL 2.0 ან უფრო მაღალი სჭირდება. განაახლეთ საჭიროებისამებრ თქვენი ვიდეობარათის დრაივერი ან/და თვითონ ბარათი. - + Invalid OpenGL Version არასწორი OpenGL-ის ვერსია @@ -8060,8 +8060,8 @@ Do you want to specify another directory? PDF-ად გატანა... - + Unsaved document შეუნახავი დოკუმენტი @@ -8541,36 +8541,36 @@ Choose 'Abort' to abort მაკროს შენახვა - - + + Finish დასრულება - - + + Clear გასუფთავება - - - + + + Cancel გაუქმება - + Inner შიდა - + Outer გარე - + Split გაყოფა @@ -8610,12 +8610,12 @@ Please open a browser window and type in: http://localhost:%1. პარამეტრები... - + Out of memory მეხსიერება აღარ არის - + Not enough memory available to display the data. არ არის საკმარისი მეხსიერება მონაცემთა საჩვენებლად. @@ -8631,7 +8631,7 @@ Please open a browser window and type in: http://localhost:%1. ვერ ვიპოვე ფაილი %1, ვერც %2 და ვერც %3 - + Navigation styles ნავიგაციის სტილები @@ -8802,8 +8802,8 @@ underscore, and must not start with a digit. %1-სთვის თვისების დამატება: %2 - - + + Drag & drop failed გადათრევის შეცდომა @@ -8906,7 +8906,7 @@ the current copy will be lost. ფერების გადალაგება... - + Edit %1 %1-ის ჩასწორება @@ -8931,8 +8931,8 @@ the current copy will be lost. განლაგების გადართვა - + Toggle floating window მცურავი ფანჯრის გადართვა @@ -8948,187 +8948,192 @@ the current copy will be lost. მინიშნების დამალვისთვის დააწექით ESC ღილაკს - + UI ინტერფეისი - + Tree view ელემენტების ხე - + Item background color ელემენტის ფონის ფერი - + Item background padding ელემენტის ფონის შევსება - + Resizable columns ზომაცვლადი სვეტები - + + Show visibility icon + ხილვადობის ხატულის ჩვენება + + + Hide extra column დამატებითი სვეტის დამალვა - + Hide scroll bar ჩოჩიის პანელის დამალვა - + Hide header თავსართის დამალვა - + IconSize ხატულის ზომა - + FontSize ფონტის ზომა - + ItemSpacing ელემენტებისდაშორება - + Overlay განლაგება - + Hide tab bar ჩანართების პანელის დამალვა - + Hide property view scroll bar თვისებების ხედის ჩოჩიის დამალვა - + Auto hide in non 3D view ავტომატური დამალვა არა-3D ხედში - + Auto mouse pass through ავტომატური თაგუნას გამჭოლი გავლა - + Auto mouse wheel pass through ავტომატური თაგუნას ბორბლით გამჭოლი გავლა - + Delay mouse wheel pass through (ms) ავტომატური თაგუნას ბორბლით გამჭოლი გავლის დაყოვნება (მწმ) - + Alpha test radius ალფას ტესტის რადიუსი - + Check Navigation Cube ნავიგაციის კუბის შემოწმება - + Hint trigger size მინიშნების ტრიგერის ზომა - + Hint width მინიშნების სიგანე - + Left panel hint offset მარცხენა პანელის მინიშნების წანაცვლება - + Left panel hint length მარცხენა პანელის მინიშნების სიგრძე - + Right panel hint offset მარჯვენა პანელის მინიშნების წანაცვლება - + Right panel hint length მარჯვენა პანელის მინიშნების სიგრძე - + Top panel hint offset ზედა პანელის მინიშნების წანაცვლება - + Top panel hint length ზედა პანელის მინიშნების სიგრძე - + Bottom panel hint offset ქვედა პანელის მინიშნების წანაცვლება - + Bottom panel hint length ქვედა პანელის მინიშნების სიგრძე - + Hint show tab bar მინიშნების ჩვენება ჩანართების პანელზე - + Hint delay (ms) მინიშნების დაყოვნება (მწმ) - + Splitter auto hide delay (ms) გამყოფის ავტოდამალვის დაყოვნება (მწმ) - + Activate on hover გააქტიურება გადატარებისას - + Layout delay (ms) განლაგების დაყოვნება (მწმ) - + Animation duration (ms) ანიმაციის ხანგრძლივობა (მწმ) - + Animation curve type ანიმაციის მრუდის ტიპი @@ -9137,6 +9142,16 @@ the current copy will be lost. Active object აქტიური ობიექტი + + + UnSuppress + მოცილების გაუქმება + + + + Suppress + მოცილება + SelectionFilter @@ -10061,8 +10076,8 @@ the current copy will be lost. ახალი ცარიელი პროექტის შექმნა - + Unnamed უსახელო @@ -11482,7 +11497,7 @@ It is meant to arrange objects that have a Part TopoShape, like Part Primitives, Display the active view either in fullscreen, in undocked or docked mode - აქტიური ხედის მთელ ეკრანზე, დოკზე მიმაგრებულ ან დოკიდან მოხსნილ რეჟიმში ჩვენება + აქტიური ხედის მთელ ეკრანზე, მომძვრალ ან მიმაგრებულ რეჟიმში ჩვენება @@ -11524,7 +11539,7 @@ It is meant to arrange objects that have a Part TopoShape, like Part Primitives, Display the active view either in fullscreen, in undocked or docked mode - აქტიური ხედის მთელ ეკრანზე, მომძვრალ ან მიმაგრებულ რეჟიმში ჩვენება + აქტიური ხედის მთელ ეკრანზე, დოკზე მიმაგრებულ ან დოკიდან მოხსნილ რეჟიმში ჩვენება @@ -11713,35 +11728,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. ხის ხედის ელემენტის ფონი. ეფექტურია მხოლოდ განლაგებაში. - + Tree view item background padding. ხის ხედის ელემენტის ფონის დაშორება. - + Hide extra tree view column for item description. ელემენტის აღწერისთვის დამატებითი ხის ხედის სვეტის დამალვა. - + Hide tree view scroll bar in dock overlay. მიბმის განლაგებაში ხის ხედის ჩოჩიის ზოლის დამალვა. - + Hide tree view header view in dock overlay. მიბმის განლაგებაში ხის ხედის თავსართის ხედის დამალვა. - + Allow tree view columns to be manually resized. ხის ხედის სვეტების ზომის ხელით შეცვლის დაშვება. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + თუ ჩართულია, აჩვენე თვალის ხატულა ხის ხედის ელემენტებამდე, რომელიც ელემენტის ხილვადობის სტატუსს აჩვენებს. დაწკაპუნებისას ხილვადობა გადაირთვება + Workbench diff --git a/src/Gui/Language/FreeCAD_ko.ts b/src/Gui/Language/FreeCAD_ko.ts index c161c07447..2da5ab2698 100644 --- a/src/Gui/Language/FreeCAD_ko.ts +++ b/src/Gui/Language/FreeCAD_ko.ts @@ -43,24 +43,24 @@ <비어 있음> - - + + Angle - - + + Axis - + Position Position - + Enum 열거형(Enum) @@ -113,12 +113,12 @@ Command - + Edit 편집 - + Import 가져오기 @@ -189,8 +189,8 @@ 위치 설정 - + Transform 변환하기 @@ -422,42 +422,42 @@ EditMode - + Default 기본값 - + The object will be edited using the mode defined internally to be the most appropriate for the object type 객체 유형에 가장 적합하도록 내부적으로 정의된 모드를 사용하여 객체를 편집합니다. - + Transform 변환하기 - + The object will have its placement editable with the Std TransformManip command 대상물이 변위 명령을 입력할 수 있는 상태로 될 것 입니다 - + Cutting 절단 - + This edit mode is implemented as available but currently does not seem to be used by any object 현 편집 모드는 사용할 수 있는 기능이고, 현재 사용중인 대상물이 없는 것으로 보입니다 - + Color 색상 - + The object will have the color of its individual faces editable with the Part FaceColors command 객체는 Part FaceColors 명령으로 개별 면의 색상을 편집할 수 있습니다. @@ -6125,15 +6125,15 @@ Do you want to save your changes? PDF형식 - + Graphviz format Graphviz format - + Export graph 그래프 내보내기 @@ -6633,7 +6633,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object 링크된 객체 변경하기 @@ -6641,12 +6641,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error 에러 - + Object not found 객체를 찾을 수 없습니다 @@ -7484,7 +7484,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view 트리 보기 @@ -7492,7 +7492,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search 검색하기 @@ -7500,183 +7500,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... 검색하기... - + Search for objects 객체 검색하기 - + Activate document 문서 활성화 - + Activate document %1 문서 %1를 활성화 - + Tree settings 트리 설정 - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. 트리뷰에서 열을 추가하여 대상물에 대한 설명을 보이게 합니다. 대상물 설명은 F2를 눌러서 설정할 수 있고 (또는 귀하의 OS에서 편집 버튼) 또는 속성 'label2' 을 편집해도 됩니다. - + Group 그룹 - + Labels & Attributes 레이블 및 특성 - + Description 설명 - + Show items hidden in tree view 트리 뷰에서 숨겨진 항목 보기 - + Show items that are marked as 'hidden' in the tree view 트리 뷰에서 '숨김'으로 표시된 항목 보기 - + Toggle visibility in tree view 트리 뷰에서 표시여부 토글 - + Toggles the visibility of selected items in the tree view 트리 뷰에서 선택 항목의 표시여부를 토글함 - + Create group... 그룹 만들기... - + Create a group 그룹 만들기 - - + + Rename 이름 바꾸기 - + Rename object 객체 이름 바꾸기 - + Finish editing 편집 완료 - + Finish editing object 객체 편집 완료 - + Add dependent objects to selection 선택 항목에 종속 오브젝트 추가 - + Adds all dependent objects to the selection 모든 종속 개체를 선택 항목에 추가합니다. - + Close document 문서 닫기 - + Close the document 문서 닫기 - + Reload document 문서 다시 불러오기 - + Reload a partially loaded document 부분적인 불러온 문서 다시 불러오기 - + Skip recomputes 재계산 건너뛰기 - + Enable or disable recomputations of document 문서 계산 사용 또는 사용 안 함 - + Allow partial recomputes 부분적인 재계산 허용하기 - + Enable or disable recomputating editing object when 'skip recomputation' is enabled '계산 건너뛰기'가 활성화된 경우 편집 개체 다시 계산 사용 또는 사용 안 함 - + Mark to recompute 다시 계산 표시 - + Mark this object to be recomputed 이 객체가 다시 계산될 수 있도록 표시합니다 - + Recompute object 객체 다시 계산하기 - + Recompute the selected object 선택한 객체를 다시 계산합니다 - + (but must be executed) (단, 실행해야 함) - + %1, Internal name: %2 %1, 내부 이름: %2 @@ -7972,45 +7972,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype 알 수 없는 파일유형 - - + + Cannot open unknown filetype: %1 알 수 없는 파일유형을 열 수 없습니다: %1 - + Export failed 내보내기 실패 - + Cannot save to unknown filetype: %1 알 수 없는 파일유형에 저장할 수 없습니다. %1 - + Workbench failure 워크벤치 실패 - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8061,8 +8061,8 @@ Do you want to specify another directory? PDF로 내보내기... - + Unsaved document 저장하지 않은 문서 @@ -8540,36 +8540,36 @@ Choose 'Abort' to abort 매크로 저장하기 - - + + Finish 마침 - - + + Clear 지우기 - - - + + + Cancel 취소하기 - + Inner 안쪽 - + Outer 바깥쪽 - + Split 분할 @@ -8609,12 +8609,12 @@ Please open a browser window and type in: http://localhost:%1. 옵션... - + Out of memory 메모리 부족 - + Not enough memory available to display the data. 데이터를 화면표시하는 데 사용할 수 있는 메모리가 충분하지 않습니다. @@ -8630,7 +8630,7 @@ Please open a browser window and type in: http://localhost:%1. %2 또는 %3에서 %1 파일을 찾을 수 없습니다 - + Navigation styles 탐색 스타일 @@ -8801,8 +8801,8 @@ underscore, and must not start with a digit. '%1'에 속성을 추가하지 못했습니다: %2 - - + + Drag & drop failed 드래그 엔 드랍 실패 @@ -8902,7 +8902,7 @@ the current copy will be lost. 색상 재정의하기... - + Edit %1 Edit %1 @@ -8927,8 +8927,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8944,187 +8944,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view 트리 보기 - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9133,6 +9138,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10057,8 +10072,8 @@ the current copy will be lost. 비어 있는 새 문서 만들기 - + Unnamed 이름없음 @@ -11707,35 +11722,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. 트리 보기 항목 배경입니다. 오버레이에서만 유효합니다. - + Tree view item background padding. 트리 보기 항목 배경 패딩입니다. - + Hide extra tree view column for item description. 항목 설명에 대한 추가 트리 뷰 열을 숨깁니다. - + Hide tree view scroll bar in dock overlay. 독 오버레이에서 트리 보기 스크롤 막대를 숨깁니다. - + Hide tree view header view in dock overlay. 독 오버레이에서 트리 보기 헤더 보기를 숨깁니다. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_nl.ts b/src/Gui/Language/FreeCAD_nl.ts index 7a09582757..58b46255d9 100644 --- a/src/Gui/Language/FreeCAD_nl.ts +++ b/src/Gui/Language/FreeCAD_nl.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Hoek - - + + Axis As - + Position Positie - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Bewerken - + Import Importeren @@ -188,8 +188,8 @@ Plaatsing - + Transform Transformeren @@ -421,42 +421,42 @@ EditMode - + Default Standaard - + The object will be edited using the mode defined internally to be the most appropriate for the object type Het object zal worden bewerkt met behulp van de intern gedefinieerde modus die het meest geschikt is voor dit type object - + Transform Transformeren - + The object will have its placement editable with the Std TransformManip command De plaatsing van het object kan worden bewerkt met de Std TransformManip opdracht - + Cutting Snijden - + This edit mode is implemented as available but currently does not seem to be used by any object Deze bewerkingsmodus is geïmplementeerd zoals nu beschikbaar maar lijkt momenteel niet te worden gebruikt door een object - + Color Kleur - + The object will have the color of its individual faces editable with the Part FaceColors command De kleur van de individuele vlakken van het object kunnen worden bewerkt met de opdracht Part FaceColors @@ -2929,12 +2929,12 @@ Opmerking: Soms kan deze functie leiden tot een scala van verschillende probleme Letter color: - Letter color: + Letterkleur: Axis letter color - Axis letter color + Letterkleur van de as @@ -4123,12 +4123,12 @@ U kunt ook het formulier gebruiken: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Transparantie indien inactief Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Transparantie van de navigatiekubus indien niet gefocust @@ -4738,13 +4738,13 @@ To add a calculation press Return in the value input field Unit system: - Eenheidssysteem: + Eenheden systeem: Unit system to be used for the Quantity The preference system is the one set in the general preferences. - Eenheidssysteem te gebruiken voor de hoeveelheid + Eenheden systeem te gebruiken voor de hoeveelheid Het voorkeurssysteem is het systeem dat in de algemene voorkeuren is ingesteld. @@ -6108,15 +6108,15 @@ Wilt u uw wijzigingen opslaan? PDF formaat - + Graphviz format Graphviz format - + Export graph Grafiek exporteren @@ -6615,7 +6615,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Het gekoppelde object wijzigen @@ -6623,12 +6623,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Fout - + Object not found Object niet gevonden @@ -7464,7 +7464,7 @@ Wilt u een andere map opgeven? Gui::TreeDockWidget - + Tree view Boomstructuurweergave @@ -7472,7 +7472,7 @@ Wilt u een andere map opgeven? Gui::TreePanel - + Search Zoeken @@ -7480,183 +7480,183 @@ Wilt u een andere map opgeven? Gui::TreeWidget - + Search... Zoeken... - + Search for objects Zoeken naar objecten - + Activate document Activeer document - + Activate document %1 Activeer document %1 - + Tree settings Boom instellingen - + Show description column Toon beschrijvingskolom - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Toon een extra kolom in de boom structuur met beschrijvingen. De beschrijving van een object kan worden ingesteld door op F2 (of de standaard bewerkings-knop van je besturingssysteem) te drukken, of door de 'label2' eigenschap aan te passen. - + Group Groeperen - + Labels & Attributes Labels & attributen - + Description Omschrijving - + Show items hidden in tree view Items verborgen in boomweergave weergeven - + Show items that are marked as 'hidden' in the tree view Toon items die in de structuurweergave gemarkeerd zijn als 'verborgen' - + Toggle visibility in tree view Zichtbaarheid in de structuurweergave in-/uitschakelen - + Toggles the visibility of selected items in the tree view Schakelt de zichtbaarheid, in de structuurweergave, van de geselecteerde items aan/uit - + Create group... Groep maken... - + Create a group Maak een groep - - + + Rename Hernoemen - + Rename object Object hernoemen - + Finish editing Bewerken gereed - + Finish editing object Beëindig bewerken object - + Add dependent objects to selection Afhankelijke objecten toevoegen aan selectie - + Adds all dependent objects to the selection Voegt alle afhankelijke objecten aan de selectie toe - + Close document Sluit document - + Close the document Sluit het document - + Reload document Document opnieuw laden - + Reload a partially loaded document Herlaad een gedeeltelijk geladen document - + Skip recomputes Herberekening overslaan - + Enable or disable recomputations of document Herberekening van het document in- of uitschakelen - + Allow partial recomputes Sta gedeeltelijke herberekeningen toe - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Herberekening van het bewerkingsobject in- of uitschakelen wanneer 'herberekening overslaan' is ingeschakeld - + Mark to recompute Markeren om te herberekenen - + Mark this object to be recomputed Object opnieuw berekenen - + Recompute object Herbereken object - + Recompute the selected object Het geselecteerde object herberekenen - + (but must be executed) (maar moet worden uitgevoerd) - + %1, Internal name: %2 %1, interne naam: %2 @@ -7952,45 +7952,45 @@ Wilt u een andere map opgeven? Python - - - + + + Unknown filetype Onbekend bestandstype - - + + Cannot open unknown filetype: %1 Kan onbekende bestandstype niet openen: %1 - + Export failed Exporteren mislukt - + Cannot save to unknown filetype: %1 Kan onbekende bestandstype niet opslaan: %1 - + Workbench failure Werkbank falen - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Dit systeem draait OpenGL %1.%2. FreeCAD vereist OpenGL 2.0 of hoger. Upgrade uw grafische stuurprogramma en/of grafische kaart indien nodig. - + Invalid OpenGL Version Verkeerde OpenGL versie @@ -8041,8 +8041,8 @@ Wilt u een andere map opgeven? Exporteren van PDF ... - + Unsaved document Niet-opgeslagen document @@ -8521,36 +8521,36 @@ Kies 'Afbreken' om af te breken Macro opslaan - - + + Finish Voltooien - - + + Clear Wissen - - - + + + Cancel Annuleren - + Inner binnenste - + Outer buitenste - + Split Delen @@ -8589,12 +8589,12 @@ Open een browservenster en typ: http://localhost:%1. Opties... - + Out of memory Onvoldoende geheugen - + Not enough memory available to display the data. Niet genoeg geheugen beschikbaar om de gegevens weer te geven. @@ -8610,7 +8610,7 @@ Open een browservenster en typ: http://localhost:%1. Kan bestand %1 niet vinden noch in %2, noch in %3 - + Navigation styles Navigatie stijlen @@ -8782,8 +8782,8 @@ underscore bevatten en mag niet beginnen met een cijfer. Eigenschap toevoegen aan '%1': %2 mislukt - - + + Drag & drop failed Verslepen en neerzetten mislukt @@ -8882,7 +8882,7 @@ de huidige kopie verloren gaat. Kleuren overschrijven... - + Edit %1 Bewerken %1 @@ -8907,8 +8907,8 @@ de huidige kopie verloren gaat. Schakel scherm zichtbaarheid in/uit - + Toggle floating window Zet zwevend venster aan/uit @@ -8924,187 +8924,192 @@ de huidige kopie verloren gaat. Druk op ESC om hint te verbergen - + UI Gebruikers interface - + Tree view Boomstructuurweergave - + Item background color Achtergrondkleur van de items - + Item background padding Achtergrond opvulling van een item - + Resizable columns Aanpasbare kolommen - + + Show visibility icon + Pictogram voor zichtbaarheid weergeven + + + Hide extra column Verberg extra boomstructuurweergave kolom - + Hide scroll bar Verberg de boomstructuurweergave schuifbalk - + Hide header Verberg de boomstructuurweergave koptekst - + IconSize Pictogram grootte - + FontSize Lettergrootte - + ItemSpacing - ItemSpacing + Ruimte tussen de onderdelen - + Overlay - Overlay + Schermlagen - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view - Auto hide in non 3D view + Automatisch verbergen in niet-3D-weergave - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9113,6 +9118,16 @@ de huidige kopie verloren gaat. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -9124,7 +9139,7 @@ de huidige kopie verloren gaat. Selection not allowed by filter - Selectie niet toegestaan door de filter + Selectie niet toegestaan door het filter @@ -10037,8 +10052,8 @@ de huidige kopie verloren gaat. Maak een nieuw leeg document - + Unnamed Naamloos @@ -11690,35 +11705,40 @@ Wilt u toch doorgaan? TreeParams - + Tree view item background. Only effective in overlay. Boomstructuurweergave item achtergrond. Alleen effectief in overlay. - + Tree view item background padding. Boomweergave item achtergrond opvulling. - + Hide extra tree view column for item description. Verberg extra structuurweergave kolom voor een item beschrijving. - + Hide tree view scroll bar in dock overlay. Verberg boomstructuurweergave schuifbalk in dock overlay. - + Hide tree view header view in dock overlay. Verberg boomstructuurweergave kop in dock overlay. - + Allow tree view columns to be manually resized. Toestaan dat structuurweergave kolommen handmatig aangepast kunnen worden. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench @@ -12612,7 +12632,7 @@ nadat FreeCAD opgestart is Language and number format - Taal en nummer formaat + Taal en getal notatie @@ -12627,7 +12647,7 @@ nadat FreeCAD opgestart is Default unit system: - Default unit system: + Standaard eenheden systeem: @@ -12642,17 +12662,17 @@ nadat FreeCAD opgestart is Unit system for all parts of the application. Can be overridden by specifying a document unit system. - Unit system for all parts of the application. Can be overridden by specifying a document unit system. + Eenheden systeem voor alle delen van de toepassing. Kan vervangen worden door het specificeren van een eenheden systeem per document. If enabled, document unit systems are ignored - If enabled, document unit systems are ignored + Indien ingeschakeld worden eenheden systemen, die per document zijn ingesteld, genegeerd Ignore project unit system and use default - Ignore project unit system and use default + Negeer het project eenheden systeem en gebruik het standaard eenheden systeem @@ -12667,7 +12687,7 @@ nadat FreeCAD opgestart is Number format: - Nummerformaat: + Getal notatie: diff --git a/src/Gui/Language/FreeCAD_pl.ts b/src/Gui/Language/FreeCAD_pl.ts index 2ee1304142..60b744641c 100644 --- a/src/Gui/Language/FreeCAD_pl.ts +++ b/src/Gui/Language/FreeCAD_pl.ts @@ -42,24 +42,24 @@ <pusty> - - + + Angle Kąt - - + + Axis - + Position Pozycja - + Enum Wyliczenia @@ -80,7 +80,7 @@ Run test cases to verify console messages - Uruchom przypadki testowe w celu weryfikacji wiadomości z konsoli + Uruchom testy w celu zweryfikowania komunikatów konsoli @@ -112,12 +112,12 @@ Command - + Edit Edycja - + Import Importuj @@ -188,8 +188,8 @@ Umiejscowienie - + Transform Przemieszczenie @@ -421,42 +421,42 @@ EditMode - + Default Domyślny - + The object will be edited using the mode defined internally to be the most appropriate for the object type Obiekt będzie edytowany przy użyciu trybu zdefiniowanego wewnętrznie, aby był najbardziej odpowiedni dla typu obiektu - + Transform Przemieszczenie - + The object will have its placement editable with the Std TransformManip command Obiekt będzie miał umiejscowienie edytowalne za pomocą polecenia Przemieszczenie - + Cutting Cięcie - + This edit mode is implemented as available but currently does not seem to be used by any object Ten tryb edycji jest zaimplementowany jako dostępny, ale obecnie nie wydaje się być używany przez żaden obiekt - + Color Kolor - + The object will have the color of its individual faces editable with the Part FaceColors command Kolor poszczególnych ścian obiektu będzie można edytować za pomocą polecenia Kolor powierzchni @@ -579,7 +579,7 @@ Press middle mouse button - Wciśnij środkowy przycisk myszki + Naciśnij środkowy przycisk myszy @@ -597,7 +597,7 @@ Press middle mouse button - Wciśnij środkowy przycisk myszki + Naciśnij środkowy przycisk myszy @@ -1904,7 +1904,8 @@ wyzwolone zostanie to, które ma najwyższy priorytet. Open Addon Manager where macros created by the community and other addons can be downloaded. - Otwórz Menedżera dodatków, gdzie można pobrać makrodefinicje utworzone przez społeczność oraz inne dodatki. + Otwórz Menedżera dodatków, gdzie można pobrać +makrodefinicje utworzone przez społeczność oraz inne dodatki. @@ -2420,7 +2421,8 @@ Proszę podać inny katalog. Toggle visibility of Addon preference pack '%1' (use Addon Manager to permanently remove) - Przełącz widoczność pakietu preferencji dodatku '%1' (użyj Menedżera dodatków, aby usunąć na stałe) + Przełącz widoczność paczki preferencji dodatków: '%1' +(użyj Menedżera Dodatków, aby trwale usunąć) @@ -2515,7 +2517,8 @@ Proszę podać inny katalog. You must restart FreeCAD for changes to take effect. - Musisz zrestartować FreeCAD, aby zmiany zaczęły obowiązywać. + Musisz zrestartować FreeCAD, +aby zmiany zaczęły obowiązywać. @@ -2759,7 +2762,7 @@ Proszę podać inny katalog. Revert to Backup Config - Przywróć konfigurację kopii zapasowej + Przywróć konfigurację z kopii zapasowej @@ -2937,12 +2940,12 @@ zgłoszeniu aktywacji tej nastawy podczas szukania wsparcia na forum FreeCAD. Letter color: - Letter color: + Kolor liter: Axis letter color - Axis letter color + Kolor litery osi @@ -3039,7 +3042,8 @@ ale wolniej reaguje na każdą zmianę ujęcia. Size of vertices in the Sketcher, TechDraw and other workbenches - Rozmiar wierzchołków w Szkicowniku, Rysunku Technicznym i innych środowiskach pracy + Rozmiar wierzchołków w Szkicowniku, Rysunku Technicznym +i innych środowiskach pracy @@ -3698,7 +3702,7 @@ Możesz również skorzystać z formatki: John Doe <john@doe.com> CERN Open Hardware Licence strongly-reciprocal - Licencja CERN Open Hardware silnie oparta na zasadzie wzajemności + Licencja CERN Open Hardware silnie wzajemna @@ -4135,12 +4139,12 @@ Możesz również skorzystać z formatki: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Przezroczystość, gdy nieaktywne Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Przezroczystość kostki nawigacyjnej w przypadku braku aktywności @@ -5534,7 +5538,7 @@ Kolumna "Aktualny status" pokazuje, czy dokument może być odzyskany. Environment - Środowisko + Otoczenie @@ -6128,15 +6132,15 @@ Do you want to save your changes? Format PDF - + Graphviz format Format Graphviz - + Export graph Eksport wykresu @@ -6164,7 +6168,7 @@ Do you want to save your changes? Press middle mouse button - Wciśnij środkowy przycisk myszki + Naciśnij środkowy przycisk myszki @@ -6636,7 +6640,7 @@ Jak chcesz kontynuować? Gui::PropertyEditor::LinkLabel - + Change the linked object Zmień połączony obiekt @@ -6644,12 +6648,12 @@ Jak chcesz kontynuować? Gui::PropertyEditor::LinkSelection - + Error Błąd - + Object not found Obiekt nie znaleziony @@ -7483,7 +7487,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Widok drzewa @@ -7491,7 +7495,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Szukaj @@ -7499,183 +7503,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Szukaj ... - + Search for objects Szukaj obiektów - + Activate document Uaktywnij dokument - + Activate document %1 Uaktywnij dokument %1 - + Tree settings Ustawienia Widoku drzewa - + Show description column Pokaż kolumnę opisu - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Wyświetla dodatkową kolumnę widoku Drzewa dla opisu elementu. Opis elementu można ustawić, naciskając klawisz F2 (lub przycisk edycji systemu operacyjnego) lub edytując właściwość "etykieta2". - + Group Grupa - + Labels & Attributes Etykiety i atrybuty - + Description Opis - + Show items hidden in tree view Pokaż elementy ukryte w widoku drzewa - + Show items that are marked as 'hidden' in the tree view Pokaż elementy, które są oznaczone jako "ukryte" w widoku drzewa - + Toggle visibility in tree view Przełącz widoczność w widoku drzewa - + Toggles the visibility of selected items in the tree view Przełącza widoczność wybranych elementów w widoku drzewa - + Create group... Utwórz grupę ... - + Create a group Utwórz grupę - - + + Rename Zmień nazwę - + Rename object Zmiana nazwy obiektu - + Finish editing Zakończ edycję - + Finish editing object Zakończ edycję obiektu - + Add dependent objects to selection Dodaj obiekty zależne do zaznaczenia - + Adds all dependent objects to the selection Dodaje wszystkie obiekty zależne do zaznaczenia - + Close document Zamknij dokument - + Close the document Zamknij dokument - + Reload document Przeładuj dokument - + Reload a partially loaded document Załaduj ponownie częściowo wczytany dokument - + Skip recomputes Pomiń przeliczanie - + Enable or disable recomputations of document Włącz lub wyłącz ponowne przeliczanie dokumentu - + Allow partial recomputes Zezwalaj na częściowe przeliczanie - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Włącz lub wyłącz przeliczanie edytowanego obiektu gdy 'pomijanie przeliczania' jest aktywne - + Mark to recompute Zaznacz do przeliczenia - + Mark this object to be recomputed Zaznacz ten obiekt do przeliczania - + Recompute object Przelicz obiekt - + Recompute the selected object Przelicz wybrany obiekt - + (but must be executed) (ale musi zostać wykonany) - + %1, Internal name: %2 %1, wewnętrzna nazwa: %2 @@ -7971,45 +7975,47 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Nieznany typ pliku - - + + Cannot open unknown filetype: %1 Nie można otworzyć pliku nieznanego typu: %1 - + Export failed Eksport nie powiódł się - + Cannot save to unknown filetype: %1 Nie można zapisać do pliku nieznanego typu: %1 - + Workbench failure Awaria środowiska pracy - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - W tym systemie działa OpenGL w wersji %1.%2. FreeCAD wymaga OpenGL 2.0 lub nowszego. W razie potrzeby zaktualizuj sterownik i/lub kartę graficzną. + W tym systemie działa OpenGL w wersji %1.%2. +FreeCAD wymaga OpenGL 2.0 lub nowszego. +W razie potrzeby zaktualizuj sterownik i / lub kartę graficzną. - + Invalid OpenGL Version Nieprawidłowa wersja OpenGL @@ -8032,7 +8038,10 @@ Do you want to specify another directory? 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. - Podczas wczytywania pliku wystąpiły błędy. Niektóre dane mogły zostać zmodyfikowane lub w ogóle nie zostały odtworzone. Zajrzyj do widoku raportu w celu uzyskania bardziej szczegółowych informacji na temat obiektów, których to dotyczy. + Podczas wczytywania pliku wystąpiły błędy. +Niektóre dane mogły zostać zmodyfikowane lub w ogóle nie zostały odtworzone. +Zajrzyj do widoku raportu w celu uzyskania bardziej szczegółowych informacji +na temat obiektów, których to dotyczy. @@ -8060,8 +8069,8 @@ Do you want to specify another directory? Eksportuj do PDF... - + Unsaved document Niezapisany dokument @@ -8225,7 +8234,7 @@ Do you want to continue? Choose an image file to open - Wybierz plik obrazu, aby otworzyć + Wybierz plik obrazu do otwarcia @@ -8368,7 +8377,8 @@ Do you want to continue? Too many opened non-intrusive notifications. Notifications are being omitted! - Zbyt wiele otwartych powiadomień. Powiadomienia są pomijane! + Zbyt wiele otwartych powiadomień. +Powiadomienia są pomijane! @@ -8387,7 +8397,7 @@ Do you want to continue? Please check report view for more... - Proszę, sprawdź widok raportu, aby uzyskać więcej informacji ... + Proszę sprawdzić widok raportu w celu uzyskania dodatkowych informacji ... @@ -8539,36 +8549,36 @@ Wybierz "Przerwij", aby zrezygnować Zapisz makrodefinicję - - + + Finish Zakończ - - + + Clear Wyczyść - - - + + + Cancel Anuluj - + Inner Wewnętrzny - + Outer Zewnętrzny - + Split Rozdziel @@ -8608,12 +8618,12 @@ Proszę otworzyć okno przeglądarki i wpisać: http://localhost:%1.Opcje ... - + Out of memory Przekroczono limit pamięci - + Not enough memory available to display the data. Za mało dostępnej pamięci, aby wyświetlić dane. @@ -8629,7 +8639,7 @@ Proszę otworzyć okno przeglądarki i wpisać: http://localhost:%1.Nie znaleziono pliku %1 w %2, ani w %3 - + Navigation styles Style nawigacji @@ -8801,8 +8811,8 @@ podkreślenie i nie może zaczynać się od cyfry. Nie udało się dodać właściwości do '%1': %2 - - + + Drag & drop failed Przeciągnięcie i upuszczenie nie powiodło się @@ -8830,7 +8840,8 @@ podkreślenie i nie może zaczynać się od cyfry. Apply the setting to all links. Or, uncheck this option to apply only to this link. - Zastosuj to ustawienie do wszystkich łączy. Można też usunąć zaznaczenie tej opcji, + Zastosuj to ustawienie do wszystkich łączy. +Można też usunąć zaznaczenie tej opcji, aby zastosować ustawienie tylko do bieżącego łącza. @@ -8905,7 +8916,7 @@ bieżącej kopii zostaną utracone. Zastąp kolory ... - + Edit %1 Edytuj %1 @@ -8930,8 +8941,8 @@ bieżącej kopii zostaną utracone. Włącz / wyłącz nakładkę - + Toggle floating window Włącz / wyłącz pływające okno @@ -8947,187 +8958,192 @@ bieżącej kopii zostaną utracone. Naciśnij ESC, aby ukryć podpowiedź - + UI Interfejs użytkownika - + Tree view Widok drzewa - + Item background color Kolor tła elementu - + Item background padding Wypełnienie tła elementu - + Resizable columns Kolumny z możliwością zmiany rozmiaru - + + Show visibility icon + Pokaż ikonkę widoczności + + + Hide extra column Ukryj dodatkową kolumnę - + Hide scroll bar Ukryj pasek przewijania - + Hide header Ukryj nagłówek - + IconSize Rozmiar ikon - + FontSize Rozmiar czcionki - + ItemSpacing Rozstaw obiektów - + Overlay Nakładka - + Hide tab bar Ukryj pasek kart - + Hide property view scroll bar Ukryj pasek przewijania właściwości - + Auto hide in non 3D view Automatyczne ukrywanie poza widokiem 3D - + Auto mouse pass through Automatyczne przekazywanie myszy - + Auto mouse wheel pass through Automatyczny przejazd kółkiem myszy - + Delay mouse wheel pass through (ms) Opóźnienie przechodzenia kółka myszy przez (ms) - + Alpha test radius Promień testu Alpha - + Check Navigation Cube Zaznacz kostkę Nawigacji - + Hint trigger size Rozmiar wyzwalacza podpowiedzi - + Hint width Szerokość okienka podpowiedzi - + Left panel hint offset Odsunięcie z lewej panelu podpowiedzi - + Left panel hint length Długość lewego panelu podpowiedzi - + Right panel hint offset Odsunięcie z prawej panelu podpowiedzi - + Right panel hint length Długość prawego panelu podpowiedzi - + Top panel hint offset Odsunięcie góry panelu podpowiedzi - + Top panel hint length Długość podpowiedzi panelu górnego - + Bottom panel hint offset Odsunięcie dołu panelu podpowiedzi - + Bottom panel hint length Długość podpowiedzi panelu dolnego - + Hint show tab bar Podpowiedź pokaż pasek kart - + Hint delay (ms) Opóźnienie podpowiedzi (ms) - + Splitter auto hide delay (ms) Opóźnienie automatycznego ukrywania rozdzielacza (ms) - + Activate on hover Aktywuj po wskazaniu kursorem - + Layout delay (ms) Opóźnienie układu (ms) - + Animation duration (ms) Czas trwania animacji (ms) - + Animation curve type Typ krzywej animacji @@ -9136,6 +9152,16 @@ bieżącej kopii zostaną utracone. Active object Aktywny obiekt + + + UnSuppress + Nie wstrzymuj + + + + Suppress + Wstrzymaj + SelectionFilter @@ -10060,8 +10086,8 @@ bieżącej kopii zostaną utracone. Utwórz nowy pusty dokument - + Unnamed Nienazwany @@ -11482,7 +11508,7 @@ Służy do rozmieszczania obiektów, które mają kształt topologiczny, takich Display the active view either in fullscreen, in undocked or docked mode - Wyświetl aktywny widok w trybie pełnoekranowym, w trybie niezadokowanym lub zadokowanym + Wyświetl aktywny widok na pełnym ekranie, w trybie niezadokowanym lub zadokowanym @@ -11524,7 +11550,7 @@ Służy do rozmieszczania obiektów, które mają kształt topologiczny, takich Display the active view either in fullscreen, in undocked or docked mode - Wyświetl aktywny widok na pełnym ekranie, w trybie niezadokowanym lub zadokowanym + Wyświetl aktywny widok w trybie pełnoekranowym, w trybie niezadokowanym lub zadokowanym @@ -11713,35 +11739,42 @@ Czy nadal chcesz kontynuować? TreeParams - + Tree view item background. Only effective in overlay. Tło elementu widoku drzewa. Ma zastosowanie tylko w nałożeniu. - + Tree view item background padding. Wypełnienie tła pozycji w Widoku drzewa. - + Hide extra tree view column for item description. Ukryj dodatkową kolumnę widoku drzewa dla opisu pozycji. - + Hide tree view scroll bar in dock overlay. Ukryj pasek przewijania widoku drzewa w nakładce doku. - + Hide tree view header view in dock overlay. Ukryj nagłówek widoku drzewa w nakładce doku. - + Allow tree view columns to be manually resized. Pozwól na samodzielną zmianę rozmiaru kolumn widoku drzewa. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Jeśli opcja ta jest włączona, przed elementami widoku drzewa wyświetlana jest ikonka oka, +pokazująca stan widoczności elementów. +Po kliknięciu widoczność jest przełączana. + Workbench @@ -12229,7 +12262,8 @@ po uruchomieniu FreeCAD If unchecked, %1 will not appear in the available workbenches. - Jeśli opcja jest odznaczona, %1 nie pojawi się na liście dostępnych środowisk pracy. + Jeśli ta opcja jest odznaczona, środowisko pracy %1 +nie pojawi się na liście dostępnych. @@ -12249,7 +12283,8 @@ po uruchomieniu FreeCAD If checked, %1 will be loaded automatically when FreeCAD starts up - Jeśli opcja jest zaznaczona, %1 zostanie załadowany automatycznie po uruchomieniu programu FreeCAD + Jeśli ta opcja jest zaznaczona, środowisko pracy%1 +zostanie załadowane automatycznie po uruchomieniu programu FreeCAD @@ -13644,7 +13679,7 @@ gdy wszystkie piksele wewnątrz regionu są nieprzezroczyste. Locks toolbar so they are no longer moveable - Blokuje pasek narzędzi, dzięki czemu nie można już go przesuwać. + Blokuje paski narzędzi, aby nie można było ich przesuwać. @@ -13657,7 +13692,7 @@ gdy wszystkie piksele wewnątrz regionu są nieprzezroczyste. Show the property view, which displays the properties of the selected object. - Wyświetla widok właściwości, który wyświetla właściwości wybranego obiektu. + Pokazuje widok właściwości, który wyświetla właściwości wybranego obiektu. diff --git a/src/Gui/Language/FreeCAD_pt-BR.ts b/src/Gui/Language/FreeCAD_pt-BR.ts index 49e9f562d8..d4e62828e7 100644 --- a/src/Gui/Language/FreeCAD_pt-BR.ts +++ b/src/Gui/Language/FreeCAD_pt-BR.ts @@ -42,24 +42,24 @@ <vazio> - - + + Angle Ângulo - - + + Axis Eixo - + Position Posição - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Editar - + Import Importar @@ -188,8 +188,8 @@ Posicionamento - + Transform Transformar @@ -421,42 +421,42 @@ EditMode - + Default Padrão - + The object will be edited using the mode defined internally to be the most appropriate for the object type O objeto será editado usando o modo definido internamente para ser o mais apropriado para o tipo de objeto - + Transform Transformar - + The object will have its placement editable with the Std TransformManip command O objeto terá seu posicionamento editável com o comando Std TransformManip - + Cutting Corte - + This edit mode is implemented as available but currently does not seem to be used by any object Este modo de edição está implementado como disponível, mas atualmente não parece ser usado por nenhum objeto - + Color Cor - + The object will have the color of its individual faces editable with the Part FaceColors command O objeto terá a cor de suas faces individuais editáveis com o comando Part FaceColors @@ -6121,15 +6121,15 @@ Deseja salvar as alterações? Formato PDF - + Graphviz format Graphviz format - + Export graph Exportar gráfico @@ -6629,7 +6629,7 @@ Deseja prosseguir? Gui::PropertyEditor::LinkLabel - + Change the linked object Mudar o objeto vinculado @@ -6637,12 +6637,12 @@ Deseja prosseguir? Gui::PropertyEditor::LinkSelection - + Error Erro - + Object not found Objeto não encontrado @@ -7476,7 +7476,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Exibição em árvore @@ -7484,7 +7484,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Pesquisar @@ -7492,183 +7492,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Procurar... - + Search for objects Procurar por objetos - + Activate document Ativar o documento - + Activate document %1 Ativar o documento %1 - + Tree settings Configuração da árvore - + Show description column Mostrar coluna de descrição - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Exibe uma coluna extra de vista em árvore para a descrição do item. A descrição do item pode ser definida pressionando F2 (ou o botão editar do seu SO) ou editando a propriedade 'label2'. - + Group Grupo - + Labels & Attributes Rótulos & atributos - + Description Descrição - + Show items hidden in tree view Mostrar itens ocultos na vista em árvore - + Show items that are marked as 'hidden' in the tree view Exibir itens marcados como 'oculto' na visualização de árvore - + Toggle visibility in tree view Alternar visibilidade na exibição em árvore - + Toggles the visibility of selected items in the tree view Alterna a visibilidade dos itens selecionados na exibição em árvore - + Create group... Criar grupo... - + Create a group Criar um grupo - - + + Rename Renomear - + Rename object Renomear objeto - + Finish editing Concluir a edição - + Finish editing object Terminar de editar o objeto - + Add dependent objects to selection Adicionar objetos dependentes à seleção - + Adds all dependent objects to the selection Adicionar todos os objetos dependentes à seleção - + Close document Fechar documento - + Close the document Fechar o documento - + Reload document Recarregar documento - + Reload a partially loaded document Recarregar um documento parcialmente carregado - + Skip recomputes Pular recálculos - + Enable or disable recomputations of document Ativa/desativa o recálculo automático do documento - + Allow partial recomputes Permitir recálculos parciais - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Ativar ou desativar o recálculo do objeto editado quando a opção 'pular recálculo' estiver ativada - + Mark to recompute Marcar para recalcular - + Mark this object to be recomputed Marcar este objeto para ser recalculado - + Recompute object Recalcular o objeto - + Recompute the selected object Recalcula o objeto selecionado - + (but must be executed) (mas deve ser executado) - + %1, Internal name: %2 %1, Nome interno: %2 @@ -7964,45 +7964,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Tipo de arquivo desconhecido - - + + Cannot open unknown filetype: %1 Não é possível abrir o tipo de arquivo desconhecido: %1 - + Export failed Falha na exportação - + Cannot save to unknown filetype: %1 Não é possível salvar em tipo de arquivo desconhecido: %1 - + Workbench failure Falha da bancada de trabalho - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Este sistema está rodando OpenGL %1.%2. FreeCAD requer OpenGL 2.0 ou superior. Por favor, atualize seu driver gráfico e/ou sua placa de vídeo conforme necessário. - + Invalid OpenGL Version Versão OpenGL inválida @@ -8053,8 +8053,8 @@ Do you want to specify another directory? Exportar PDF... - + Unsaved document Documento não salvo @@ -8531,36 +8531,36 @@ Escolha 'Abortar' para cancelar Salvar macro - - + + Finish Concluir - - + + Clear Limpar - - - + + + Cancel Cancelar - + Inner Interno - + Outer Externo - + Split Separar @@ -8598,12 +8598,12 @@ Please open a browser window and type in: http://localhost:%1. Opções... - + Out of memory Memória insuficiente - + Not enough memory available to display the data. Não há memória suficiente para exibir os dados. @@ -8619,7 +8619,7 @@ Please open a browser window and type in: http://localhost:%1. Não é possível encontrar o arquivo %1 nem em %2, nem em %3 - + Navigation styles Estilos de navegação @@ -8791,8 +8791,8 @@ ou underscore e não deve começar com um número. Falha ao adicionar uma propriedade a '%1': %2 - - + + Drag & drop failed Arrastar & soltar falhou @@ -8895,7 +8895,7 @@ cópia atual será perdida. Substituir cores... - + Edit %1 Editar %1 @@ -8920,8 +8920,8 @@ cópia atual será perdida. Toggle overlay - + Toggle floating window Toggle floating window @@ -8937,187 +8937,192 @@ cópia atual será perdida. Press ESC to hide hint - + UI UI - + Tree view Exibição em árvore - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9126,6 +9131,16 @@ cópia atual será perdida. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10050,8 +10065,8 @@ cópia atual será perdida. Criar um novo documento vazio - + Unnamed Sem nome @@ -11703,35 +11718,40 @@ Deseja prosseguir mesmo assim? TreeParams - + Tree view item background. Only effective in overlay. Itens de fundo da exibição em árvore. Apenas eficaz em sobreposição. - + Tree view item background padding. Preenchimento de itens de fundo da exibição em árvore. - + Hide extra tree view column for item description. Ocultar coluna extra de exibição em árvore para descrição do item. - + Hide tree view scroll bar in dock overlay. Ocultar barra de rolagem da exibição em árvore na sobreposição de encaixe. - + Hide tree view header view in dock overlay. Ocultar cabeçalho da exibição em árvore na sobreposição de encaixe. - + Allow tree view columns to be manually resized. Permitir que as colunas de exibição em árvore sejam redimensionadas manualmente. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_pt-PT.ts b/src/Gui/Language/FreeCAD_pt-PT.ts index fcb8865da1..e5411f3c92 100644 --- a/src/Gui/Language/FreeCAD_pt-PT.ts +++ b/src/Gui/Language/FreeCAD_pt-PT.ts @@ -42,24 +42,24 @@ <vazio> - - + + Angle Ângulo - - + + Axis Eixo - + Position Posição - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Editar - + Import Importar @@ -188,8 +188,8 @@ Colocação - + Transform Transformar @@ -421,42 +421,42 @@ EditMode - + Default Predefinição - + The object will be edited using the mode defined internally to be the most appropriate for the object type The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform Transformar - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Corte - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Cor - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6125,15 +6125,15 @@ Deseja guardar as suas alterações? Formato PDF - + Graphviz format Formato do Gráfico - + Export graph Exportar gráfico @@ -6633,7 +6633,7 @@ Como pretende continuar? Gui::PropertyEditor::LinkLabel - + Change the linked object Alterar o objeto ligado @@ -6641,12 +6641,12 @@ Como pretende continuar? Gui::PropertyEditor::LinkSelection - + Error Erro - + Object not found Objeto não encontrado @@ -7483,7 +7483,7 @@ Quer especificar outro diretório? Gui::TreeDockWidget - + Tree view Visualizar em Árvore @@ -7491,7 +7491,7 @@ Quer especificar outro diretório? Gui::TreePanel - + Search Procurar @@ -7499,183 +7499,183 @@ Quer especificar outro diretório? Gui::TreeWidget - + Search... Procurar... - + Search for objects Procurar por objetos - + Activate document Ativar Documento - + Activate document %1 Ativar Documento %1 - + Tree settings Configurações da árvore - + Show description column Mostrar coluna de descrição - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Exibe uma coluna extra na árvore para a descrição do item. A descrição do item pode ser definida pressionando F2 (ou o botão editar do seu SO) ou editando a propriedade 'label2'. - + Group Grupo - + Labels & Attributes Nomes e Atributos - + Description Descrição - + Show items hidden in tree view Show items hidden in tree view - + Show items that are marked as 'hidden' in the tree view Show items that are marked as 'hidden' in the tree view - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Criar Grupo ... - + Create a group Criar um Grupo - - + + Rename Renomear - + Rename object Renomear objeto - + Finish editing Terminar Edição - + Finish editing object Terminar Edição do Objeto - + Add dependent objects to selection Add dependent objects to selection - + Adds all dependent objects to the selection Adds all dependent objects to the selection - + Close document Fechar documento - + Close the document Fechar o documento - + Reload document Recarregar documento - + Reload a partially loaded document Recarregar um documento parcialmente carregado - + Skip recomputes Ignorar recalcular - + Enable or disable recomputations of document Habilitar ou desabilitar recalculo do documento - + Allow partial recomputes Allow partial recomputes - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Enable or disable recomputating editing object when 'skip recomputation' is enabled - + Mark to recompute Marcar para recalcular - + Mark this object to be recomputed Marcar este objeto para ser recalculado - + Recompute object Recompute object - + Recompute the selected object Recompute the selected object - + (but must be executed) (but must be executed) - + %1, Internal name: %2 %1, nome interno: %2 @@ -7971,45 +7971,45 @@ Quer especificar outro diretório? Python - - - + + + Unknown filetype Tipo de ficheiro desconhecido - - + + Cannot open unknown filetype: %1 Não é possível abrir o tipo de ficheiro desconhecido: %1 - + Export failed Exportação falhada - + Cannot save to unknown filetype: %1 Não é possível guardar um tipo de ficheiro desconhecido: %1 - + Workbench failure Falha da bancada de trabalho - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8060,8 +8060,8 @@ Quer especificar outro diretório? A exportar PDF ... - + Unsaved document Documento não guardado @@ -8538,36 +8538,36 @@ Choose 'Abort' to abort Guardar Macro - - + + Finish Terminar - - + + Clear Limpar - - - + + + Cancel Cancelar - + Inner Interno - + Outer Externo - + Split Separar @@ -8607,12 +8607,12 @@ Por favor, abra um navegador e digite: http://localhost:%1. Opções ... - + Out of memory Sem Memória - + Not enough memory available to display the data. Não há memória disponível para visualizar os dados. @@ -8628,7 +8628,7 @@ Por favor, abra um navegador e digite: http://localhost:%1. Não é possível encontrar o ficheiro %1, nem em %2 ou em %3 - + Navigation styles Estilos de Navegação @@ -8800,8 +8800,8 @@ sublinhado (_) e não deve começar com um dígito. Falha ao adicionar propriedade a '%1': %2 - - + + Drag & drop failed Arrastar & soltar falhou @@ -8904,7 +8904,7 @@ the current copy will be lost. Override colors... - + Edit %1 Edite %1 @@ -8929,8 +8929,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8946,187 +8946,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Visualizar em Árvore - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9135,6 +9140,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10059,8 +10074,8 @@ the current copy will be lost. Criar um Novo Documento vazio - + Unnamed Sem nome @@ -11712,35 +11727,40 @@ Ainda deseja prosseguir? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_ro.ts b/src/Gui/Language/FreeCAD_ro.ts index 4e62ebc971..cf6c0ec1ba 100644 --- a/src/Gui/Language/FreeCAD_ro.ts +++ b/src/Gui/Language/FreeCAD_ro.ts @@ -42,24 +42,24 @@ (gol) - - + + Angle Unghi - - + + Axis Axele - + Position Position - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Editare - + Import Import @@ -188,8 +188,8 @@ Amplasare - + Transform Transformare @@ -421,42 +421,42 @@ EditMode - + Default Implicit - + The object will be edited using the mode defined internally to be the most appropriate for the object type Obiectul va fi editat folosind modul definit intern pentru a fi cel mai potrivit pentru tipul obiectului - + Transform Transformare - + The object will have its placement editable with the Std TransformManip command Obiectul va avea posibilitatea de a plasa cu comanda Std TransformManip - + Cutting Tăiere - + This edit mode is implemented as available but currently does not seem to be used by any object Acest mod de editare este implementat ca disponibil, dar în prezent nu pare să fie folosit de orice obiect - + Color Culoare - + The object will have the color of its individual faces editable with the Part FaceColors command Obiectul va avea culoarea fețelor sale individuale editabile cu comanda Part FaceColors @@ -6124,15 +6124,15 @@ Doriți să salvați modificările? PDF format - + Graphviz format Graphviz format - + Export graph Exportă graficul @@ -6632,7 +6632,7 @@ Cum doresti sa continuam? Gui::PropertyEditor::LinkLabel - + Change the linked object Modificați obiectul atașat @@ -6640,12 +6640,12 @@ Cum doresti sa continuam? Gui::PropertyEditor::LinkSelection - + Error Eroare - + Object not found Obiectul nu a fost găsit @@ -7482,7 +7482,7 @@ Doriţi să specificaţi un alt director? Gui::TreeDockWidget - + Tree view Vizualizare arborescentă @@ -7490,7 +7490,7 @@ Doriţi să specificaţi un alt director? Gui::TreePanel - + Search Caută @@ -7498,183 +7498,183 @@ Doriţi să specificaţi un alt director? Gui::TreeWidget - + Search... Caută... - + Search for objects Caută obiecte - + Activate document Activeaza documentul - + Activate document %1 Activeaza documentul %1 - + Tree settings Tree settings - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group Grup - + Labels & Attributes Etichete & Atribute - + Description Descriere - + Show items hidden in tree view Arată elementele ascunse în vizualizarea arborelui - + Show items that are marked as 'hidden' in the tree view Arată elementele care sunt marcate ca 'ascunse' în vizualizarea arborelui - + Toggle visibility in tree view Comută vizibilitatea în vizualizarea arborelui - + Toggles the visibility of selected items in the tree view Activează/dezactivează vizibilitatea elementelor selectate în vizualizarea arborelui - + Create group... Creazã grup... - + Create a group Creează un grup - - + + Rename Redenumire - + Rename object Redenumire obiect - + Finish editing Termina editarea - + Finish editing object Editarea obiectului incheiata - + Add dependent objects to selection Adaugă obiectele dependente la selecție - + Adds all dependent objects to the selection Adauga toate obiectele dependente la selectie - + Close document Închide documentul - + Close the document Închide documentul - + Reload document Reîncarcă documentul - + Reload a partially loaded document Reîncarcă un document parțial încărcat - + Skip recomputes Abandonați recalcularea - + Enable or disable recomputations of document Autorizați sau interziceți recalculare documentului - + Allow partial recomputes Permite recompilări parțiale - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Activați sau dezactivați recalcularea editării obiectului atunci când este activat 'săriți peste recalculare' - + Mark to recompute Marcare de recalculare - + Mark this object to be recomputed Marcați acest obiect pentru a fi recalculate - + Recompute object Recalculare obiect - + Recompute the selected object Recalculează obiectul selectat - + (but must be executed) (dar trebuie executat) - + %1, Internal name: %2 %1, nume intern : %2 @@ -7970,45 +7970,45 @@ Doriţi să specificaţi un alt director? Python - - - + + + Unknown filetype Tip de fișier necunoscut - - + + Cannot open unknown filetype: %1 Imposibil de deschis fişierul în format necunoscut:%1 - + Export failed Export eșuat - + Cannot save to unknown filetype: %1 Nu se poate salva într-un format de fişier necunoscut:%1 - + Workbench failure Bancul de lucru a eşuat - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8059,8 +8059,8 @@ Doriţi să specificaţi un alt director? Export PDF... - + Unsaved document Document nesalvat @@ -8539,36 +8539,36 @@ Alege 'Abandonează' pentru a abandona Salvaţi macrocomanda - - + + Finish Terminare - - + + Clear Șterge - - - + + + Cancel Renunţă - + Inner Interior - + Outer Exterior - + Split Divizare @@ -8606,12 +8606,12 @@ Please open a browser window and type in: http://localhost:%1. Opţiuni... - + Out of memory Memorie insuficientă - + Not enough memory available to display the data. Insuficientă memorie disponibilă pentru a afişa datele. @@ -8627,7 +8627,7 @@ Please open a browser window and type in: http://localhost:%1. Imposibil de găsit fișierul %1 la %2 nici în %3 - + Navigation styles Stiluri de navigare @@ -8799,8 +8799,8 @@ liniuță jos și nu trebuie să înceapă cu o cifră. Nu am putut adăuga proprietatea la '%1': %2 - - + + Drag & drop failed Drag & drop eșuat @@ -8903,7 +8903,7 @@ copia curentă va fi pierdută. Suprascrie culorile... - + Edit %1 Editare %1 @@ -8928,8 +8928,8 @@ copia curentă va fi pierdută. Toggle overlay - + Toggle floating window Toggle floating window @@ -8945,187 +8945,192 @@ copia curentă va fi pierdută. Press ESC to hide hint - + UI UI - + Tree view Vizualizare arborescentă - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9134,6 +9139,16 @@ copia curentă va fi pierdută. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10058,8 +10073,8 @@ copia curentă va fi pierdută. Creaţi un nou document gol - + Unnamed Nedenumit @@ -11711,35 +11726,40 @@ Doriți în continuare să continuați? TreeParams - + Tree view item background. Only effective in overlay. Fundalul elementului de vizualizare copac este eficient doar în suprapunere. - + Tree view item background padding. Asocierea elementului de fundal pentru vizualizarea arborelor. - + Hide extra tree view column for item description. Ascunde coloana extra de vizualizare arbore pentru descrierea elementului. - + Hide tree view scroll bar in dock overlay. Ascunde bara de derulare a arborelui în suprapunere cu doc. - + Hide tree view header view in dock overlay. Ascunde vizualizarea arborelui de antet în suprapunere cu dock. - + Allow tree view columns to be manually resized. Permite redimensionarea manuală a coloanelor de vizualizare a arborelor. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_ru.ts b/src/Gui/Language/FreeCAD_ru.ts index 9cc403626a..b22584ee04 100644 --- a/src/Gui/Language/FreeCAD_ru.ts +++ b/src/Gui/Language/FreeCAD_ru.ts @@ -42,24 +42,24 @@ <пусто> - - + + Angle Угол - - + + Axis Ось - + Position Положение - + Enum Перечисления @@ -112,12 +112,12 @@ Command - + Edit Редактировать - + Import Импорт @@ -188,8 +188,8 @@ Расположение - + Transform Переместить @@ -421,42 +421,42 @@ EditMode - + Default По умолчанию - + The object will be edited using the mode defined internally to be the most appropriate for the object type Объект будет отредактирован с помощью режима, определяемого внутри наиболее подходящего для типа объекта - + Transform Преобразовать - + The object will have its placement editable with the Std TransformManip command Объекта будет иметь размещение, редактируемое с помощью команды Std TransformManip - + Cutting Обрезка - + This edit mode is implemented as available but currently does not seem to be used by any object Этот режим редактирования реализован как доступный, но в настоящее время он не используется ни одним объектом - + Color Цвет - + The object will have the color of its individual faces editable with the Part FaceColors command Объект будет иметь цвет отдельных граней, редактируемый с помощью команды Part FaceColors @@ -2931,12 +2931,12 @@ VBO - это технология OpenGL, позволяющая хранить Letter color: - Letter color: + Цвет буквы: Axis letter color - Axis letter color + Цвет буквы оси @@ -4128,12 +4128,12 @@ You can also use the form: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Непрозрачность в неактивном состоянии Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Непрозрачность куба навигации, когда он не сфокусирован @@ -6119,15 +6119,15 @@ Do you want to save your changes? Формат PDF - + Graphviz format Graphviz формат - + Export graph Экспорт графа @@ -6626,7 +6626,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Изменить связанный объект @@ -6634,12 +6634,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Ошибки - + Object not found Объект не найден @@ -7476,7 +7476,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view В виде дерева @@ -7484,7 +7484,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Поиск @@ -7492,184 +7492,184 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Поиск... - + Search for objects Поиск объектов - + Activate document Активировать документ - + Activate document %1 Активировать документ %1 - + Tree settings Настройки дерева - + Show description column Показать столбец описания - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Показать дополнительный столбец в виде дерева для описания элемента. Описание элемента можно установить, нажав F2 (или кнопку редактирования вашей ОС) или отредактировав свойство label2. - + Group Группа - + Labels & Attributes Метки и свойства - + Description Описание - + Show items hidden in tree view Показать элементы, скрытые в дереве - + Show items that are marked as 'hidden' in the tree view Показать элементы, помеченные как 'скрытые' в дереве - + Toggle visibility in tree view Переключить видимость в виде дерева - + Toggles the visibility of selected items in the tree view Переключение видимости выбранных элементов в виде дерева - + Create group... Создать группу... - + Create a group Создать группу - - + + Rename Переименовать - + Rename object Переименовать объект - + Finish editing Завершить редактирование - + Finish editing object Завершить редактирование объекта - + Add dependent objects to selection Добавить зависимые объекты к выделению - + Adds all dependent objects to the selection Добавляет к выделению все зависимые объекты - + Close document Закрыть документ - + Close the document Закрыть документ - + Reload document Перезагрузить документ - + Reload a partially loaded document Перезагрузить частично загруженный документ - + Skip recomputes Пропуск пересчета - + Enable or disable recomputations of document Включение или отключение повторных вычислений документа - + Allow partial recomputes Разрешить частичные перерасчёты - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Включить или выключить повторное вычисление объекта редактирования, если включен параметр 'пропустить пересчет ' - + Mark to recompute Отметить для пересчета - + Mark this object to be recomputed Пометить этот объект для повторного вычисления - + Recompute object Пересчитать объект - + Recompute the selected object Пересчитать выбранный объект - + (but must be executed) (но должно быть выполнено) - + %1, Internal name: %2 %1, внутреннее название: %2 @@ -7965,45 +7965,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Неизвестный тип файла - - + + Cannot open unknown filetype: %1 Не удается открыть неизвестный файл: %1 - + Export failed Экспорт не удался - + Cannot save to unknown filetype: %1 Не удалось сохранить в неизвестном формате файла: %1 - + Workbench failure Ошибка загрузки верстака - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. В вашей системе используется OpenGL %1.%2. FreeCAD требует OpenGL 2.0 или выше. Пожалуйста, обновите ваш графический драйвер и/или карту при необходимости. - + Invalid OpenGL Version Недопустимая версия OpenGL @@ -8054,8 +8054,8 @@ Do you want to specify another directory? Экспорт PDF... - + Unsaved document Документ не сохранён @@ -8533,36 +8533,36 @@ Choose 'Abort' to abort Сохранить Макрос - - + + Finish Завершить - - + + Clear Очистить - - - + + + Cancel Отмена - + Inner Внутренний - + Outer Внешний - + Split Разделить @@ -8600,12 +8600,12 @@ Please open a browser window and type in: http://localhost:%1. Параметры... - + Out of memory Недостаточно памяти - + Not enough memory available to display the data. Недостаточно памяти для отображения данных. @@ -8621,7 +8621,7 @@ Please open a browser window and type in: http://localhost:%1. Не удается найти файл %1, ни в %2 ни в %3 - + Navigation styles Стили навигации @@ -8793,8 +8793,8 @@ underscore, and must not start with a digit. Не удалось добавить свойство к '%1': %2 - - + + Drag & drop failed Не удалось переместить @@ -8897,7 +8897,7 @@ the current copy will be lost. Переопределить цвета... - + Edit %1 Редактировать %1 @@ -8922,8 +8922,8 @@ the current copy will be lost. Переключить оверлей - + Toggle floating window Переключить плавающее окно @@ -8939,187 +8939,192 @@ the current copy will be lost. Нажмите ESC для скрытия подсказки - + UI Пользовательский интерфейс - + Tree view Иерархия документа - + Item background color Фоновый цвет элемента - + Item background padding Заполнение фона элемента - + Resizable columns Изменяемые размеры столбцов - + + Show visibility icon + Показать значок видимости + + + Hide extra column Скрыть дополнительный столбец - + Hide scroll bar Скрыть полосу прокрутки - + Hide header Не показывать заголовок - + IconSize Размер иконки - + FontSize Размер шрифта - + ItemSpacing Расстояние между предметами - + Overlay Оверлей - + Hide tab bar Скрыть панель вкладок - + Hide property view scroll bar Скрыть полосу прокрутки - + Auto hide in non 3D view Автоскрытие в не 3D - + Auto mouse pass through Проход мыши автоматически - + Auto mouse wheel pass through Проходит автоматически через колесо мыши - + Delay mouse wheel pass through (ms) Задержка прохождения колеса мыши (мс) - + Alpha test radius Радиус альфа-теста - + Check Navigation Cube Проверить куб навигации - + Hint trigger size Подсказка о размере триггера - + Hint width Ширина подсказки - + Left panel hint offset Смещение подсказки левой панели - + Left panel hint length Длина подсказки левой панели - + Right panel hint offset Смещение подсказки правой панели - + Right panel hint length Длина подсказки правой панели - + Top panel hint offset Смещение подсказки верхней панели - + Top panel hint length Длина подсказки верхней панели - + Bottom panel hint offset Смещение подсказки нижней панели - + Bottom panel hint length Длина подсказки нижней панели - + Hint show tab bar Подсказка показать панель вкладок - + Hint delay (ms) Задержка подсказки (мс) - + Splitter auto hide delay (ms) Задержка автоматического скрытия сплиттера (мс) - + Activate on hover Активировать при наведении курсора - + Layout delay (ms) Задержка макета (мс) - + Animation duration (ms) Время анимации (сек.) - + Animation curve type Тип кривой анимации @@ -9128,6 +9133,16 @@ the current copy will be lost. Active object Активный объект + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10052,8 +10067,8 @@ the current copy will be lost. Создать новый пустой документ - + Unnamed Безымянный @@ -11474,7 +11489,7 @@ It is meant to arrange objects that have a Part TopoShape, like Part Primitives, Display the active view either in fullscreen, in undocked or docked mode - Отображать активный вид в полноэкранном режиме, встроенном окне или в отдельном окне + Отображать активный вид в полноэкранном, закрепленном и откреплённом режиме @@ -11516,7 +11531,7 @@ It is meant to arrange objects that have a Part TopoShape, like Part Primitives, Display the active view either in fullscreen, in undocked or docked mode - Отображать активный вид в полноэкранном, закрепленном и откреплённом режиме + Отображать активный вид в полноэкранном режиме, встроенном окне или в отдельном окне @@ -11705,35 +11720,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. Позать дерево на заднем плане. Работает в режиме наложения. - + Tree view item background padding. Заполнение фона панели дерева. - + Hide extra tree view column for item description. Скрыть дополнительные столбцы в дереве для описания элемента. - + Hide tree view scroll bar in dock overlay. Скрыть полосу прокрутки дерева в закрепленной панели. - + Hide tree view header view in dock overlay. Скрыть заголовок дерева в закрепленной панели. - + Allow tree view columns to be manually resized. Разрешено ручное изменение размера столбцов дерева. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Если включено, показывать значок глаз перед элементами дерева, показывающий статус видимости элементов. При нажатии видимость переключается + Workbench @@ -12127,22 +12147,22 @@ after FreeCAD launches XY-Plane - Плоскость XY + XY-плоскость XZ-Plane - Плоскость XZ + XZ-плоскость YZ-Plane - Плоскость YZ + YZ-плоскость Reverse direction - Развернуть направление + В обратном направлении diff --git a/src/Gui/Language/FreeCAD_sl.ts b/src/Gui/Language/FreeCAD_sl.ts index d8ad797511..8ab172638c 100644 --- a/src/Gui/Language/FreeCAD_sl.ts +++ b/src/Gui/Language/FreeCAD_sl.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Kot - - + + Axis Os - + Position Položaj - + Enum Številčnik @@ -112,12 +112,12 @@ Command - + Edit Uredi - + Import Uvozi @@ -188,8 +188,8 @@ Postavitev - + Transform Preoblikuj @@ -421,42 +421,42 @@ EditMode - + Default Privzeti - + The object will be edited using the mode defined internally to be the most appropriate for the object type Urejanje predmeta bo v načinu, ki je notranje določen kot najprimernejši glede na vrsto predmeta - + Transform Preoblikuj - + The object will have its placement editable with the Std TransformManip command Postavitev predmeta bo mogoče urejati z ukazom Std TransformManip - + Cutting Prerez - + This edit mode is implemented as available but currently does not seem to be used by any object Ta urejevalni način je razpoložljiv, vendar trenutno ni kaže, da bi ga uporabljal katerikoli predmet - + Color Barva - + The object will have the color of its individual faces editable with the Part FaceColors command Barvo posameznih ploskev predmeta bo mogoče urejati z ukazom FaceColors @@ -899,7 +899,7 @@ kliknete na levo oz. desno tipko in premikate miško gor oz. dol Angle - Kót + Kot @@ -6129,15 +6129,15 @@ Ali želite shraniti spremembe? PDF zapis - + Graphviz format Graphviz format - + Export graph Izvozi graf @@ -6637,7 +6637,7 @@ Kako želite nadaljevati? Gui::PropertyEditor::LinkLabel - + Change the linked object Spremeni povezan predmet @@ -6645,12 +6645,12 @@ Kako želite nadaljevati? Gui::PropertyEditor::LinkSelection - + Error Napaka - + Object not found Predmeta ni bilo mogoče najti @@ -7043,7 +7043,7 @@ Ali želite navesti drugo mapo? Angle - Kot + Kót @@ -7051,7 +7051,7 @@ Ali želite navesti drugo mapo? Position - Position + Položaj @@ -7489,7 +7489,7 @@ Ali želite navesti drugo mapo? Gui::TreeDockWidget - + Tree view Drevesni prikaz @@ -7497,7 +7497,7 @@ Ali želite navesti drugo mapo? Gui::TreePanel - + Search Poišči @@ -7505,183 +7505,183 @@ Ali želite navesti drugo mapo? Gui::TreeWidget - + Search... Iskanje ... - + Search for objects Išči predmete - + Activate document Aktiviraj dokument - + Activate document %1 Aktiviranje dokumente %1 - + Tree settings Nastavitve drevesa - + Show description column Prikaži opisni stolpec - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Prikaži dodatni stolpec drevesnega pogleda za prikaz opisa predmeta. Opis predmeta je mogoče nastaviti s pritiskom na F2 (ali urejevalni gumb vašega OS) ali z urejanjem lastnosti "oznake2". - + Group Skupina - + Labels & Attributes Oznake in značilke - + Description Opis - + Show items hidden in tree view Prikaži predmete, skrite v drevesnem pogledu - + Show items that are marked as 'hidden' in the tree view Prikaži predmete, ki so v drevesnem pogledu označeni kot "skriti" - + Toggle visibility in tree view Preklopi vidnost v drevesnem pogledu - + Toggles the visibility of selected items in the tree view Preklopi vidnost izbranih predmetov v drevesnem pogledu - + Create group... Ustvari skupino … - + Create a group Ustvarite skupino - - + + Rename Preimenuj - + Rename object Preimenuj predmet - + Finish editing Zaključi urejanje - + Finish editing object Zaključi urejanje predmeta - + Add dependent objects to selection Dodaj izboru odvisne predmete - + Adds all dependent objects to the selection Doda izboru vse odvisne predmete - + Close document Zapri dokument - + Close the document Zapri dokument - + Reload document Ponovno naloži dokument - + Reload a partially loaded document Ponovno naloži delno naložen dokument - + Skip recomputes Preskoči ponovne preračune - + Enable or disable recomputations of document Omogoči ali onemogoči ponovni preračun dokumenta - + Allow partial recomputes Dovoli delno praračunavanje - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Omogoči ali onemogoči preračunavanje urejevanih predmetov, ko je onemogočeno "Preskoči preračunavanje" - + Mark to recompute Označi za ponovni izračun - + Mark this object to be recomputed Označi ta predmet za ponovni preračun - + Recompute object Preračunaj predmete - + Recompute the selected object Preračunaj izbranie predmet - + (but must be executed) (vendar mora biti izvedeno) - + %1, Internal name: %2 %1, Notranje ime: %2 @@ -7977,45 +7977,45 @@ Ali želite navesti drugo mapo? Python - - - + + + Unknown filetype Neznana vrsta datoteke - - + + Cannot open unknown filetype: %1 Neznane vrste datoteke ni mogoče odpreti: %1 - + Export failed Izvažanje spodletelo - + Cannot save to unknown filetype: %1 Ni mogoče shraniti v neznano vrsto datoteke: %1 - + Workbench failure Napaka delovnega okolja - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8066,8 +8066,8 @@ Ali želite navesti drugo mapo? Izvažanje PDF... - + Unsaved document Neshranjen dokument @@ -8547,36 +8547,36 @@ Izberite "Prekini" za prekinitev Shrani makro - - + + Finish Končaj - - + + Clear Počisti - - - + + + Cancel Prekliči - + Inner Notranji - + Outer Zunanji - + Split Razdeli @@ -8616,12 +8616,12 @@ Odprite brskalnik in vtipkajte: http://localhost:%1. Možnosti ... - + Out of memory Zmanjkalo je pomnilnika - + Not enough memory available to display the data. Ni dovolj pomnilnika za prikaz podatkov. @@ -8637,7 +8637,7 @@ Odprite brskalnik in vtipkajte: http://localhost:%1. Datoteke %1 ni mogoče najti v %2 niti v %3 - + Navigation styles Slogi krmarjenja @@ -8809,8 +8809,8 @@ in podčrtaj ter se ne smo začeti s števko. Ni bilo mogoče dodati lastnosti v '%1': %2 - - + + Drag & drop failed Povleci-spusti spodletelo @@ -8913,7 +8913,7 @@ bodo izgubljene. Povozi barve ... - + Edit %1 Uredi %1 @@ -8938,8 +8938,8 @@ bodo izgubljene. Preklopi prekrivanje - + Toggle floating window Preklopi plavajoče okno @@ -8955,187 +8955,192 @@ bodo izgubljene. Če želite skriti namig, pritisnice ESC - + UI Vmesnik - + Tree view Drevesni prikaz - + Item background color Barva ozadja predmeta - + Item background padding Item background padding - + Resizable columns Stolpci z nastavljivo širino - + + Show visibility icon + Show visibility icon + + + Hide extra column Skrij dodatni stolpec - + Hide scroll bar Skrij drsni trak - + Hide header Skrij glavo - + IconSize Velikost ikon - + FontSize Velikost pisave - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9144,6 +9149,16 @@ bodo izgubljene. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10068,8 +10083,8 @@ bodo izgubljene. Ustvari nov, prazen dokument - + Unnamed Neimenovan @@ -11721,35 +11736,40 @@ Ali želite vseeno nadaljevati? TreeParams - + Tree view item background. Only effective in overlay. Ozadje predmetov drevesnega prikaza. Deluje le pri prekrivanju. - + Tree view item background padding. Zapolnjevanje ozadja predmetov v drevesnem prikazu. - + Hide extra tree view column for item description. Skrij dodatni stolpec drevesnega prikaza z opisom predmeta. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Dovoli ročno spreminjanje velikosti stolpcev drevesnega prikaza. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench @@ -12144,17 +12164,17 @@ ob zagodu FreeCAD-a XY-Plane - XY-Plane + Ravnina XY XZ-Plane - XZ-Plane + Ravnina XZ YZ-Plane - YZ-Plane + Ravnina YZ @@ -12164,7 +12184,7 @@ ob zagodu FreeCAD-a Offset: - Offset: + Odmik: diff --git a/src/Gui/Language/FreeCAD_sr-CS.ts b/src/Gui/Language/FreeCAD_sr-CS.ts index 36f49f59df..41fc0ee7f5 100644 --- a/src/Gui/Language/FreeCAD_sr-CS.ts +++ b/src/Gui/Language/FreeCAD_sr-CS.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Ugao - - + + Axis Osa - + Position Položaj - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Uredi - + Import Uvezi @@ -188,8 +188,8 @@ Položaj - + Transform Pomeri @@ -421,42 +421,42 @@ EditMode - + Default Podrazumevano - + The object will be edited using the mode defined internally to be the most appropriate for the object type Objekat će biti uređivan korišćenjem interno definisanog režima koji je najprikladniji za taj tip objekta - + Transform Pomeri - + The object will have its placement editable with the Std TransformManip command Objekat će imati svoj položaj koji se može uređivati pomoću komande Std TransformManip - + Cutting Cutting - + This edit mode is implemented as available but currently does not seem to be used by any object Ovaj režim uređivanja je implementiran kao dostupan, ali trenutno izgleda da ga nijedan objekat ne koristi - + Color Boja - + The object will have the color of its individual faces editable with the Part FaceColors command Objekat će imati boju svojih pojedinačnih lica koja se može uređivati komandom Part FaceColors @@ -2937,12 +2937,12 @@ prijavite ovu postavku kao omogućenu kada tražite podršku na FreeCAD forumim Letter color: - Letter color: + Boja slova: Axis letter color - Axis letter color + Boja slova osa @@ -4137,12 +4137,12 @@ Takođe možete koristiti obrazac: Pera Perić <pera@peric.com> Opacity when inactive - Opacity when inactive + Prozirnost kada je neaktivna Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Prozirnost navigaciona kocke kada nije u upotrebi @@ -6129,15 +6129,15 @@ Da li želiš da sačuvaš promene? PDF format - + Graphviz format Graphviz format - + Export graph Izvezi grafikon @@ -6637,7 +6637,7 @@ Kako želiš da nastaviš? Gui::PropertyEditor::LinkLabel - + Change the linked object Promeni povezani objekat @@ -6645,12 +6645,12 @@ Kako želiš da nastaviš? Gui::PropertyEditor::LinkSelection - + Error Greška - + Object not found Objekat nije pronađen @@ -7051,7 +7051,7 @@ Do you want to specify another directory? Position - Position + Položaj @@ -7489,7 +7489,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Stablo dokumenta @@ -7497,7 +7497,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Pretraga @@ -7505,183 +7505,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Pretraži... - + Search for objects Traži objekte - + Activate document Aktiviraj dokument - + Activate document %1 Aktiviraj dokument %1 - + Tree settings Podešavanja stabla dokumenta - + Show description column Prikaži kolonu sa opisima - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Prikaži u stablu dokumenta dodatnu kolonu sa opisima stavki. Opis stavke se može podesiti pritiskom na F2 (ili dugme za uređivanje vašeg OS-a) ili uređivanjem svojstva 'label2'. - + Group Grupa - + Labels & Attributes Oznake & Atributi - + Description Opis - + Show items hidden in tree view Prikaži sakrivene stavke u stablu dokumenta - + Show items that are marked as 'hidden' in the tree view Prikaži stavke koje su u stablu dokumenta označene kao 'sakrivene' - + Toggle visibility in tree view Uključi/isključi vidljivost u stablu dokumenta - + Toggles the visibility of selected items in the tree view Uključi/isključi vidljivost izabranih stavki u stablu dokumenta - + Create group... Napravi grupu... - + Create a group Napravi grupu - - + + Rename Preimenuj - + Rename object Preimenuj objekat - + Finish editing Završi uređivanje - + Finish editing object Završi uređivanje objekta - + Add dependent objects to selection Dodaj zavisne objekte izboru - + Adds all dependent objects to the selection Dodaje sve zavisne objekte izboru - + Close document Zatvori dokument - + Close the document Zatvori dokument - + Reload document Učitaj dokument ponovo - + Reload a partially loaded document Učitaj ponovo delimično učitan dokument - + Skip recomputes Preskoči ponovna preračunavanja - + Enable or disable recomputations of document Omogući ili onemogući ponovno preračunavanje dokumenta - + Allow partial recomputes Dozvoli delimična preračunavanja - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Enable or disable recomputating editing object when 'skip recomputation' is enabled - + Mark to recompute Označi za ponovno izračunavanje - + Mark this object to be recomputed Označi ovaj objekat za ponovno izračunavanje - + Recompute object Ponovno preračunaj objekat - + Recompute the selected object Ponovno preračunaj izabrani objekat - + (but must be executed) (ali mora da se izvrši) - + %1, Internal name: %2 %1, Unutrašnje ime: %2 @@ -7977,45 +7977,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Nepoznata vrsta datoteke - - + + Cannot open unknown filetype: %1 Ne mogu otvoriti nepoznatu vrstu datoteke: %1 - + Export failed Izvoz nije uspeo - + Cannot save to unknown filetype: %1 Ne mogu sačuvati nepoznatu vrstu datoteke: %1 - + Workbench failure Otkazivanje radnog okruženja - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Ovaj sistem koristi OpenGL %1.%2. FreeCAD zahteva OpenGL 2.0 ili noviji. Nadogradite svoj grafički drajver i/ili karticu po potrebi. - + Invalid OpenGL Version Pogrešna OpenGL verzija @@ -8066,8 +8066,8 @@ Do you want to specify another directory? Izvozim PDF... - + Unsaved document Nesačuvan dokument @@ -8266,7 +8266,7 @@ Da li želiš da nastaviš? New integer item - Nova brojčana stavka + New integer item @@ -8282,13 +8282,13 @@ Da li želiš da nastaviš? New unsigned item - Nova neoznačena stavka + New unsigned item New float item - Nova stavka sa pokretnim zarezom + New float item @@ -8547,36 +8547,36 @@ Izaberi „Prekini“ da bi prekinuo Sačuvaj Makro - - + + Finish Završi - - + + Clear Obriši - - - + + + Cancel Otkaži - + Inner Unutrašnje - + Outer Spoljašnje - + Split Podeli @@ -8616,12 +8616,12 @@ Otvori pregledač i ukucaj: http://localhost:%1. Opcije... - + Out of memory Nema dovoljno memorije - + Not enough memory available to display the data. Nema dovoljno memorije za prikazivanje podataka. @@ -8637,7 +8637,7 @@ Otvori pregledač i ukucaj: http://localhost:%1. Ne mogu pronaći datoteku %1 ni u %2 ni u %3 - + Navigation styles Navigacioni stilovi @@ -8809,8 +8809,8 @@ donju crtu i ne sme da počinje brojem. Nije uspelo dodavanje osobine u '%1': %2 - - + + Drag & drop failed Prevlačenje i otpuštanje nije uspelo @@ -8913,7 +8913,7 @@ the current copy will be lost. Izmeni boje... - + Edit %1 Uredi %1 @@ -8938,8 +8938,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8955,187 +8955,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Stablo dokumenta - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Kolone promenljive veličine - + + Show visibility icon + Show visibility icon + + + Hide extra column Sakrij dodatnu kolonu - + Hide scroll bar Sakrij kliznu traku - + Hide header Hide header - + IconSize Veličina ikone - + FontSize Veličina fonta - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Sakrij kliznu traku panela Osobine prikaza - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Trajanje animacije (ms) - + Animation curve type Animation curve type @@ -9144,6 +9149,16 @@ the current copy will be lost. Active object Aktivni objekat + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10068,8 +10083,8 @@ the current copy will be lost. Napravi novi prazan dokument - + Unnamed Bez imena @@ -11721,35 +11736,40 @@ Da li i dalje želiš da nastaviš? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench @@ -12921,7 +12941,7 @@ prikazati početni ekran Tags - Oznake + Tagovi diff --git a/src/Gui/Language/FreeCAD_sr.ts b/src/Gui/Language/FreeCAD_sr.ts index 9315b6f2db..8873f0b95e 100644 --- a/src/Gui/Language/FreeCAD_sr.ts +++ b/src/Gui/Language/FreeCAD_sr.ts @@ -42,24 +42,24 @@ <empty> - - + + Angle Угао - - + + Axis Оса - + Position Положај - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Уреди - + Import Увези @@ -188,8 +188,8 @@ Положај - + Transform Помери @@ -421,42 +421,42 @@ EditMode - + Default Подразумевано - + The object will be edited using the mode defined internally to be the most appropriate for the object type Објекат ће бити уређиван коришћењем интерно дефинисаног режима који је најприкладнији за тај тип објекта - + Transform Помери - + The object will have its placement editable with the Std TransformManip command Објекат ће имати свој положај који се може уређивати помоћу команде Std TransformManip - + Cutting Cutting - + This edit mode is implemented as available but currently does not seem to be used by any object Овај режим уређивања је имплементиран као доступан, али тренутно изгледа да га ниједан објекат не користи - + Color Боја - + The object will have the color of its individual faces editable with the Part FaceColors command Објекат ће имати боју својих појединачних лица која се може уређивати командом Part FaceColors @@ -2937,12 +2937,12 @@ VBO-ови нуде значајно повећање перформанси ј Letter color: - Letter color: + Боја слова: Axis letter color - Axis letter color + Боја слова оса @@ -4137,12 +4137,12 @@ You can also use the form: John Doe <john@doe.com> Opacity when inactive - Opacity when inactive + Прозирност када је неактивна Opacity of the navigation cube when not focused - Opacity of the navigation cube when not focused + Прозирност навигациона коцке када није у употреби @@ -6129,15 +6129,15 @@ Do you want to save your changes? PDF формат - + Graphviz format Graphviz формат - + Export graph Извези графикон @@ -6637,7 +6637,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Промени повезани објекат @@ -6645,12 +6645,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Грешка - + Object not found Објекат није пронађен @@ -7051,7 +7051,7 @@ Do you want to specify another directory? Position - Position + Положај @@ -7489,7 +7489,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Стабло документа @@ -7497,7 +7497,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Претрага @@ -7505,183 +7505,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Претрага... - + Search for objects Тражи објекте - + Activate document Активирај документ - + Activate document %1 Активирај документ %1 - + Tree settings Подешавања стабла документа - + Show description column Прикажи колону са описима - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Прикажи у стаблу документа додатну колону са описима ставки. Опис ставке се може подесити притиском на F2 (или дугме за уређивање вашег ОС-а) или уређивањем својства 'label2'. - + Group Група - + Labels & Attributes Ознаке & Атрибути - + Description Опис - + Show items hidden in tree view Прикажи сакривене ставке у стаблу документа - + Show items that are marked as 'hidden' in the tree view Прикажи ставке које су у стаблу документа означене као 'сакривене' - + Toggle visibility in tree view Укључи/искључи видљивост у стаблу документа - + Toggles the visibility of selected items in the tree view Укључи/искључи видљивост изабраних ставки у стаблу документа - + Create group... Направи групу... - + Create a group Направи групу - - + + Rename Преименуј - + Rename object Преименуј објекат - + Finish editing Заврши уређивање - + Finish editing object Заврши уређивање објекта - + Add dependent objects to selection Додај зависне објекте избору - + Adds all dependent objects to the selection Додаје све зависне објекте избору - + Close document Затвори документ - + Close the document Затвори документ - + Reload document Учитај документ поново - + Reload a partially loaded document Учитај поново делимично учитан документ - + Skip recomputes Прескочи поновна прерачунавања - + Enable or disable recomputations of document Омогући или онемогући поновно прерачунавање документа - + Allow partial recomputes Дозволи делимична прерачунавања - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Enable or disable recomputating editing object when 'skip recomputation' is enabled - + Mark to recompute Означи за поновно израчунавање - + Mark this object to be recomputed Означи овај објекат за поновно израчунавање - + Recompute object Поновно прерачунај објекат - + Recompute the selected object Поновно прерачунај изабрани објекат - + (but must be executed) (али мора да се изврши) - + %1, Internal name: %2 %1, Унутрашње име: %2 @@ -7977,45 +7977,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Непозната врста датотеке - - + + Cannot open unknown filetype: %1 Не могу отворити непознату врсту датотеке: %1 - + Export failed Извоз није успео - + Cannot save to unknown filetype: %1 Не могу сачувати непознату врсту датотеке: %1 - + Workbench failure Отказивање радног окружења - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Овај систем користи OpenGL %1.%2. FreeCAD захтева OpenGL 2.0 или новији. Надоградите свој графички драјвер и/или картицу по потреби. - + Invalid OpenGL Version Погрешна OpenGL верзија @@ -8066,8 +8066,8 @@ Do you want to specify another directory? Извозим PDF... - + Unsaved document Несачуван документ @@ -8266,7 +8266,7 @@ Do you want to continue? New integer item - Нова бројчана ставка + New integer item @@ -8282,13 +8282,13 @@ Do you want to continue? New unsigned item - Нова неозначена ставка + New unsigned item New float item - Нова ставка са покретним зарезом + New float item @@ -8547,36 +8547,36 @@ Choose 'Abort' to abort Cачувај Макро - - + + Finish Заврши - - + + Clear Обриши - - - + + + Cancel Откажи - + Inner Унутрашње - + Outer Спољашње - + Split Подели @@ -8616,12 +8616,12 @@ Please open a browser window and type in: http://localhost:%1. Опције... - + Out of memory Нема довољно меморије - + Not enough memory available to display the data. Нема довољно меморије за приказивање података. @@ -8637,7 +8637,7 @@ Please open a browser window and type in: http://localhost:%1. Не могу пронаћи датотеку %1 ни у %2 ни у %3 - + Navigation styles Навигациони стилови @@ -8809,8 +8809,8 @@ underscore, and must not start with a digit. Није успело додавање особине у '%1': %2 - - + + Drag & drop failed Превлачење и отпуштање није успело @@ -8913,7 +8913,7 @@ the current copy will be lost. Измени боје... - + Edit %1 Уреди %1 @@ -8938,8 +8938,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8955,187 +8955,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Стабло документа - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Колоне променљиве величине - + + Show visibility icon + Show visibility icon + + + Hide extra column Сакриј додатну колону - + Hide scroll bar Сакриј клизну траку - + Hide header Hide header - + IconSize Величина иконе - + FontSize Величина фонта - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Сакриј клизну траку панела Особине приказа - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Трајање анимације (мс) - + Animation curve type Animation curve type @@ -9144,6 +9149,16 @@ the current copy will be lost. Active object Активни објекат + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10068,8 +10083,8 @@ the current copy will be lost. Направи нови празан документ - + Unnamed Без имена @@ -11721,35 +11736,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench @@ -12921,7 +12941,7 @@ display the splash screen Tags - Ознаке + Тагови diff --git a/src/Gui/Language/FreeCAD_sv-SE.ts b/src/Gui/Language/FreeCAD_sv-SE.ts index 9542fd69ee..c56488c490 100644 --- a/src/Gui/Language/FreeCAD_sv-SE.ts +++ b/src/Gui/Language/FreeCAD_sv-SE.ts @@ -42,24 +42,24 @@ <tom> - - + + Angle Vinkel - - + + Axis Axel - + Position Position - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Redigera - + Import Importera @@ -188,8 +188,8 @@ Placering - + Transform Omvandla @@ -421,42 +421,42 @@ EditMode - + Default Standard - + The object will be edited using the mode defined internally to be the most appropriate for the object type The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform Omvandla - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Skär - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Färg - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6127,15 +6127,15 @@ Vill du spara ändringarna? PDF-format - + Graphviz format Graphviz format - + Export graph Exportera graf @@ -6635,7 +6635,7 @@ Hur vill du fortsätta? Gui::PropertyEditor::LinkLabel - + Change the linked object Ändra det länkade objektet @@ -6643,12 +6643,12 @@ Hur vill du fortsätta? Gui::PropertyEditor::LinkSelection - + Error Fel - + Object not found Objekt hittades inte @@ -7487,7 +7487,7 @@ Vill du ange en annan katalog? Gui::TreeDockWidget - + Tree view Trädvy @@ -7495,7 +7495,7 @@ Vill du ange en annan katalog? Gui::TreePanel - + Search Sök @@ -7503,183 +7503,183 @@ Vill du ange en annan katalog? Gui::TreeWidget - + Search... Sök... - + Search for objects Sök efter objekt - + Activate document Aktivera dokument - + Activate document %1 Aktivera dokument %1 - + Tree settings Trädinställningar - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group Grupp - + Labels & Attributes Etiketter & attribut - + Description Beskrivning - + Show items hidden in tree view Visa objekt dolda i trädvyn - + Show items that are marked as 'hidden' in the tree view Visa objekt som är markerade som 'dolda' i trädvyn - + Toggle visibility in tree view Växla synlighet i trädvyn - + Toggles the visibility of selected items in the tree view Växlar synligheten för markerade objekt i trädvyn - + Create group... Skapa grupp... - + Create a group Skapa en grupp - - + + Rename Döp om - + Rename object Döp om objekt - + Finish editing Slutför redigering - + Finish editing object Slutför redigering av objekt - + Add dependent objects to selection Add dependent objects to selection - + Adds all dependent objects to the selection Adds all dependent objects to the selection - + Close document Stäng dokument - + Close the document Stäng dokumentet - + Reload document Ladda om dokument - + Reload a partially loaded document Ladda om ett delvis laddat dokument - + Skip recomputes Utför inte omberäkningar - + Enable or disable recomputations of document Aktivera eller inaktivera omberäkningar av dokument - + Allow partial recomputes Tillåt partiell omberäkning - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Aktivera eller inaktivera omberäkning av redigeringsobjekt när 'hoppa över omberäkning' är aktiverat - + Mark to recompute Markera för att omberäkna - + Mark this object to be recomputed Markera detta objekt för att bli omberäknat - + Recompute object Omräkna objekt - + Recompute the selected object Beräkna om det markerade objektet - + (but must be executed) (men måste verkställas) - + %1, Internal name: %2 %1, Internt namn: %2 @@ -7975,45 +7975,45 @@ Vill du ange en annan katalog? Python - - - + + + Unknown filetype Okänd filtyp - - + + Cannot open unknown filetype: %1 Kan inte öppna okänd filtyp: %1 - + Export failed Exportering misslyckades - + Cannot save to unknown filetype: %1 Kan inte spara till okänd filtyp: %1 - + Workbench failure Fel på arbetsbänk - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8064,8 +8064,8 @@ Vill du ange en annan katalog? Exporterar PDF ... - + Unsaved document Osparat dokument @@ -8545,36 +8545,36 @@ Välj "Avbryt" för att avbryta Spara Makro - - + + Finish Gör klart - - + + Clear Rensa - - - + + + Cancel Avbryt - + Inner Inre - + Outer Yttre - + Split Dela @@ -8614,12 +8614,12 @@ Please open a browser window and type in: http://localhost:%1. Alternativ... - + Out of memory Slut på minne - + Not enough memory available to display the data. Det finns inte tillräckligt med minne för att visa datan. @@ -8635,7 +8635,7 @@ Please open a browser window and type in: http://localhost:%1. Kan inte finna fil %1, varken i %2 eller i %3 - + Navigation styles Navigationsstilar @@ -8807,8 +8807,8 @@ understrykningstecken och får inte börja med en siffra. Det gick inte att lägga till egenskapen till '%1': %2 - - + + Drag & drop failed Dra och släpp misslyckades @@ -8911,7 +8911,7 @@ the current copy will be lost. Åsidosätt färger... - + Edit %1 Redigera %1 @@ -8936,8 +8936,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8953,187 +8953,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Trädvy - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9142,6 +9147,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10066,8 +10081,8 @@ the current copy will be lost. Skapa ett nytt tomt dokument - + Unnamed Namnlös @@ -11717,35 +11732,40 @@ Vill du fortfarande fortsätta? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_tr.ts b/src/Gui/Language/FreeCAD_tr.ts index 5a190a417c..b9423b7ee4 100644 --- a/src/Gui/Language/FreeCAD_tr.ts +++ b/src/Gui/Language/FreeCAD_tr.ts @@ -42,24 +42,24 @@ <boş> - - + + Angle Açı - - + + Axis Eksen - + Position Position - + Enum Numaralandırma @@ -112,12 +112,12 @@ Command - + Edit Düzenle - + Import İçe aktar @@ -188,8 +188,8 @@ Yerleşim - + Transform Dönüştür @@ -421,42 +421,42 @@ EditMode - + Default Varsayılan - + The object will be edited using the mode defined internally to be the most appropriate for the object type The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform Dönüştür - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Kesme - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Renk - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6129,15 +6129,15 @@ Do you want to save your changes? PNG biçimi - + Graphviz format Graphviz format - + Export graph Grafiği dışa aktar @@ -6637,7 +6637,7 @@ sağ görünümde %2 nokta seçili. Gui::PropertyEditor::LinkLabel - + Change the linked object Bağlı nesneyi değiştir @@ -6645,12 +6645,12 @@ sağ görünümde %2 nokta seçili. Gui::PropertyEditor::LinkSelection - + Error Hata - + Object not found Nesne bulunamadı @@ -7488,7 +7488,7 @@ Başka bir dizin belirlemek ister misiniz? Gui::TreeDockWidget - + Tree view Unsur Ağacı @@ -7496,7 +7496,7 @@ Başka bir dizin belirlemek ister misiniz? Gui::TreePanel - + Search Ara @@ -7504,183 +7504,183 @@ Başka bir dizin belirlemek ister misiniz? Gui::TreeWidget - + Search... Ara... - + Search for objects Nesneleri ara - + Activate document Belgeyi etkinleştir - + Activate document %1 %1 Belgesini etkinleştir - + Tree settings Ağaç görünümü ayarları - + Show description column Açıklama sütununu göster - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group Grup - + Labels & Attributes Etiketler & öznitelikleri - + Description Açıklama - + Show items hidden in tree view Ağaç görünümünde gizlenen öğeleri göster - + Show items that are marked as 'hidden' in the tree view Ağaç görünümünde 'gizli' olarak işaretlenen öğeleri göster - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Grup Oluştur... - + Create a group Bir Grup oluşturma - - + + Rename Yeniden Adlandır - + Rename object Nesneyi yeniden adlandır - + Finish editing Düzenlemeyi tamamla - + Finish editing object Nesneyi düzenlemeyi tamamla - + Add dependent objects to selection Seçilecek bağıntılı nesneler ekle - + Adds all dependent objects to the selection Seçilecek tüm bağıntılı nesneleri ekler - + Close document Belgeyi kapat - + Close the document Belgeyi kapat - + Reload document Belgeyi tekrar yükle - + Reload a partially loaded document Kısmi yüklenen belgeyi tekrar yükle - + Skip recomputes Yeniden hesaplamayı atla - + Enable or disable recomputations of document Dokümanın yeniden hesaplanmasını etkinleştirir veya devre dışı bırakır - + Allow partial recomputes Kısmi yeniden hesaplamalara izin ver - + Enable or disable recomputating editing object when 'skip recomputation' is enabled 'Tekrar hesaplamayı atla' etkin ise tekrar hesaplama düzenleme nesnesini etkinleştir veya geçersizleştir - + Mark to recompute Yeniden hesaplamak için işaretle - + Mark this object to be recomputed Bu nesneyi yeniden hesaplanacak şekilde işaretleyin - + Recompute object Nesneyi yeniden hesapla - + Recompute the selected object Seçili Nesneyi yeniden hesapla - + (but must be executed) (ama çalıştırılmalı) - + %1, Internal name: %2 %1, Dahili adı: %2 @@ -7976,45 +7976,45 @@ Başka bir dizin belirlemek ister misiniz? Python - - - + + + Unknown filetype Bilinmeyen dosya türü - - + + Cannot open unknown filetype: %1 Bilinmeyen dosya türünü açamıyor: %1 - + Export failed Dışa aktarım başarısız oldu - + Cannot save to unknown filetype: %1 Bilinmeyen dosya türü kaydedilemiyor: %1 - + Workbench failure Tezgah hatası - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8065,8 +8065,8 @@ Başka bir dizin belirlemek ister misiniz? PDF dışa aktarılıyor... - + Unsaved document Kaydedilmemiş belge @@ -8543,36 +8543,36 @@ Vazgeçmek için 'Vazgeç' i seçin Makroyu kaydet - - + + Finish Bitir - - + + Clear Temizle - - - + + + Cancel İptal - + Inner İç - + Outer Dış - + Split Ayır @@ -8610,12 +8610,12 @@ Please open a browser window and type in: http://localhost:%1. Seçenekler... - + Out of memory Yetersiz bellek - + Not enough memory available to display the data. Verileri görüntülemek için yetersiz bellek. @@ -8631,7 +8631,7 @@ Please open a browser window and type in: http://localhost:%1. %1 Dosyası %2 veya %3 içinde bulunamıyor - + Navigation styles Gezinme şekilleri @@ -8803,8 +8803,8 @@ bir rakam ile başlamamalıdır. '%1' e özellik ekleme başarısız: %2 - - + + Drag & drop failed Sürükle ve bırak başarısız @@ -8907,7 +8907,7 @@ the current copy will be lost. Renkleri etkisiz kıl... - + Edit %1 %1'i düzenle @@ -8932,8 +8932,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8949,187 +8949,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Unsur Ağacı - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9138,6 +9143,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10062,8 +10077,8 @@ the current copy will be lost. Yeni, boş bir belge oluştur - + Unnamed İsimsiz @@ -11714,35 +11729,40 @@ Hala ilerlemek istiyor musunuz? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_uk.ts b/src/Gui/Language/FreeCAD_uk.ts index 90b0bbcf00..f65b578c96 100644 --- a/src/Gui/Language/FreeCAD_uk.ts +++ b/src/Gui/Language/FreeCAD_uk.ts @@ -42,24 +42,24 @@ <пусто> - - + + Angle Кут - - + + Axis Вісь - + Position Позиція - + Enum Перелік @@ -112,12 +112,12 @@ Command - + Edit Правка - + Import Імпортувати @@ -188,8 +188,8 @@ Розташувати - + Transform Перетворити @@ -421,42 +421,42 @@ EditMode - + Default За замовчуванням - + The object will be edited using the mode defined internally to be the most appropriate for the object type Об'єкт буде відредаговано з використанням внутрішньо визначеним режимом який найбільш відповідає типу об'єкта - + Transform Перетворити - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Переріз - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Колір - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6125,15 +6125,15 @@ Do you want to save your changes? Формат PDF - + Graphviz format Формат Graphviz - + Export graph Експортувати діаграму @@ -6630,7 +6630,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Заміна звʼязаного обʼєкта @@ -6638,12 +6638,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Помилка - + Object not found Обʼєкт не знайдено @@ -7482,7 +7482,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Ієрархія документа @@ -7490,7 +7490,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Пошук @@ -7498,183 +7498,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Шукати... - + Search for objects Пошук обʼєктів - + Activate document Активувати документ - + Activate document %1 Активувати документ %1 - + Tree settings Tree settings - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group Група - + Labels & Attributes Мітки та Атрибути - + Description Опис - + Show items hidden in tree view Show items hidden in tree view - + Show items that are marked as 'hidden' in the tree view Show items that are marked as 'hidden' in the tree view - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Створити групу... - + Create a group Створити групу - - + + Rename Перейменувати - + Rename object Перейменувати обʼєкт - + Finish editing Завершити редагування - + Finish editing object Завершити редагування обʼєкту - + Add dependent objects to selection Додати залежні обʼєкти до виділення - + Adds all dependent objects to the selection Додає всі залежні обʼєкти до виділеного - + Close document Закрити документ - + Close the document Закрити цей документ - + Reload document Перезавантажити документ - + Reload a partially loaded document Перезавантажити частково завантажений документ - + Skip recomputes Пропустити перерахунки - + Enable or disable recomputations of document Ввімкнути або вимкнути перерахунки документа - + Allow partial recomputes Дозволити часткові переобчислення - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Ввімкнути або вимкнути переобчислення обʼєктів, коли 'пропустити переобчислення' активовано - + Mark to recompute Помітити для переобчислення - + Mark this object to be recomputed Позначити цей обʼєкт для переобчислення - + Recompute object Переобчислити обʼєкт - + Recompute the selected object Переобчислити виділений обʼєкт - + (but must be executed) (але має бути виконано) - + %1, Internal name: %2 %1, внутрішнє імʼя: %2 @@ -7970,45 +7970,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype Невідомий тип файлу - - + + Cannot open unknown filetype: %1 Не вдається відкрити невідомий тип файлу: %1 - + Export failed Експорт не вдався - + Cannot save to unknown filetype: %1 Не вдається зберегти в невідомий тип файлу: %1 - + Workbench failure Помилка робочого середовища - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. Ця система працює на OpenGL %1.%2. FreeCAD вимагає OpenGL 2.0 або вище. Будь ласка, оновіть драйвер графіки та/або графічну карту за необхідністю. - + Invalid OpenGL Version Неправильна версія OpenGL @@ -8059,8 +8059,8 @@ Do you want to specify another directory? Експорт в PDF ... - + Unsaved document Незбережений документ @@ -8540,36 +8540,36 @@ Choose 'Abort' to abort Зберегти макрос - - + + Finish Завершити - - + + Clear Очистити - - - + + + Cancel Скасувати - + Inner Внутрішній - + Outer Зовнішній - + Split Розділити @@ -8609,12 +8609,12 @@ Please open a browser window and type in: http://localhost:%1. Параметри... - + Out of memory Не вистачає памʼяті - + Not enough memory available to display the data. Недостатньо памʼяті для показу даних. @@ -8630,7 +8630,7 @@ Please open a browser window and type in: http://localhost:%1. Не вдається знайти файл %1 ні в %2 , ні в %3 - + Navigation styles Стилі навігації @@ -8801,8 +8801,8 @@ underscore, and must not start with a digit. Не вдалося додати властивість до '%1': %2 - - + + Drag & drop failed Помилка перетягування @@ -8907,7 +8907,7 @@ the current copy will be lost. Змінити кольори... - + Edit %1 Редагувати %1 @@ -8932,8 +8932,8 @@ the current copy will be lost. Перемкнути шари - + Toggle floating window Перемкнути плаваюче вікно @@ -8949,187 +8949,192 @@ the current copy will be lost. Натисніть ESC, щоб приховати підказку - + UI Інтерфейс користувача - + Tree view Ієрархія документа - + Item background color Колір фону - + Item background padding Заповнення фону елемента - + Resizable columns Стовпці зі змінним розміром - + + Show visibility icon + Show visibility icon + + + Hide extra column Приховати додатковий стовпець - + Hide scroll bar Приховати панель прокрутки - + Hide header Приховати заголовок - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Приховати панель вкладок - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9138,6 +9143,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10062,8 +10077,8 @@ the current copy will be lost. Створює новий порожній документ - + Unnamed Без назви @@ -11715,35 +11730,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_val-ES.ts b/src/Gui/Language/FreeCAD_val-ES.ts index 26dc5f4e2a..4ccdfb6de5 100644 --- a/src/Gui/Language/FreeCAD_val-ES.ts +++ b/src/Gui/Language/FreeCAD_val-ES.ts @@ -42,24 +42,24 @@ <buit> - - + + Angle Angle - - + + Axis Eix - + Position Position - + Enum Enum @@ -112,12 +112,12 @@ Command - + Edit Edita - + Import Importa @@ -188,8 +188,8 @@ Posició - + Transform Transforma @@ -421,42 +421,42 @@ EditMode - + Default Per defecte - + The object will be edited using the mode defined internally to be the most appropriate for the object type The object will be edited using the mode defined internally to be the most appropriate for the object type - + Transform Transforma - + The object will have its placement editable with the Std TransformManip command The object will have its placement editable with the Std TransformManip command - + Cutting Tall - + This edit mode is implemented as available but currently does not seem to be used by any object This edit mode is implemented as available but currently does not seem to be used by any object - + Color Color - + The object will have the color of its individual faces editable with the Part FaceColors command The object will have the color of its individual faces editable with the Part FaceColors command @@ -6120,15 +6120,15 @@ Do you want to save your changes? Format PDF - + Graphviz format Graphviz format - + Export graph Exporta el gràfic @@ -6625,7 +6625,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object Canvia l'objecte enllaçat @@ -6633,12 +6633,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error Error - + Object not found No s'ha trobat l'objecte. @@ -7472,7 +7472,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view Vista d'arbre @@ -7480,7 +7480,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search Cerca @@ -7488,183 +7488,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... Busca... - + Search for objects Busca objectes - + Activate document Activa el document - + Activate document %1 Activa el document %1 - + Tree settings Tree settings - + Show description column Show description column - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. - + Group Grup - + Labels & Attributes Etiquetes i atributs - + Description Descripció - + Show items hidden in tree view Show items hidden in tree view - + Show items that are marked as 'hidden' in the tree view Show items that are marked as 'hidden' in the tree view - + Toggle visibility in tree view Toggle visibility in tree view - + Toggles the visibility of selected items in the tree view Toggles the visibility of selected items in the tree view - + Create group... Crea un grup... - + Create a group Crea un grup - - + + Rename Reanomena - + Rename object Reanomena l'objecte - + Finish editing Finalitza l'edició - + Finish editing object Finalitza l'edició de l'objecte - + Add dependent objects to selection Add dependent objects to selection - + Adds all dependent objects to the selection Adds all dependent objects to the selection - + Close document Tanca el document - + Close the document Tanca el document - + Reload document Torneu a la carregar el document - + Reload a partially loaded document Torna a carregar un document que s'ha carregat parcialment - + Skip recomputes Omet el recàlcul - + Enable or disable recomputations of document Activa o desactiva els recàlculs del document - + Allow partial recomputes Permet recàlculs parcials - + Enable or disable recomputating editing object when 'skip recomputation' is enabled Habilita o inhabilita el recàlcul de l'edició d'objectes quan estiga activat «Omet el recàlcul» - + Mark to recompute Marca per a recalcular - + Mark this object to be recomputed Marca aquest objecte per a recalcular-lo - + Recompute object Recalcula l'objecte - + Recompute the selected object Recalcula l'objecte seleccionat - + (but must be executed) (but must be executed) - + %1, Internal name: %2 %1, nom intern: %2 @@ -7960,45 +7960,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype El tipus de fitxer és desconegut. - - + + Cannot open unknown filetype: %1 No es pot obrir el tipus de fitxer desconegut: %1 - + Export failed Exportació fallida - + Cannot save to unknown filetype: %1 No es pot guardar el tipus de fitxer desconegut: %1 - + Workbench failure Fallada del banc de treball - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. - + Invalid OpenGL Version Invalid OpenGL Version @@ -8049,8 +8049,8 @@ Do you want to specify another directory? S'està exportant a PDF... - + Unsaved document El document no s'ha guardat. @@ -8527,36 +8527,36 @@ Trieu «Interromp» per a interrompre Guarda la macro - - + + Finish Finalitza - - + + Clear Neteja - - - + + + Cancel Cancel·la - + Inner Interior - + Outer Exterior - + Split Divideix @@ -8594,12 +8594,12 @@ Please open a browser window and type in: http://localhost:%1. Opcions... - + Out of memory No hi ha prou memòria. - + Not enough memory available to display the data. No hi ha prou memòria disponible per a mostrar les dades. @@ -8615,7 +8615,7 @@ Please open a browser window and type in: http://localhost:%1. No s'ha trobat el fitxer %1 ni en %2 ni en %3 - + Navigation styles Estils de navegació @@ -8787,8 +8787,8 @@ guions baixos i no ha de començar amb un dígit. No s'ha pogut afegir la propietat a «%1»: %2 - - + + Drag & drop failed S'ha produït un error en arrossegar i deixar anar @@ -8891,7 +8891,7 @@ the current copy will be lost. Sobreescriu els colors... - + Edit %1 Edita %1 @@ -8916,8 +8916,8 @@ the current copy will be lost. Toggle overlay - + Toggle floating window Toggle floating window @@ -8933,187 +8933,192 @@ the current copy will be lost. Press ESC to hide hint - + UI UI - + Tree view Vista d'arbre - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns Resizable columns - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar Hide scroll bar - + Hide header Hide header - + IconSize IconSize - + FontSize FontSize - + ItemSpacing ItemSpacing - + Overlay Overlay - + Hide tab bar Hide tab bar - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view Auto hide in non 3D view - + Auto mouse pass through Auto mouse pass through - + Auto mouse wheel pass through Auto mouse wheel pass through - + Delay mouse wheel pass through (ms) Delay mouse wheel pass through (ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube Check Navigation Cube - + Hint trigger size Hint trigger size - + Hint width Hint width - + Left panel hint offset Left panel hint offset - + Left panel hint length Left panel hint length - + Right panel hint offset Right panel hint offset - + Right panel hint length Right panel hint length - + Top panel hint offset Top panel hint offset - + Top panel hint length Top panel hint length - + Bottom panel hint offset Bottom panel hint offset - + Bottom panel hint length Bottom panel hint length - + Hint show tab bar Hint show tab bar - + Hint delay (ms) Hint delay (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover Activate on hover - + Layout delay (ms) Layout delay (ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9122,6 +9127,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10046,8 +10061,8 @@ the current copy will be lost. Crea un document buit nou - + Unnamed Sense nom @@ -11699,35 +11714,40 @@ Encara voleu continuar? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_zh-CN.ts b/src/Gui/Language/FreeCAD_zh-CN.ts index f847a7c70b..4cad838bce 100644 --- a/src/Gui/Language/FreeCAD_zh-CN.ts +++ b/src/Gui/Language/FreeCAD_zh-CN.ts @@ -42,24 +42,24 @@ <空> - - + + Angle 角度 - - + + Axis 轴线 - + Position 位置 - + Enum 列举 @@ -112,12 +112,12 @@ Command - + Edit 编辑 - + Import 导入 @@ -188,8 +188,8 @@ 定位 - + Transform 变换 @@ -421,42 +421,42 @@ EditMode - + Default 默认 - + The object will be edited using the mode defined internally to be the most appropriate for the object type 对象将使用内部定义的模式(以最适合对象的类型)进行编辑 - + Transform 变换 - + The object will have its placement editable with the Std TransformManip command 该对象将可以通过 Std TransformManip 命令进行放置编辑 - + Cutting 锯切 - + This edit mode is implemented as available but currently does not seem to be used by any object 此编辑模式是可用的,但当前似乎没有用于任何对象 - + Color 颜色 - + The object will have the color of its individual faces editable with the Part FaceColors command 该对象的各个面的颜色将使用 FaceColors 命令进行编辑 @@ -6109,15 +6109,15 @@ Do you want to save your changes? PDF 格式 - + Graphviz format Graphviz 格式 - + Export graph 导出图形 @@ -6614,7 +6614,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object 更改链接的对象 @@ -6622,12 +6622,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error 错误 - + Object not found 未发现物件 @@ -7464,7 +7464,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view 结构树浏览器 @@ -7472,7 +7472,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search 搜索 @@ -7480,183 +7480,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... 搜索... - + Search for objects 搜索对象 - + Activate document 激活文档 - + Activate document %1 激活文档 %1 - + Tree settings 树设置 - + Show description column 显示描述列 - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. 显示项目描述的额外树形视图列。 该项目的描述可以通过按 F2 (或您的 OS编辑按钮) 或编辑 "label2 "属性来设置。 - + Group - + Labels & Attributes 标签 & 属性 - + Description 描述 - + Show items hidden in tree view 在树状视图中显示隐藏项目 - + Show items that are marked as 'hidden' in the tree view 在树状视图中显示标记为“隐藏”的项目 - + Toggle visibility in tree view 在树状视图中切换可见性 - + Toggles the visibility of selected items in the tree view 在树状视图中切换选中项目的可见性 - + Create group... 创建组... - + Create a group 创建组 - - + + Rename 重命名 - + Rename object 重命名对象 - + Finish editing 完成编辑 - + Finish editing object 完成编辑对象 - + Add dependent objects to selection 将依赖对象添加到所选对象 - + Adds all dependent objects to the selection 将所有依赖对象添加到所选对象 - + Close document 关闭文档 - + Close the document 关闭此文档 - + Reload document 重载文档 - + Reload a partially loaded document 重新加载部分加载的文档 - + Skip recomputes 略过重新计算 - + Enable or disable recomputations of document 启用或禁用文档的重新计算 - + Allow partial recomputes 允许部分重新计算 - + Enable or disable recomputating editing object when 'skip recomputation' is enabled “跳过重新计算”启用时,则启用或禁止重新计算编辑对象 - + Mark to recompute 标记以重新运算 - + Mark this object to be recomputed 对此物体执行重新计算 - + Recompute object 重新计算对象 - + Recompute the selected object 重新计算所选的对象 - + (but must be executed) (但是必须执行) - + %1, Internal name: %2 %1、内部名: %2 @@ -7952,45 +7952,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype 未知文件类型 - - + + Cannot open unknown filetype: %1 无法打开未知文件类型: %1 - + Export failed 导出失败 - + Cannot save to unknown filetype: %1 无法保存为未知的文件类型: %1 - + Workbench failure 工作台故障 - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. 此系统正在运行 OpenGL %1。%2。FreeCAD 需要 OpenGL 2.0 或以上。请根据需要升级您的图形驱动程序和/或卡。 - + Invalid OpenGL Version 无效的 OpenGL 版本 @@ -8041,8 +8041,8 @@ Do you want to specify another directory? 导出 PDF... - + Unsaved document 未保存的文件 @@ -8521,36 +8521,36 @@ Choose 'Abort' to abort 保存宏 - - + + Finish 完成 - - + + Clear 清除 - - - + + + Cancel 取消 - + Inner 内部 - + Outer 外部 - + Split 分割 @@ -8588,12 +8588,12 @@ Please open a browser window and type in: http://localhost:%1. 选项... - + Out of memory 内存不足 - + Not enough memory available to display the data. 没有足够的可用内存来显示数据. @@ -8609,7 +8609,7 @@ Please open a browser window and type in: http://localhost:%1. 在 %2 或 %3 中找不到文件 %1 - + Navigation styles 导航模式 @@ -8780,8 +8780,8 @@ underscore, and must not start with a digit. 加入屬性至 '%1':%2 失敗 - - + + Drag & drop failed 拖放失败 @@ -8881,7 +8881,7 @@ the current copy will be lost. 覆盖颜色... - + Edit %1 编辑 %1 @@ -8906,8 +8906,8 @@ the current copy will be lost. 显示/隐藏悬浮窗 - + Toggle floating window 切换浮动窗口 @@ -8923,187 +8923,192 @@ the current copy will be lost. 按 ESC 可隐藏提示 - + UI 界面 - + Tree view 结构树浏览器 - + Item background color 项目背景颜色 - + Item background padding 项目背景填充 - + Resizable columns 可调整大小的列 - + + Show visibility icon + Show visibility icon + + + Hide extra column 隐藏额外列 - + Hide scroll bar 隐藏滚动条 - + Hide header 隐藏标题 - + IconSize 图标大小 - + FontSize 字号 - + ItemSpacing 物品间距 - + Overlay 叠加层 - + Hide tab bar 隐藏标签栏 - + Hide property view scroll bar 隐藏属性视图滚动条 - + Auto hide in non 3D view 在非3D视图中自动隐藏 - + Auto mouse pass through 鼠标自动通过 - + Auto mouse wheel pass through 自动鼠标滚轮通过 - + Delay mouse wheel pass through (ms) 延迟鼠标滚轮通过(ms) - + Alpha test radius Alpha 测试半径 - + Check Navigation Cube 检查导航立方体 - + Hint trigger size 提示触发大小 - + Hint width 提示宽度 - + Left panel hint offset 左侧面板提示偏移 - + Left panel hint length 左侧面板提示长度 - + Right panel hint offset 右侧面板提示偏移 - + Right panel hint length 右侧面板提示长度 - + Top panel hint offset 顶部面板提示偏移 - + Top panel hint length 顶部面板提示长度 - + Bottom panel hint offset 底部面板提示偏移 - + Bottom panel hint length 底部面板提示长度 - + Hint show tab bar 提示显示标签栏 - + Hint delay (ms) 提示延迟 (ms) - + Splitter auto hide delay (ms) 分离器自动隐藏延迟 (ms) - + Activate on hover 悬停时激活 - + Layout delay (ms) 布局延迟 (ms) - + Animation duration (ms) 动画持续时间,单位 ms - + Animation curve type 动画曲线类型 @@ -9112,6 +9117,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10036,8 +10051,8 @@ the current copy will be lost. 创建一个新空白文档 - + Unnamed 未命名 @@ -11689,35 +11704,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. Tree view item background. Only effective in overlay. - + Tree view item background padding. Tree view item background padding. - + Hide extra tree view column for item description. Hide extra tree view column for item description. - + Hide tree view scroll bar in dock overlay. Hide tree view scroll bar in dock overlay. - + Hide tree view header view in dock overlay. Hide tree view header view in dock overlay. - + Allow tree view columns to be manually resized. Allow tree view columns to be manually resized. + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench diff --git a/src/Gui/Language/FreeCAD_zh-TW.ts b/src/Gui/Language/FreeCAD_zh-TW.ts index c90ea0770f..c23b1ad57b 100644 --- a/src/Gui/Language/FreeCAD_zh-TW.ts +++ b/src/Gui/Language/FreeCAD_zh-TW.ts @@ -42,24 +42,24 @@ <空> - - + + Angle 角度 - - + + Axis - + Position 位置 - + Enum 列舉 @@ -112,12 +112,12 @@ Command - + Edit 編輯 - + Import 匯入 @@ -188,8 +188,8 @@ 佈置 - + Transform 轉換 @@ -421,42 +421,42 @@ EditMode - + Default 預設 - + The object will be edited using the mode defined internally to be the most appropriate for the object type 此物件將被使用內部定義模式來編輯,這會是最適合的物件類型。 - + Transform 轉換 - + The object will have its placement editable with the Std TransformManip command 此物件的位置將可透過 Std TransformManip 指令進行編輯 - + Cutting 切割 - + This edit mode is implemented as available but currently does not seem to be used by any object 此編輯模式已實作為可用,但目前似乎沒有被任何物件使用 - + Color 色彩 - + The object will have the color of its individual faces editable with the Part FaceColors command 該物件的個別面的顏色將可透過 Part FaceColors 指令進行編輯 @@ -6107,15 +6107,15 @@ Do you want to save your changes? PDF 格式 - + Graphviz format Graphviz 格式 - + Export graph 匯出圖形 @@ -6612,7 +6612,7 @@ How do you want to proceed? Gui::PropertyEditor::LinkLabel - + Change the linked object 更改此鏈結物件 @@ -6620,12 +6620,12 @@ How do you want to proceed? Gui::PropertyEditor::LinkSelection - + Error 錯誤 - + Object not found 未發現物件 @@ -7460,7 +7460,7 @@ Do you want to specify another directory? Gui::TreeDockWidget - + Tree view 樹狀檢視 @@ -7468,7 +7468,7 @@ Do you want to specify another directory? Gui::TreePanel - + Search 搜尋 @@ -7476,183 +7476,183 @@ Do you want to specify another directory? Gui::TreeWidget - + Search... 搜尋... - + Search for objects 搜尋物件 - + Activate document 啟動文件 - + Activate document %1 啟動文件 %1 - + Tree settings 樹狀設定 - + Show description column 顯示說明欄 - + Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property. 為項目描述顯示一個額外的樹狀檢視圖列。此項目描述可以藉由按 F2 來設定 (或者您 OS 的編輯按鍵) 或藉由編輯其 'label2' 屬性。 - + Group 群組 - + Labels & Attributes 標籤和屬性 - + Description 說明 - + Show items hidden in tree view 在樹狀檢視圖中顯示隱藏項目 - + Show items that are marked as 'hidden' in the tree view 在樹狀檢視圖中顯示被標為 '隱藏' 的項目 - + Toggle visibility in tree view 在樹狀圖中切換可見性 - + Toggles the visibility of selected items in the tree view 切換樹狀圖中被選項目的可見性 - + Create group... 建立群組... - + Create a group 建立一個群組 - - + + Rename 重新命名 - + Rename object 重新命名物件 - + Finish editing 完成編輯 - + Finish editing object 完成編輯物件 - + Add dependent objects to selection 將相依物件增加到選擇 - + Adds all dependent objects to the selection 將所有相依物件增加到選擇 - + Close document 關閉文件 - + Close the document 關閉此文件 - + Reload document 重新載入文件 - + Reload a partially loaded document 重新載入一部份載入之文件 - + Skip recomputes 略過重新計算 - + Enable or disable recomputations of document 啟用或停用文件重新運算之功能 - + Allow partial recomputes 允許部份重新計算 - + Enable or disable recomputating editing object when 'skip recomputation' is enabled 啟用'跳過重新計算'時啟用或停用重新計算編輯物件 - + Mark to recompute 標記為重新計算 - + Mark this object to be recomputed 標記此物件來作重新計算 - + Recompute object 重新計算物件 - + Recompute the selected object 重新計算所選的物件 - + (but must be executed) (但是必須被執行) - + %1, Internal name: %2 %1,內部名稱:%2 @@ -7948,45 +7948,45 @@ Do you want to specify another directory? Python - - - + + + Unknown filetype 未知檔案類型 - - + + Cannot open unknown filetype: %1 無法開啟未知文件類型:%1 - + Export failed 匯出失敗 - + Cannot save to unknown filetype: %1 無法儲存為未知的檔案類型:%1 - + Workbench failure 工作台故障 - + %1 %1 - + This system is running OpenGL %1.%2. FreeCAD requires OpenGL 2.0 or above. Please upgrade your graphics driver and/or card as required. 此系統正在運行 OpenGL %1.%2。FreeCAD 需要 OpenGL 2.0 或更高的版本。請依要求升級您的繪圖驅動程式與/或繪圖卡。 - + Invalid OpenGL Version 無效的 OpenGL 版本 @@ -8037,8 +8037,8 @@ Do you want to specify another directory? 匯出 PDF... - + Unsaved document 未儲存文件 @@ -8511,36 +8511,36 @@ Choose 'Abort' to abort 儲存巨集 - - + + Finish 結束 - - + + Clear 清除 - - - + + + Cancel 取消 - + Inner 內部 - + Outer 外部 - + Split 分割 @@ -8578,12 +8578,12 @@ Please open a browser window and type in: http://localhost:%1. 選項 ... - + Out of memory 記憶體不足 - + Not enough memory available to display the data. 沒有足夠的記憶體可用來顯示資料。 @@ -8599,7 +8599,7 @@ Please open a browser window and type in: http://localhost:%1. 在%2與%3中找不到檔案 %1 - + Navigation styles 導航模式 @@ -8770,8 +8770,8 @@ underscore, and must not start with a digit. 加入屬性至 '%1':%2 失敗 - - + + Drag & drop failed 拖放操作失敗 @@ -8871,7 +8871,7 @@ the current copy will be lost. 覆蓋顏色... - + Edit %1 編輯 %1 @@ -8896,8 +8896,8 @@ the current copy will be lost. 切換重疊視圖 - + Toggle floating window Toggle floating window @@ -8913,187 +8913,192 @@ the current copy will be lost. 請按 ESC 鍵來隱藏提示 - + UI 使用者介面 - + Tree view 樹狀檢視 - + Item background color Item background color - + Item background padding Item background padding - + Resizable columns 可調整大小的列 - + + Show visibility icon + Show visibility icon + + + Hide extra column Hide extra column - + Hide scroll bar 隱藏捲動軸 - + Hide header 隱藏標頭 - + IconSize 圖示大小 - + FontSize 字體大小 - + ItemSpacing ItemSpacing - + Overlay 重疊 - + Hide tab bar 隱藏分頁列 - + Hide property view scroll bar Hide property view scroll bar - + Auto hide in non 3D view 在非 3D 視圖中自動隱藏 - + Auto mouse pass through 自動滑鼠通過 - + Auto mouse wheel pass through 自動滑鼠滾輪通過 - + Delay mouse wheel pass through (ms) 延遲滑鼠滾輪通過(ms) - + Alpha test radius Alpha test radius - + Check Navigation Cube 檢查導覽立方體 - + Hint trigger size 提示觸發區域大小 - + Hint width 提示寬度 - + Left panel hint offset 左側面板提示偏移量 - + Left panel hint length 左側面板提示長度 - + Right panel hint offset 右側面板提示偏移量 - + Right panel hint length 右側面板提示長度 - + Top panel hint offset 上方面板提示偏移量 - + Top panel hint length 上方面板提示長度 - + Bottom panel hint offset 底部面板提示偏移量 - + Bottom panel hint length 底部面板提示長度 - + Hint show tab bar 提示顯示分頁列 - + Hint delay (ms) 提示延遲 (ms) - + Splitter auto hide delay (ms) Splitter auto hide delay (ms) - + Activate on hover 當遊標懸停在上方時觸發激活 - + Layout delay (ms) 佈局延遲(ms) - + Animation duration (ms) Animation duration (ms) - + Animation curve type Animation curve type @@ -9102,6 +9107,16 @@ the current copy will be lost. Active object Active object + + + UnSuppress + UnSuppress + + + + Suppress + Suppress + SelectionFilter @@ -10026,8 +10041,8 @@ the current copy will be lost. 建立一個新的空白檔案 - + Unnamed 未命名 @@ -11679,35 +11694,40 @@ Do you still want to proceed? TreeParams - + Tree view item background. Only effective in overlay. 樹狀檢視圖背景。只有在覆蓋有效。 - + Tree view item background padding. 樹狀檢視圖項目背景填充。 - + Hide extra tree view column for item description. 隱藏項目描述的額外樹狀檢視圖列。 - + Hide tree view scroll bar in dock overlay. 在 dock 覆蓋中隱藏樹狀檢視圖捲軸。 - + Hide tree view header view in dock overlay. 在 dock 覆蓋中隱藏樹狀檢視圖標題檢視圖。 - + Allow tree view columns to be manually resized. 允許手動調整樹狀檢視圖列的大小。 + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled + Workbench @@ -12101,17 +12121,17 @@ after FreeCAD launches XY-Plane - XY-Plane + XY-平面 XZ-Plane - XZ-Plane + XZ-平面 YZ-Plane - YZ-Plane + YZ-平面 @@ -12121,7 +12141,7 @@ after FreeCAD launches Offset: - Offset: + 偏移: diff --git a/src/Gui/MDIView.cpp b/src/Gui/MDIView.cpp index c24fa18ee1..2d69285f9c 100644 --- a/src/Gui/MDIView.cpp +++ b/src/Gui/MDIView.cpp @@ -448,4 +448,14 @@ void MDIView::setCurrentViewMode(ViewMode mode) } } +QString MDIView::buildWindowTitle() const +{ + QString windowTitle; + if (Gui::Document* document = getGuiDocument()) { + windowTitle.append(QString::fromStdString(getAppDocument()->Label.getStrValue())); + } + + return windowTitle; +} + #include "moc_MDIView.cpp" diff --git a/src/Gui/MDIView.h b/src/Gui/MDIView.h index 724c2797ae..b0002c65c8 100644 --- a/src/Gui/MDIView.h +++ b/src/Gui/MDIView.h @@ -74,6 +74,9 @@ public: void onRelabel(Gui::Document *pDoc) override; virtual void viewAll(); + /// build window title + QString buildWindowTitle() const; + /// Message handler bool onMsg(const char* pMsg,const char** ppReturn) override; /// Message handler test diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index 1a7a1c8cad..37ca728e26 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -1268,7 +1268,7 @@ void MainWindow::removeWindow(Gui::MDIView* view, bool close) void MainWindow::tabChanged(MDIView* view) { - Q_UNUSED(view); + Q_UNUSED(view) updateActions(); } @@ -1304,11 +1304,15 @@ void MainWindow::setActiveWindow(MDIView* view) Application::Instance->viewActivated(view); } -void MainWindow::onWindowActivated(QMdiSubWindow* w) +void MainWindow::onWindowActivated(QMdiSubWindow* mdi) { - if (!w) + if (!mdi) { + setWindowTitle(QString()); + setWindowModified(false); return; - auto view = dynamic_cast(w->widget()); + } + + auto view = dynamic_cast(mdi->widget()); // set active the appropriate window (it needs not to be part of mdiIds, e.g. directly after creation) if (view) @@ -1320,12 +1324,12 @@ void MainWindow::onWindowActivated(QMdiSubWindow* w) ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); bool saveWB = hGrp->GetBool("SaveWBbyTab", false); if (saveWB) { - QString currWb = w->property("ownWB").toString(); + QString currWb = mdi->property("ownWB").toString(); if (! currWb.isEmpty()) { this->activateWorkbench(currWb); } else { - w->setProperty("ownWB", QString::fromStdString(WorkbenchManager::instance()->active()->name())); + mdi->setProperty("ownWB", QString::fromStdString(WorkbenchManager::instance()->active()->name())); } } @@ -1664,7 +1668,15 @@ void MainWindow::_updateActions() d->activityTimer->stop(); Application::Instance->commandManager().testActive(); } + d->actionUpdateDelay = 0; + + if (auto view = activeWindow()) { + setWindowTitle(view->buildWindowTitle()); + if (auto document = view->getGuiDocument()) { + setWindowModified(document->isModified()); + } + } } void MainWindow::updateEditorActions() @@ -2509,97 +2521,134 @@ QMdiArea *MainWindow::getMdiArea() const return d->mdiArea; } -// ---------------------------------------------------------- - -StatusBarObserver::StatusBarObserver() - : WindowParameter("OutputWindow") +void MainWindow::setWindowTitle(const QString& string) { - msg = QString::fromLatin1("#statusBar{color: #000000}"); // black - wrn = QString::fromLatin1("#statusBar{color: #ffaa00}"); // orange - err = QString::fromLatin1("#statusBar{color: #ff0000}"); // red - Base::Console().AttachObserver(this); - getWindowParameter()->Attach(this); - getWindowParameter()->NotifyAll(); -} - -StatusBarObserver::~StatusBarObserver() -{ - getWindowParameter()->Detach(this); - Base::Console().DetachObserver(this); -} - -void StatusBarObserver::OnChange(Base::Subject &rCaller, const char * sReason) -{ - ParameterGrp& rclGrp = ((ParameterGrp&)rCaller); - auto format = QString::fromLatin1("#statusBar{color: %1}"); - if (strcmp(sReason, "colorText") == 0) { - unsigned long col = rclGrp.GetUnsigned( sReason ); - this->msg = format.arg(App::Color::fromPackedRGB(col).name()); - } - else if (strcmp(sReason, "colorWarning") == 0) { - unsigned long col = rclGrp.GetUnsigned( sReason ); - this->wrn = format.arg(App::Color::fromPackedRGB(col).name()); - } - else if (strcmp(sReason, "colorError") == 0) { - unsigned long col = rclGrp.GetUnsigned( sReason ); - this->err = format.arg(App::Color::fromPackedRGB(col).name()); - } - else if (strcmp(sReason, "colorCritical") == 0) { - unsigned long col = rclGrp.GetUnsigned( sReason ); - this->critical = format.arg(QColor((col >> 24) & 0xff,(col >> 16) & 0xff,(col >> 8) & 0xff).name()); - } -} - -void StatusBarObserver::SendLog(const std::string& notifiername, const std::string& msg, Base::LogStyle level, - Base::IntendedRecipient recipient, Base::ContentType content) -{ - (void) notifiername; - - // Do not log untranslated messages, or messages intended only to a developer to status bar - if( recipient == Base::IntendedRecipient::Developer || - content == Base::ContentType::Untranslated || - content == Base::ContentType::Untranslatable ) - return; - - int messageType = -1; - switch(level){ - case Base::LogStyle::Warning: - messageType = MainWindow::Wrn; - break; - case Base::LogStyle::Message: - messageType = MainWindow::Msg; - break; - case Base::LogStyle::Error: - messageType = MainWindow::Err; - break; - case Base::LogStyle::Log: - messageType = MainWindow::Log; - break; - case Base::LogStyle::Critical: - messageType = MainWindow::Critical; - break; - default: - break; + QString title; + QString appname = QCoreApplication::applicationName(); + if (appname.isEmpty()) { + appname = QString::fromLatin1(App::Application::Config()["ExeName"].c_str()); } - // Send the event to the main window to allow thread-safety. Qt will delete it when done. - auto ev = new CustomMessageEvent(messageType, QString::fromUtf8(msg.c_str())); - QApplication::postEvent(getMainWindow(), ev); + // allow to disable version number + ParameterGrp::handle hGen = +App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/General"); + bool showVersion = hGen->GetBool("ShowVersionInTitle", true); + + if (showVersion) { + // set main window title with FreeCAD Version + auto config = App::Application::Config(); + QString major = QString::fromUtf8(config["BuildVersionMajor"].c_str()); + QString minor = QString::fromUtf8(config["BuildVersionMinor"].c_str()); + QString point = QString::fromUtf8(config["BuildVersionPoint"].c_str()); + QString suffix = QString::fromUtf8(config["BuildVersionSuffix"].c_str()); + title = QString::fromUtf8("%1 %2.%3.%4%5").arg(appname, major, minor, point, suffix); + } + else { + title = appname; + } + + if (!string.isEmpty()) { + title = QString::fromUtf8("[*] %1 - %2").arg(string, title); + } + + QMainWindow::setWindowTitle(title); } -// ------------------------------------------------------------- + // ---------------------------------------------------------- -int ActionStyleEvent::EventType = -1; + StatusBarObserver::StatusBarObserver() + : WindowParameter("OutputWindow") + { + msg = QString::fromLatin1("#statusBar{color: #000000}"); // black + wrn = QString::fromLatin1("#statusBar{color: #ffaa00}"); // orange + err = QString::fromLatin1("#statusBar{color: #ff0000}"); // red + Base::Console().AttachObserver(this); + getWindowParameter()->Attach(this); + getWindowParameter()->NotifyAll(); + } -ActionStyleEvent::ActionStyleEvent(Style type) - : QEvent(QEvent::Type(EventType)), type(type) -{ -} + StatusBarObserver::~StatusBarObserver() + { + getWindowParameter()->Detach(this); + Base::Console().DetachObserver(this); + } -ActionStyleEvent::Style ActionStyleEvent::getType() const -{ - return type; -} + void StatusBarObserver::OnChange(Base::Subject & rCaller, const char* sReason) + { + ParameterGrp& rclGrp = ((ParameterGrp&)rCaller); + auto format = QString::fromLatin1("#statusBar{color: %1}"); + if (strcmp(sReason, "colorText") == 0) { + unsigned long col = rclGrp.GetUnsigned(sReason); + this->msg = format.arg(App::Color::fromPackedRGB(col).name()); + } + else if (strcmp(sReason, "colorWarning") == 0) { + unsigned long col = rclGrp.GetUnsigned(sReason); + this->wrn = format.arg(App::Color::fromPackedRGB(col).name()); + } + else if (strcmp(sReason, "colorError") == 0) { + unsigned long col = rclGrp.GetUnsigned(sReason); + this->err = format.arg(App::Color::fromPackedRGB(col).name()); + } + else if (strcmp(sReason, "colorCritical") == 0) { + unsigned long col = rclGrp.GetUnsigned(sReason); + this->critical = format.arg( + QColor((col >> 24) & 0xff, (col >> 16) & 0xff, (col >> 8) & 0xff).name()); + } + } + + void StatusBarObserver::SendLog(const std::string& notifiername, + const std::string& msg, + Base::LogStyle level, + Base::IntendedRecipient recipient, + Base::ContentType content) + { + (void)notifiername; + + // Do not log untranslated messages, or messages intended only to a developer to status bar + if (recipient == Base::IntendedRecipient::Developer + || content == Base::ContentType::Untranslated + || content == Base::ContentType::Untranslatable) + return; + + int messageType = -1; + switch (level) { + case Base::LogStyle::Warning: + messageType = MainWindow::Wrn; + break; + case Base::LogStyle::Message: + messageType = MainWindow::Msg; + break; + case Base::LogStyle::Error: + messageType = MainWindow::Err; + break; + case Base::LogStyle::Log: + messageType = MainWindow::Log; + break; + case Base::LogStyle::Critical: + messageType = MainWindow::Critical; + break; + default: + break; + } + + // Send the event to the main window to allow thread-safety. Qt will delete it when done. + auto ev = new CustomMessageEvent(messageType, QString::fromUtf8(msg.c_str())); + QApplication::postEvent(getMainWindow(), ev); + } + + // ------------------------------------------------------------- + + int ActionStyleEvent::EventType = -1; + + ActionStyleEvent::ActionStyleEvent(Style type) + : QEvent(QEvent::Type(EventType)) + , type(type) + {} + + ActionStyleEvent::Style ActionStyleEvent::getType() const + { + return type; + } #include "moc_MainWindow.cpp" diff --git a/src/Gui/MainWindow.h b/src/Gui/MainWindow.h index dc5aee647d..299df4d1d7 100644 --- a/src/Gui/MainWindow.h +++ b/src/Gui/MainWindow.h @@ -266,6 +266,9 @@ public Q_SLOTS: void showMessage (const QString & message, int timeout = 0); + // Set main window title + void setWindowTitle(const QString& string); + protected: /** * This method checks if the main window can be closed by checking all open documents and views. diff --git a/src/Gui/NaviCube.cpp b/src/Gui/NaviCube.cpp index 90ffe47ec5..2d164f196b 100644 --- a/src/Gui/NaviCube.cpp +++ b/src/Gui/NaviCube.cpp @@ -1226,6 +1226,7 @@ QMenu* NaviCubeImplementation::createNaviCubeMenu() { commands.emplace_back("Std_ViewIsometric"); commands.emplace_back("Separator"); commands.emplace_back("Std_ViewFitAll"); + commands.emplace_back("Std_ViewFitSelection"); commands.emplace_back("Separator"); commands.emplace_back("NaviCubeDraggableCmd"); } diff --git a/src/Gui/NavigationAnimation.cpp b/src/Gui/NavigationAnimation.cpp index 9b0c9a595c..c1601d5504 100644 --- a/src/Gui/NavigationAnimation.cpp +++ b/src/Gui/NavigationAnimation.cpp @@ -44,7 +44,7 @@ void NavigationAnimation::onStop([[maybe_unused]] bool finished) FixedTimeAnimation::FixedTimeAnimation(NavigationStyle* navigation, const SbRotation& orientation, const SbVec3f& rotationCenter, const SbVec3f& translation, - int duration) + int duration, const QEasingCurve::Type easingCurve) : NavigationAnimation(navigation) , targetOrientation(orientation) , targetTranslation(translation) @@ -53,6 +53,7 @@ FixedTimeAnimation::FixedTimeAnimation(NavigationStyle* navigation, const SbRota setDuration(duration); setStartValue(0.0); setEndValue(duration * 1.0); + setEasingCurve(easingCurve); } void FixedTimeAnimation::initialize() diff --git a/src/Gui/NavigationAnimation.h b/src/Gui/NavigationAnimation.h index 6efdae3b42..1308a8e95e 100644 --- a/src/Gui/NavigationAnimation.h +++ b/src/Gui/NavigationAnimation.h @@ -60,7 +60,7 @@ class GuiExport FixedTimeAnimation : public NavigationAnimation public: explicit FixedTimeAnimation(NavigationStyle* navigation, const SbRotation& orientation, const SbVec3f& rotationCenter, const SbVec3f& translation, - int duration); + int duration, const QEasingCurve::Type easingCurve); private: float angularVelocity; // [rad/ms] diff --git a/src/Gui/NotificationArea.cpp b/src/Gui/NotificationArea.cpp index be26d1531d..8af4b471e8 100644 --- a/src/Gui/NotificationArea.cpp +++ b/src/Gui/NotificationArea.cpp @@ -1084,7 +1084,7 @@ bool NotificationArea::confirmationRequired(Base::LogStyle level) void NotificationArea::showConfirmationDialog(const QString& notifiername, const QString& message) { - auto confirmMsg = QObject::tr("Notifier: ") + notifiername + QStringLiteral("\n\n") + message + auto confirmMsg = QObject::tr("Notifier:") + QStringLiteral(" ") + notifiername + QStringLiteral("\n\n") + message + QStringLiteral("\n\n") + QObject::tr("Do you want to skip confirmation of further critical message notifications " "while loading the file?"); diff --git a/src/Gui/OverlayManager.cpp b/src/Gui/OverlayManager.cpp index 9231ba69ca..6f08761296 100644 --- a/src/Gui/OverlayManager.cpp +++ b/src/Gui/OverlayManager.cpp @@ -989,11 +989,23 @@ public: { OverlayTitleBar *widget = new OverlayTitleBar(parent); widget->setObjectName(QStringLiteral("OverlayTitle")); + QList actions; if (auto tabWidget = qobject_cast(parent)) actions = tabWidget->actions(); + else if (auto dockWidget = qobject_cast(parent)) + { + const QDockWidget::DockWidgetFeatures features = dockWidget->features(); + + actions.append(&_actOverlay); + if (features.testFlag(QDockWidget::DockWidgetFloatable)) + actions.append(&_actFloat); + if (features.testFlag(QDockWidget::DockWidgetClosable)) + actions.append(&_actClose); + } else actions = _actions; + widget->setTitleItem(OverlayTabWidget::prepareTitleWidget(widget, actions)); return widget; } @@ -1528,6 +1540,8 @@ void OverlayManager::initDockWidget(QDockWidget *dw) this, &OverlayManager::onToggleDockWidget); QObject::connect(dw, &QDockWidget::visibilityChanged, this, &OverlayManager::onDockVisibleChange); + QObject::connect(dw, &QDockWidget::featuresChanged, + this, &OverlayManager::onDockFeaturesChange); if (auto widget = dw->widget()) { QObject::connect(widget, &QWidget::windowTitleChanged, this, &OverlayManager::onDockWidgetTitleChange); @@ -1577,6 +1591,21 @@ void OverlayManager::onDockVisibleChange(bool visible) << " visible change " << visible << ", " << dock->isVisible()); } +void OverlayManager::onDockFeaturesChange(QDockWidget::DockWidgetFeatures features) +{ + Q_UNUSED(features); + auto dw = qobject_cast(sender()); + if (!dw) + return; + + // Rebuild the title widget as it may have a different set of buttons shown. + if (QWidget *titleBarWidget = dw->titleBarWidget()) { + dw->setTitleBarWidget(nullptr); + delete titleBarWidget; + } + setupTitleBar(dw); +} + void OverlayManager::onTaskViewUpdate() { auto taskview = qobject_cast(sender()); diff --git a/src/Gui/OverlayManager.h b/src/Gui/OverlayManager.h index 47376fcde6..b7c900d1f2 100644 --- a/src/Gui/OverlayManager.h +++ b/src/Gui/OverlayManager.h @@ -24,6 +24,7 @@ #define FC_OVERLAYMANAGER_H #include +#include #include class QAction; @@ -174,6 +175,7 @@ protected: private: void onToggleDockWidget(bool checked); void onDockVisibleChange(bool visible); + void onDockFeaturesChange(QDockWidget::DockWidgetFeatures features); void onDockWidgetTitleChange(const QString &); void onTaskViewUpdate(); void onFocusChanged(QWidget *, QWidget *); diff --git a/src/Gui/PreferencePackTemplates/Shortcuts.cfg b/src/Gui/PreferencePackTemplates/Shortcuts.cfg index 48572b9e34..c82e3fd307 100644 --- a/src/Gui/PreferencePackTemplates/Shortcuts.cfg +++ b/src/Gui/PreferencePackTemplates/Shortcuts.cfg @@ -548,7 +548,7 @@ G, B, P G, B, O G, Y - G, F, P + G, F, C G, M G, R G, V diff --git a/src/Gui/PreferencePackTemplates/View.cfg b/src/Gui/PreferencePackTemplates/View.cfg index 088f6fe881..a7357e70cb 100644 --- a/src/Gui/PreferencePackTemplates/View.cfg +++ b/src/Gui/PreferencePackTemplates/View.cfg @@ -35,7 +35,7 @@ - + diff --git a/src/Gui/PreferencePages/DlgSettings3DView.ui b/src/Gui/PreferencePages/DlgSettings3DView.ui index 91b6a33e3c..3a85779209 100644 --- a/src/Gui/PreferencePages/DlgSettings3DView.ui +++ b/src/Gui/PreferencePages/DlgSettings3DView.ui @@ -60,7 +60,7 @@ lower right corner within opened files - Relative size : + Relative size: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp index d78f4c1bec..24c632801a 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp @@ -180,13 +180,8 @@ void DlgSettingsGeneral::setDecimalPointConversion(bool on) } } -void DlgSettingsGeneral::saveSettings() +void DlgSettingsGeneral::saveUnitSystemSettings() { - // must be done as very first because we create a new instance of NavigatorStyle - // where we set some attributes afterwards - int FracInch; // minimum fractional inch to display - int viewSystemIndex; // currently selected View System (unit system) - ParameterGrp::handle hGrpu = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/Units"); hGrpu->SetInt("UserSchema", ui->comboBox_UnitSystem->currentIndex()); @@ -202,25 +197,37 @@ void DlgSettingsGeneral::saveSettings() // // The inverse conversion is done when loaded. That way only one thing (the // numerical fractional inch value) needs to be stored. - FracInch = std::pow(2, ui->comboBox_FracInch->currentIndex() + 1); + + // minimum fractional inch to display + int FracInch = std::pow(2, ui->comboBox_FracInch->currentIndex() + 1); hGrpu->SetInt("FracInch", FracInch); // Set the actual format value Base::QuantityFormat::setDefaultDenominator(FracInch); // Set and save the Unit System - if ( ui->checkBox_projectUnitSystemIgnore->isChecked() ) { - viewSystemIndex = ui->comboBox_UnitSystem->currentIndex(); + if (ui->checkBox_projectUnitSystemIgnore->isChecked()) { + // currently selected View System (unit system) + int viewSystemIndex = ui->comboBox_UnitSystem->currentIndex(); + UnitsApi::setSchema(static_cast(viewSystemIndex)); + } + else if (App::Document* doc = App::GetApplication().getActiveDocument()) { + UnitsApi::setSchema(static_cast(doc->UnitSystem.getValue())); + } + else { + // if there is no existing document then the unit must still be set + int viewSystemIndex = ui->comboBox_UnitSystem->currentIndex(); UnitsApi::setSchema(static_cast(viewSystemIndex)); - } else { - App::Document* doc = App::GetApplication().getActiveDocument(); - if ( doc != nullptr ) { - UnitsApi::setSchema(static_cast(doc->UnitSystem.getValue())); - } } ui->SubstituteDecimal->onSave(); ui->UseLocaleFormatting->onSave(); +} + +void DlgSettingsGeneral::saveSettings() +{ + saveUnitSystemSettings(); + ui->RecentFiles->onSave(); ui->EnableCursorBlinking->onSave(); ui->SplashScreen->onSave(); diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.h b/src/Gui/PreferencePages/DlgSettingsGeneral.h index cab67e4716..0cb072a253 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.h +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.h @@ -75,6 +75,7 @@ public Q_SLOTS: void onUnitSystemIndexChanged(int index); private: + void saveUnitSystemSettings(); void saveDockWindowVisibility(); void loadDockWindowVisibility(); void setRecentFileSize(); diff --git a/src/Gui/PreferencePages/DlgSettingsNavigation.ui b/src/Gui/PreferencePages/DlgSettingsNavigation.ui index 8f8b3c7854..b7057b2dab 100644 --- a/src/Gui/PreferencePages/DlgSettingsNavigation.ui +++ b/src/Gui/PreferencePages/DlgSettingsNavigation.ui @@ -773,7 +773,7 @@ Mouse tilting is not disabled by this setting. 50 - 250 + 500 AnimationDuration diff --git a/src/Gui/PreferencePages/DlgSettingsPythonConsole.ui b/src/Gui/PreferencePages/DlgSettingsPythonConsole.ui index 79d2bacadd..a8a896bdfe 100644 --- a/src/Gui/PreferencePages/DlgSettingsPythonConsole.ui +++ b/src/Gui/PreferencePages/DlgSettingsPythonConsole.ui @@ -81,7 +81,7 @@ horizontal space in Python console - Python profiler interval (milliseconds): + Python profiler interval (milliseconds): diff --git a/src/Gui/PythonWrapper.cpp b/src/Gui/PythonWrapper.cpp index e2128e3ec0..29d9ef9551 100644 --- a/src/Gui/PythonWrapper.cpp +++ b/src/Gui/PythonWrapper.cpp @@ -25,6 +25,7 @@ # include # include # include +# include # include # include # include @@ -470,6 +471,9 @@ qttype* qt_getCppType(PyObject* pyobj) // https://github.com/PySide/Shiboken/blob/master/shibokenmodule/typesystem_shiboken.xml Py::Module mainmod(importShiboken(), true); Py::Callable func = mainmod.getDict().getItem("getCppPointer"); + if (func.isNull()) { + throw Py::RuntimeError("Failed to get C++ pointer"); + } Py::Tuple arguments(1); arguments[0] = Py::Object(pyobj); // PySide pointer @@ -484,12 +488,22 @@ Py::Object qt_wrapInstance(qttype object, { Py::Module mainmod(importShiboken(), true); Py::Callable func = mainmod.getDict().getItem("wrapInstance"); + if (func.isNull()) { + // Failure will be handled in the calling instance + return func; + } + + Py::Module qtmod(importPySide(moduleName)); + Py::Object item = qtmod.getDict().getItem(className); + if (item.isNull()) { + // Failure will be handled in the calling instance + return item; + } Py::Tuple arguments(2); arguments[0] = Py::asObject(PyLong_FromVoidPtr((void*)object)); + arguments[1] = item; - Py::Module qtmod(importPySide(moduleName)); - arguments[1] = qtmod.getDict().getItem(className); return func.apply(arguments); } @@ -575,17 +589,19 @@ QGraphicsObject* PythonWrapper::toQGraphicsObject(const Py::Object& pyobject) Py::Object PythonWrapper::fromQImage(const QImage& img) { #if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) - PyObject* pyobj = Shiboken::Conversions::copyToPython(getPyTypeObjectForTypeName(), - const_cast(&img)); - if (pyobj) { + auto type = getPyTypeObjectForTypeName(); + if (type) { + PyObject* pyobj = Shiboken::Conversions::copyToPython(type, const_cast(&img)); return Py::asObject(pyobj); } - - throw Py::RuntimeError("Failed to wrap image"); #else // Access shiboken/PySide via Python - return qt_wrapInstance(&img, "QImage", "QtGui"); + Py::Object obj = qt_wrapInstance(&img, "QImage", "QtGui"); + if (!obj.isNull()) { + return obj; + } #endif + throw Py::RuntimeError("Failed to wrap image"); } QImage *PythonWrapper::toQImage(PyObject *pyobj) @@ -596,18 +612,20 @@ QImage *PythonWrapper::toQImage(PyObject *pyobj) Py::Object PythonWrapper::fromQIcon(const QIcon* icon) { #if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) - const char* typeName = typeid(*const_cast(icon)).name(); - PyObject* pyobj = Shiboken::Object::newObject(getPyTypeObjectForTypeName(), - const_cast(icon), true, false, typeName); - if (pyobj) { + auto type = getPyTypeObjectForTypeName(); + if (type) { + const char* typeName = typeid(*const_cast(icon)).name(); + PyObject* pyobj = Shiboken::Object::newObject(type, const_cast(icon), true, false, typeName); return Py::asObject(pyobj); } - - throw Py::RuntimeError("Failed to wrap icon"); #else // Access shiboken/PySide via Python - return qt_wrapInstance(icon, "QIcon", "QtGui"); + Py::Object obj = qt_wrapInstance(icon, "QIcon", "QtGui"); + if (!obj.isNull()) { + return obj; + } #endif + throw Py::RuntimeError("Failed to wrap icon"); } QIcon *PythonWrapper::toQIcon(PyObject *pyobj) @@ -618,14 +636,18 @@ QIcon *PythonWrapper::toQIcon(PyObject *pyobj) Py::Object PythonWrapper::fromQDir(const QDir& dir) { #if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) - const char* typeName = typeid(dir).name(); - PyObject* pyobj = Shiboken::Object::newObject(getPyTypeObjectForTypeName(), - const_cast(&dir), false, false, typeName); - if (pyobj) { + auto type = getPyTypeObjectForTypeName(); + if (type) { + const char* typeName = typeid(dir).name(); + PyObject* pyobj = Shiboken::Object::newObject(type, const_cast(&dir), false, false, typeName); return Py::asObject(pyobj); } #else - Q_UNUSED(dir) + // Access shiboken/PySide via Python + Py::Object obj = qt_wrapInstance(&dir, "QDir", "QtGui"); + if (!obj.isNull()) { + return obj; + } #endif throw Py::RuntimeError("Failed to wrap directory"); } @@ -635,6 +657,31 @@ QDir* PythonWrapper::toQDir(PyObject* pyobj) return qt_getCppType(pyobj); } +Py::Object PythonWrapper::fromQAction(QAction* action) +{ +#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) + // Access shiboken/PySide via C++ + auto type = getPyTypeObjectForTypeName(); + if (type) { + PyObject* pyobj = Shiboken::Object::newObject(type, action, false, false, "QAction"); + WrapperManager::instance().addQObject(action, pyobj); + return Py::asObject(pyobj); + } +#else + // Access shiboken/PySide via Python +# if QT_VERSION < QT_VERSION_CHECK(6,0,0) + constexpr const char* qtModWithQAction = "QtWidgets"; +# else + constexpr const char* qtModWithQAction = "QtGui"; +# endif + Py::Object obj = qt_wrapInstance(action, "QAction", qtModWithQAction); + if (!obj.isNull()) { + return obj; + } +#endif + throw Py::RuntimeError("Failed to wrap action"); +} + Py::Object PythonWrapper::fromQPrinter(QPrinter* printer) { if (!printer) { @@ -655,12 +702,14 @@ Py::Object PythonWrapper::fromQPrinter(QPrinter* printer) PyObject* pyobj = Shiboken::Object::newObject(type, printer, false, false, "QPrinter"); return Py::asObject(pyobj); } - - throw Py::RuntimeError("Failed to wrap printer"); #else // Access shiboken/PySide via Python - return qt_wrapInstance(printer, "QPrinter", "QtCore"); + Py::Object obj = qt_wrapInstance(printer, "QPrinter", "QtCore"); + if (!obj.isNull()) { + return obj; + } #endif + throw Py::RuntimeError("Failed to wrap printer"); } Py::Object PythonWrapper::fromQObject(QObject* object, const char* className) @@ -668,68 +717,56 @@ Py::Object PythonWrapper::fromQObject(QObject* object, const char* className) if (!object) { return Py::None(); } -#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) - // Access shiboken/PySide via C++ - auto type = getPyTypeObjectForTypeName(); - if (type) { - std::string typeName; - if (className) { - typeName = className; - } - else { - typeName = object->metaObject()->className(); - } - - PyObject* pyobj = Shiboken::Object::newObject(type, object, false, false, typeName.c_str()); - WrapperManager::instance().addQObject(object, pyobj); - return Py::asObject(pyobj); - } - throw Py::RuntimeError("Failed to wrap object"); -#else - // Access shiboken/PySide via Python - std::string typeName; + const char* typeName; if (className) { typeName = className; } else { typeName = object->metaObject()->className(); } - - return qt_wrapInstance(object, typeName, "QtCore"); +#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) + // Access shiboken/PySide via C++ + auto type = getPyTypeObjectForTypeName(); + if (type) { + PyObject* pyobj = Shiboken::Object::newObject(type, object, false, false, typeName); + WrapperManager::instance().addQObject(object, pyobj); + return Py::asObject(pyobj); + } +#else + // Access shiboken/PySide via Python + Py::Object obj = qt_wrapInstance(object, typeName, "QtCore"); + if (!obj.isNull()) { + return obj; + } #endif + throw Py::RuntimeError("Failed to wrap object"); } Py::Object PythonWrapper::fromQWidget(QWidget* widget, const char* className) { -#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) - // Access shiboken/PySide via C++ - auto type = getPyTypeObjectForTypeName(); - if (type) { - std::string typeName; - if (className) { - typeName = className; - } - else { - typeName = widget->metaObject()->className(); - } - - PyObject* pyobj = Shiboken::Object::newObject(type, widget, false, false, typeName.c_str()); - WrapperManager::instance().addQObject(widget, pyobj); - return Py::asObject(pyobj); - } - throw Py::RuntimeError("Failed to wrap widget"); -#else - // Access shiboken/PySide via Python - std::string typeName; + const char* typeName; if (className) { typeName = className; } else { typeName = widget->metaObject()->className(); } - - return qt_wrapInstance(widget, typeName, "QtWidgets"); +#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) + // Access shiboken/PySide via C++ + auto type = getPyTypeObjectForTypeName(); + if (type) { + PyObject* pyobj = Shiboken::Object::newObject(type, widget, false, false, typeName); + WrapperManager::instance().addQObject(widget, pyobj); + return Py::asObject(pyobj); + } +#else + // Access shiboken/PySide via Python + Py::Object obj = qt_wrapInstance(widget, typeName, "QtWidgets"); + if (!obj.isNull()) { + return obj; + } #endif + throw Py::RuntimeError("Failed to wrap widget"); } const char* PythonWrapper::getWrapperName(QObject* obj) const @@ -807,7 +844,9 @@ void PythonWrapper::createChildrenNameAttributes(PyObject* root, QObject* object } Py::Object pyChild(qt_wrapInstance(child, className, "QtWidgets")); - PyObject_SetAttrString(root, name.constData(), pyChild.ptr()); + if (!pyChild.isNull()) { + PyObject_SetAttrString(root, name.constData(), pyChild.ptr()); + } #endif } createChildrenNameAttributes(root, child); diff --git a/src/Gui/PythonWrapper.h b/src/Gui/PythonWrapper.h index b854ae3fa9..f108d37285 100644 --- a/src/Gui/PythonWrapper.h +++ b/src/Gui/PythonWrapper.h @@ -29,6 +29,7 @@ #include QT_BEGIN_NAMESPACE +class QAction; class QDir; class QIcon; class QImage; @@ -58,6 +59,7 @@ public: QGraphicsObject* toQGraphicsObject(PyObject* pyPtr); QGraphicsObject* toQGraphicsObject(const Py::Object& pyObject); + Py::Object fromQAction(QAction*); Py::Object fromQPrinter(QPrinter*); Py::Object fromQObject(QObject*, const char* className=nullptr); Py::Object fromQWidget(QWidget*, const char* className=nullptr); diff --git a/src/Gui/QuantitySpinBox_p.h b/src/Gui/QuantitySpinBox_p.h index 277c0e9f76..2c084b9d50 100644 --- a/src/Gui/QuantitySpinBox_p.h +++ b/src/Gui/QuantitySpinBox_p.h @@ -51,7 +51,7 @@ Q_SIGNALS: private: const QString genericExpressionEditorTooltip = tr("Enter an expression... (=)"); - const QString expressionEditorTooltipPrefix = tr("Expression: "); + const QString expressionEditorTooltipPrefix = tr("Expression:") + QLatin1String(" "); }; #endif // QUANTITYSPINBOX_P_H diff --git a/src/Gui/RevitNavigationStyle.cpp b/src/Gui/RevitNavigationStyle.cpp index 5925936b58..be45712689 100644 --- a/src/Gui/RevitNavigationStyle.cpp +++ b/src/Gui/RevitNavigationStyle.cpp @@ -253,10 +253,13 @@ SbBool RevitNavigationStyle::processSoEvent(const SoEvent * const ev) case BUTTON1DOWN: case CTRLDOWN|BUTTON1DOWN: // make sure not to change the selection when stopping spinning - if (curmode == NavigationStyle::SPINNING || this->lockButton1 && curmode != NavigationStyle::SELECTION) + if (curmode == NavigationStyle::SPINNING + || (this->lockButton1 && curmode != NavigationStyle::SELECTION)) { newmode = NavigationStyle::IDLE; - else + } + else { newmode = NavigationStyle::SELECTION; + } break; case BUTTON1DOWN|BUTTON2DOWN: case BUTTON3DOWN: diff --git a/src/Gui/SoDatumLabel.cpp b/src/Gui/SoDatumLabel.cpp index f5fad40ee5..20ac698084 100644 --- a/src/Gui/SoDatumLabel.cpp +++ b/src/Gui/SoDatumLabel.cpp @@ -565,7 +565,7 @@ void SoDatumLabel::generateDistancePrimitives(SoAction * action, const SbVec3f& // Primitive Shape is only for text as this should only be selectable SoPrimitiveVertex pv; - this->beginShape(action, QUADS); + this->beginShape(action, TRIANGLE_STRIP); pv.setNormal( SbVec3f(0.f, 0.f, 1.f) ); @@ -616,7 +616,7 @@ void SoDatumLabel::generateDiameterPrimitives(SoAction * action, const SbVec3f& // Primitive Shape is only for text as this should only be selectable SoPrimitiveVertex pv; - this->beginShape(action, QUADS); + this->beginShape(action, TRIANGLE_STRIP); pv.setNormal( SbVec3f(0.f, 0.f, 1.f) ); @@ -653,7 +653,7 @@ void SoDatumLabel::generateAnglePrimitives(SoAction * action, const SbVec3f& p0) // Primitive Shape is only for text as this should only be selectable SoPrimitiveVertex pv; - this->beginShape(action, QUADS); + this->beginShape(action, TRIANGLE_STRIP); pv.setNormal( SbVec3f(0.f, 0.f, 1.f) ); diff --git a/src/Gui/SoFCUnifiedSelection.cpp b/src/Gui/SoFCUnifiedSelection.cpp index ff66d3a678..215316b108 100644 --- a/src/Gui/SoFCUnifiedSelection.cpp +++ b/src/Gui/SoFCUnifiedSelection.cpp @@ -782,6 +782,7 @@ void SoHighlightElementAction::initClass() SO_ACTION_INIT_CLASS(SoHighlightElementAction,SoAction); SO_ENABLE(SoHighlightElementAction, SoSwitchElement); + SO_ENABLE(SoHighlightElementAction, SoModelMatrixElement); SO_ACTION_ADD_METHOD(SoNode,nullAction); @@ -849,6 +850,7 @@ void SoSelectionElementAction::initClass() SO_ACTION_INIT_CLASS(SoSelectionElementAction,SoAction); SO_ENABLE(SoSelectionElementAction, SoSwitchElement); + SO_ENABLE(SoSelectionElementAction, SoModelMatrixElement); SO_ACTION_ADD_METHOD(SoNode,nullAction); @@ -1710,7 +1712,7 @@ void SoFCPathAnnotation::GLRenderBelowPath(SoGLRenderAction * action) if(path->getLength() != tmpPath->getLength()) { // The auditing SoPath may be truncated due to harmless things such as - // fliping a SoSwitch sibling node. So we keep an unauditing SoTempPath + // flipping a SoSwitch sibling node. So we keep an unauditing SoTempPath // around to try to restore the path. for(int i=path->getLength()-1;igetLength()-1;++i) { auto children = path->getNode(i)->getChildren(); diff --git a/src/Gui/Splashscreen.cpp b/src/Gui/Splashscreen.cpp index 4fa0e28aef..9660a07660 100644 --- a/src/Gui/Splashscreen.cpp +++ b/src/Gui/Splashscreen.cpp @@ -808,7 +808,6 @@ void AboutDialog::copyToClipboard() deskInfo = QLatin1String(" (") + deskEnv + QLatin1String("/") + deskSess + QLatin1String(")"); } - str << "```\n"; str << "OS: " << prettyProductInfoWrapper() << deskInfo << '\n'; str << "Word size of " << exe << ": " << QSysInfo::WordSize << "-bit\n"; str << "Version: " << major << "." << minor << "." << point << suffix << "." << build; @@ -884,12 +883,11 @@ void AboutDialog::copyToClipboard() auto disablingFile = mod.path() / "ADDON_DISABLED"; if (fs::exists(disablingFile)) str << " (Disabled)"; - + str << "\n"; } } - str << "```\n"; QClipboard* cb = QApplication::clipboard(); cb->setText(data); } diff --git a/src/Gui/StartupProcess.cpp b/src/Gui/StartupProcess.cpp index e294f7ce27..9c5e7e571b 100644 --- a/src/Gui/StartupProcess.cpp +++ b/src/Gui/StartupProcess.cpp @@ -237,30 +237,8 @@ void StartupPostProcess::execute() void StartupPostProcess::setWindowTitle() { - // allow to disable version number - ParameterGrp::handle hGen = - App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/General"); - bool showVersion = hGen->GetBool("ShowVersionInTitle", true); - - QString appName = QCoreApplication::applicationName(); - if (appName.isEmpty()) { - appName = QString::fromLatin1(App::Application::Config()["ExeName"].c_str()); - } - if (showVersion) { - // set main window title with FreeCAD Version - std::map& config = App::Application::Config(); - QString major = QString::fromLatin1(config["BuildVersionMajor"].c_str()); - QString minor = QString::fromLatin1(config["BuildVersionMinor"].c_str()); - QString point = QString::fromLatin1(config["BuildVersionPoint"].c_str()); - QString suffix = QString::fromLatin1(config["BuildVersionSuffix"].c_str()); - QString title = QString::fromLatin1("%1 %2.%3.%4%5").arg( - appName, major, minor, point, suffix - ); - mainWindow->setWindowTitle(title); - } - else { - mainWindow->setWindowTitle(appName); - } + // empty window title QString sets default title (app + version) + mainWindow->setWindowTitle(QString()); } void StartupPostProcess::setProcessMessages() diff --git a/src/Gui/TinkerCADNavigationStyle.cpp b/src/Gui/TinkerCADNavigationStyle.cpp index a35632f7bd..ff8e8ee85d 100644 --- a/src/Gui/TinkerCADNavigationStyle.cpp +++ b/src/Gui/TinkerCADNavigationStyle.cpp @@ -224,6 +224,9 @@ SbBool TinkerCADNavigationStyle::processSoEvent(const SoEvent * const ev) newmode = NavigationStyle::SELECTION; break; case BUTTON2DOWN: + if (newmode != NavigationStyle::DRAGGING) { + saveCursorPosition(ev); + } newmode = NavigationStyle::DRAGGING; break; case BUTTON3DOWN: diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 1bbd5def68..e4b5ba6b34 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -1564,7 +1564,7 @@ void TreeWidget::mousePressEvent(QMouseEvent* event) { QTreeWidget::mousePressEvent(event); - // Handle the visibility icon after the normal event processing to not interfer with + // Handle the visibility icon after the normal event processing to not interfere with // the selection logic. if (isVisibilityIconEnabled()) { QTreeWidgetItem* item = itemAt(event->pos()); @@ -5163,8 +5163,10 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 auto linked = obj->getLinkedObject(false); bool external = object()->getDocument() != getOwnerDocument()->document() || (linked && linked->getDocument() != obj->getDocument()); + bool freezed = pObject->isFreezed(); int currentStatus = + ((freezed ? 0 : 1) << 5) | ((external ? 0 : 1) << 4) | ((object()->showInTree() ? 0 : 1) << 3) | ((pObject->isError() ? 1 : 0) << 2) | @@ -5320,42 +5322,71 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 pxOn = BitmapFactory().merge(pxOn, pxExternal, BitmapFactoryInst::BottomRight); } + if (freezed) { + static QPixmap pxFreeze; + if (pxFreeze.isNull()) { + // object is in freezed state + const char* const feature_freezed_xpm[] = { + "16 16 2 1", + " c None", + ". c #00EEFF", + " . . . ", + " . ... . ", + " .. . .. ", + " .... . .... ", + " .. . .. ", + " . . . . .", + " . ... . ", + " ...............", + " . ... . ", + " . . . . .", + " .. . .. ", + " .... . .... ", + " .. . .. ", + " . ... . ", + " . . . ", + " "}; + pxFreeze = QPixmap(feature_freezed_xpm); + } + pxOff = BitmapFactory().merge(pxOff, pxFreeze, BitmapFactoryInst::TopLeft); + pxOn = BitmapFactory().merge(pxOn, pxFreeze, BitmapFactoryInst::TopLeft); + } + icon.addPixmap(pxOn, QIcon::Normal, QIcon::On); icon.addPixmap(pxOff, QIcon::Normal, QIcon::Off); icon = object()->mergeColorfulOverlayIcons(icon); + + if (isVisibilityIconEnabled()) { + static QPixmap pxVisible, pxInvisible; + if (pxVisible.isNull()) { + pxVisible = BitmapFactory().pixmap("TreeItemVisible"); + } + if (pxInvisible.isNull()) { + pxInvisible = BitmapFactory().pixmap("TreeItemInvisible"); + } + + // Prepend the visibility pixmap to the final icon pixmaps and use these as the icon. + QIcon new_icon; + for (auto state: {QIcon::On, QIcon::Off}) { + QPixmap px_org = icon.pixmap(0xFFFF, 0xFFFF, QIcon::Normal, state); + + QPixmap px(2*px_org.width(), px_org.height()); + px.fill(Qt::transparent); + + QPainter pt; + pt.begin(&px); + pt.setPen(Qt::NoPen); + pt.drawPixmap(0, 0, px_org.width(), px_org.height(), (currentStatus & 1) ? pxVisible : pxInvisible); + pt.drawPixmap(px_org.width(), 0, px_org.width(), px_org.height(), px_org); + pt.end(); + + new_icon.addPixmap(px, QIcon::Normal, state); + } + icon = new_icon; + } } - if (isVisibilityIconEnabled()) { - static QPixmap pxVisible, pxInvisible; - if (pxVisible.isNull()) { - pxVisible = BitmapFactory().pixmap("TreeItemVisible"); - } - if (pxInvisible.isNull()) { - pxInvisible = BitmapFactory().pixmap("TreeItemInvisible"); - } - - // Prepend the visibility pixmap to the final icon pixmaps and use these as the icon. - QIcon new_icon; - for (auto state: {QIcon::On, QIcon::Off}) { - QPixmap px_org = icon.pixmap(0xFFFF, 0xFFFF, QIcon::Normal, state); - - QPixmap px(2*px_org.width(), px_org.height()); - px.fill(Qt::transparent); - - QPainter pt; - pt.begin(&px); - pt.setPen(Qt::NoPen); - pt.drawPixmap(0, 0, px_org.width(), px_org.height(), (currentStatus & 1) ? pxVisible : pxInvisible); - pt.drawPixmap(px_org.width(), 0, px_org.width(), px_org.height(), px_org); - pt.end(); - - new_icon.addPixmap(px, QIcon::Normal, state); - } - icon = new_icon; - } - - _Timing(2, setIcon); this->setIcon(0, icon); } diff --git a/src/Gui/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index b01142cf9e..62322b8683 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -3406,11 +3406,15 @@ void View3DInventorViewer::startAnimation(const SbRotation& orientation, if (duration < 0) { duration = App::GetApplication() .GetParameterGroupByPath("User parameter:BaseApp/Preferences/View") - ->GetInt("AnimationDuration", 250); + ->GetInt("AnimationDuration", 500); } + QEasingCurve::Type easingCurve = static_cast(App::GetApplication() + .GetParameterGroupByPath("User parameter:BaseApp/Preferences/View") + ->GetInt("NavigationAnimationEasingCurve", QEasingCurve::Type::InOutCubic)); + auto animation = std::make_shared( - navigation, orientation, rotationCenter, translation, duration); + navigation, orientation, rotationCenter, translation, duration, easingCurve); navigation->startAnimating(animation, wait); } diff --git a/src/Gui/Workbench.cpp b/src/Gui/Workbench.cpp index 131e938f98..7da27f86c6 100644 --- a/src/Gui/Workbench.cpp +++ b/src/Gui/Workbench.cpp @@ -538,6 +538,7 @@ std::list Workbench::listCommandbars() const qApp->translate("Workbench", "Workbench"); qApp->translate("Workbench", "Structure"); qApp->translate("Workbench", "Standard views"); + qApp->translate("Workbench", "Individual views"); qApp->translate("Workbench", "Axonometric"); qApp->translate("Workbench", "&Stereo"); qApp->translate("Workbench", "&Zoom"); @@ -609,7 +610,8 @@ void StdWorkbench::setupContextMenu(const char* recipient, MenuItem* item) const else if (strcmp(recipient,"Tree") == 0) { if (Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) > 0) { - *item << "Std_Placement" << "Std_ToggleVisibility" << "Std_ShowSelection" << "Std_HideSelection" + *item << "Std_ToggleFreeze" << "Separator" + << "Std_Placement" << "Std_ToggleVisibility" << "Std_ShowSelection" << "Std_HideSelection" << "Std_ToggleSelectability" << "Std_TreeSelectAllInstances" << "Separator" << "Std_SetAppearance" << "Std_RandomColor" << "Std_ToggleTransparency" << "Separator" << "Std_Cut" << "Std_Copy" << "Std_Paste" << "Std_Delete" @@ -660,7 +662,7 @@ MenuItem* StdWorkbench::setupMenuBar() const stdviews->setCommand("Standard views"); *stdviews << "Std_ViewFitAll" << "Std_ViewFitSelection" << axoviews << "Separator" << "Std_ViewHome" << "Std_ViewFront" << "Std_ViewTop" - << "Std_ViewRight" << "Separator" << "Std_ViewRear" + << "Std_ViewRight" << "Std_ViewRear" << "Std_ViewBottom" << "Std_ViewLeft" << "Separator" << "Std_ViewRotateLeft" << "Std_ViewRotateRight" << "Separator" << "Std_StoreWorkingView" << "Std_RecallWorkingView"; @@ -811,12 +813,21 @@ ToolBarItem* StdWorkbench::setupToolBars() const // View auto view = new ToolBarItem( root ); view->setCommand("View"); - *view << "Std_ViewFitAll" << "Std_ViewFitSelection" << "Std_ViewIsometric" - << "Std_ViewFront"<< "Std_ViewTop" << "Std_ViewRight" - << "Std_ViewRear" << "Std_ViewBottom"<< "Std_ViewLeft" + *view << "Std_ViewFitAll" << "Std_ViewFitSelection" << "Std_ViewGroup" << "Separator" << "Std_DrawStyle" << "Std_TreeViewActions" << "Separator" << "Std_MeasureDistance"; + // Individual views + auto individualViews = new ToolBarItem(root, ToolBarItem::DefaultVisibility::Hidden); + individualViews->setCommand("Individual views"); + *individualViews << "Std_ViewIsometric" + << "Std_ViewFront" + << "Std_ViewRight" + << "Std_ViewTop" + << "Std_ViewRear" + << "Std_ViewLeft" + << "Std_ViewBottom"; + // Structure auto structure = new ToolBarItem( root ); structure->setCommand("Structure"); @@ -826,7 +837,7 @@ ToolBarItem* StdWorkbench::setupToolBars() const auto help = new ToolBarItem( root ); help->setCommand("Help"); *help << "Std_WhatsThis"; - + return root; } @@ -838,7 +849,7 @@ ToolBarItem* StdWorkbench::setupCommandBars() const auto view = new ToolBarItem( root ); view->setCommand("Standard views"); *view << "Std_ViewFitAll" << "Std_ViewFitSelection" << "Std_ViewIsometric" << "Separator" - << "Std_ViewFront" << "Std_ViewRight" << "Std_ViewTop" << "Separator" + << "Std_ViewFront" << "Std_ViewRight" << "Std_ViewTop" << "Std_ViewRear" << "Std_ViewLeft" << "Std_ViewBottom"; // Special Ops diff --git a/src/Gui/resource.cpp b/src/Gui/resource.cpp index a5746990a6..05304998a6 100644 --- a/src/Gui/resource.cpp +++ b/src/Gui/resource.cpp @@ -124,5 +124,6 @@ WidgetFactorySupplier::WidgetFactorySupplier() new WidgetProducer; new WidgetProducer; new WidgetProducer; + new WidgetProducer; } // clang-format on diff --git a/src/Main/FreeCADGuiPy.cpp b/src/Main/FreeCADGuiPy.cpp index 3f5ee458c2..808d88d3f0 100644 --- a/src/Main/FreeCADGuiPy.cpp +++ b/src/Main/FreeCADGuiPy.cpp @@ -325,7 +325,7 @@ PyMOD_INIT_FUNC(FreeCADGui) Base::Interpreter().loadModule("FreeCAD"); App::Application::Config()["AppIcon"] = "freecad"; App::Application::Config()["SplashScreen"] = "freecadsplash"; - App::Application::Config()["CopyrightInfo"] = "\xc2\xa9 Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2023\n"; + App::Application::Config()["CopyrightInfo"] = "\xc2\xa9 Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2024\n"; App::Application::Config()["LicenseInfo"] = "FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.\n"; App::Application::Config()["CreditsInfo"] = "FreeCAD wouldn't be possible without FreeCAD community.\n"; // it's possible that the GUI is already initialized when the Gui version of the executable diff --git a/src/Main/MainCmd.cpp b/src/Main/MainCmd.cpp index b8db7e028a..77f31cf7c1 100644 --- a/src/Main/MainCmd.cpp +++ b/src/Main/MainCmd.cpp @@ -50,7 +50,7 @@ using Base::Console; using App::Application; -const char sBanner[] = "(c) Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2023\n"\ +const char sBanner[] = "(c) Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2024\n"\ "FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.\n"\ "FreeCAD wouldn't be possible without FreeCAD community.\n"\ " ##### #### ### #### \n" \ diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp index acc0b55776..f95db67376 100644 --- a/src/Main/MainGui.cpp +++ b/src/Main/MainGui.cpp @@ -60,7 +60,7 @@ void PrintInitHelp(); -const char sBanner[] = "\xc2\xa9 Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2023\n"\ +const char sBanner[] = "\xc2\xa9 Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2024\n"\ "FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.\n"\ "FreeCAD wouldn't be possible without FreeCAD community.\n"\ " ##### #### ### #### \n" \ @@ -171,7 +171,7 @@ int main( int argc, char ** argv ) App::Application::Config()["SplashInfoColor" ] = "#8aadf4"; // light blue App::Application::Config()["SplashInfoPosition" ] = "6,75"; - QGuiApplication::setDesktopFileName(QStringLiteral("org.freecad.FreeCAD.desktop")); + QGuiApplication::setDesktopFileName(QStringLiteral("org.freecad.FreeCAD")); try { // Init phase =========================================================== diff --git a/src/Mod/AddonManager/Addon.py b/src/Mod/AddonManager/Addon.py index e199b09962..fb33665760 100644 --- a/src/Mod/AddonManager/Addon.py +++ b/src/Mod/AddonManager/Addon.py @@ -56,7 +56,7 @@ INTERNAL_WORKBENCHES = { "openscad": "OpenSCAD", "part": "Part", "partdesign": "PartDesign", - "path": "Path", + "cam": "CAM", "plot": "Plot", "points": "Points", "robot": "Robot", diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py index 03e2f503b1..97e635fe51 100644 --- a/src/Mod/AddonManager/AddonManager.py +++ b/src/Mod/AddonManager/AddonManager.py @@ -54,10 +54,9 @@ from addonmanager_update_all_gui import UpdateAllGUI import addonmanager_utilities as utils import addonmanager_freecad_interface as fci import AddonManager_rc # This is required by Qt, it's not unused -from package_list import PackageList, PackageListItemModel -from addonmanager_package_details_controller import PackageDetailsController -from Widgets.addonmanager_widget_package_details_view import PackageDetailsView +from composite_view import CompositeView from Widgets.addonmanager_widget_global_buttons import WidgetGlobalButtonBar +from package_list import PackageListItemModel from Addon import Addon from AddonStats import AddonStats from manage_python_dependencies import ( @@ -138,11 +137,13 @@ class CommandAddonManager: self.update_all_worker = None self.developer_mode = None self.installer_gui = None + self.composite_view = None self.button_bar = None self.update_cache = False self.dialog = None self.startup_sequence = [] + self.packages_with_updates = set() # Set up the connection checker self.connection_checker = ConnectionCheckerGUI() @@ -193,7 +194,7 @@ class CommandAddonManager: pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") w = pref.GetInt("WindowWidth", 800) h = pref.GetInt("WindowHeight", 600) - self.dialog.resize(w, h) + self.composite_view = CompositeView(self.dialog) self.button_bar = WidgetGlobalButtonBar(self.dialog) # If we are checking for updates automatically, hide the Check for updates button: @@ -204,19 +205,11 @@ class CommandAddonManager: self.button_bar.update_all_addons.hide() # Set up the listing of packages using the model-view-controller architecture - self.package_list = PackageList(self.dialog) self.item_model = PackageListItemModel() - self.package_list.setModel(self.item_model) - self.dialog.layout().addWidget(self.package_list) + self.composite_view.setModel(self.item_model) + self.dialog.layout().addWidget(self.composite_view) self.dialog.layout().addWidget(self.button_bar) - # Package details start out hidden - self.packageDetails = PackageDetailsView(self.dialog) - self.package_details_controller = PackageDetailsController(self.packageDetails) - self.packageDetails.hide() - index = self.dialog.layout().indexOf(self.package_list) - self.dialog.layout().insertWidget(index, self.packageDetails) - # set nice icons to everything, by theme with fallback to FreeCAD icons self.dialog.setWindowIcon(QtGui.QIcon(":/icons/AddonManager.svg")) @@ -243,17 +236,16 @@ class CommandAddonManager: ) self.button_bar.python_dependencies.clicked.connect(self.show_python_updates_dialog) self.button_bar.developer_tools.clicked.connect(self.show_developer_tools) - self.package_list.ui.progressBar.stop_clicked.connect(self.stop_update) - self.package_list.itemSelected.connect(self.table_row_activated) - self.package_list.setEnabled(False) - self.package_details_controller.execute.connect(self.executemacro) - self.package_details_controller.install.connect(self.launch_installer_gui) - self.package_details_controller.uninstall.connect(self.remove) - self.package_details_controller.update.connect(self.update) - self.package_details_controller.back.connect(self.on_buttonBack_clicked) - self.package_details_controller.update_status.connect(self.status_updated) + self.composite_view.package_list.ui.progressBar.stop_clicked.connect(self.stop_update) + self.composite_view.package_list.setEnabled(False) + self.composite_view.execute.connect(self.executemacro) + self.composite_view.install.connect(self.launch_installer_gui) + self.composite_view.uninstall.connect(self.remove) + self.composite_view.update.connect(self.update) + self.composite_view.update_status.connect(self.status_updated) # center the dialog over the FreeCAD window + self.dialog.resize(w, h) mw = FreeCADGui.getMainWindow() self.dialog.move( mw.frameGeometry().topLeft() + mw.rect().center() - self.dialog.rect().center() @@ -400,14 +392,11 @@ class CommandAddonManager: self.check_python_updates, self.fetch_addon_stats, self.fetch_addon_score, + self.select_addon, ] pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") if pref.GetBool("DownloadMacros", False): self.startup_sequence.append(self.load_macro_metadata) - selection = pref.GetString("SelectedAddon", "") - if selection: - self.startup_sequence.insert(2, functools.partial(self.select_addon, selection)) - pref.SetString("SelectedAddon", "") self.number_of_progress_regions = len(self.startup_sequence) self.current_progress_region = 0 self.do_next_startup_phase() @@ -428,7 +417,7 @@ class CommandAddonManager: ) pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") pref.SetString("LastCacheUpdate", date.today().isoformat()) - self.package_list.item_filter.invalidateFilter() + self.composite_view.package_list.item_filter.invalidateFilter() def populate_packages_table(self) -> None: self.item_model.clear() @@ -481,8 +470,8 @@ class CommandAddonManager: f.write(json.dumps(self.package_cache, indent=" ")) def activate_table_widgets(self) -> None: - self.package_list.setEnabled(True) - self.package_list.ui.view_bar.search.setFocus() + self.composite_view.package_list.setEnabled(True) + self.composite_view.package_list.ui.view_bar.search.setFocus() self.do_next_startup_phase() def populate_macros(self) -> None: @@ -581,17 +570,12 @@ class CommandAddonManager: else: self.do_next_startup_phase() - def select_addon(self, name: str) -> None: - found = False - for addon in self.item_model.repos: - if addon.name == name: - self.table_row_activated(addon) - found = True - break - if not found: - FreeCAD.Console.PrintWarning( - translate("AddonsInstaller", "Could not find addon '{}' to select\n").format(name) - ) + def select_addon(self) -> None: + prefs = fci.Preferences() + selection = prefs.get("SelectedAddon") + if selection: + self.composite_view.package_list.select_addon(selection) + prefs.set("SelectedAddon", "") self.do_next_startup_phase() def check_updates(self) -> None: @@ -648,7 +632,11 @@ class CommandAddonManager: if number_of_updates: self.button_bar.set_number_of_available_updates(number_of_updates) - elif hasattr(self, "check_worker") and self.check_worker.isRunning(): + elif ( + hasattr(self, "check_worker") + and self.check_worker is not None + and self.check_worker.isRunning() + ): self.button_bar.update_all_addons.setText( translate("AddonsInstaller", "Checking for updates...") ) @@ -687,8 +675,8 @@ class CommandAddonManager: def fetch_addon_score(self) -> None: """Fetch the Addon score JSON data from a URL""" - pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") - url = pref.GetString("AddonsScoreURL", "NONE") + prefs = fci.Preferences() + url = prefs.get("AddonsScoreURL") if url and url != "NONE": self.get_addon_score_worker = GetAddonScoreWorker( url, self.item_model.repos, self.dialog @@ -698,14 +686,14 @@ class CommandAddonManager: self.get_addon_score_worker.update_addon_score.connect(self.update_addon_score) self.get_addon_score_worker.start() else: - self.package_list.ui.view_bar.set_rankings_available(False) + self.composite_view.package_list.ui.view_bar.set_rankings_available(False) self.do_next_startup_phase() def update_addon_score(self, addon: Addon): self.item_model.reload_item(addon) def score_fetched_successfully(self): - self.package_list.ui.view_bar.set_rankings_available(True) + self.composite_view.package_list.ui.view_bar.set_rankings_available(True) def show_developer_tools(self) -> None: """Display the developer tools dialog""" @@ -780,27 +768,11 @@ class CommandAddonManager: return addonicon - def table_row_activated(self, selected_repo: Addon) -> None: - """a row was activated, show the relevant data""" - - self.package_list.hide() - self.packageDetails.show() - self.package_details_controller.show_repo(selected_repo) - def show_information(self, message: str) -> None: """shows generic text in the information pane""" - self.package_list.ui.progressBar.set_status(message) - self.package_list.ui.progressBar.repaint() - - def show_workbench(self, repo: Addon) -> None: - self.package_list.hide() - self.packageDetails.show() - self.package_details_controller.show_repo(repo) - - def on_buttonBack_clicked(self) -> None: - self.packageDetails.hide() - self.package_list.show() + self.composite_view.package_list.ui.progressBar.set_status(message) + self.composite_view.package_list.ui.progressBar.repaint() def append_to_repos_list(self, repo: Addon) -> None: """this function allows threads to update the main list of workbenches""" @@ -815,7 +787,7 @@ class CommandAddonManager: else: repo.set_status(Addon.Status.NO_UPDATE_AVAILABLE) self.item_model.reload_item(repo) - self.package_details_controller.show_repo(repo) + self.composite_view.package_details_controller.show_repo(repo) def launch_installer_gui(self, addon: Addon) -> None: if self.installer_gui is not None: @@ -861,12 +833,12 @@ class CommandAddonManager: def hide_progress_widgets(self) -> None: """hides the progress bar and related widgets""" - self.package_list.ui.progressBar.hide() - self.package_list.ui.view_bar.search.setFocus() + self.composite_view.package_list.ui.progressBar.hide() + self.composite_view.package_list.ui.view_bar.search.setFocus() def show_progress_widgets(self) -> None: - if self.package_list.ui.progressBar.isHidden(): - self.package_list.ui.progressBar.show() + if self.composite_view.package_list.ui.progressBar.isHidden(): + self.composite_view.package_list.ui.progressBar.show() def update_progress_bar(self, current_value: int, max_value: int) -> None: """Update the progress bar, showing it if it's hidden""" @@ -883,10 +855,10 @@ class CommandAddonManager: completed_region_portion = (self.current_progress_region - 1) * region_size current_region_portion = (float(current_value) / float(max_value)) * region_size value = completed_region_portion + current_region_portion - self.package_list.ui.progressBar.set_value( + self.composite_view.package_list.ui.progressBar.set_value( value * 10 ) # Out of 1000 segments, so it moves sort of smoothly - self.package_list.ui.progressBar.repaint() + self.composite_view.package_list.ui.progressBar.repaint() def stop_update(self) -> None: self.cleanup_workers() @@ -910,7 +882,7 @@ class CommandAddonManager: if repo.status() == Addon.Status.PENDING_RESTART: self.restart_required = True self.item_model.reload_item(repo) - self.package_details_controller.show_repo(repo) + self.composite_view.package_details_controller.show_repo(repo) if repo in self.packages_with_updates: self.packages_with_updates.remove(repo) self.enable_updates(len(self.packages_with_updates)) diff --git a/src/Mod/AddonManager/AddonManagerOptions.ui b/src/Mod/AddonManager/AddonManagerOptions.ui index 66bf262816..251f2a2bc7 100644 --- a/src/Mod/AddonManager/AddonManagerOptions.ui +++ b/src/Mod/AddonManager/AddonManagerOptions.ui @@ -334,13 +334,13 @@ installed addons will be checked for available updates - AddonScoreURL + AddonsScoreURL Addons - The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see Addon Manager wiki page for formatting and hosting details). diff --git a/src/Mod/AddonManager/AddonManagerTest/app/test_addon.py b/src/Mod/AddonManager/AddonManagerTest/app/test_addon.py index 5f7c06c621..e3a20d33d4 100644 --- a/src/Mod/AddonManager/AddonManagerTest/app/test_addon.py +++ b/src/Mod/AddonManager/AddonManagerTest/app/test_addon.py @@ -217,7 +217,7 @@ class TestAddon(unittest.TestCase): addonA.requires.add("AddonB") addonB.requires.add("AddonC") addonB.requires.add("AddonD") - addonD.requires.add("Path") + addonD.requires.add("CAM") all_addons = { addonA.name: addonA, @@ -244,8 +244,8 @@ class TestAddon(unittest.TestCase): "AddonD not in required dependencies, and it should be.", ) self.assertTrue( - "Path" in deps.internal_workbenches, - "Path not in workbench dependencies, and it should be.", + "CAM" in deps.internal_workbenches, + "CAM not in workbench dependencies, and it should be.", ) def test_internal_workbench_list(self): 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 e0d22ca2ad..daa49424d8 100644 --- a/src/Mod/AddonManager/AddonManagerTest/data/depends_on_all_workbenches.xml +++ b/src/Mod/AddonManager/AddonManagerTest/data/depends_on_all_workbenches.xml @@ -21,7 +21,7 @@ OpenSCAD Workbench Part WORKBENCH PartDesign WB - path + CAM Plot POINTS ROBOTWB diff --git a/src/Mod/AddonManager/CMakeLists.txt b/src/Mod/AddonManager/CMakeLists.txt index 042ff80363..a311537cbf 100644 --- a/src/Mod/AddonManager/CMakeLists.txt +++ b/src/Mod/AddonManager/CMakeLists.txt @@ -31,6 +31,7 @@ SET(AddonManager_SRCS addonmanager_macro_parser.py addonmanager_metadata.py addonmanager_package_details_controller.py + addonmanager_preferences_defaults.json addonmanager_pyside_interface.py addonmanager_readme_controller.py addonmanager_update_all_gui.py @@ -47,6 +48,7 @@ SET(AddonManager_SRCS change_branch.py change_branch.ui compact_view.py + composite_view.py dependency_resolution_dialog.ui developer_mode.ui developer_mode_add_content.ui @@ -69,7 +71,6 @@ SET(AddonManager_SRCS loading.html manage_python_dependencies.py NetworkManager.py - addonmanager_package_details_controller.py package_list.py PythonDependencyUpdateDialog.ui select_toolbar_dialog.ui diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager.ts b/src/Mod/AddonManager/Resources/translations/AddonManager.ts index ae5026964d..d9ea36eb64 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager.ts @@ -358,48 +358,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon - + <h1>Package Name</h1> - + Version - + (tags) - - + + Description - - + + Maintainer - + Update Available - + + labelSort + + + + UpdateAvailable @@ -595,36 +600,46 @@ installed addons will be checked for available updates - Path to git executable (optional): + Score source URL + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + + + Path to git executable (optional): + + + + The path to the git executable. Autodetected if needed and not specified. - + Advanced Options - + Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode @@ -1097,17 +1112,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... - + Loading addon information - + Worker process {} is taking a long time to stop... @@ -1124,45 +1139,45 @@ installed addons will be checked for available updates - + Addon manager - + You must restart FreeCAD for changes to take effect. - + Restart now - + Restart later - - + + Refresh local cache - + Updating cache... - + Could not find addon '{}' to select - - + + Checking for updates... @@ -1208,30 +1223,30 @@ installed addons will be checked for available updates - - - + + + Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. - + + - Maintainer - + + - Author @@ -1343,10 +1358,10 @@ installed addons will be checked for available updates - - - + + + Installed @@ -1524,17 +1539,17 @@ installed addons will be checked for available updates - + Received {} response code from server - + Failed to install macro {} - + Failed to create installation manifest file: @@ -1555,9 +1570,9 @@ installed addons will be checked for available updates - + {} is not a subdirectory of {} @@ -1894,79 +1909,99 @@ installed addons will be checked for available updates - + Click for details about package {} - + Click for details about workbench {} - + Click for details about macro {} - + Maintainers: - + Tags - - updated + + {} ★ on GitHub - - + + No ★, or not on GitHub + + + + + Created + + + + + Updated + + + + + Score: + + + + + Up-to-date - - - + + + Update available - - + + Pending restart - - + + DISABLED - + Installed version - + Unknown version - + Installed on - + Available version @@ -2130,23 +2165,23 @@ installed addons will be checked for available updates - + {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} @@ -2181,127 +2216,139 @@ installed addons will be checked for available updates - + Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored - + Workbenches list was updated. - + Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... - + Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} - + git status failed for {} - + Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' - + Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} - + Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! - + Retrieving macro description... - + Retrieving info from git - + Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + + Repository URL @@ -2384,16 +2431,46 @@ installed addons will be checked for available updates Compact view + + + Alphabetical + Sort order + + + + + Last Updated + Sort order + + + + + Date Created + Sort order + + + + + GitHub Stars + Sort order + + + + + Score + Sort order + + Std_AddonMgr - + &Addon manager - + Manage external workbenches, macros, and preference packs @@ -2430,7 +2507,7 @@ installed addons will be checked for available updates QObject - + Addon Manager diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_be.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_be.qm index 21d2f2c819..03fc5cf5cf 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_be.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_be.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_be.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_be.ts index c9ce2764ed..3756158d49 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_be.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_be.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Гузік - + <h1>Package Name</h1> <h1>Назва пакета</h1> - + Version Версія - + (tags) (меткі) - - + + Description Апісанне - - + + Maintainer Суправаджальнік - + Update Available Абнаўленне даступнае - + + labelSort + Парадкаваць надпісы + + + UpdateAvailable Даступна абнаўленне @@ -545,17 +550,17 @@ installed addons will be checked for available updates Hide Addons without a license - Hide Addons without a license + Схаваць дадаткі без ліцэнзіі Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Схаваць дадаткі без ліцэнзіі FSF Free/Libre Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Схаваць дадаткі без ліцэнзіі, якая не адобраная OSI @@ -599,37 +604,47 @@ installed addons will be checked for available updates + Score source URL + URL-адрас крыніцы ацэнкі + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + URL-адрас для дадзеных ацэнкі дапаўненняў (падрабязнасці аб фарматаванні і размяшчэнні глядзіце ў дакументацыі). + + + Path to git executable (optional): Шлях да двайковага файла git (неабавязкова): - + The path to the git executable. Autodetected if needed and not specified. Шлях да двайковага файла git. Аўтаматычна вызначаецца, калі гэта неабходна і не пазначана. - + Advanced Options Дадатковыя налады - + Show option to change branches (requires git) Паказаць наладу змены галіны (патрабуецца git) - + Disable git (fall back to ZIP downloads only) Адключыць git (вярнуцца да спампоўкі толькі ZIP) - + Activate Addon Manager options intended for developers of new Addons. Задзейнічаць налады Кіравання дадаткамі, якія прызначаныя для распрацоўкі новых дадаткаў. - + Addon developer mode Рэжым распрацоўкі дадаткаў @@ -1103,17 +1118,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Запуск... - + Loading addon information Загрузка звестак аб дадатку - + Worker process {} is taking a long time to stop... Працоўнаму працэсу {} патрабуецца шмат часу, каб спыніцца... @@ -1132,46 +1147,46 @@ installed addons will be checked for available updates - + Addon manager Кіраванне дадаткамі - + You must restart FreeCAD for changes to take effect. Вы павінны перазапусціць FreeCAD, каб змены былі ўжытыя. - + Restart now Перазапусціць зараз - + Restart later Перазапусціць пазней - - + + Refresh local cache Абнавіць лакальны кэш - + Updating cache... Абнаўленне кэшу... - + Could not find addon '{}' to select Не атрымалася знайсці дадатак '{}' для выбару - - + + Checking for updates... Праверыць наяўнасць абнаўленняў... @@ -1184,22 +1199,22 @@ installed addons will be checked for available updates Update all addons - Update all addons + Абнавіць усе дадаткі Check for updates - Check for updates + Праверыць наяўнасць абнаўленняў Python dependencies... - Python dependencies... + Залежнасці асяроддзя Python... Developer tools... - Developer tools... + Інструмент распрацоўкі... @@ -1209,38 +1224,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + Прымяніць 1 даступнае абнаўленне Apply {} available updates - Apply {} available updates + Прымяніць {} даступных абнаўленняў - - - + + + Cannot launch a new installer until the previous one has finished. Не атрымалася запусціць новы ўстаноўшчык, каб скончыць працу папярэдняга. - + Execution of macro failed. See console for failure details. Не атрымалася выканаць макрас. Падрабязныя звесткі аб збоі глядзіце ў кансолі. - + + - Maintainer Суправаджальнік - + + - Author Аўтар @@ -1352,10 +1367,10 @@ installed addons will be checked for available updates Дата ўсталявання {date} - - - + + + Installed Усталявана @@ -1382,12 +1397,13 @@ installed addons will be checked for available updates Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Зменены на галіну '{}' -- калі ласка, перазапусціце, каб ужыць Дадатак. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Дадатак быў абноўлены. +Запусціце FreeCAD нанова, каб убачыць змены. @@ -1397,17 +1413,17 @@ installed addons will be checked for available updates Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + У бягучы час у галіне {}, даступна абнаўленне да версіі {} Update available to version {} - Update available to version {} + Даступна абнаўленне да версіі {} This is the latest version available - This is the latest version available + Гэта апошняя даступная версія @@ -1417,12 +1433,12 @@ installed addons will be checked for available updates WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + УВАГА: гэты дадатак прызначаны толькі для Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + УВАГА: гэты дадатак патрабуе FreeCAD {} @@ -1474,7 +1490,7 @@ installed addons will be checked for available updates Check for update - Check for update + Праверыць абнаўленне @@ -1484,7 +1500,7 @@ installed addons will be checked for available updates Change branch... - Change branch... + Змяніць галіну... @@ -1534,17 +1550,17 @@ installed addons will be checked for available updates Месцазнаходжанне новага файла ліцэнзіі - + Received {} response code from server Атрыманы {} код адказу сервера - + Failed to install macro {} Не атрымалася ўсталяваць макрас {} - + Failed to create installation manifest file: Не атрымалася стварыць файл маніфесту ўстаноўкі: @@ -1566,9 +1582,9 @@ installed addons will be checked for available updates Абраць файл гузіку для гэтага элемента зместу - + {} is not a subdirectory of {} {} не з'яўляецца ўкладзеным каталогам {} @@ -1907,91 +1923,111 @@ installed addons will be checked for available updates Пошук... - + Click for details about package {} Націсніце, каб атрымаць падрабязную інфармацыю аб пакеце {} - + Click for details about workbench {} Націсніце, каб атрымаць падрабязную інфармацыю аб варштаце {} - + Click for details about macro {} Націсніце, каб атрымаць падрабязную інфармацыю аб макрасе {} - + Maintainers: Суправаджальнікі: - + Tags Меткі - - updated - абноўлена + + {} ★ on GitHub + {} ★ на GitHub - - + + No ★, or not on GitHub + Без ★, альбо не на GitHub + + + + Created + Створана + + + + Updated + Абноўлена + + + + Score: + Ацэнкі: + + + + Up-to-date Актуальная - - - + + + Update available Даступна абнаўленне - - + + Pending restart У чаканні перазапуску - - + + DISABLED ВЫКЛЮЧАНЫ - + Installed version Усталяваная версія - + Unknown version Невядомая версія - + Installed on Усталяваны на - + Available version Даступная версія Filter by... - Filter by... + Фільтраваць па... Addon Type - Addon Type + Тып дадатку @@ -2012,7 +2048,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + Стан устаноўкі @@ -2143,23 +2179,23 @@ installed addons will be checked for available updates Не атрымалася знайсці паказаны файл макраса {} (чакаецца ў {}) - + {}: Unrecognized internal workbench '{}' {}: Непрызнаны ўнутраны варштат '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Папярэджанне распрацоўкі дадатку: URL-адрас сховішча, які ўсталяваны ў файле package.xml для дадатку {} ({}) не адпавядае спасылку, з якога ён быў выняты ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Папярэджанне распрацоўкі дадатку: галіна сховішча, якая ўсталявана ў файле package.xml для дадатку {} ({}) не адпавядае галіне, з якой яна была вынята ({}) - - + + Got an error when trying to import {} Адбылася памылка пры спробе імпартаваць {} @@ -2194,129 +2230,143 @@ installed addons will be checked for available updates Памылка пры спробе выдаліць файл макраса {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Не атрымалася падлучыцца да GitHub. Калі ласка, праверце вашае падключэнне і налады проксі. - + WARNING: Duplicate addon {} ignored УВАГА: Паўторны дадатак {} прапушчаны - + Workbenches list was updated. Спіс варштатаў быў абноўлены. - + Git is disabled, skipping git macros Git адключаны, прапушчаны макрасы git - + Attempting to change non-git Macro setup to use git Спроба змяніць наладу макраса, які адрозніваецца ад git, на ўжыванне git - + An error occurred updating macros from GitHub, trying clean checkout... Адбылася памылка пры абнаўленні макрасаў з GitHub, спроба зрабіць clean checkout... - + Attempting to do a clean checkout... Спроба выканаць clean checkout... - + Clean checkout succeeded Паспяховы clean checkout - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Не атрымалася абнавіць макрасы з GitHub -- паспрабуйце ачысціць кэш Кіравання дадаткамі. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Памылка злучэння з Wiki, FreeCAD ў бягучы час не можа атрымаць спіс макрасаў Wiki - + Unable to fetch git updates for workbench {} Немагчыма атрымаць абнаўленні git для варштату {} - + git status failed for {} Памылка git status для {} - + Failed to read metadata from {name} Не атрымалася прачытаць метададзеныя з {name} - + Failed to fetch code for macro '{name}' Не атрымалася выняць код для макраса '{name}' - + Caching macro code... Кэшаванне коду макраса... - + Addon Manager: a worker process failed to complete while fetching {name} Кіраванне дадаткамі: працоўнаму працэсу не атрымалася выняць {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Для {num_macros} макрасаў скончыўся час чакання {num_failed} падчас апрацоўкі - + Addon Manager: a worker process failed to halt ({name}) Кіраванне дадаткамі: не атрымалася спыніць працоўны працэс ({name}) - + Getting metadata from macro {} Атрыманне метададзеных з макраса {} - + Timeout while fetching metadata for macro {} Выйшаў час чакання пры выманні метададзеных з макрасу {} - + Failed to kill process for macro {}! Не атрымалася завяршыць працэс для макраса {}! - + Retrieving macro description... Атрыманне апісання макрасу... - + Retrieving info from git Атрыманне інфармацыі з git - + Retrieving info from wiki Атрыманне інфармацыі з вікі + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Не атрымалася атрымаць статыстыку па дадатку з {} -- дакладнай будзе толькі ўпарадкаванне па алфавіце + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Не атрымалася атрымаць ацэнкі дадаткаў з '{}' -- упарадкаванне па ацэнках завяршылася памылкай + + Repository URL @@ -2377,7 +2427,7 @@ installed addons will be checked for available updates Loading page for {} from {}... - Loading page for {} from {}... + Загрузка старонкі {} з {}... @@ -2387,28 +2437,58 @@ installed addons will be checked for available updates Composite view - Composite view + Складовы выгляд Expanded view - Expanded view + Пашыраны выгляд Compact view - Compact view + Кампактны выгляд + + + + Alphabetical + Sort order + Па алфавіце + + + + Last Updated + Sort order + Апошняе абнаўленне + + + + Date Created + Sort order + Дата стварэння + + + + GitHub Stars + Sort order + Зоркі на GitHub + + + + Score + Sort order + Ацэнкі Std_AddonMgr - + &Addon manager &Кіраванне дадаткамі - + Manage external workbenches, macros, and preference packs Кіраваць вонкавымі варштатамі, макрасамі і пакетамі пераваг @@ -2445,7 +2525,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Кіраванне дадаткамі diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ca.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ca.qm index 4321f4e27f..fe963f9c06 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_ca.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_ca.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ca.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_ca.ts index 7ba31af529..cf7dc94bbd 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_ca.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_ca.ts @@ -360,48 +360,53 @@ Voleu que el gestor de complements les instal·li automàticament? Trieu "I ExpandedView - + Icon Icona - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Versió - + (tags) (etiquetes) - - + + Description Descripció - - + + Maintainer Maintainer - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable Actualització disponible @@ -597,36 +602,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Opcions avançades - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1099,17 +1114,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1128,46 +1143,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Reinicia ara - + Restart later Reinicia més tard - - + + Refresh local cache Refresh local cache - + Updating cache... S'està actualitzant la memòria cau... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... S'estan comprovant les actualitzacions... @@ -1213,30 +1228,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Maintainer - + + - Author Autor @@ -1348,10 +1363,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1529,17 +1544,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1561,9 +1576,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1900,79 +1915,99 @@ installed addons will be checked for available updates Cerca... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Etiquetes - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Installed version - + Unknown version Unknown version - + Installed on Installed on - + Available version Available version @@ -2136,23 +2171,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2187,129 +2222,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2392,16 +2441,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2438,7 +2517,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Gestor de complements diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_cs.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_cs.qm index 8ed9777f8c..42b3a90317 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_cs.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_cs.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_cs.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_cs.ts index ee250eb6eb..ea8c67a9eb 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_cs.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_cs.ts @@ -360,48 +360,53 @@ Přejete si, aby je správce doplňků automaticky nainstaloval? Vyberte "I ExpandedView - + Icon Ikona - + <h1>Package Name</h1> <h1>Název balíčku</h1> - + Version Verze - + (tags) (štítky) - - + + Description Popis - - + + Maintainer Správce - + Update Available Je dostupná aktualizace - + + labelSort + labelSort + + + UpdateAvailable Aktualizace k dispozici @@ -599,36 +604,46 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Cesta pro spuštění gitu (volitelné): - + The path to the git executable. Autodetected if needed and not specified. Cesta k spustitelnému programu git. Automaticky nalezeno, pokud je potřeba a není zadáno. - + Advanced Options Pokročilá nastavení - + Show option to change branches (requires git) Zobrazit možnost změny větví (vyžaduje git) - + Disable git (fall back to ZIP downloads only) Zakázat git (pouze pro stahování ZIP) - + Activate Addon Manager options intended for developers of new Addons. Aktivujte možnosti doplňků správce obsahu určené pro vývojáře nových doplňků. - + Addon developer mode Režim pro vývojáře @@ -1101,17 +1116,17 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace AddonsInstaller - + Starting up... Zahájení... - + Loading addon information Načítání informací o doplňku - + Worker process {} is taking a long time to stop... Pracovní proces {} trvá dlouho, než se zastaví... @@ -1130,46 +1145,46 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace - + Addon manager Správce rozšíření - + You must restart FreeCAD for changes to take effect. Aby se změny projevily, musíte FreeCAD restartovat. - + Restart now Restartovat nyní - + Restart later Restartovat později - - + + Refresh local cache Aktualizovat lokální mezipaměť - + Updating cache... Aktualizuji mezipaměť... - + Could not find addon '{}' to select Nelze najít doplněk '{}' pro výběr - - + + Checking for updates... Hledání aktualizací... @@ -1215,30 +1230,30 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Nelze spustit nový instalační program, dokud nebude ukončena předchozí instalace. - + Execution of macro failed. See console for failure details. Provedení makra selhalo. Podrobnosti o selhání viz konzola. - + + - Maintainer Správce - + + - Author Autor @@ -1350,10 +1365,10 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Nainstalováno na {date} - - - + + + Installed Nainstalováno @@ -1531,17 +1546,17 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Umístění nového licenčního souboru - + Received {} response code from server Obdržen {} kód odpovědi od serveru - + Failed to install macro {} Nepodařilo se nainstalovat macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Vyberte soubor ikony pro tuto položku obsahu - + {} is not a subdirectory of {} {} není podadresář {} @@ -1902,79 +1917,99 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Hledat... - + Click for details about package {} Klikněte pro podrobnosti o balíčku {} - + Click for details about workbench {} Klikněte pro podrobnosti o pracovním prostředí {} - + Click for details about macro {} Klikněte pro podrobnosti o makro {} - + Maintainers: Správci: - + Tags Štítky - - updated - aktualizováno + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Aktualizováno - - - + + + Update available K dispozici je aktualizace - - + + Pending restart Čekající restart - - + + DISABLED VYPNOUT - + Installed version Nainstalovaná verze - + Unknown version Neznámá verze - + Installed on Nainstalováno - + Available version Dostupná verze @@ -2138,23 +2173,23 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Nelze najít makrospecifikovaný soubor {} (očekáváno v {}) - + {}: Unrecognized internal workbench '{}' {}: Nerozpoznaný interní pracovní stůl '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Varování pro vývojáře doplňku: URL adresa repozitáře nastavená v souboru addon {} ({}) neodpovídá URL adrese, ze které byla načtena ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Varování pro vývojáře doplňku: větev repozitáře nastavená v souboru package.xml pro addon {} ({}) neodpovídá větvi, ze které byla načtena ({}) - - + + Got an error when trying to import {} Došlo k chybě při pokusu o import {} @@ -2189,129 +2224,143 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Chyba při pokusu o odstranění makro souboru {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Nepodařilo se připojit k GitHubu. Zkontrolujte nastavení připojení a proxy serveru. - + WARNING: Duplicate addon {} ignored VAROVÁNÍ: Duplikovat doplněk {} ignorován - + Workbenches list was updated. Seznam pracovních lavic byl aktualizován. - + Git is disabled, skipping git macros Git je zakázán, přeskakuji git makra - + Attempting to change non-git Macro setup to use git Pokouším se změnit nastavení negit makra pro použití gitu - + An error occurred updating macros from GitHub, trying clean checkout... Došlo k chybě při aktualizaci maker z GitHubu, pokusu o vyčištění pokladny... - + Attempting to do a clean checkout... Pokus o vyčištění pokladny... - + Clean checkout succeeded Vymazání platby bylo úspěšné - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Aktualizace maker z GitHub se nezdařila – zkuste vymazat mezipaměť Správce doplňků's. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Chyba při připojování k Wiki, FreeCAD momentálně nemůže načíst Wiki makro seznam - + Unable to fetch git updates for workbench {} Nelze načíst git aktualizace pro pracovní prostředí {} - + git status failed for {} git status selhal pro {} - + Failed to read metadata from {name} Nepodařilo se přečíst metadata z {name} - + Failed to fetch code for macro '{name}' Nepodařilo se načíst kód pro makro '{name}' - + Caching macro code... Ukládání makro kódu... - + Addon Manager: a worker process failed to complete while fetching {name} Správce doplňků: při načítání {name} se nepodařilo dokončit proces pracovníka - + Out of {num_macros} macros, {num_failed} timed out while processing Z {num_macros} maker vypršel časový limit {num_failed} při zpracování - + Addon Manager: a worker process failed to halt ({name}) Správce doplňků: proces pracovníka se nepodařilo zastavit ({name}) - + Getting metadata from macro {} Získávání metadat z makra {} - + Timeout while fetching metadata for macro {} Časový limit při načítání metadat pro makro {} - + Failed to kill process for macro {}! Nepodařilo se ukončit proces pro makro {}! - + Retrieving macro description... Načítání popisu makro... - + Retrieving info from git Načítání informací z gitu - + Retrieving info from wiki Načítání informací z wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Správce doplňků - + Manage external workbenches, macros, and preference packs Správa externích pracovních kritérií, maker a balíčků preferencí @@ -2440,7 +2519,7 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace QObject - + Addon Manager Správce rozšíření diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_de.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_de.qm index 2df0cd0227..d0ab328a5d 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_de.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_de.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_de.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_de.ts index 42a7ae87a8..0a7b2f7232 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_de.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_de.ts @@ -360,48 +360,53 @@ Soll der Addon-Manager sie automatisch installieren? "Ignorieren" wäh ExpandedView - + Icon Symbol - + <h1>Package Name</h1> <h1>Paketname</h1> - + Version Version - + (tags) (Tags) - - + + Description Beschreibung - - + + Maintainer Maintainer - + Update Available Aktualisierung verfügbar - + + labelSort + labelSort + + + UpdateAvailable Aktualisierung verfügbar @@ -543,17 +548,17 @@ installed addons will be checked for available updates Hide Addons without a license - Hide Addons without a license + Addons ohne Lizenz ausblenden Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Addons mit Nicht-FSF-Free- oder Libre-Lizenz ausblenden Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Addons mit nicht-OSI-anerkannter Lizenz ausblenden @@ -597,36 +602,46 @@ installed addons will be checked for available updates + Score source URL + Bewertung Quellen-URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + Die URL für die Bewertungs-Daten von Erweiterungen (siehe Dokumentation für Formatierung und Hosting Details). + + + Path to git executable (optional): Pfad zu Git (optional): - + The path to the git executable. Autodetected if needed and not specified. Der Pfad zur ausführbaren Git-Datei. Wird automatisch erkannt, falls erforderlich und nicht angegeben. - + Advanced Options Erweiterte Optionen - + Show option to change branches (requires git) Option zum Ändern von Zweigen anzeigen (erfordert git) - + Disable git (fall back to ZIP downloads only) Git deaktivieren (reine ZIP-Downloads) - + Activate Addon Manager options intended for developers of new Addons. Aktivieren Sie Addon-Manager-Optionen für Entwickler neuer Addons. - + Addon developer mode Addon-Entwickler-Modus @@ -1099,17 +1114,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Wird gestartet... - + Loading addon information Lädt Addon-Informationen - + Worker process {} is taking a long time to stop... Arbeitsprozess {} braucht lange, um beendet zu werden... @@ -1128,46 +1143,46 @@ installed addons will be checked for available updates - + Addon manager Addon-Manager - + You must restart FreeCAD for changes to take effect. FreeCAD muss neu gestartet werden, damit die Änderungen wirksam werden. - + Restart now Jetzt neu starten - + Restart later Später neu starten - - + + Refresh local cache Lokalen Cache aktualisieren - + Updating cache... Cache wird aktualisiert... - + Could not find addon '{}' to select Add-on '{}' zur Auswahl nicht gefunden - - + + Checking for updates... Sucht nach Updates... @@ -1180,22 +1195,22 @@ installed addons will be checked for available updates Update all addons - Update all addons + Alle Erweiterungen aktualisieren Check for updates - Check for updates + Auf Aktualisierungen prüfen Python dependencies... - Python dependencies... + Python-Abhängigkeiten... Developer tools... - Developer tools... + Entwicklerwerkzeuge... @@ -1205,38 +1220,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + 1 verfügbares Update anwenden Apply {} available updates - Apply {} available updates + {} verfügbaren Updates anwenden - - - + + + Cannot launch a new installer until the previous one has finished. Ein neuer Installer kann erst nach Beendigung des Vorherigen gestartet werden. - + Execution of macro failed. See console for failure details. Ausführen des Makros schlug fehl. Siehe Konsole für Fehlerdetails. - + + - Maintainer Betreuer - + + - Author Autor @@ -1348,10 +1363,10 @@ installed addons will be checked for available updates Installiert am {date} - - - + + + Installed Installiert @@ -1378,12 +1393,12 @@ installed addons will be checked for available updates Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Änderung zu Branch '{}' -- bitte neu starten, um Erweiterung zu verwenden. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Diese Erweiterung wurde aktualisiert. FreeCAD neustarten, um Änderungen zu sehen. @@ -1393,17 +1408,17 @@ installed addons will be checked for available updates Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + Derzeit auf Branch {}, Update verfügbar für Version {} Update available to version {} - Update available to version {} + Update verfügbar auf Version {} This is the latest version available - This is the latest version available + Dies ist die neueste verfügbare Version @@ -1413,12 +1428,12 @@ installed addons will be checked for available updates WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + WARNUNG: Diese Erweiterung ist nur für Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + WARNUNG: Diese Erweiterung benötigt FreeCAD {} @@ -1470,7 +1485,7 @@ installed addons will be checked for available updates Check for update - Check for update + Auf Update prüfen @@ -1480,7 +1495,7 @@ installed addons will be checked for available updates Change branch... - Change branch... + Git-Branch wechseln... @@ -1529,17 +1544,17 @@ installed addons will be checked for available updates Speicherort für neue Lizenzdatei - + Received {} response code from server {} Antwortcode vom Server erhalten - + Failed to install macro {} Installieren des Makros {} fehlgeschlagen - + Failed to create installation manifest file: Fehler beim Erstellen der Installations-Manifest-Datei: @@ -1561,9 +1576,9 @@ installed addons will be checked for available updates Wählen Sie eine Symboldatei für dieses Inhaltselement - + {} is not a subdirectory of {} {} ist kein Unterverzeichnis von {} @@ -1900,91 +1915,111 @@ installed addons will be checked for available updates Suche... - + Click for details about package {} Klicken für Details zum Paket {} - + Click for details about workbench {} Klicken für Details zum Arbeitsbereich {} - + Click for details about macro {} Klicken für Details zum Makro {} - + Maintainers: Betreuer: - + Tags Schlagwörter - - updated - aktualisiert + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + Kein ★, oder nicht auf GitHub + + + + Created + Erstellt + + + + Updated + Aktualisiert + + + + Score: + Bewertung: + + + + Up-to-date Auf dem neuesten Stand - - - + + + Update available Aktualisierung verfügbar - - + + Pending restart Ausstehender Neustart - - + + DISABLED DEAKTIVIERT - + Installed version Installierte Version - + Unknown version Unbekannte Version - + Installed on Installiert am - + Available version Verfügbare Version Filter by... - Filter by... + Filtern nach... Addon Type - Addon Type + Erweiterungs-Typ @@ -2005,7 +2040,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + Installationsstatus @@ -2136,23 +2171,23 @@ installed addons will be checked for available updates Datei {} konnte nicht gefunden werden (erwartet um {}) - + {}: Unrecognized internal workbench '{}' {}: Unbekannter interner Arbeitsbereich '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Add-on Entwickler Warnung: Die in der Datei package.xml für das Add-on {} ({}) angegebene Repository-URL stimmt nicht mit der URL überein, von der es abgerufen wurde ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Add-on Entwickler Warnung: Der in der package.xml-Datei für das Add-on {} ({}) angegebene Repository-Branch stimmt nicht mit dem Branch überein, aus dem es geholt wurde ({}) - - + + Got an error when trying to import {} Fehler beim Importieren von {} @@ -2187,129 +2222,143 @@ installed addons will be checked for available updates Fehler beim Entfernen der Makrodatei {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Verbindung zu GitHub fehlgeschlagen. Überprüfen Sie Ihre Verbindungs- und Proxy-Einstellungen. - + WARNING: Duplicate addon {} ignored WARNUNG: Duplizieren des Addons {} wird ignoriert - + Workbenches list was updated. Die Liste der Arbeitsbereiche wurde aktualisiert. - + Git is disabled, skipping git macros Git ist deaktiviert, Git-Makros werden übersprungen - + Attempting to change non-git Macro setup to use git Änderungsversuch des Nicht-Git-Makro-Einstellung, um git zu verwenden - + An error occurred updating macros from GitHub, trying clean checkout... Fehler beim Aktualisieren von Makros von GitHub, sauberer Checkout-Versuch wird ausgeführt... - + Attempting to do a clean checkout... Sauberer Checkout-Versuch... - + Clean checkout succeeded Sauberer Checkout war erfolgreich - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Aktualisierung der GitHub Makros fehlgeschlagen -- Versuchen Sie, den Cache des Erweiterungsmanagers zu löschen. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Fehler beim Verbinden mit dem Wiki, FreeCAD kann die Wiki-Makroliste zu diesem Zeitpunkt nicht abrufen - + Unable to fetch git updates for workbench {} Git-Updates für den Arbeitsbereich {} können nicht abgerufen werden - + git status failed for {} git Status fehlgeschlagen für {} - + Failed to read metadata from {name} Fehler beim Lesen der Metadaten von {name} - + Failed to fetch code for macro '{name}' Fehler beim Abrufen des Codes für Makro '{name}' - + Caching macro code... Makro-Code wird zwischengespeichert... - + Addon Manager: a worker process failed to complete while fetching {name} Erweiterungsmanager: Ein Arbeitsprozess konnte während des Abrufs von {name} nicht abgeschlossen werden - + Out of {num_macros} macros, {num_failed} timed out while processing Von {num_macros} Makros wurden {num_failed} während der Verarbeitung nicht rechtzeitig beendet - + Addon Manager: a worker process failed to halt ({name}) Erweiterungsmanager: Ein Arbeitsprozess ({name}) konnte nicht angehalten werden - + Getting metadata from macro {} Herauslesen von Metadaten aus Makro {} - + Timeout while fetching metadata for macro {} Timeout beim Abrufen von Metadaten für Makro {} - + Failed to kill process for macro {}! Fehler beim Beenden des Prozesses für Makro {}! - + Retrieving macro description... Makro-Beschreibung wird abgerufen... - + Retrieving info from git Informationen werden von Git abgerufen - + Retrieving info from wiki Informationen werden aus den Wiki abgerufen + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Fehler beim Abrufen der Erweiterungs-Statistiken von {} -- nur alphabetisch sortieren wird genau sein + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Fehler beim Abrufen der Erweiterungs-Bewertungen von '{}' -- Sortierung nach Bewertung wird fehlschlagen + + Repository URL @@ -2370,7 +2419,7 @@ installed addons will be checked for available updates Loading page for {} from {}... - Loading page for {} from {}... + Lade Seite für {} von {}... @@ -2380,28 +2429,58 @@ installed addons will be checked for available updates Composite view - Composite view + Zusammengesetzte Ansicht Expanded view - Expanded view + Erweiterte Ansicht Compact view - Compact view + Kompakte Ansicht + + + + Alphabetical + Sort order + Alphabetisch + + + + Last Updated + Sort order + Zuletzt aktualisiert + + + + Date Created + Sort order + Erstellungsdatum + + + + GitHub Stars + Sort order + GitHub Sterne + + + + Score + Sort order + Bewertung Std_AddonMgr - + &Addon manager &Addon-Manager - + Manage external workbenches, macros, and preference packs Verwaltet externe Arbeitsbereiche, Makros und Voreinstellungspakete @@ -2438,7 +2517,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Addon-Manager diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_el.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_el.qm index e38e69512f..263d0fc552 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_el.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_el.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_el.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_el.ts index ebbe03531d..0707dee6d0 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_el.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_el.ts @@ -361,48 +361,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Εικονίδιο - + <h1>Package Name</h1> <h1>Όνομα πακέτου</h1> - + Version Έκδοση - + (tags) (ετικέτες) - - + + Description Περιγραφή - - + + Maintainer Συντηρητής - + Update Available Διαθέσιμη Ενημέρωση - + + labelSort + labelSort + + + UpdateAvailable Διαθέσιμη ενημέρωση @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Προχωρημένες Ρυθμίσεις - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1102,17 +1117,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1131,46 +1146,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Ανανέωση τοπικής προσωρινής μνήμης - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1216,30 +1231,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Συντηρητής - + + - Author Συγγραφέας @@ -1351,10 +1366,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1532,17 +1547,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1564,9 +1579,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1903,79 +1918,99 @@ installed addons will be checked for available updates Αναζήτηση... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Ετικέτες - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Εγκατεστημένη έκδοση - + Unknown version Unknown version - + Installed on Installed on - + Available version Διαθέσιμη έκδοση @@ -2139,23 +2174,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2190,129 +2225,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2395,16 +2444,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2441,7 +2520,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Διαχειριστής Πρόσθετων diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.qm index b24200024d..5dfced0b66 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.ts index f14411e0f3..dc6559041f 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_es-AR.ts @@ -349,7 +349,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore If this is an optional dependency, the Addon Manager will offer to install it (when possible), but will not block installation if the user chooses not to, or cannot, install the package. - Si esta es una dependencia opcional, el gestor de complementos ofrecerá instalarla (cuando sea posible), pero no bloqueará la instalación si el usuario elige o no puede instalar el paquete. + Si esta es una dependencia opcional, el administrador de complementos ofrecerá instalarla (cuando sea posible), pero no bloqueará la instalación si el usuario elige o no puede instalar el paquete. @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Ícono - + <h1>Package Name</h1> <h1>Nombre del paquete</h1> - + Version Versión - + (tags) (etiquetas) - - + + Description Descripción - - + + Maintainer Mantenedor - + Update Available Actualización disponible - + + labelSort + Ordenar por etiquetas + + + UpdateAvailable Actualización disponible @@ -545,17 +550,17 @@ los complementos instalados serán revisados por actualizaciones disponibles Hide Addons without a license - Hide Addons without a license + Ocultar complementos sin licencia Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Ocultar complementos con licencia libre sin FSF Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Ocultar complementos con licencia no aprobada OSI @@ -599,36 +604,46 @@ los complementos instalados serán revisados por actualizaciones disponibles + Score source URL + URL de la fuente de puntuación + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + La URL de los datos de la puntuación del complemento (ver documentación para el formato y los detalles del alojamiento). + + + Path to git executable (optional): Ruta al ejecutable de git (opcional): - + The path to the git executable. Autodetected if needed and not specified. La ruta al ejecutable de git. Detectado automáticamente si es necesario y no especificado. - + Advanced Options Opciones avanzadas - + Show option to change branches (requires git) Mostrar opción para cambiar ramas (requiere git) - + Disable git (fall back to ZIP downloads only) Desactivar git (solo para descargas ZIP) - + Activate Addon Manager options intended for developers of new Addons. Activar opciones del Administrador de Complementos destinadas a los desarrolladores de nuevos complementos. - + Addon developer mode Modo de desarrollador de complemento @@ -676,7 +691,7 @@ los complementos instalados serán revisados por actualizaciones disponibles The following Python packages have been installed locally by the Addon Manager to satisfy Addon dependencies. Installation location: - Los siguientes paquetes de Python han sido instalados localmente por el Gestor de complementos para satisfacer las dependencias del complemento. Localización de la instalación: + Los siguientes paquetes de Python han sido instalados localmente por el administrador de complementos para satisfacer las dependencias del complemento. Ubicación de la instalación: @@ -847,7 +862,7 @@ los complementos instalados serán revisados por actualizaciones disponibles Displayed in the Addon Manager's list of Addons. Should not include the word "FreeCAD". - Mostrado en la lista de complementos del Gestor de complementos. No debe incluir la palabra "FreeCAD". + Mostrado en la lista de complementos del administrador de complementos. No debe incluir la palabra "FreeCAD". @@ -1101,17 +1116,17 @@ los complementos instalados serán revisados por actualizaciones disponibles AddonsInstaller - + Starting up... Iniciando... - + Loading addon information Cargando información del complemento - + Worker process {} is taking a long time to stop... Proceso en ejecución {} está tomando mucho tiempo en culminar. @@ -1128,46 +1143,46 @@ los complementos instalados serán revisados por actualizaciones disponibles Se cambió la lista personalizada de repositorios, forzando carga en memoria... - + Addon manager Administrador de complementos - + You must restart FreeCAD for changes to take effect. Debe reiniciar FreeCAD para que los cambios surtan efecto. - + Restart now Reiniciar ahora - + Restart later Reiniciar más adelante - - + + Refresh local cache Actualizar caché local - + Updating cache... Actualizando la información en memoria - + Could not find addon '{}' to select No se pudo encontrar el complemento '{}' para seleccionar - - + + Checking for updates... Buscando actualizaciones... @@ -1180,22 +1195,22 @@ los complementos instalados serán revisados por actualizaciones disponibles Update all addons - Update all addons + Actualizar todos los complementos Check for updates - Check for updates + Comprobar actualizaciones Python dependencies... - Python dependencies... + Dependencias de Python... Developer tools... - Developer tools... + Herramientas del desarrollador... @@ -1205,38 +1220,38 @@ los complementos instalados serán revisados por actualizaciones disponibles Apply 1 available update - Apply 1 available update + Aplicar 1 actualización disponible Apply {} available updates - Apply {} available updates + Aplicar () actualizaciones disponibles - - - + + + Cannot launch a new installer until the previous one has finished. No se puede iniciar un nuevo instalador hasta que el anterior haya terminado. - + Execution of macro failed. See console for failure details. Falló la ejecución de la macro. Vea la consola para detalles del fallo. - + + - Maintainer Mantenedor - + + - Author Autor @@ -1348,10 +1363,10 @@ los complementos instalados serán revisados por actualizaciones disponibles Instalado el {date} - - - + + + Installed Instalado @@ -1378,32 +1393,32 @@ los complementos instalados serán revisados por actualizaciones disponibles Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Cambiado a rama '{}' -- por favor reinicie para usar el complemento. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Este complemento ha sido actualizado. Reinicie FreeCAD para ver los cambios. Disabled - Disabled + Deshabilitado Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + Actualmente en la rama {}, actualización disponible a la versión {} Update available to version {} - Update available to version {} + Actualización disponible a la versión {} This is the latest version available - This is the latest version available + Esta es la última versión disponible @@ -1413,12 +1428,12 @@ los complementos instalados serán revisados por actualizaciones disponibles WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + ADVERTENCIA: Este complemento es sólo Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + ADVERTENCIA: Este complemento requiere FreeCAD {} @@ -1470,7 +1485,7 @@ los complementos instalados serán revisados por actualizaciones disponibles Check for update - Check for update + Buscar actualizaciones @@ -1480,7 +1495,7 @@ los complementos instalados serán revisados por actualizaciones disponibles Change branch... - Change branch... + Cambiar rama... @@ -1529,17 +1544,17 @@ los complementos instalados serán revisados por actualizaciones disponibles Ubicación del nuevo archivo de licencia - + Received {} response code from server Recibido {} código de respuesta del servidor - + Failed to install macro {} Error al instalar macro {} - + Failed to create installation manifest file: Error al crear archivo manifest de instalación: @@ -1561,9 +1576,9 @@ los complementos instalados serán revisados por actualizaciones disponibles Seleccione un archivo de icono para este elemento de contenido - + {} is not a subdirectory of {} {} no es un subdirectorio de {} @@ -1900,91 +1915,111 @@ los complementos instalados serán revisados por actualizaciones disponibles Búsqueda... - + Click for details about package {} Haga clic para obtener detalles sobre el paquete {} - + Click for details about workbench {} Haga clic para obtener detalles sobre el entorno de trabajo {} - + Click for details about macro {} Haga clic para obtener detalles sobre la macro {} - + Maintainers: Mantenedores: - + Tags Etiquetas - - updated - actualizado + + {} ★ on GitHub + {} ★ en GitHub - - + + No ★, or not on GitHub + Sin ★ o no en GitHub + + + + Created + Creado + + + + Updated + Actualizado + + + + Score: + Puntuación: + + + + Up-to-date Al día - - - + + + Update available Actualización disponible - - + + Pending restart Reinicio pendiente - - + + DISABLED DESHABILITADO - + Installed version Versión instalada - + Unknown version Versión desconocida - + Installed on Instalado el - + Available version Versión disponible Filter by... - Filter by... + Filtrar por... Addon Type - Addon Type + Tipo de complemento @@ -2005,7 +2040,7 @@ los complementos instalados serán revisados por actualizaciones disponibles Installation Status - Installation Status + Estado de la instalación @@ -2136,23 +2171,23 @@ los complementos instalados serán revisados por actualizaciones disponibles No se pudo encontrar el archivo especificado macro {} (se esperaba en {}) - + {}: Unrecognized internal workbench '{}' {}: Entorno de trabajo interno no reconocido '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Advertencia de desarrollador de complementos: la URL del repositorio establecida en el archivo package.xml para el complemento {} ({}) no coincide con la URL de la que fue obtenida ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Advertencia de desarrollador de complementos: la rama de repositorio establecida en el archivo package.xml para el complemento {} ({}) no coincide con la rama de la que fue obtenida ({}) - - + + Got an error when trying to import {} Se ha producido un error al intentar importar {} @@ -2187,129 +2222,143 @@ los complementos instalados serán revisados por actualizaciones disponibles Error al intentar eliminar el archivo macro {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Error al conectar a GitHub. Compruebe su conexión y configuración de proxy. - + WARNING: Duplicate addon {} ignored ADVERTENCIA: Duplicar complemento {} ignorado - + Workbenches list was updated. Lista de entornos de trabajo actualizada. - + Git is disabled, skipping git macros Git está deshabilitado, omitiendo macros git - + Attempting to change non-git Macro setup to use git Intentando cambiar la configuración de macro no git para usar git - + An error occurred updating macros from GitHub, trying clean checkout... Se ha producido un error al actualizar macros desde GitHub, intentando limpiar el checkout... - + Attempting to do a clean checkout... Intentando hacer una comprobación limpia... - + Clean checkout succeeded Comprobación limpia exitosa - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Error al actualizar macros de GitHub -- intente limpiar la caché del administrador de complementos. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error al conectar a la Wiki, FreeCAD no puede recuperar la lista de macros de la Wiki en este momento - + Unable to fetch git updates for workbench {} No se pueden obtener actualizaciones de git para el entorno de trabajo {} - + git status failed for {} git status falló para {} - + Failed to read metadata from {name} Error al leer los metadatos de {name} - + Failed to fetch code for macro '{name}' Error al obtener el código para el macro '{name}' - + Caching macro code... Código macro en caché... - + Addon Manager: a worker process failed to complete while fetching {name} Administrador de complementos: no se pudo completar un proceso al obtener {name} - + Out of {num_macros} macros, {num_failed} timed out while processing De {num_macros} macros, a {num_failed} se les agotó el tiempo durante el procesamiento - + Addon Manager: a worker process failed to halt ({name}) Administrador de complementos: un proceso de trabajo falló al detenerse ({name}) - + Getting metadata from macro {} Obteniendo metadatos de la macro {} - + Timeout while fetching metadata for macro {} Tiempo de espera agotado al buscar metadatos para la macro {} - + Failed to kill process for macro {}! ¡Error al matar el proceso para macro {}! - + Retrieving macro description... Recuperando descripción de macro... - + Retrieving info from git Recuperando información de git - + Retrieving info from wiki Recuperando información de la wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Error al obtener estadísticas del complemento de {} -- solo ordenar alfabeticamente será preciso + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + No se pudo obtener la puntuación del complemento de '{}' -- ordenar por puntuación fallará + + Repository URL @@ -2370,7 +2419,7 @@ los complementos instalados serán revisados por actualizaciones disponibles Loading page for {} from {}... - Loading page for {} from {}... + Cargando página para {} desde {}... @@ -2380,28 +2429,58 @@ los complementos instalados serán revisados por actualizaciones disponibles Composite view - Composite view + Vista compuesta Expanded view - Expanded view + Vista extendida Compact view - Compact view + Vista compacta + + + + Alphabetical + Sort order + Alfabético + + + + Last Updated + Sort order + Última actualización + + + + Date Created + Sort order + Fecha de creación + + + + GitHub Stars + Sort order + Estrellas de GitHub + + + + Score + Sort order + Puntaje Std_AddonMgr - + &Addon manager &Administrador de complementos - + Manage external workbenches, macros, and preference packs Administrar entornos de trabajo externos, macros y paquetes de preferencias @@ -2411,7 +2490,7 @@ los complementos instalados serán revisados por actualizaciones disponibles Finished removing {} - Se terminó de eliminar %s + Se terminó de eliminar {} @@ -2438,7 +2517,7 @@ los complementos instalados serán revisados por actualizaciones disponibles QObject - + Addon Manager Administrador de Complementos diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.qm index 60fcb6b59e..9383f9f8c0 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.ts index 1dd9f949d5..838fcab1dd 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.ts @@ -94,7 +94,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore" to install the Addon without installing the dependencies. Este complemento tiene las siguientes dependencias requeridas y opcionales. Debes instalarlas antes de que este complemento pueda ser usado. -¿Quieres que el gestor de complementos los instale automáticamente? Elige "Ignorar" para instalar el complemento sin instalar las dependencias. +¿Quiere que el administrador de complementos los instale automáticamente? Elige "Ignorar" para instalar el complemento sin instalar las dependencias. @@ -256,7 +256,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore Addon Manager - Gestor de complementos + Administrador de complementos @@ -276,7 +276,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore Welcome to the Addon Manager - Bienvenido al gestor de complementos + Bienvenido al administrador de complementos @@ -349,7 +349,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore If this is an optional dependency, the Addon Manager will offer to install it (when possible), but will not block installation if the user chooses not to, or cannot, install the package. - Si esta es una dependencia opcional, el gestor de complementos ofrecerá instalarla (cuando sea posible), pero no bloqueará la instalación si el usuario elige o no puede instalar el paquete. + Si esta es una dependencia opcional, el administrador de complementos ofrecerá instalarla (cuando sea posible), pero no bloqueará la instalación si el usuario elige o no puede instalar el paquete. @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Icono - + <h1>Package Name</h1> <h1>Nombre del paquete</h1> - + Version Versión - + (tags) (etiquetas) - - + + Description Descripción - - + + Maintainer Mantenedor - + Update Available Actualización disponible - + + labelSort + Ordenar por etiquetas + + + UpdateAvailable Actualización disponible @@ -501,7 +506,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore Addon manager options - Opciones del gestor de complementos + Opciones del administrador de complementos @@ -544,17 +549,17 @@ installed addons will be checked for available updates Hide Addons without a license - Hide Addons without a license + Ocultar complementos sin licencia Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Ocultar complementos con licencia libre sin FSF Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Ocultar complementos con licencia no aprobada OSI @@ -598,36 +603,46 @@ installed addons will be checked for available updates + Score source URL + URL fuente de la puntuación + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + La URL para los datos de la puntuación del complemento (ver documentación para el formato y los detalles del alojamiento). + + + Path to git executable (optional): Ruta al ejecutable de git (opcional): - + The path to the git executable. Autodetected if needed and not specified. La ruta al ejecutable de git. Detectado automáticamente si es necesario y no especificado. - + Advanced Options Opciones avanzadas - + Show option to change branches (requires git) Mostrar opción para cambiar ramas (requiere git) - + Disable git (fall back to ZIP downloads only) Desactivar git (solo para descargas ZIP) - + Activate Addon Manager options intended for developers of new Addons. - Activar opciones de gestor de complementos destinadas a los desarrolladores de nuevos complementos. + Activar opciones de administrador de complementos destinadas a los desarrolladores de nuevos complementos. - + Addon developer mode Modo de desarrollador de complemento @@ -675,7 +690,7 @@ installed addons will be checked for available updates The following Python packages have been installed locally by the Addon Manager to satisfy Addon dependencies. Installation location: - Los siguientes paquetes de Python han sido instalados localmente por el Gestor de complementos para satisfacer las dependencias del complemento. Localización de la instalación: + Los siguientes paquetes de Python han sido instalados localmente por el administrador de complementos para satisfacer las dependencias del complemento. Ubicación de la instalación: @@ -846,7 +861,7 @@ installed addons will be checked for available updates Displayed in the Addon Manager's list of Addons. Should not include the word "FreeCAD". - Mostrado en la lista de complementos del Gestor de complementos. No debe incluir la palabra "FreeCAD". + Mostrado en la lista de complementos del administrador de complementos. No debe incluir la palabra "FreeCAD". @@ -1100,17 +1115,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Iniciando... - + Loading addon information Cargando información del complemento - + Worker process {} is taking a long time to stop... Proceso en ejecución {} está tomando mucho tiempo en culminar. @@ -1127,46 +1142,46 @@ installed addons will be checked for available updates Se cambió la lista personalizada de repositorios, forzando carga en memoria... - + Addon manager Administrador de complementos - + You must restart FreeCAD for changes to take effect. Debe reiniciar FreeCAD para que los cambios surtan efecto. - + Restart now Reiniciar ahora - + Restart later Reiniciar más adelante - - + + Refresh local cache Actualizar caché local - + Updating cache... Actualizando la información en memoria - + Could not find addon '{}' to select No se pudo encontrar el complemento '{}' para seleccionar - - + + Checking for updates... Buscando actualizaciones... @@ -1179,22 +1194,22 @@ installed addons will be checked for available updates Update all addons - Update all addons + Actualizar todos los complementos Check for updates - Check for updates + Comprobar actualizaciones Python dependencies... - Python dependencies... + Dependencias de Python... Developer tools... - Developer tools... + Herramientas del desarrollador... @@ -1204,38 +1219,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + Aplicar 1 actualización disponible Apply {} available updates - Apply {} available updates + Aplicar () actualizaciones disponibles - - - + + + Cannot launch a new installer until the previous one has finished. No se puede iniciar un nuevo instalador hasta que el anterior haya terminado. - + Execution of macro failed. See console for failure details. Falló la ejecución de la macro. Vea la consola para detalles del fallo. - + + - Maintainer Mantenedor - + + - Author Autor @@ -1347,10 +1362,10 @@ installed addons will be checked for available updates Instalado el {date} - - - + + + Installed Instalado @@ -1377,32 +1392,32 @@ installed addons will be checked for available updates Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Cambiado a rama '{}' -- por favor reinicie para usar el complemento. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Este complemento ha sido actualizado. Reinicie FreeCAD para ver los cambios. Disabled - Disabled + Deshabilitado Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + Actualmente en la rama {}, actualización disponible a la versión {} Update available to version {} - Update available to version {} + Actualización disponible a la versión {} This is the latest version available - This is the latest version available + Esta es la última versión disponible @@ -1412,12 +1427,12 @@ installed addons will be checked for available updates WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + ADVERTENCIA: Este complemento es sólo Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + ADVERTENCIA: Este complemento requiere FreeCAD {} @@ -1469,7 +1484,7 @@ installed addons will be checked for available updates Check for update - Check for update + Buscar actualizaciones @@ -1479,7 +1494,7 @@ installed addons will be checked for available updates Change branch... - Change branch... + Cambiar rama... @@ -1528,17 +1543,17 @@ installed addons will be checked for available updates Ubicación del nuevo archivo de licencia - + Received {} response code from server Recibido {} código de respuesta del servidor - + Failed to install macro {} Error al instalar macro {} - + Failed to create installation manifest file: Error al crear archivo manifest de instalación: @@ -1560,9 +1575,9 @@ installed addons will be checked for available updates Seleccione un archivo de icono para este elemento de contenido - + {} is not a subdirectory of {} {} no es un subdirectorio de {} @@ -1765,7 +1780,7 @@ installed addons will be checked for available updates A macro installed with the FreeCAD Addon Manager - Una macro instalada con el gestor de complementos de FreeCAD + Una macro instalada con el administrador de complementos de FreeCAD @@ -1899,91 +1914,111 @@ installed addons will be checked for available updates Buscar... - + Click for details about package {} Haga clic para obtener detalles sobre el paquete {} - + Click for details about workbench {} Haga clic para obtener detalles sobre el entorno de trabajo {} - + Click for details about macro {} Haga clic para obtener detalles sobre la macro {} - + Maintainers: Mantenedores: - + Tags Etiquetas - - updated - actualizado + + {} ★ on GitHub + {} ★ en GitHub - - + + No ★, or not on GitHub + Sin ★, o no está en GitHub + + + + Created + Creado + + + + Updated + Actualizado + + + + Score: + Puntuación: + + + + Up-to-date Al día - - - + + + Update available Actualización disponible - - + + Pending restart Reinicio pendiente - - + + DISABLED DESHABILITADO - + Installed version Versión instalada - + Unknown version Versión desconocida - + Installed on Instalado el - + Available version Versión disponible Filter by... - Filter by... + Filtrar por... Addon Type - Addon Type + Tipo de complemento @@ -2004,7 +2039,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + Estado de la instalación @@ -2135,23 +2170,23 @@ installed addons will be checked for available updates No se pudo encontrar el archivo especifico para la macro {} (se esperaba en {}) - + {}: Unrecognized internal workbench '{}' {}: Entorno de trabajo interno no reconocido '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Advertencia de desarrollador de complementos: la URL del repositorio establecida en el archivo package.xml para el complemento {} ({}) no coincide con la URL de la que fue obtenida ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Advertencia de desarrollador de complementos: la rama de repositorio establecida en el archivo package.xml para el complemento {} ({}) no coincide con la rama de la que fue obtenida ({}) - - + + Got an error when trying to import {} Se ha producido un error al intentar importar {} @@ -2186,129 +2221,143 @@ installed addons will be checked for available updates Error al intentar eliminar el archivo macro {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Error al conectar a GitHub. Compruebe su conexión y configuración de proxy. - + WARNING: Duplicate addon {} ignored ADVERTENCIA: Duplicar complemento {} ignorado - + Workbenches list was updated. Lista de entornos de trabajo actualizada. - + Git is disabled, skipping git macros Git está deshabilitado, omitiendo macros git - + Attempting to change non-git Macro setup to use git Intentando cambiar la configuración de macro no git para usar git - + An error occurred updating macros from GitHub, trying clean checkout... Se ha producido un error al actualizar macros desde GitHub, intentando limpiar el checkout... - + Attempting to do a clean checkout... Intentando hacer una comprobación limpia... - + Clean checkout succeeded Comprobación limpia exitosa - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Error al actualizar macros de GitHub -- intente limpiar la caché del administrador de complementos. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error al conectar a la Wiki, FreeCAD no puede recuperar la lista de macros de la Wiki en este momento - + Unable to fetch git updates for workbench {} No se pueden obtener actualizaciones de git para el entorno de trabajo {} - + git status failed for {} git status falló para {} - + Failed to read metadata from {name} Error al leer los metadatos de {name} - + Failed to fetch code for macro '{name}' Error al obtener el código para el macro '{name}' - + Caching macro code... Código macro en caché... - + Addon Manager: a worker process failed to complete while fetching {name} Administrador de complementos: no se pudo completar un proceso al obtener {name} - + Out of {num_macros} macros, {num_failed} timed out while processing De {num_macros} macros, a {num_failed} se les agotó el tiempo durante el procesamiento - + Addon Manager: a worker process failed to halt ({name}) Administrador de complementos: un proceso de trabajo falló al detenerse ({name}) - + Getting metadata from macro {} Obteniendo metadatos de la macro {} - + Timeout while fetching metadata for macro {} Tiempo de espera agotado al buscar metadatos para la macro {} - + Failed to kill process for macro {}! ¡Error al matar el proceso para macro {}! - + Retrieving macro description... Recuperando descripción de macro... - + Retrieving info from git Recuperando información de git - + Retrieving info from wiki Recuperando información de la wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + No se pudieron obtener las estadísticas del complemento de {} -- solo ordenar alfabeticamente será preciso + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + No se pudo obtener la puntuación del complemento de '{}' -- ordenar por puntuación fallará + + Repository URL @@ -2369,7 +2418,7 @@ installed addons will be checked for available updates Loading page for {} from {}... - Loading page for {} from {}... + Cargando página de {} de {}... @@ -2379,28 +2428,58 @@ installed addons will be checked for available updates Composite view - Composite view + Vista compuesta Expanded view - Expanded view + Vista extendida Compact view - Compact view + Vista compacta + + + + Alphabetical + Sort order + Alfabético + + + + Last Updated + Sort order + Actualizado por última vez + + + + Date Created + Sort order + Fecha de creación + + + + GitHub Stars + Sort order + Estrellas en GitHub + + + + Score + Sort order + Puntuación Std_AddonMgr - + &Addon manager &Administrador de complementos - + Manage external workbenches, macros, and preference packs Administrar entornos de trabajo externos, macros y paquetes de preferencias @@ -2410,7 +2489,7 @@ installed addons will be checked for available updates Finished removing {} - Se terminó de eliminar %s + Se terminó de eliminar {} @@ -2437,9 +2516,9 @@ installed addons will be checked for available updates QObject - + Addon Manager - Gestor de complementos + Administrador de complementos diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_eu.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_eu.qm index 6259b77e2f..a34324dbbc 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_eu.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_eu.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_eu.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_eu.ts index baa21adb8f..bb83f3e135 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_eu.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_eu.ts @@ -360,48 +360,53 @@ Gehigarrien kudeatzaileak automatikoki instalatu ditzan nahi al duzu? Aukeratu & ExpandedView - + Icon Ikonoa - + <h1>Package Name</h1> <h1>Pakete-izena</h1> - + Version Bertsioa - + (tags) (etiketak) - - + + Description Deskribapena - - + + Maintainer Mantentzailea - + Update Available Eguneraketa eskuragarri - + + labelSort + labelSort + + + UpdateAvailable Eguneratzea eskuragarri @@ -599,36 +604,46 @@ denean gehigarrien eguneraketarik dagoen begiratuko da + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Python exekutagarriaren bide-izena (aukerakoa): - + The path to the git executable. Autodetected if needed and not specified. git exekutagarriaren bide-izena. Automatikoki detektatuko da ezer zehazten ez bada. - + Advanced Options Aukera aurreratuak - + Show option to change branches (requires git) Erakutsi adarrez aldatzeko aukerak (git behar du) - + Disable git (fall back to ZIP downloads only) Desgaitu git (erabili ZIP deskargak soilik) - + Activate Addon Manager options intended for developers of new Addons. Aktibatu gehigarri berriak garatzen dituztenentzako gehigarri-kudeatzailearen aukerak. - + Addon developer mode Gehigarrien garatzaileen modua @@ -1101,17 +1116,17 @@ denean gehigarrien eguneraketarik dagoen begiratuko da AddonsInstaller - + Starting up... Abiarazten... - + Loading addon information Gehigarriaren informazioa kargatzen - + Worker process {} is taking a long time to stop... {} langile-prozesuari kostatzen ari zaio gelditzea... @@ -1130,46 +1145,46 @@ denean gehigarrien eguneraketarik dagoen begiratuko da - + Addon manager Gehigarrien kudeatzailea - + You must restart FreeCAD for changes to take effect. FreeCAD berrabiarazi behar da aldaketak indarrean sartu daitezen. - + Restart now Berrabiarazi orain - + Restart later Berrabiarazi geroago - - + + Refresh local cache Freskatu cache lokala - + Updating cache... Cachea eguneratzen... - + Could not find addon '{}' to select Ez da aurkitu '{}' gehigarria hautatzeko - - + + Checking for updates... Eguneraketak bilatzen... @@ -1215,30 +1230,30 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Ezin da instalatzaile berria abiarazi aurrekoa amaitu baino lehen. - + Execution of macro failed. See console for failure details. Makroaren exekuzioak huts egin du. Begiratu kontsola xehetasun gehiagorako. - + + - Maintainer Mantentzailea - + + - Author Egilea @@ -1350,10 +1365,10 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Instalazio-data: {date} - - - + + + Installed Instalatuta @@ -1531,17 +1546,17 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Lizentzia-fitxategi berriaren kokapena - + Received {} response code from server {} erantzun-kodea jaso da zerbitzaritik - + Failed to install macro {} Ezin izan da {} makroa instalatu - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Hautatu ikono-fitxategi bat eduki-elementu honetarako - + {} is not a subdirectory of {} {} ez da {} direktorioaren azpidirektorio bat @@ -1902,79 +1917,99 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Bilatu... - + Click for details about package {} Egin klik {} paketearen xehetasunak eskuratzeko - + Click for details about workbench {} Egin klik {} lan-mahaiaren xehetasunak eskuratzeko - + Click for details about macro {} Egin klik {} makroaren xehetasunak eskuratzeko - + Maintainers: Mantentzaileak: - + Tags Etiketak - - updated - eguneratuta + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Eguneratuta - - - + + + Update available Eguneraketa eskuragarri - - + + Pending restart Berrabioaren zain - - + + DISABLED DESGAITUTA - + Installed version Instalatutako bertsioa - + Unknown version Bertsio ezezaguna - + Installed on Hemen instalatua: - + Available version Bertsio eskuragarria @@ -2138,23 +2173,23 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Ezin da makroak zehaztutako {} fitxategia aurkitu ({} kokalekuan espero zen) - + {}: Unrecognized internal workbench '{}' {}: Ezagutzen ez den barneko lan-mahaia '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Gehigarrien garatzaileen abisua: {} ({}) gehigarrirako package.xml fitxategian ezarri den biltegi URLa ez dator bat gehigarria atzitu zeneko URLarekin ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Gehigarrien garatzaileen abisua: {} ({}) gehigarrirako package.xml fitxategian ezarri den biltegi-adarra ez dator bat gehigarria atzitu zeneko adarrarekin ({}) - - + + Got an error when trying to import {} Errorea gertatu da {} inportatzen saiatzean @@ -2189,128 +2224,142 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Errorea instalatutako {} makro fitxategia kentzean: - + Failed to connect to GitHub. Check your connection and proxy settings. Huts egin du GitHub gunearekin konektatzeak. Egiaztatu konexioa eta proxy-ezarpenak. - + WARNING: Duplicate addon {} ignored ABISUA: Bikoiztutako {} gehigarriari ez ikusiarena egin zaio - + Workbenches list was updated. Lan-mahaien zerrenda eguneratu da. - + Git is disabled, skipping git macros Git desgaituta dago, git makroak salatzen - + Attempting to change non-git Macro setup to use git Git ez diren makroen konfigurazioa aldatzen git erabili dezaten - + An error occurred updating macros from GitHub, trying clean checkout... Errorea gertatu da makroak GitHub gunetik eguneratzean, deskarga garbia saiatzen... - + Attempting to do a clean checkout... Deskarga garbia saiatzen... - + Clean checkout succeeded Deskarga garbia ongi gauzatu da - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Huts egin du GitHub guneko makroak egunerateak -- saiatu gehigarrien kudeatzailearen cachea garbitzen. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Errorea wikiarekin konektatzean, FreeCADek ezin du wikiko makro-zerrenda eskuratu momentu honetan - + Unable to fetch git updates for workbench {} Ezin izan dira {} lan-mahairako git eguneraketak atzitu - + git status failed for {} git status eragiketak huts egin du {} kasuan - + Failed to read metadata from {name} Huts egin du {name}(e)ko metadatuen irakurketak - + Failed to fetch code for macro '{name}' Huts egin du '{name}' makroaren kodea eskuratzeak - + Caching macro code... Makro-kodea cachean gordetzen... - + Addon Manager: a worker process failed to complete while fetching {name} Gehigarrien kudeatzailea: langile-prozesu bat osatzeak huts egin du {name} atzitzean - + Out of {num_macros} macros, {num_failed} timed out while processing {num_macros} makrotatik, {num_failed} denboraz iraungi dira prozesatzean - + Addon Manager: a worker process failed to halt ({name}) Gehigarrien kudeatzailea: langile-prozesu bat gelditzeak huts egin du ({name}) - + Getting metadata from macro {} Metadatuak eskuratzen {} makrotik - + Timeout while fetching metadata for macro {} Denbora iraungi da {} makroaren metadatuak atzitzean - + Failed to kill process for macro {}! Huts egin du {} makroaren prozesua hiltzeak. - + Retrieving macro description... Makroen deskribapena atzitzen... - + Retrieving info from git Informazioa atzitzen git biltegitik - + Retrieving info from wiki Informazioa atzitzen wikitik + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2393,16 +2442,46 @@ denean gehigarrien eguneraketarik dagoen begiratuko da Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Gehigarrien kudeatzailea - + Manage external workbenches, macros, and preference packs Kudeatu kanpoko lan-mahaiak, makroak eta hobespen-paketeak @@ -2439,7 +2518,7 @@ denean gehigarrien eguneraketarik dagoen begiratuko da QObject - + Addon Manager Gehigarrien kudeatzailea diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_fi.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_fi.qm index d2b3a6e2fe..b40d65fbcd 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_fi.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_fi.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_fi.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_fi.ts index 9f91ed7e54..fa95be7765 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_fi.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_fi.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon kuvake - + <h1>Package Name</h1> <h1>Paketin nimi</h1> - + Version Versio - + (tags) (tags) - - + + Description Kuvaus - - + + Maintainer Ylläpitäjä - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable UpdateAvailable @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Polku git-suoritustiedostoon (valinnainen): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Lisäasetukset - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Refresh local cache - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Ylläpitäjä - + + - Author Kehittäjä @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Etsi... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Tags - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Asennettu versio - + Unknown version Unknown version - + Installed on Installed on - + Available version Saatavilla oleva versio @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Lisäosien hallinta diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_fr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_fr.qm index df2aac185a..4ac233d117 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_fr.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_fr.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_fr.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_fr.ts index 01fc4eadb1..8a5611834c 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_fr.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_fr.ts @@ -109,7 +109,7 @@ Voulez-vous que le gestionnaire des extensions les installe automatiquement ? Ch Optional Python modules - Modules Python optionnels + Modules Python facultatifs @@ -349,7 +349,7 @@ Voulez-vous que le gestionnaire des extensions les installe automatiquement ? Ch If this is an optional dependency, the Addon Manager will offer to install it (when possible), but will not block installation if the user chooses not to, or cannot, install the package. - S'il s'agit d'une dépendance optionnelle, le gestionnaire des extensions proposera de l'installer (quand c'est possible), mais ne bloquera pas l'installation si l'utilisateur choisit de ne pas installer le paquet ou s'il ne peut pas le faire. + S'il s'agit d'une dépendance facultative, le gestionnaire des extensions proposera de l'installer (quand cela est possible) mais ne bloquera pas l'installation si l'utilisateur choisit de ne pas installer le paquet ou s'il ne peut pas le faire. @@ -360,48 +360,53 @@ Voulez-vous que le gestionnaire des extensions les installe automatiquement ? Ch ExpandedView - + Icon Icône - + <h1>Package Name</h1> <h1>Nom du paquet</h1> - + Version Version - + (tags) (mots-clés) - - + + Description Description - - + + Maintainer Mainteneur - + Update Available Mise à jour disponible - + + labelSort + Trier par libellés + + + UpdateAvailable Mise à jour disponible @@ -545,17 +550,17 @@ Cela nécessite l'installation du paquet GitPython sur votre système. Hide Addons without a license - Hide Addons without a license + Masquer les extensions sans licence Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Masquer les extensions avec une licence non-FSF Free/Libre Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Masquer les extensions avec une licence non approuvée par l'OSI @@ -599,36 +604,46 @@ Cela nécessite l'installation du paquet GitPython sur votre système. - Path to git executable (optional): - Chemin vers l'exécutable git (facultatif) : + Score source URL + URL des scores - The path to the git executable. Autodetected if needed and not specified. - Le chemin vers l'exécutable git. Détecté automatiquement si nécessaire et non spécifié. + The URL for the Addon Score data (see documentation for formatting and hosting details). + L'URL du score de l'extension, (voir la documentation pour les détails de formatage et d'hébergement). - + + Path to git executable (optional): + Chemin vers l'exécutable de git (facultatif) : + + + + The path to the git executable. Autodetected if needed and not specified. + Le chemin vers l'exécutable de git. Détecté automatiquement si nécessaire et non spécifié. + + + Advanced Options Options avancées - + Show option to change branches (requires git) Afficher l'option pour changer de branche (nécessite git) - + Disable git (fall back to ZIP downloads only) Désactiver git (revenir aux téléchargements ZIP uniquement) - + Activate Addon Manager options intended for developers of new Addons. Activer les options du gestionnaire des extensions destinées aux développeurs des nouvelles extensions. - + Addon developer mode Activer le mode développeur des extensions @@ -676,7 +691,7 @@ Cela nécessite l'installation du paquet GitPython sur votre système. The following Python packages have been installed locally by the Addon Manager to satisfy Addon dependencies. Installation location: - Les paquets Python suivants ont été installés localement par le gestionnaire des extensions pour satisfaire les dépendances de l'extension. Emplacement d'installation : + Les paquets Python suivants ont été installés localement par le gestionnaire des extensions pour satisfaire les dépendances de l'extension. Emplacement de l'installation : @@ -701,7 +716,7 @@ Cela nécessite l'installation du paquet GitPython sur votre système. An asterisk (*) in the "Used by" column indicates an optional dependency. Note that Used by only records direct imports in the Addon. Other Python packages that those packages depend upon may have been installed as well. - Un astérisque (*) dans la colonne "Utilisé par" indique une dépendance optionnelle. + Un astérisque (*) dans la colonne "Utilisé par" indique une dépendance facultative. Remarque : "Utilisé par" n'enregistre que les importations directes dans l'extension. D'autres paquets Python dont dépendent ces paquets peuvent également avoir été installés. @@ -1103,17 +1118,17 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét AddonsInstaller - + Starting up... Démarrage en cours... - + Loading addon information Chargement des informations de l'extension - + Worker process {} is taking a long time to stop... Le processus de traitement {} prend beaucoup de temps pour s’arrêter... @@ -1132,46 +1147,46 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét - + Addon manager Gestionnaire des extensions - + You must restart FreeCAD for changes to take effect. Vous devez redémarrer FreeCAD pour que les modifications soient prises en compte. - + Restart now Redémarrer maintenant - + Restart later Redémarrer plus tard - - + + Refresh local cache Rafraîchir le cache local - + Updating cache... Mise à jour du cache... - + Could not find addon '{}' to select Impossible de trouver l'extension '{}' à sélectionner - - + + Checking for updates... Recherche de mises à jour... @@ -1184,22 +1199,22 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Update all addons - Update all addons + Mettre à jour toutes les extensions Check for updates - Check for updates + Vérifier les mises à jour Python dependencies... - Python dependencies... + Dépendances de Python... Developer tools... - Developer tools... + Outils pour les développeurs… @@ -1209,38 +1224,38 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Apply 1 available update - Apply 1 available update + Appliquer la mise à jour disponible Apply {} available updates - Apply {} available updates + Appliquer {} mises à jour disponibles - - - + + + Cannot launch a new installer until the previous one has finished. Impossible de lancer un nouveau programme d'installation tant que le précédent n'est pas terminé. - + Execution of macro failed. See console for failure details. L'exécution de la macro a échoué. Voir la console pour les détails de l'échec. - + + - Maintainer Mainteneur - + + - Author Auteur @@ -1352,10 +1367,10 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Installé le {date} - - - + + + Installed Installé @@ -1367,7 +1382,7 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Git tag '{}' checked out, no updates possible - La balise Git '{}' a été retirée, aucune mise à jour possible + La balise de git "{}" a été retirée, aucune mise à jour possible. @@ -1382,12 +1397,12 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + A changé pour la branche "{}". Redémarrer pour utiliser l'extension. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Cette extension a été mise à jour. Redémarrer FreeCAD pour voir les changements. @@ -1397,17 +1412,17 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + Actuellement sur la branche {}, une mise à jour est disponible vers la version {}. Update available to version {} - Update available to version {} + Mise à jour disponible vers la version {} This is the latest version available - This is the latest version available + Ceci est la dernière version disponible. @@ -1417,12 +1432,12 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + ATTENTION : cette extension est seulement en Python 2. WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + ATTENTION : cette extension nécessite FreeCAD {}. @@ -1474,7 +1489,7 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Check for update - Check for update + Vérifier les mises à jour @@ -1484,7 +1499,7 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Change branch... - Change branch... + Changer de branche... @@ -1533,17 +1548,17 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Emplacement du nouveau fichier de licence - + Received {} response code from server Réception de {} code de réponse du serveur - + Failed to install macro {} Impossible d'installer la macro {} - + Failed to create installation manifest file: Le fichier d'information sur l'installation n'a pas pu être créé : @@ -1564,9 +1579,9 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Sélectionner un fichier d'icône pour cet élément de contenu. - + {} is not a subdirectory of {} {} n'est pas un sous-répertoire de {} @@ -1903,91 +1918,111 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Rechercher... - + Click for details about package {} Cliquer pour plus de détails sur le paquet {} - + Click for details about workbench {} Cliquer pour plus de détails sur l'atelier {} - + Click for details about macro {} Cliquer pour plus de détails sur la macro {} - + Maintainers: Mainteneurs : - + Tags Mots-clés - - updated - mis à jour + + {} ★ on GitHub + {} ★ sur GitHub - - + + No ★, or not on GitHub + Pas d'★ ou pas sur GitHub + + + + Created + Créé + + + + Updated + Mis à jour + + + + Score: + Score : + + + + Up-to-date À jour - - - + + + Update available Mise à jour disponible - - + + Pending restart En attente de redémarrage - - + + DISABLED DÉSACTIVÉ - + Installed version Version installée - + Unknown version Version inconnue - + Installed on Installé le - + Available version Version disponible Filter by... - Filter by... + Filtrer par... Addon Type - Addon Type + Type d'extension @@ -2008,7 +2043,7 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Installation Status - Installation Status + Statut des installations @@ -2139,23 +2174,23 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Impossible de localiser le fichier {} spécifié par la macro (attendu à {}) - + {}: Unrecognized internal workbench '{}' {} : atelier interne non reconnu '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Avertissement du développeur de l'extension : l'URL du répertoire défini dans le fichier package.xml pour l'extension {} ({}) ne correspond pas à l'URL depuis laquelle il a été récupéré ({}). - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Avertissement du développeur de l'extension : la branche du répertoire définie dans le fichier package.xml pour l'extension {} ({}) ne correspond pas à la branche depuis laquelle il a été récupéré ({}). - - + + Got an error when trying to import {} Une erreur s'est produite lors de l'importation de {} @@ -2190,129 +2225,140 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Erreur lors de la suppression du fichier macro {} : - + Failed to connect to GitHub. Check your connection and proxy settings. La connexion à GitHub a échoué. Vérifiez vos paramètres de connexion et de proxy. - + WARNING: Duplicate addon {} ignored ATTENTION : l'extension dupliquée {} est ignorée. - + Workbenches list was updated. La liste des ateliers a été mise à jour. - + Git is disabled, skipping git macros - Git est désactivé, les macros Git sont ignorées + Git est désactivé, les macros sous git sont ignorées. - + Attempting to change non-git Macro setup to use git - Tentative de changement de la configuration des macro non-Git pour utiliser Git - + Tentative de changement de la configuration des macro non-git pour utiliser git - + An error occurred updating macros from GitHub, trying clean checkout... Une erreur est survenue lors de la mise à jour des macros depuis GitHub, en tentant un checkout propre... - + Attempting to do a clean checkout... Tentative de faire un checkout propre... - + Clean checkout succeeded Checkout propre réussi - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Échec de la mise à jour des macros depuis GitHub -- essayez de vider le cache du gestionnaire des extensions. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Erreur de connexion au Wiki, FreeCAD ne peut pas récupérer la liste des macros du Wiki pour le moment - + Unable to fetch git updates for workbench {} - Ne parvient pas à récupérer les mises à jour git pour l'atelier {} + Impossible de récupérer les mises à jour sous git pour l'atelier {} - + git status failed for {} le statut de git a échoué pour {} - + Failed to read metadata from {name} Échec de la lecture des métadonnées de {name} - + Failed to fetch code for macro '{name}' Échec de la récupération du code de la macro '{name}' - + Caching macro code... Mise en cache du code de la macro... - + Addon Manager: a worker process failed to complete while fetching {name} Gestionnaire des extensions : un processus n'a pas abouti lors de la récupération de {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Sur {num_macros} macros, {num_failed} sont tombées en panne pendant le traitement - + Addon Manager: a worker process failed to halt ({name}) Gestionnaire des extensions : un processus n'a pas pu être arrêté ({name}) - + Getting metadata from macro {} Récupération des métadonnées de la macro {} - + Timeout while fetching metadata for macro {} Dépassement du délai lors de la récupération des métadonnées pour la macro {} - + Failed to kill process for macro {}! Échec de l'arrêt de la macro {} ! - + Retrieving macro description... Récupération de la description de la macro... - + Retrieving info from git Récupération des informations depuis git - + Retrieving info from wiki Récupération des informations depuis le wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Échec de la récupération des statistiques de l'extension {}, seul le tri par ordre alphabétique sera correct. + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Échec de la récupération du score de l'extension de "{}". Le tri par score échouera. + Repository URL @@ -2343,7 +2389,7 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Git branch rename failed with the following message: - Le renommage de la branche Git a échoué avec le message suivant : + Le renommage de la branche git a échoué avec le message suivant : @@ -2373,7 +2419,7 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Loading page for {} from {}... - Loading page for {} from {}... + Chargement de la page pour {} depuis {}... @@ -2383,28 +2429,58 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét Composite view - Composite view + Vue composite Expanded view - Expanded view + Vue étendue Compact view - Compact view + Vue compacte + + + + Alphabetical + Sort order + Alphabétique + + + + Last Updated + Sort order + Dernière mise à jour + + + + Date Created + Sort order + Date de création + + + + GitHub Stars + Sort order + Étoiles sous GitHub + + + + Score + Sort order + Score Std_AddonMgr - + &Addon manager &Gestionnaire des extensions - + Manage external workbenches, macros, and preference packs Gérer les ateliers externes, les macros et les kits de préférences @@ -2441,7 +2517,7 @@ D'autres paquets Python dont dépendent ces paquets peuvent également avoir ét QObject - + Addon Manager Gestionnaire des extensions diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_gl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_gl.qm index c86a117b74..c7902c7f31 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_gl.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_gl.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_gl.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_gl.ts index a1953a602b..a048bdfe53 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_gl.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_gl.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Icona - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Versión - + (tags) (tags) - - + + Description Descrición - - + + Maintainer Mantedor - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable UpdateAvailable @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Advanced Options - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Actualiza a caché local - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Mantedor - + + - Author Autor @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Atopar... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Etiquetas - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Installed version - + Unknown version Unknown version - + Installed on Installed on - + Available version Available version @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Xestor de complementos diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_hr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_hr.qm index d1f778a45e..380b7272bf 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_hr.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_hr.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_hr.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_hr.ts index 7ca6f7fa81..266489db50 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_hr.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_hr.ts @@ -362,48 +362,53 @@ Da li želite da Upravitelj dodacima ih instalira automatski? Odaberi "Igno ExpandedView - + Icon Ikona - + <h1>Package Name</h1> <h1>Naziv paketa</h1> - + Version Verzija - + (tags) (oznake) - - + + Description Opis - - + + Maintainer Održavatelj - + Update Available Dostupno je ažuriranje - + + labelSort + labelSort + + + UpdateAvailable Dostupno ažuriranje @@ -601,36 +606,46 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Putanja ka izvršnoj git datoteci (neobavezno): - + The path to the git executable. Autodetected if needed and not specified. Putanja ka izvršnoj git datoteci. Automatski detektirano ako je potrebno i nije specificirano. - + Advanced Options Napredne opcije - + Show option to change branches (requires git) Prikaži opciju za promjenu grana (zahtjeva git) - + Disable git (fall back to ZIP downloads only) Onemogući git (povratak na ZIP preuzimanja) - + Activate Addon Manager options intended for developers of new Addons. Aktivirajte Upravitelj dodataka opcije namijenjene programerima novih Dodataka. - + Addon developer mode Dodatak Developer mod @@ -1105,17 +1120,17 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja AddonsInstaller - + Starting up... Pokreče se... - + Loading addon information Učitavanje informacija o dodatku - + Worker process {} is taking a long time to stop... Radni proces {} se dugo zaustavlja... @@ -1134,46 +1149,46 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja - + Addon manager Upravitelj dodataka - + You must restart FreeCAD for changes to take effect. Za primjenu promjene, ponovo pokreni FreeCAD. - + Restart now Ponovno pokreni sada - + Restart later Ponovno pokreni kasnije - - + + Refresh local cache Osvježite lokalnu predmemoriju - + Updating cache... Ažuriram međuspremnik… - + Could not find addon '{}' to select Nije moguće pronaći Dodatak '{}' da bi se izabrao - - + + Checking for updates... Provjeri ima li ažuriranja... @@ -1219,30 +1234,30 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Ne može se pokrenuti novi program za instaliranje dok se prethodni ne završi. - + Execution of macro failed. See console for failure details. Izvršavanje makro naredbe nije uspjelo. Pogledaj konzolu za detalje o greškama. - + + - Maintainer Održavatelj - + + - Author Autor @@ -1354,10 +1369,10 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Instalirano {date} - - - + + + Installed Instalirano @@ -1535,17 +1550,17 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Lokacija za novu licencnu datoteku - + Received {} response code from server Primljen {} kod odgovora sa servera - + Failed to install macro {} Nije moguće instalirati makro naredbu {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1567,9 +1582,9 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Izaberi datoteku ikone za ovu stavku sadržaja - + {} is not a subdirectory of {} {} nije poddirektorij {} @@ -1906,81 +1921,101 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Pretraživanje... - + Click for details about package {} Kliknite za detalje o paketu {} - + Click for details about workbench {} Kliknite za detalje o Radnom stolu {} - + Click for details about macro {} Kliknite za detalje o makro naredbama {} - + Maintainers: Održavatelji: - + Tags Oznake - - updated - ažurirano + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Aktualno - - - + + + Update available Dostupno ažuriranje - - + + Pending restart Na čekanju ponovnog pokretanja - - + + DISABLED ONEMOGUĆENO - + Installed version Instalirana verzija - + Unknown version Nepoznata verzija - + Installed on Instalirano na - + Available version Dostupna verzija @@ -2144,23 +2179,23 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Nije moguće locirati datoteku navedenu u makro naredbi {} (trebala je biti u {}) - + {}: Unrecognized internal workbench '{}' {}: Neprepoznati interni Radni stol '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Upozorenje za programere Dodatka: URL adresa spremišta zadana u package.xml datoteci za dodatak {} ({}) ne odgovara URL adresi sa koje je preuzet ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Upozorenje za programere Dodatka: Grana-adresa spremišta zadana u package.xml datoteci za dodatak {} ({}) ne odgovara Grana-adresi sa koje je preuzet ({}) - - + + Got an error when trying to import {} Greška pri pokušaju uvoza {} @@ -2195,127 +2230,141 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Greška pri pokušaju uklanjanja datoteke makro naredbe {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Povezivanje sa GitHub-om nije uspjelo. Provjeri podešavanja veze i proksija. - + WARNING: Duplicate addon {} ignored UPOZORENJE: Duplikat dodatka {} je ignoriran - + Workbenches list was updated. Popis radnih stolova je ažuriran. - + Git is disabled, skipping git macros Git je onemogućen, preskaču se git makro naredbe - + Attempting to change non-git Macro setup to use git Pokušaj promjene postavki ne git makro naredbi da koriste git - + An error occurred updating macros from GitHub, trying clean checkout... Došlo je do greške pri ažuriranju makro naredbi a sa GitHub-a, pokušavam čistu provjeru... - + Attempting to do a clean checkout... Pokušavam napraviti čistu provjeru... - + Clean checkout succeeded Čista provjera je uspjela - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Nije uspjelo ažurirati makro naredbe s GitHuba. Pokušajte izbrisati predmemoriju Upravitelja dodataka. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Čini se da je problem povezivanje s Wiki-em, FreeCAD trenutačno ne može dohvatiti popis makronaredbi Wiki-a - + Unable to fetch git updates for workbench {} Nije moguće dohvatiti git ažuriranja za radni stol {} - + git status failed for {} git stanje nije uspjelo za {} - + Failed to read metadata from {name} Nije uspjelo čitanje metapodataka iz {name} - + Failed to fetch code for macro '{name}' Nije uspjelo preuzimanje koda za makro naredbu '{name}' - + Caching macro code... Osvježavanje koda makronaredbe... - + Addon Manager: a worker process failed to complete while fetching {name} Upravitelj dodataka: radni proces nije uspio da se završi prilikom preuzimanja {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Za {num_macros} makro naredbu je prekoračen je vremenski limit, {num_failed} tokom obrade - + Addon Manager: a worker process failed to halt ({name}) Upravitelj dodataka: radni proces nije uspio da se zaustavi {name}) - + Getting metadata from macro {} Preuzimanje metapodataka iz makro naredbe {} - + Timeout while fetching metadata for macro {} Isteklo je vrijeme za preuzimanje metapodataka za makro naredbu {} - + Failed to kill process for macro {}! Zaustavljanje procesa za makro naredbu {} nije uspjelo - + Retrieving macro description... Dohvaćanje opisa makro naredbe... - + Retrieving info from git Dohvaćanje informacije od git - + Retrieving info from wiki Dohvaćanje informacije od wiki-a + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2398,16 +2447,46 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager Upr&avitelj dodataka - + Manage external workbenches, macros, and preference packs Upravljajte vanjskim radnim stolovima, makronaredbama i paketima postavki @@ -2444,7 +2523,7 @@ instalirani dodaci će se provjeriti na dostupna ažuriranja QObject - + Addon Manager Upravitelj dodataka diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_hu.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_hu.qm index 7803ce47ef..5942ffc5d5 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_hu.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_hu.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_hu.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_hu.ts index 24cbf471e8..2ad58ec751 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_hu.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_hu.ts @@ -360,48 +360,53 @@ A bővítmény kezelő automatikusan telepítse őket? Válassza a "Elvet&q ExpandedView - + Icon Ikon - + <h1>Package Name</h1> <h1>Csomag neve</h1> - + Version Verzió - + (tags) (címkék) - - + + Description Leírás - - + + Maintainer Közreműködő - + Update Available Frissítés elérhető - + + labelSort + labelSort + + + UpdateAvailable Frissítés elérhető @@ -545,17 +550,17 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Hide Addons without a license - Hide Addons without a license + Licenc nélküli bővítmények elrejtése Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Nem FSF Free/Libre licenccel rendelkező bővítmények elrejtése Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Nem OSI által jóváhagyott licenccel rendelkező bővítmény elrejtése @@ -599,36 +604,46 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Git végrehajtható fájl elérés (választható): - + The path to the git executable. Autodetected if needed and not specified. A git végrehajtható fájl elérési útja. Szükség esetén automatikusan észlelve, és nincs megadva. - + Advanced Options Haladó beállítások - + Show option to change branches (requires git) A változat módosításának lehetősége (git szükséges) - + Disable git (fall back to ZIP downloads only) A git letiltása (csak ZIP-letöltésekre való visszalépés) - + Activate Addon Manager options intended for developers of new Addons. Aktiválja az új Bővítmény kezelőkhöz a fejlesztőknek szánt Bítmény kezelő lehetőségeket. - + Addon developer mode Bővítmény fejlesztői mód @@ -1101,17 +1116,17 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre AddonsInstaller - + Starting up... Elkezd... - + Loading addon information Bővítményadatok betöltése - + Worker process {} is taking a long time to stop... Hosszú időbe telik egy futó {} folyamat leállítása... @@ -1130,46 +1145,46 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre - + Addon manager Bővítmény kezelő - + You must restart FreeCAD for changes to take effect. A módosítások érvénybe léptetéséhez újra kell indítania a FreeCAD-et. - + Restart now Újraindítás most - + Restart later Újraindítás később - - + + Refresh local cache Gyorsítótár frissítése - + Updating cache... Gyorsítótár frissítése... - + Could not find addon '{}' to select Nem található a kijelölni kívánt '{}' bővítmény - - + + Checking for updates... Frissítés keresése... @@ -1182,22 +1197,22 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Update all addons - Update all addons + Összes bővítmény frissítése Check for updates - Check for updates + Frissítések keresése Python dependencies... - Python dependencies... + Python függőségek... Developer tools... - Developer tools... + Fejlesztői eszközök... @@ -1207,38 +1222,38 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Apply 1 available update - Apply 1 available update + 1 elérhető frissítés alkalmazása Apply {} available updates - Apply {} available updates + {} elérhető frissítés alkalmazása - - - + + + Cannot launch a new installer until the previous one has finished. Az új telepítő csak az előző telepítő befejezése után indítható el. - + Execution of macro failed. See console for failure details. A makró végrehajtása sikertelen. A hiba részleteit lásd a konzolon. - + + - Maintainer Közreműködő - + + - Author Létrehozó @@ -1350,10 +1365,10 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Telepítés ideje {date} - - - + + + Installed Telepítve @@ -1380,12 +1395,12 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Változatre módosította '{}' -- indítsa újra a bővítmény használatához. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Ezt a bővítményt frissítettük. A változások megtekintéséhez indítsa újra a FreeCAD-et. @@ -1395,17 +1410,17 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + Jelenleg a {} változaton van, frissítés elérhető a {} verzióra Update available to version {} - Update available to version {} + Rendelkezésre áll frissítés a {} verzióra This is the latest version available - This is the latest version available + Ez a legfrissebb elérhető verzió @@ -1415,12 +1430,12 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + FIGYELMEZTETÉS: Ez a bővítmény csak Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + FIGYELEM: Ehhez a bővítményhez FreeCAD {} szükséges @@ -1472,7 +1487,7 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Check for update - Check for update + Frissítés keresése @@ -1482,7 +1497,7 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Change branch... - Change branch... + Változat módosítása... @@ -1531,17 +1546,17 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Új licencfájl helye - + Received {} response code from server {} válaszkód érkezett a szervertől - + Failed to install macro {} {} makró telepítése sikertelen - + Failed to create installation manifest file: Nem sikerült létrehozni a telepítési manifeszt fájlt: @@ -1563,9 +1578,9 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Válasszon ki egy ikonfájlt ehhez a tartalmi elemhez - + {} is not a subdirectory of {} {} nem alkönyvtára ennek: {} @@ -1902,91 +1917,111 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Keres... - + Click for details about package {} Kattintson a csomag részleteiért {} - + Click for details about workbench {} Kattintson a munkafelület részleteiért {} - + Click for details about macro {} Kattintson a makró részleteiért {} - + Maintainers: Közreműködők: - + Tags Címkék - - updated - frissítve + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Naprakész - - - + + + Update available Frissítés elérhető - - + + Pending restart Újraindításra vár - - + + DISABLED LETILTVA - + Installed version Telepített verzió - + Unknown version Ismeretlen verzió - + Installed on Telepítve ekkor - + Available version Elérhető verzió Filter by... - Filter by... + Szűrés ezzel... Addon Type - Addon Type + Bővítmény típus @@ -2007,7 +2042,7 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Installation Status - Installation Status + Telepítés állapota @@ -2055,7 +2090,7 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Last Updated Table header for git update date - Last Updated + Legutóbb frissítve @@ -2138,23 +2173,23 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Nem találta a makró által megadott {} fájlt (a {}-nál kellett volna lennie) - + {}: Unrecognized internal workbench '{}' {}: Nem ismert belső munkafelület '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Bővítmény fejlesztői figyelmeztetés: A bővítmény {} ({}) package.xml fájlban megadott tároló URL címe nem egyezik az URL-címmel, ahonnan lehívásra került ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Bővítmény fejlesztői figyelmeztetés: A package.xml fájlban a {} ({}) bővítmény tárolt változata nem egyezik azzal a változattal, ahonnan lekérdezték ({}) - - + + Got an error when trying to import {} Hibát kapott, amikor megpróbálta importálni a {} @@ -2189,129 +2224,143 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Hiba a {} makrófájl eltávolítása közben: - + Failed to connect to GitHub. Check your connection and proxy settings. Nem sikerült csatlakozni a GitHubhoz. Ellenőrizze a kapcsolat és a proxy beállításait. - + WARNING: Duplicate addon {} ignored FIGYELMEZTETÉS: A {} bővítmény duplikátuma elhagyva - + Workbenches list was updated. A munkafelületek listája frissítve. - + Git is disabled, skipping git macros Git le van tiltva, kihagyja a git makrókat - + Attempting to change non-git Macro setup to use git Kísérlet a nem-git makró beállítások megváltoztatására a git használatára - + An error occurred updating macros from GitHub, trying clean checkout... Hiba történt a makrók frissítésében a GitHubról, próbálom tisztán ellenőrizni a... - + Attempting to do a clean checkout... Megpróbálok egy tiszta kijelentkezést végezni... - + Clean checkout succeeded A tiszta kilépés sikerült - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Nem sikerült frissíteni a makrókat a GitHubról -- próbálja meg törölni a bővítmény kezelő's cache-t. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Hiba a Wikihez csatlakozásban, a FreeCAD jelenleg nem tudja lekérdezni a Wiki makrólistáját - + Unable to fetch git updates for workbench {} Nem lehet letölteni a git-frissítéseket a(z) {} munkafelületekhez - + git status failed for {} git állapot nem sikerült ehhez: {} - + Failed to read metadata from {name} Nem sikerült beolvasni a metaadatokat innen {name} - + Failed to fetch code for macro '{name}' Nem sikerült kódot lekérni a '{name}' makróhoz - + Caching macro code... Makro kód ellenörzése... - + Addon Manager: a worker process failed to complete while fetching {name} Bővítmény kezelő: a {name} letöltése során nem sikerült befejezni a feldolgozást - + Out of {num_macros} macros, {num_failed} timed out while processing A {num_macros} makrók közül {num_failed} a feldolgozás során letelt az idő - + Addon Manager: a worker process failed to halt ({name}) Bővítmény kezelő: egy munkafolyamat nem állt le ({name}) - + Getting metadata from macro {} Metaadatok kinyerése ebből a makróból: {} - + Timeout while fetching metadata for macro {} Időkiesés a makró metaadatainak lekérése közben innen: {} - + Failed to kill process for macro {}! Nem sikerült leállítani a {} makró folyamatát! - + Retrieving macro description... Makró leírásának lekérése... - + Retrieving info from git Információ beolvasása git-ből - + Retrieving info from wiki Információ beolvasása wiki-ből + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2342,7 +2391,7 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Git branch rename failed with the following message: - Git branch rename failed with the following message: + Git változat átnevezés a következő üzenettel sikertelen volt: @@ -2372,38 +2421,68 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre Loading page for {} from {}... - Loading page for {} from {}... + Oldal betöltés ehhez {} ebből {}... Failed to download data from {} -- received response code {}. - Failed to download data from {} -- received response code {}. + Nem sikerült letölteni az adatokat innen {} - a válaszkód {}. Composite view - Composite view + Összetett nézet Expanded view - Expanded view + Bővített nézet Compact view - Compact view + Kompakt nézet + + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Legutóbb frissítve + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score Std_AddonMgr - + &Addon manager &Bővítmény kezelő - + Manage external workbenches, macros, and preference packs Külső munkafelületek, makrók és beállításcsomagok kezelése @@ -2440,7 +2519,7 @@ telepített bővítményeket a rendszer ellenőrzi az elérhető frissítésekre QObject - + Addon Manager Bővítmény kezelő diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_id.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_id.qm index 3dfe780c60..ac20b84d34 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_id.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_id.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_id.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_id.ts index 0c46ddf394..eea21bb33e 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_id.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_id.ts @@ -360,48 +360,53 @@ Apakah Anda ingin Pengelola Addon menginstalnya secara otomatis? Pilih "Aba ExpandedView - + Icon Ikon - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Versi - + (tags) (tanda) - - + + Description Description - - + + Maintainer Pemelihara - + Update Available Pembaruan Tersedia - + + labelSort + labelSort + + + UpdateAvailable PembaruanTersedia @@ -599,36 +604,46 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Pilihan Lanjutan - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia AddonsInstaller - + Starting up... Memulai... - + Loading addon information Memuat informasi addon - + Worker process {} is taking a long time to stop... Proses bekerja {} membutuhkan waktu lama untuk berhenti... @@ -1130,46 +1145,46 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Segarkan cache lokal - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Pemelihara - + + - Author Penulis @@ -1350,10 +1365,10 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Search... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Pemelihara: - + Tags Tanda - - updated - diperbarui + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Mutakhir - - - + + + Update available Pembaruan tersedia - - + + Pending restart Menunggu dimulai ulang - - + + DISABLED DINONAKTIFKAN - + Installed version Versi terpasang - + Unknown version Versi tidak diketahui - + Installed on Installed on - + Available version Versi tersedia @@ -2138,23 +2173,23 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Mengambil deskripsi makro... - + Retrieving info from git Mengambil info dari git - + Retrieving info from wiki Mengambil info dari wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Pengelola Addon - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ addon yang terinstal akan diperiksa untuk pembaruan yang tersedia QObject - + Addon Manager Pengelola Addon diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_it.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_it.qm index 41b12832a7..5e026b36bb 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_it.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_it.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_it.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_it.ts index a459228c99..5c4c87b3d2 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_it.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_it.ts @@ -360,48 +360,53 @@ Vuoi che Addon Manager li installi automaticamente? Scegli "Ignora" pe ExpandedView - + Icon Icona - + <h1>Package Name</h1> <h1>Nome pacchetto</h1> - + Version Versione - + (tags) (etichette) - - + + Description Descrizione - - + + Maintainer Manutentore - + Update Available Aggiornamento Disponibile - + + labelSort + labelSort + + + UpdateAvailable AggiornamentoDisponibile @@ -599,36 +604,46 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili + Score source URL + Punteggio sorgente URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + L'URL per i dati di punteggio Addon (vedere la documentazione per la formattazione e i dettagli di hosting). + + + Path to git executable (optional): Percorso dell' eseguibile git (opzionale): - + The path to the git executable. Autodetected if needed and not specified. Il percorso del git eseguibile. Rilevato automaticamente se necessario e non specificato. - + Advanced Options Opzioni Avanzate - + Show option to change branches (requires git) Mostra opzione per cambiare i rami (richiede git) - + Disable git (fall back to ZIP downloads only) Disabilita git (torna solo agli scaricamenti ZIP) - + Activate Addon Manager options intended for developers of new Addons. Attiva le opzioni Addon Manager destinate agli sviluppatori di nuovi Addons. - + Addon developer mode Modalità sviluppatore Addon @@ -1101,17 +1116,17 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili AddonsInstaller - + Starting up... Avvio in corso... - + Loading addon information Caricamento informazioni addon - + Worker process {} is taking a long time to stop... Il processo in corso {} sta impiegando molto tempo per fermarsi... @@ -1130,46 +1145,46 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. È necessario riavviare FreeCAD perché le modifiche abbiano effetto. - + Restart now Riavvia ora - + Restart later Riavvia dopo - - + + Refresh local cache Aggiorna cache locale - + Updating cache... Aggiornamento cache... - + Could not find addon '{}' to select Impossibile trovare l'addon '{}' da selezionare - - + + Checking for updates... Controllo aggiornamenti... @@ -1215,30 +1230,30 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Impossibile avviare una nuova installazione fino al termine della precedente. - + Execution of macro failed. See console for failure details. Esecuzione della macro non riuscita. Consultare la console per i dettagli dell'errore. - + + - Maintainer Manutentore - + + - Author Autore @@ -1350,10 +1365,10 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Installato il {date} - - - + + + Installed Installato @@ -1531,17 +1546,17 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Posizione per il nuovo file di licenza - + Received {} response code from server Ricevuto {} codice di risposta dal server - + Failed to install macro {} Impossibile installare la macro {} - + Failed to create installation manifest file: Creazione del file manifest di installazione non riuscita: @@ -1563,9 +1578,9 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Seleziona un file icona per questo elemento di contenuto - + {} is not a subdirectory of {} {} non è una sottodirectory di {} @@ -1902,79 +1917,99 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Cerca... - + Click for details about package {} Clicca per i dettagli sul pacchetto {} - + Click for details about workbench {} Clicca per i dettagli sull'ambiente di lavoro {} - + Click for details about macro {} Clicca per i dettagli sulla macro {} - + Maintainers: Manutentori: - + Tags Etichette - - updated - aggiornato + + {} ★ on GitHub + {} ★ su GitHub - - + + No ★, or not on GitHub + Nessuna ★, o non presente in GitHub + + + + Created + Creato + + + + Updated + Aggiornato + + + + Score: + Punteggio: + + + + Up-to-date Aggiornato - - - + + + Update available Aggiornamento disponibile - - + + Pending restart Riavvio in sospeso - - + + DISABLED DISABILITATO - + Installed version Versione installata - + Unknown version Versione sconosciuta - + Installed on Installato il - + Available version Versione disponibile @@ -2138,23 +2173,23 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Impossibile individuare il file specificato dalla macro {} (dovrebbe trovarsi a {}) - + {}: Unrecognized internal workbench '{}' {}: ambiente di lavoro interno non riconosciuto '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Errore durante l'importazione di {} @@ -2189,129 +2224,143 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Errore durante il tentativo di rimuovere il file macro {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Impossibile connettersi a GitHub. Controlla le impostazioni di connessione e proxy. - + WARNING: Duplicate addon {} ignored ATTENZIONE: Addon duplicato {} ignorato - + Workbenches list was updated. Elenco degli Ambienti di lavoro aggiornato. - + Git is disabled, skipping git macros Git è disabilitato, le macro git saltate - + Attempting to change non-git Macro setup to use git Tentativo di modificare la configurazione Macro non git per usare git - + An error occurred updating macros from GitHub, trying clean checkout... Si è verificato un errore durante l'aggiornamento delle macro da GitHub, ritentando il check out... - + Attempting to do a clean checkout... Tentativo di fare un check out pulito... - + Clean checkout succeeded Checkout pulito riuscito - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Impossibile aggiornare le macro da GitHub -- prova a cancellare la cache di Addon Manager. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Errore nel connettersi al Wiki, FreeCAD non può recuperare l'elenco macro Wiki in questo momento - + Unable to fetch git updates for workbench {} Impossibile recuperare gli aggiornamenti git per l'ambiente di lavoro {} - + git status failed for {} stato git fallito per {} - + Failed to read metadata from {name} Lettura dei metadati da {name} non riuscita - + Failed to fetch code for macro '{name}' Recupero del codice per macro '{name}' non riuscito - + Caching macro code... Memorizzazione codice macro... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: un processo in corso non è riuscito a completarsi durante il recupero di {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Su {num_macros} macro, {num_failed} si sono bloccate durante l'elaborazione - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: un processo in corso impedisce di arrestare ({name}) - + Getting metadata from macro {} Ottengo i metadati dalla macro {} - + Timeout while fetching metadata for macro {} Timeout durante il recupero dei metadati per la macro {} - + Failed to kill process for macro {}! Impossibile terminare il processo per la macro {}! - + Retrieving macro description... Recupero descrizione macro... - + Retrieving info from git Recupero informazioni da git - + Retrieving info from wiki Recupero informazioni dal wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Impossibile ottenere le statistiche di Addon da {} -- solo l'ordinamento alfabetico sarà accurato + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Impossibile ottenere il punteggio Addon da '{}' -- l'ordinamento per punteggio fallirà + + Repository URL @@ -2394,16 +2443,46 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili Compact view Compact view + + + Alphabetical + Sort order + Alfabetico + + + + Last Updated + Sort order + Ultimo aggiornamento + + + + Date Created + Sort order + Data creazione + + + + GitHub Stars + Sort order + Stelline su GitHub + + + + Score + Sort order + Punteggio + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Gestisci ambienti di lavoro, macro e pacchetti di preferenze esterni @@ -2440,7 +2519,7 @@ gli addons installati verranno controllati per gli aggiornamenti disponibili QObject - + Addon Manager Addon manager diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ja.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ja.qm index df246efe9c..17002ebed0 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_ja.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_ja.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ja.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_ja.ts index b84a0ed46e..3c6a7def57 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_ja.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_ja.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon アイコン - + <h1>Package Name</h1> <h1>パッケージ名</h1> - + Version バージョン - + (tags) (タグ) - - + + Description 説明 - - + + Maintainer メンテナー - + Update Available 利用可能なアップデートがあります - + + labelSort + labelSort + + + UpdateAvailable 利用可能なものを更新 @@ -597,36 +602,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Git 実行ファイルのパス (オプション): - + The path to the git executable. Autodetected if needed and not specified. Git実行ファイルのパス。指定されていない場合には必要時に自動検出されます。 - + Advanced Options 詳細設定 - + Show option to change branches (requires git) ブランチ変更オプションを表示 (gitが必要) - + Disable git (fall back to ZIP downloads only) Git を無効にする (ZIP ダウンロードのみに戻ります) - + Activate Addon Manager options intended for developers of new Addons. 新しいアドオン開発者向けのアドオン・マネージャー・オプションを有効にします。 - + Addon developer mode アドオン開発者モード @@ -1099,17 +1114,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1128,46 +1143,46 @@ installed addons will be checked for available updates - + Addon manager アドオン・マネージャー - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now 今すぐ再起動 - + Restart later 後で再起動 - - + + Refresh local cache ローカルキャッシュを更新 - + Updating cache... キャッシュを更新しています... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... アップデートを確認中… @@ -1213,30 +1228,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer メンテナー - + + - Author 作成者 @@ -1348,10 +1363,10 @@ installed addons will be checked for available updates {date} にインストールされました - - - + + + Installed インストール済み @@ -1529,17 +1544,17 @@ installed addons will be checked for available updates 新しいライセンスファイルの場所 - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1561,9 +1576,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1900,79 +1915,99 @@ installed addons will be checked for available updates 検索... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags タグ - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version インストール済のバージョン - + Unknown version Unknown version - + Installed on Installed on - + Available version 利用可能なバージョン @@ -2136,23 +2171,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2187,129 +2222,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... マクロの説明を取得... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2392,16 +2441,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2438,7 +2517,7 @@ installed addons will be checked for available updates QObject - + Addon Manager アドオン・マネージャー diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ka.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ka.qm index 252262945b..e3df40c5cb 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_ka.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_ka.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ka.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_ka.ts index d27fe65571..ab124a3486 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_ka.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_ka.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon ხატულა - + <h1>Package Name</h1> <h1>პაკეტის სახელი</h1> - + Version ვერსია - + (tags) (ჭდეები) - - + + Description აღწერა - - + + Maintainer პროექტის ლიდერი - + Update Available განახლება ხელმისაწვდომია - + + labelSort + ჭდეების დალაგება + + + UpdateAvailable ხელმისაწვდომიაგანახლება @@ -544,17 +549,17 @@ installed addons will be checked for available updates Hide Addons without a license - Hide Addons without a license + ლიცენზიის არმქონე დამატებების დამალვა Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + არა-FSF/Libre ლიცენზიის მქონე დამატებების დამალვა Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + არა-OSI-ის მიერ მოწონებული ლიცენზიის მქონე გაფართოებების დამალვა @@ -598,36 +603,46 @@ installed addons will be checked for available updates + Score source URL + წყაროს ბმულის შეფასება + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + ბმული დამატების ქულების მონაცემისთვის (იხილეთ დოკუმენტაცია ფორმატისა და ჰოსტინგის დეტალებისთვის). + + + Path to git executable (optional): 'git'-ის გამშვები ფაილის ბილიკი (არასავალდებულოა): - + The path to the git executable. Autodetected if needed and not specified. ბილიკი git-ის გამშვებ ფაილამდე. შეივსება ავტომატურად, თუ ის საჭიროა, მითითებული კი არა. - + Advanced Options დამატებითი პარამეტრები - + Show option to change branches (requires git) ბრენჩების ცვლილების მხარდაჭერის ჩართვა (საჭიროა Git) - + Disable git (fall back to ZIP downloads only) Git-ის გამორთვა (გამოყენებული იქნება მხოლოდ ZIP ფაილები) - + Activate Addon Manager options intended for developers of new Addons. დამატებების მმართველში ახალი დამატებების პროგრამისტებისათვის განკუთვნილი პარამეტრების აქტივაცია. - + Addon developer mode დამატების პროგრამისტის რეჟიმი @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... გაშვება... - + Loading addon information დამატების შესახებ ინფორმაციის ჩატვირთვა - + Worker process {} is taking a long time to stop... დამხმარე პროცესი {} გაჩერებას მეტისმეტად დიდხანს უნდება... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager დამატებების მმართველი - + You must restart FreeCAD for changes to take effect. ცვლილებების ძალაში შესასვლელად საჭიროა FreeCAD-ის გადატვირთვა. - + Restart now ახლავე გადატვირთვა - + Restart later მოგვიანებით გადატვირთვა - - + + Refresh local cache ლოკალური კეშის განახლება - + Updating cache... კეშის განახლება... - + Could not find addon '{}' to select ასარჩევი განახლება ნაპოვნი არაა'{}' - - + + Checking for updates... განახლების შემოწმება... @@ -1182,22 +1197,22 @@ installed addons will be checked for available updates Update all addons - Update all addons + ყველა დამატების განახლება Check for updates - Check for updates + განახლებების შემოწმება Python dependencies... - Python dependencies... + Python-ის დამოკიდებულებები... Developer tools... - Developer tools... + პროგრამისტის ხელსაწყოები... @@ -1207,38 +1222,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + 1 ხელმისაწვდომი განახლების გადატარება Apply {} available updates - Apply {} available updates + {} ხელმისაწვდომი განახლების გადატარება - - - + + + Cannot launch a new installer until the previous one has finished. ახალი დამყენებლის გაშვება მაშინ, როცა წინა ჯერ არ დასრულებულა, შეუძლებელია. - + Execution of macro failed. See console for failure details. მაკროს შესრულების შეცდომა. მეტი დეტალებისთვის იხილეთ კონსოლი. - + + - Maintainer წამყვანი პროგრამისტი - + + - Author ავტორი @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates ინსტალაციის თარიღი {date} - - - + + + Installed დაყენებულია @@ -1380,12 +1395,12 @@ installed addons will be checked for available updates Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + ბრენჩი შეიცვალა '{}' - დამატების გამოსაყენებლად გადატვირთეთ. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + დამატება განახლდა. ცვლილებების სანახავად გადატვირთეთ FreeCAD. @@ -1395,17 +1410,17 @@ installed addons will be checked for available updates Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + ამჟამად ბრენჩია {}. ხელმისაწვდომია განახლება ვერსიამდე {} Update available to version {} - Update available to version {} + ხელმისაწვდომია განახლება ვერსიამდე {} This is the latest version available - This is the latest version available + ეს არის უახლესი ვერსია @@ -1415,12 +1430,12 @@ installed addons will be checked for available updates WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + გაფრთხილება: ეს დამატება მუშაობს, მხოლოდ, Python v2-ზე WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + გაფრთხილება: ამ დამატებას სჭირდება FreeCAD {} @@ -1472,7 +1487,7 @@ installed addons will be checked for available updates Check for update - Check for update + განახლების შემოწმება @@ -1482,7 +1497,7 @@ installed addons will be checked for available updates Change branch... - Change branch... + ბრენჩის შეცვლა... @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates ახალი ლიცენზიის ფაილის მდებარეობა - + Received {} response code from server სერვერიდან მიღებულია პასუხის კოდი {} - + Failed to install macro {} მაკრო {} დაყენების შეცდომა - + Failed to create installation manifest file: დაყენების მანიფესტის ფაილის შექმნა ჩავარდა: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates აირჩიეთ ხატულას ფაილი ამ შემცველობის ელემენტისთვის - + {} is not a subdirectory of {} {} -ი {}-ის ქვესაქაღალდეს არ წარმოადგენს @@ -1902,91 +1917,111 @@ installed addons will be checked for available updates ძებნა... - + Click for details about package {} პაკეტის დეტალების გასაგებად დააწკაპუნეთ {} - + Click for details about workbench {} სამუშაო მაგიდის დეტალების გასაგებად დააწკაპუნეთ {} - + Click for details about macro {} მაკროს დეტალების სანახავად დააწკაპუნეთ {} - + Maintainers: პროექტის ლიდერები: - + Tags ჭდეები - - updated - განახლებულია + + {} ★ on GitHub + {} ★ GitHub-ზე - - + + No ★, or not on GitHub + ★-ის გარეშე, ან GitHub-ზე არაა + + + + Created + შექმნლია + + + + Updated + განახლებულია + + + + Score: + ქულა: + + + + Up-to-date განახლებულია - - - + + + Update available განახლება ხელმისაწვდომია - - + + Pending restart რესტარტის მოლოდინი - - + + DISABLED გათიშულია - + Installed version დაყენებული ვერსია - + Unknown version უცნობი ვერსია - + Installed on დაყენების დრო - + Available version ხელმისაწვდომი ვერსია Filter by... - Filter by... + ფილტრის პირობა... Addon Type - Addon Type + დამატების ტიპი @@ -2007,7 +2042,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + დაყენების სტატუსი @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates მაკროს მიერ მითითებული ფაილის {} პოვნა შეუძლებელია (ველოდი მისამართზე {}) - + {}: Unrecognized internal workbench '{}' {}: უცნობი შიდა სამუშაო დაფა '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) დამატების პროგრამისტის გაფრთხილება: რეპოს URL, რომელიც დაყენებულია დამატების {} ({}) package.xml ფაილში, არ ემთხვევა URL-ს, საიდანაც ის გადმოვწერეთ ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) დამატების პროგრამისტის გაფრთხილება: რეპოს ბრენჩი, რომელიც დაყენებულია დამატების {} ({}) package.xml ფაილში, არ ემთხვევა ბრენჩს, საიდანაც ის გადმოვწერეთ ({}) - - + + Got an error when trying to import {} შეცდომა {}-ის შემოტანის მცდელობისას @@ -2189,129 +2224,141 @@ installed addons will be checked for available updates შეცდომა მაკროს ფაილის {} წაშლისას: - + Failed to connect to GitHub. Check your connection and proxy settings. GitHub-თან მიერთების შეცდომა. შეამოწმეთ შეერთებისა და პროქსის პარამეტრები. - + WARNING: Duplicate addon {} ignored გაფრთხილება: დუბლიკატი გაფართოება {} გამოტოვებულია - + Workbenches list was updated. სამუშაო გარემოების სია განახლდა. - + Git is disabled, skipping git macros Git-ი გათიშულია. git მაკროები გამოტოვებული იქნება - + Attempting to change non-git Macro setup to use git მცდელობა, არა-git-ის მაკროსი git-ის გამოყენებაზე გადავრთო - + An error occurred updating macros from GitHub, trying clean checkout... შეცდომა მაკროების GitHub-დან განახლებისას. ვცდი სუფთად გამოვითხოვო... - + Attempting to do a clean checkout... სუფთა გამოთხოვის მცდელობა... - + Clean checkout succeeded სუფთა გამოთხოვა წარმატებულია - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. GitHub-დან მაკროს განახლების შეცდომა -- სცადეთ დამატებების მმართველის ქეში გაწმინდოთ. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time ვიკისთან დაკავშირების შეცდომა. FreeCAD-ს ამჟამად ვკიდან მაკროების სიის მიღება არ შეუძლია - + Unable to fetch git updates for workbench {} სამუშაო მაგიდის {} განახლებების git-დან მიღება შეუძლებელია - + git status failed for {} git status-ის შეცდომა {} - + Failed to read metadata from {name} მეტამონაცემების {name}-დან კითხვის შეცდომა - + Failed to fetch code for macro '{name}' მაკროს '{name}' კოდის გამოთხოვის შეცდომა; - + Caching macro code... მაკროს კოდის კეშირება... - + Addon Manager: a worker process failed to complete while fetching {name} დამატებების მმართველი: დამხმარე პროცესის შეცდომა {name}-ის გადმოწერისას - + Out of {num_macros} macros, {num_failed} timed out while processing {num_macros} მაკროდან {num_failed}-ის დამუშავების ვადა გავიდა - + Addon Manager: a worker process failed to halt ({name}) დამატებების მმართველი: დამხმარე პროცესის შეჩერების შეცდომა ({name}) - + Getting metadata from macro {} მაკროდან {} მეტამონაცემების მიღება - + Timeout while fetching metadata for macro {} მაკროს {} მეტამონაცემების გამოთხოვნის ვადა გავიდა - + Failed to kill process for macro {}! მაკროს {} პროცესის მოკვლა შეუძლებელია! - + Retrieving macro description... მაკროს აღწერის მიღება... - + Retrieving info from git ინფორმაციის git-დან მიღება - + Retrieving info from wiki ინფორმაციის wiki-დან მიღება + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + {}-დან დამატების სტატისტიკის მიღება ჩავარდა -- სწორი, მხოლოდ, ანბანით დალაგება იქნება + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + '{}'-დან დამატების ქულების გამოთხოვნა ჩავარდა -- ქულებით დალაგება ჩავარდება + Repository URL @@ -2372,7 +2419,7 @@ installed addons will be checked for available updates Loading page for {} from {}... - Loading page for {} from {}... + იტვირთება გვერდი {} {}-დან... @@ -2382,28 +2429,58 @@ installed addons will be checked for available updates Composite view - Composite view + კომპოზიტური ხედი Expanded view - Expanded view + გაფართოებული ხედი Compact view - Compact view + კომპაქტური ხედი + + + + Alphabetical + Sort order + ანბანის მიხედვით + + + + Last Updated + Sort order + ბოლოს განახლებული + + + + Date Created + Sort order + შექმნის თარიღი + + + + GitHub Stars + Sort order + GitHub-ის ვარსკვლავები + + + + Score + Sort order + ქულა Std_AddonMgr - + &Addon manager &დამატებების მმართველი - + Manage external workbenches, macros, and preference packs მართეთ გარე სამუშაო მაგიდები, მაკროები და პარამეტრების ნაკრებები @@ -2440,7 +2517,7 @@ installed addons will be checked for available updates QObject - + Addon Manager დამატებების მმართველი diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ko.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ko.qm index 1a1124dc08..02205de1b5 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_ko.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_ko.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ko.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_ko.ts index d695db8aeb..b0df7b6e55 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_ko.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_ko.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon 아이콘 - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version 버전 - + (tags) (tags) - - + + Description 설명 - - + + Maintainer Maintainer - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable 업데이트 가능 @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Advanced Options - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache 로컬 캐시 비우기 - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Maintainer - + + - Author 작성자: @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates 검색하기... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags 태그 - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Installed version - + Unknown version Unknown version - + Installed on Installed on - + Available version Available version @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager 애드온 매니저 diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_nl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_nl.qm index 35b0f228c8..597721fce5 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_nl.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_nl.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_nl.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_nl.ts index f2b2b0f3fe..f2ddc14e5b 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_nl.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_nl.ts @@ -360,48 +360,53 @@ Wilt u dat de Uitbreidingsmanager deze automatisch installeert? Kies "Neger ExpandedView - + Icon Pictogram - + <h1>Package Name</h1> <h1>Pakket Naam</h1> - + Version Versie - + (tags) (labels) - - + + Description Omschrijving - - + + Maintainer Beheerder - + Update Available Update beschikbaar - + + labelSort + labelSort + + + UpdateAvailable UpdateBeschikbaar @@ -597,36 +602,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Pad naar git executable (optioneel): - + The path to the git executable. Autodetected if needed and not specified. Het pad naar het git uitvoerbare bestand. Automatisch gedetecteerd indien nodig en niet opgegeven. - + Advanced Options Geavanceerde Opties - + Show option to change branches (requires git) Toon de mogelijkheid om branches te wijzigen (vereist git) - + Disable git (fall back to ZIP downloads only) Schakel git uit (gebruik alleen ZIP downloads) - + Activate Addon Manager options intended for developers of new Addons. Activeer de voorkeuren voor Uitbreidingsmanager voor ontwikkelaars van nieuwe uitbreidingen. - + Addon developer mode Uitbreiding ontwikkelaar gereedschappen @@ -1099,17 +1114,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Opstarten... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1128,46 +1143,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. U moet FreeCAD herstarten om de wijzigingen toe te passen. - + Restart now Nu opnieuw opstarten - + Restart later Later opnieuw opstarten - - + + Refresh local cache Lokale cache vernieuwen - + Updating cache... Bezig met updaten van cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Zoeken naar updates... @@ -1185,7 +1200,7 @@ installed addons will be checked for available updates Check for updates - Check for updates + Op updates controleren @@ -1205,38 +1220,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + Pas 1 beschikbare update toe Apply {} available updates - Apply {} available updates + {} beschikbare updates toepassen - - - + + + Cannot launch a new installer until the previous one has finished. Kan geen nieuw installatieprogramma starten totdat de vorige klaar is. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Beheerder - + + - Author Auteur @@ -1348,10 +1363,10 @@ installed addons will be checked for available updates Geïnstalleerd op {date} - - - + + + Installed Geïnstalleerd @@ -1388,7 +1403,7 @@ installed addons will be checked for available updates Disabled - Disabled + Uitgeschakeld @@ -1398,12 +1413,12 @@ installed addons will be checked for available updates Update available to version {} - Update available to version {} + Update beschikbaar voor versie {} This is the latest version available - This is the latest version available + Dit is de nieuwste versie die beschikbaar is @@ -1470,7 +1485,7 @@ installed addons will be checked for available updates Check for update - Check for update + Controleer op update @@ -1529,17 +1544,17 @@ installed addons will be checked for available updates Locatie van nieuwe licentiebestand - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1561,9 +1576,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is geen submap van {} @@ -1900,86 +1915,106 @@ installed addons will be checked for available updates Zoeken... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Beheerders: - + Tags Labels - - updated - bijgewerkt + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Aangemaakt + + + + Updated + Bijgewerkt + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update beschikbaar - - + + Pending restart Wachten op herstarten - - + + DISABLED UITGESCHAKELD - + Installed version Geïnstalleerde versie - + Unknown version Onbekende versie - + Installed on Geïnstalleerd op - + Available version Beschikbare versie Filter by... - Filter by... + Filteren op... @@ -2005,7 +2040,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + Installatiestatus @@ -2136,23 +2171,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Er is een fout opgetreden bij het importeren van {} @@ -2187,129 +2222,143 @@ installed addons will be checked for available updates Fout bij het verwijderen van het macro bestand {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Kan geen verbinding maken met GitHub. Controleer je verbinding en proxy-instellingen. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Informatie ophalen van git - + Retrieving info from wiki Informatie ophalen van wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2392,16 +2441,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alfabetisch + + + + Last Updated + Sort order + Laatst bijgewerkt + + + + Date Created + Sort order + Datum aangemaakt + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Uitbreidingsmanager - + Manage external workbenches, macros, and preference packs Beheer externe werkbanken, macro's en voorkeurspakketten @@ -2438,7 +2517,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Uitbreidingsmanager diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_pl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_pl.qm index 0f3b5ee1d7..e91c05b6ad 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_pl.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_pl.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_pl.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_pl.ts index 1742c60dee..6c25834958 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_pl.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_pl.ts @@ -360,48 +360,53 @@ Czy chcesz, aby Menadżer dodatków zainstalował je automatycznie? Wybierz "Zig ExpandedView - + Icon Ikonka - + <h1>Package Name</h1> <h1>Nazwa pakietu</h1> - + Version Wersja - + (tags) (znaczniki) - - + + Description Opis - - + + Maintainer Opiekun - + Update Available Aktualizacja jest dostępna - + + labelSort + sortowanie etykiet + + + UpdateAvailable Dostępna aktualizacja @@ -545,17 +550,17 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Hide Addons without a license - Hide Addons without a license + Ukryj dodatki bez zdefiniowanej licencji Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Ukryj dodatki bez licencji FSF Free/Libre Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Ukryj dodatki z licencją niezatwierdzoną przez OSI @@ -599,36 +604,46 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji + Score source URL + Adres URL źródła wyniku + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + Adres URL dla danych o punktacji dodatków (szczegóły dotyczące formatowania i hostingu znajdują się w dokumentacji). + + + Path to git executable (optional): Ścieżka do pliku wykonywalnego Git (opcjonalnie): - + The path to the git executable. Autodetected if needed and not specified. Ścieżka do pliku wykonywalnego git. W razie potrzeby wykrywana automatycznie, jeśli nie została określona. - + Advanced Options Opcje zaawansowane - + Show option to change branches (requires git) Pokaż opcję zmiany gałęzi (wymaga git) - + Disable git (fall back to ZIP downloads only) Wyłącz Git (powróć do pobierania tylko w formacie ZIP) - + Activate Addon Manager options intended for developers of new Addons. Aktywuj opcje Menedżera dodatków przeznaczone dla twórców nowych dodatków. - + Addon developer mode Tryb dewelopera dodatków @@ -1101,17 +1116,17 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji AddonsInstaller - + Starting up... Uruchamianie ... - + Loading addon information Wczytywanie informacji o dodatku - + Worker process {} is taking a long time to stop... Zatrzymanie działającego procesu {} zajmuje dużo czasu ... @@ -1129,46 +1144,46 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Zmieniono listę repozytoriów użytkownika, wymuszając ponowne buforowanie ... - + Addon manager Menadżera dodatków - + You must restart FreeCAD for changes to take effect. Musisz zrestartować FreeCAD, aby zmiany zaczęły obowiązywać. - + Restart now Uruchom ponownie teraz - + Restart later Uruchom ponownie później - - + + Refresh local cache Odśwież pamięć podręczną - + Updating cache... Aktualizowanie pamięci podręcznej ... - + Could not find addon '{}' to select Nie można znaleźć dodatku "{}"; do wybrania - - + + Checking for updates... Sprawdzam dostępność aktualizacji ... @@ -1181,22 +1196,22 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Update all addons - Update all addons + Aktualizuj wszystkie dodatki Check for updates - Check for updates + Sprawdź dostępność aktualizacji Python dependencies... - Python dependencies... + Zależności środowiska Python ... Developer tools... - Developer tools... + Narzędzia programisty ... @@ -1206,38 +1221,38 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Apply 1 available update - Apply 1 available update + Zastosuj 1 dostępną aktualizację Apply {} available updates - Apply {} available updates + Zastosuj {} dostępne aktualizacje - - - + + + Cannot launch a new installer until the previous one has finished. Nie można uruchomić nowego instalatora, dopóki poprzedni instalator nie zakończy pracy. - + Execution of macro failed. See console for failure details. Wykonanie makrodefinicji nie powiodło się. Szczegóły awarii znajdują się w konsoli. - + + - Maintainer Opiekun - + + - Author Autor @@ -1349,10 +1364,10 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Data instalacji {date} - - - + + + Installed Zainstalowano @@ -1379,12 +1394,12 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Zmieniono na gałąź "{}" -- uruchom ponownie, aby korzystać z dodatku. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Ten dodatek został zaktualizowany. Uruchom ponownie FreeCAD, aby zobaczyć zmiany. @@ -1394,17 +1409,17 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + W gałęzi {} aktualizacja dostępna do wersji {} Update available to version {} - Update available to version {} + Aktualizacja dostępna do wersji {} This is the latest version available - This is the latest version available + To jest najnowsza dostępna wersja @@ -1414,12 +1429,12 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + UWAGA: Ten dodatek jest przeznaczony tylko dla środowiska Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + OSTRZEŻENIE: Ten dodatek wymaga programu FreeCAD {} @@ -1471,7 +1486,7 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Check for update - Check for update + Sprawdź dostępność aktualizacji @@ -1481,7 +1496,7 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Change branch... - Change branch... + Zmień gałąź ... @@ -1530,17 +1545,17 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Lokalizacja nowego pliku licencji - + Received {} response code from server Otrzymano {} kod odpowiedzi z serwera - + Failed to install macro {} Nie udało się zainstalować makrodefinicji {} - + Failed to create installation manifest file: Nie udało się utworzyć pliku informacji o instalacji: @@ -1562,9 +1577,9 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Wybierz plik ikon dla tego elementu - + {} is not a subdirectory of {} {} nie jest podkatalogiem {} @@ -1901,91 +1916,111 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Szukaj ... - + Click for details about package {} Kliknij, aby uzyskać informacje o pakiecie {} - + Click for details about workbench {} Kliknij, aby uzyskać informacje o środowisku pracy {} - + Click for details about macro {} Kliknij, aby uzyskać informacje o makrodefinicji {} - + Maintainers: Opiekunowie: - + Tags Znaczniki - - updated - zaktualizowano + + {} ★ on GitHub + {} ★ na GitHub - - + + No ★, or not on GitHub + Bez ★, lub nie na GitHub + + + + Created + Utworzono + + + + Updated + Zaktualizowano + + + + Score: + Wynik: + + + + Up-to-date Aktualny - - - + + + Update available Dostępna aktualizacja - - + + Pending restart Oczekuje na ponowne uruchomienie - - + + DISABLED WYŁĄCZONY - + Installed version Wersja zainstalowana - + Unknown version Nieznana wersja - + Installed on Data instalacji - + Available version Wersja dostępna Filter by... - Filter by... + Filtruj według ... Addon Type - Addon Type + Typ dodatku @@ -2006,7 +2041,7 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Installation Status - Installation Status + Stan instalacji @@ -2137,23 +2172,23 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Nie można zlokalizować określonego przez makrodefinicję pliku {} (oczekiwany w {}) - + {}: Unrecognized internal workbench '{}' {}: Nierozpoznane wewnętrzne środowisko pracy "{}" - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Ostrzeżenie dla twórców dodatku: Adres URL repozytorium ustawiony w pliku package.xml dla dodatku {} ({}) nie pasuje do adresu URL pobranego z ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Ostrzeżenie dla twórców dodatku: Gałąź repozytorium ustawiona w pliku package.xml dla dodatku {} ({}) nie pasuje do gałęzi, z której został on pobrany ({}) - - + + Got an error when trying to import {} Wystąpił błąd podczas próby zaimportowania {} @@ -2188,131 +2223,145 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Błąd podczas próby usunięcia pliku makrodefinicji {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Niepowodzenie nie udało się połączyć z GitHub. Sprawdź swoje połączenie i ustawienia serwera pośredniczącego. - + WARNING: Duplicate addon {} ignored OSTRZEŻENIE: Duplikat dodatku {} pominięto - + Workbenches list was updated. Lista środowisk pracy została zaktualizowana. - + Git is disabled, skipping git macros Git jest wyłączony, pominięto repozytorium Git makrodefinicji - + Attempting to change non-git Macro setup to use git Próba zmiany konfiguracji makrodefinicji niebędącej typu Git na używanie Git - + An error occurred updating macros from GitHub, trying clean checkout... Wystąpił błąd podczas aktualizacji makrodefinicji z GitHub, próba czyszczenia ... - + Attempting to do a clean checkout... Próbuje wykonać czyszczenie ... - + Clean checkout succeeded Czyszczenie zakończone pomyślnie - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Nie udało się zaktualizować makrodefinicji z repozytorium GitHub — próba oczyszczenia pamięci podręcznej Menedżera dodatków. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Błąd połączenia z Wiki, FreeCAD nie może w tej chwili pobrać listy makrodefinicji Wiki - + Unable to fetch git updates for workbench {} Nie można pobrać aktualizacji Git dla środowiska pracy {} - + git status failed for {} Git status brak powodzenia dla {} - + Failed to read metadata from {name} Niepowodzenie nie udało się odczytać metadanych z {name} - + Failed to fetch code for macro '{name}' Niepowodzenie nie udało się pobrać kodu dla makrodefinicji "{name}" - + Caching macro code... Buforowanie kodu makrodefinicji ... - + Addon Manager: a worker process failed to complete while fetching {name} Menedżer dodatków: nie udało się ukończyć procesu przetwarzania podczas pobierania {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Dla {num_macros} makrodefinicji przekroczono limit czasu {num_failed} podczas przetwarzania - + Addon Manager: a worker process failed to halt ({name}) Menadżer dodatków: nie udało się zatrzymać uruchomionego procesu ({name}) - + Getting metadata from macro {} Pobieranie metadanych z makrodefinicji {} - + Timeout while fetching metadata for macro {} Upłynął limit czasu pobierania metadanych dla makrodefinicji {} - + Failed to kill process for macro {}! Nie udało się przerwać procesu makrodefinicji {}! - + Retrieving macro description... Pobieranie opisu makrodefinicji ... - + Retrieving info from git Pobieranie informacji z Git - + Retrieving info from wiki Pobieranie informacji z Wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Nie udało się pobrać statystyk dodatku z {} - tylko sortowanie alfabetyczne będzie dokładne. + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Nie udało się pobrać wyniku dodatku z "{}" -- sortowanie według wyniku nie powiedzie się. + + Repository URL @@ -2373,7 +2422,7 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Loading page for {} from {}... - Loading page for {} from {}... + Wczytywanie strony {} z {}... @@ -2383,28 +2432,58 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji Composite view - Composite view + Widok złożony Expanded view - Expanded view + Widok rozszerzony Compact view - Compact view + Widok skrócony + + + + Alphabetical + Sort order + Alfabetycznie + + + + Last Updated + Sort order + Ostatnia aktualizacja + + + + Date Created + Sort order + Data utworzenia + + + + GitHub Stars + Sort order + Odznaki GitHub + + + + Score + Sort order + Wynik Std_AddonMgr - + &Addon manager &Menadżer dodatków - + Manage external workbenches, macros, and preference packs Zarządzanie zewnętrznymi środowiskami pracy, makroinstrukcjami i pakietami preferencji @@ -2441,7 +2520,7 @@ zainstalowane dodatki zostaną sprawdzone pod kątem dostępnych aktualizacji QObject - + Addon Manager Menedżer dodatków diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.qm index 85178b9831..ad8bb89231 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.ts index ca7d329903..e1d6a645f2 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.ts @@ -360,48 +360,53 @@ Você quer que o Addon Manager os instale automaticamente? Escolha "Ignorar ExpandedView - + Icon Ícone - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Versão - + (tags) (tags) - - + + Description Descrição - - + + Maintainer Mantenedor - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable Atualização Disponível @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. O caminho para o git executável. Detectado automaticamente se necessário e não especificado. - + Advanced Options Opções Avançadas - + Show option to change branches (requires git) Exibir opção para alterar branches (requer git) - + Disable git (fall back to ZIP downloads only) Desabilitar o git (voltar para downloads ZIP somente) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Atualizar o cache local - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Verificando por atualizações... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Não é possível iniciar um novo instalador até que o anterior tenha terminado. - + Execution of macro failed. See console for failure details. Execução de macro falhou. Veja o console para detalhes de falha. - + + - Maintainer Mantenedor - + + - Author Autor @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Procurar... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Etiquetas - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Versão instalada - + Unknown version Unknown version - + Installed on Installed on - + Available version Versão disponível @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Gerenciador de Extensões diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.qm index d528ad69ae..970e657bac 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.ts index ed7f871575..756f169964 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Ícone - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Versão - + (tags) (tags) - - + + Description Descrição - - + + Maintainer Maintainer - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable UpdateAvailable @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Caminho do executável do git (opcional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Advanced Options - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Refresh local cache - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Maintainer - + + - Author Autor @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Procurar... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Tags - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Installed version - + Unknown version Unknown version - + Installed on Installed on - + Available version Available version @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Gestor de Add-ons diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ro.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ro.qm index 9f53f54251..e50036a6ed 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_ro.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_ro.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ro.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_ro.ts index 790490fc4b..e208c211de 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_ro.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_ro.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Iconiță - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Versiunea - + (tags) (tags) - - + + Description Descriere - - + + Maintainer Maintainer - + Update Available Actualizare disponibilă - + + labelSort + labelSort + + + UpdateAvailable UpdateAvailable @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Advanced Options - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Refresh local cache - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Maintainer - + + - Author Autor @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Caută... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Etichete - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Installed version - + Unknown version Unknown version - + Installed on Installed on - + Available version Available version @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Manager de addon diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ru.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ru.qm index a70c4bdad0..b2746a072f 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_ru.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_ru.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ru.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_ru.ts index 8b8abfa87f..1598e5519a 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_ru.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_ru.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Иконка - + <h1>Package Name</h1> <h1>Имя пакета</h1> - + Version Версия - + (tags) (метки) - - + + Description Описание - - + + Maintainer Сопровождающий - + Update Available Доступно обновление - + + labelSort + labelSort + + + UpdateAvailable Доступно обновление @@ -543,17 +548,17 @@ installed addons will be checked for available updates Hide Addons without a license - Hide Addons without a license + Скрыть аддоны без лицензии Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Скрыть дополнения с лицензией Free/Libre, отличной от FSF Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Скрыть дополнения с лицензией, не одобренной OSI @@ -597,36 +602,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Путь к исполняемому файлу git (необязательно): - + The path to the git executable. Autodetected if needed and not specified. Путь к исполняемому файлу git. Определяется автоматически, если он нужен, но не указан. - + Advanced Options Расширенные настройки - + Show option to change branches (requires git) Показать опцию для смены ветвей (требуется git) - + Disable git (fall back to ZIP downloads only) Отключить git (загружать только ZIP) - + Activate Addon Manager options intended for developers of new Addons. Активировать опции менеджера расширений, предназначенные для разработчиков новых Addons. - + Addon developer mode Режим разработчика дополнений @@ -916,7 +931,7 @@ installed addons will be checked for available updates Change to branch: - Change to branch: + Перейти в ветку: @@ -1099,17 +1114,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Запуск... - + Loading addon information Загрузка информации о дополнении - + Worker process {} is taking a long time to stop... Работающий процесс {} занимает много времени при остановке... @@ -1128,46 +1143,46 @@ installed addons will be checked for available updates - + Addon manager Менеджер дополнений - + You must restart FreeCAD for changes to take effect. Вы должны перезапустить FreeCAD, чтобы изменения вступили в силу. - + Restart now Перезагрузить сейчас - + Restart later Перезагрузить позже - - + + Refresh local cache Обновить локальный кэш - + Updating cache... Обновление кэша... - + Could not find addon '{}' to select Не удалось найти аддон '{}' для выбора - - + + Checking for updates... Проверка обновлений... @@ -1180,22 +1195,22 @@ installed addons will be checked for available updates Update all addons - Update all addons + Обновить все дополнения Check for updates - Check for updates + Проверить наличие обновлений Python dependencies... - Python dependencies... + Зависимости Python... Developer tools... - Developer tools... + Инструменты разработчика... @@ -1205,38 +1220,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + Применить 1 доступное обновление Apply {} available updates - Apply {} available updates + Применить {} доступных обновлений - - - + + + Cannot launch a new installer until the previous one has finished. Невозможно запустить новую установку, пока не завершена предыдущая. - + Execution of macro failed. See console for failure details. Не удалось выполнить макрос. Подробности об ошибке смотрите в консоли. - + + - Maintainer Разработчик - + + - Author Автор @@ -1348,17 +1363,17 @@ installed addons will be checked for available updates Установлено {date} - - - + + + Installed Установлено Currently on branch {}, name changed to {} - Currently on branch {}, name changed to {} + В настоящее время в ветке {}, имя изменено на {} @@ -1378,12 +1393,12 @@ installed addons will be checked for available updates Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Изменено на ветку '{}' -- пожалуйста, перезапустите, чтобы использовать аддон. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Этот аддон был обновлен. Перезапустите FreeCAD, чтобы увидеть изменения. @@ -1393,17 +1408,17 @@ installed addons will be checked for available updates Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + В настоящее время находится в ветке {}, доступно обновление для версии {} Update available to version {} - Update available to version {} + Доступно обновление до версии {} This is the latest version available - This is the latest version available + Это последняя доступная версия @@ -1413,12 +1428,12 @@ installed addons will be checked for available updates WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + ВНИМАНИЕ: Это дополнение только для Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + ВНИМАНИЕ: Для этого дополнения требуется FreeCAD {} @@ -1470,7 +1485,7 @@ installed addons will be checked for available updates Check for update - Check for update + Проверить обновления @@ -1480,7 +1495,7 @@ installed addons will be checked for available updates Change branch... - Change branch... + Изменить ветку... @@ -1529,20 +1544,20 @@ installed addons will be checked for available updates Расположение нового файла лицензии - + Received {} response code from server Получен ответ {} от сервера - + Failed to install macro {} Не удалось установить макрос {} - + Failed to create installation manifest file: - Failed to create installation manifest file: + Не удалось создать файл манифеста установки: @@ -1561,9 +1576,9 @@ installed addons will be checked for available updates Выберите файл значка для этого элемента содержимого - + {} is not a subdirectory of {} {} не является подкаталогом {} @@ -1900,91 +1915,111 @@ installed addons will be checked for available updates Поиск... - + Click for details about package {} Щёлкните для подробностей о пакете {} - + Click for details about workbench {} Щёлкните для подробностей о верстаке {} - + Click for details about macro {} Щёлкните для подробностей о макросе {} - + Maintainers: Сопровождающие: - + Tags Теги - - updated - обновлено + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Актуальная версия - - - + + + Update available Доступно обновление - - + + Pending restart В ожидании перезапуска - - + + DISABLED ОТКЛЮЧЕНО - + Installed version Установленная версия - + Unknown version Неизвестная версия - + Installed on Установлено - + Available version Доступная версия Filter by... - Filter by... + Фильтр по... Addon Type - Addon Type + Тип дополнения @@ -2005,7 +2040,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + Статус установки @@ -2041,19 +2076,19 @@ installed addons will be checked for available updates Local Table header for local git ref name - Local + Локально Remote tracking Table header for git remote tracking branch name - Remote tracking + Удаленное отслеживание Last Updated Table header for git update date - Last Updated + Последнее обновление @@ -2136,23 +2171,23 @@ installed addons will be checked for available updates Не удалось найти макро-указанный файл {} (ожидалось в {}) - + {}: Unrecognized internal workbench '{}' {}: Нераспознанный внутренний верстак '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Предупреждение разработчика Дополнения: URL-адрес репозитория, заданный в файле package.xml для дополнения {} ({}), не соответствует URL-адресу, с которого он был получен ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Предупреждение разработчика Дополнения: ветка репозитория, указанная в файле package.xml для надстройки {} ({}), не соответствует ветке, из которой она была получена ({}) - - + + Got an error when trying to import {} Произошла ошибка при попытке импортировать {} @@ -2187,129 +2222,143 @@ installed addons will be checked for available updates Ошибка при попытке удалить файл макроса {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Не удалось подключиться к GitHub. Проверьте подключение и настройки прокси. - + WARNING: Duplicate addon {} ignored ВНИМАНИЕ: Повторяющийся аддон {} игнорируется - + Workbenches list was updated. Список верстаков обновлён. - + Git is disabled, skipping git macros Git отключен, пропуск git макросов - + Attempting to change non-git Macro setup to use git Попытка изменить настройки не git Макроса для использования git - + An error occurred updating macros from GitHub, trying clean checkout... Произошла ошибка при обновлении макросов с GitHub, попробуйте очистить заявку (git checkout)... - + Attempting to do a clean checkout... Попытка сделать очистку заявки (git chekout)... - + Clean checkout succeeded Очистка заявки (git checkout) прошла успешно - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Не удалось обновить макрос с GitHub ― попробуйте очистить кэш Менеджера дополнений. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Ошибка подключения к Wiki, FreeCAD не может получить список Вики по макросам в данное время - + Unable to fetch git updates for workbench {} Не удалось получить обновления git для верстака {} - + git status failed for {} сбой статуса git для {} - + Failed to read metadata from {name} Не удалось прочитать метаданные из {name} - + Failed to fetch code for macro '{name}' Не удалось получить код для макроса '{name}' - + Caching macro code... Кэширование кода макроса... - + Addon Manager: a worker process failed to complete while fetching {name} Менеджер дополнений: рабочему процессу не удалось загрузить {name} - + Out of {num_macros} macros, {num_failed} timed out while processing При обработке {num_macros} макрос(ов/а), у {num_failed} истекло время ожидания - + Addon Manager: a worker process failed to halt ({name}) Менеджер дополнений: рабочий процесс ({name}) не удалось остановить - + Getting metadata from macro {} Получение метаданных из макроса {} - + Timeout while fetching metadata for macro {} Таймаут при получении метаданных для макроса {} - + Failed to kill process for macro {}! Не удалось убить процесс для макроса {}! - + Retrieving macro description... Получение описания макроса... - + Retrieving info from git Получение информации из git - + Retrieving info from wiki Получение информации из вики + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2340,7 +2389,7 @@ installed addons will be checked for available updates Git branch rename failed with the following message: - Git branch rename failed with the following message: + Переименование ветки Git не удалось со следующим сообщением: @@ -2370,38 +2419,68 @@ installed addons will be checked for available updates Loading page for {} from {}... - Loading page for {} from {}... + Загрузка страницы для {} из {}... Failed to download data from {} -- received response code {}. - Failed to download data from {} -- received response code {}. + Не удалось загрузить данные из {} -- получен код ответа {}. Composite view - Composite view + Композитный вид Expanded view - Expanded view + Расширенный вид Compact view - Compact view + Компактный вид + + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Последнее обновление + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score Std_AddonMgr - + &Addon manager &Менеджер дополнений - + Manage external workbenches, macros, and preference packs Управление внешними верстаками, макросами и наборами настроек @@ -2438,7 +2517,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Менеджер дополнений diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sl.qm index 660fcb90f8..2a307b0dfc 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_sl.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_sl.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sl.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_sl.ts index a2a9e32826..25688eea42 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_sl.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_sl.ts @@ -360,48 +360,53 @@ Ali želite, da jih upravljalinik dodatkov namesti samodejno? Izberite "Pre ExpandedView - + Icon Ikona - + <h1>Package Name</h1> <h1>Naziv paketa</h1> - + Version Različica - + (tags) (značke) - - + + Description Opis - - + + Maintainer Vzdrževalec - + Update Available Na voljo je nadgradnja - + + labelSort + labelSort + + + UpdateAvailable Posodobitev na voljo @@ -599,36 +604,46 @@ preveril razpoložljivost posodobitev za nameščene dodatke + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Pot do git izvršljive datoteke (možnostno): - + The path to the git executable. Autodetected if needed and not specified. Pot do git-ove izvršljive datoteke. Samodejno popravljanje, če je potrebno in ni določeno. - + Advanced Options Napredne možnosti - + Show option to change branches (requires git) Prikaži možnost spreminjanja veje (potreben git) - + Disable git (fall back to ZIP downloads only) Onemogoči git (vrnitev na prenos le ZIPa) - + Activate Addon Manager options intended for developers of new Addons. Omogoči možnosti upravljalnika dodatkov, ki so namenjene razvijalcem novih dodatkov. - + Addon developer mode Razvijalski način dodatkov @@ -1101,17 +1116,17 @@ preveril razpoložljivost posodobitev za nameščene dodatke AddonsInstaller - + Starting up... Pričenjanje ... - + Loading addon information Nalaganje podatkov o dodatku - + Worker process {} is taking a long time to stop... Delovni proces {} se predolgo zaustavlja ... @@ -1130,46 +1145,46 @@ preveril razpoložljivost posodobitev za nameščene dodatke - + Addon manager Upravljalnik dodatkov - + You must restart FreeCAD for changes to take effect. Da bi spremembe stopile v veljavo, morate ponovno zagnati FreeCAD. - + Restart now Takojšnji pozagon - + Restart later Pozaženi pozneje - - + + Refresh local cache Osveži krajevni predpomnilnik - + Updating cache... Posodabljanje predpomnilnika ... - + Could not find addon '{}' to select Dodatka '{}' za označitev ni mogoče najti - - + + Checking for updates... Preverjanje za posodobitve … @@ -1215,30 +1230,30 @@ preveril razpoložljivost posodobitev za nameščene dodatke Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Novega namestilnika ni mogoče zagnati, dokler se prejšnji ne konča. - + Execution of macro failed. See console for failure details. Izvedba makra spodletela. Podrobnosti o napaki si poglejte na ukazni mizi. - + + - Maintainer Vzdrževalec - + + - Author Ustvarjalec @@ -1350,10 +1365,10 @@ preveril razpoložljivost posodobitev za nameščene dodatke Nameščeno {date} - - - + + + Installed Nameščeno @@ -1531,17 +1546,17 @@ preveril razpoložljivost posodobitev za nameščene dodatke Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ preveril razpoložljivost posodobitev za nameščene dodatke Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ preveril razpoložljivost posodobitev za nameščene dodatke Iskanje ... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Značke - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Nameščena različica - + Unknown version Unknown version - + Installed on Installed on - + Available version Razpoložljiva različica @@ -2138,23 +2173,23 @@ preveril razpoložljivost posodobitev za nameščene dodatke Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ preveril razpoložljivost posodobitev za nameščene dodatke Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Upravljalnik dodatkov: delovni proces je med pridobivanjem {name} spodletel - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Upravljalnik dodatkov: delovni proces se ni mogel zaustaviti ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ preveril razpoložljivost posodobitev za nameščene dodatke Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ preveril razpoložljivost posodobitev za nameščene dodatke QObject - + Addon Manager Upravljalnik dodatkov diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.qm index ed45168e1e..f4819cbf64 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.ts index 37b94ab43a..6b89b5cf42 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_sr-CS.ts @@ -261,17 +261,17 @@ Da li želiš da ih Menadžer dodataka automatski instalira? Izaberi "Zanem Edit Tags - Uredi oznake + Uredi tagove Comma-separated list of tags describing this item: - Lista oznaka razdvojenih zarezima koje opisuju ovu stavku: + Lista tagova razdvojenih zarezima koje opisuju ovu stavku: HINT: Common tags include "Assembly", "FEM", "Mesh", "NURBS", etc. - SAVET: Uobičajene oznake uključuju "Sklop", "FEM", "Mreža", "NURBS", etc. + SAVET: Uobičajeni tagovi uključuju "Sklop", "FEM", "Mreža", "NURBS", etc. @@ -360,48 +360,53 @@ Da li želiš da ih Menadžer dodataka automatski instalira? Izaberi "Zanem ExpandedView - + Icon Ikona - + <h1>Package Name</h1> <h1>Ime paketa</h1> - + Version Verzija - + (tags) - (oznake) + (tagovi) - - + + Description Opis - - + + Maintainer Programer zadužen za održavanje - + Update Available Dostupno jе ažuriranjе - + + labelSort + labelSort + + + UpdateAvailable Na raspolaganju je novija verzija @@ -454,7 +459,7 @@ Da li želiš da ih Menadžer dodataka automatski instalira? Izaberi "Zanem Upcoming versions of the FreeCAD Addon Manager will support developers' setting a specific branch or tag for use with a specific version of FreeCAD (e.g. setting a specific tag as the last version of your Addon to support v0.19, etc.) - Predstojeće verzije FreeCAD Menadžera dodataka će podržavati programersko podešavanje određene grane ili oznake za upotrebu sa određenom verzijom FreeCAD-a (npr. podešavanje određene oznake kao poslednje verzije vašeg Dodatka za podršku v0.19, itd.) + Predstojeće verzije FreeCAD Menadžera dodataka će podržavati programersko podešavanje određene grane ili tagove za upotrebu sa određenom verzijom FreeCAD-a (npr. podešavanje određenog tag-a kao poslednje verzije vašeg Dodatka za podršku v0.19, itd.) @@ -464,7 +469,7 @@ Da li želiš da ih Menadžer dodataka automatski instalira? Izaberi "Zanem Best-available branch, tag, or commit - Najbolja dostupna grana, oznaka ili commit + Najbolja dostupna grana, tag ili commit @@ -545,17 +550,17 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Hide Addons without a license - Hide Addons without a license + Sakrij dodatke bez licence Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Sakrij dodatke koji nemaju FSF Free/Libre licencu Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Sakrij dodatke koji nemaju OSI odobrenu licencu @@ -599,36 +604,46 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja + Score source URL + URL izvora ocena + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + URL za оцене додатка (pogledajte dokumentaciju za detalje). + + + Path to git executable (optional): Staza ka izvršnoj git datoteci (Neobavezno): - + The path to the git executable. Autodetected if needed and not specified. Putanja do git izvršne datoteke. Automatski se detektuje ako je potrebno a nije navedeno. - + Advanced Options Napredne opcije - + Show option to change branches (requires git) Prikaži opciju za promenu grana (zahteva GitPython) - + Disable git (fall back to ZIP downloads only) Onemogući git (vratite se samo na ZIP preuzimanja) - + Activate Addon Manager options intended for developers of new Addons. Aktiviraj opcije menadžera dodataka namenjene programerima novih dodataka. - + Addon developer mode Režim programera dodataka @@ -827,7 +842,7 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Tags... - Oznake... + Tagovi... @@ -1101,17 +1116,17 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja AddonsInstaller - + Starting up... Pokreće se... - + Loading addon information Učitavanje informacijа o dodacima - + Worker process {} is taking a long time to stop... Radni proces {} se dugo zaustavlja... @@ -1130,46 +1145,46 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja - + Addon manager Menadžer dodataka - + You must restart FreeCAD for changes to take effect. Moraš ponovo pokrenuti FreeCAD da bi promene stupile na snagu. - + Restart now Ponovo pokreni sada - + Restart later Ponovo pokreni kasnije - - + + Refresh local cache Osveži lokalni keš - + Updating cache... Ažuriranje keša... - + Could not find addon '{}' to select Nije moguće pronaći Dodatak '{}' da bi izabrao - - + + Checking for updates... Proveravam da li postoje ažuriranja... @@ -1182,22 +1197,22 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Update all addons - Update all addons + Ažuriraj sve dodatke Check for updates - Check for updates + Proveri ažuriranja Python dependencies... - Python dependencies... + Python zavisnosti... Developer tools... - Developer tools... + Alati za programere... @@ -1207,38 +1222,38 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Apply 1 available update - Apply 1 available update + Primeni dostupno ažuriranje Apply {} available updates - Apply {} available updates + Primeni {} dostupnih ažuriranja - - - + + + Cannot launch a new installer until the previous one has finished. Ne može se pokrenuti novi program za instalaciju dok se prethodni ne završi. - + Execution of macro failed. See console for failure details. Izvršavanje makroa nije uspelo. Pogledaj konzolu za detalje o greškama. - + + - Maintainer Programer zadužen za održavanje - + + - Author Autor @@ -1350,10 +1365,10 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Instalirano {date} - - - + + + Installed Instalirano @@ -1365,7 +1380,7 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Git tag '{}' checked out, no updates possible - Git oznaka '{}' checked out, ažuriranja nisu moguća + Git tag '{}' checked out, ažuriranja nisu moguća @@ -1380,12 +1395,12 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Promenjeno u granu '{}' -- ponovo pokreni da bi koristio Dodatak. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Ovaj dodatak je ažuriran. Ponovo pokrenite FreeCAD da biste videli promene. @@ -1395,17 +1410,17 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + Na grani {} dostupno je ažuriranje do verzije {} Update available to version {} - Update available to version {} + Dostupno je ažuriranje do verzije {} This is the latest version available - This is the latest version available + Ovo je najnovija dostupna verzija @@ -1415,12 +1430,12 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + UPOZORENJE: Ovaj dodatak je samo za Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + UPOZORENJE: Ovaj dodatak zahteva FreeCAD {} @@ -1472,17 +1487,17 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Check for update - Check for update + Provеri ažuriranja Run - Run + Pokreni Change branch... - Change branch... + Promeni granu... @@ -1531,17 +1546,17 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Lokacija za novu licencnu datoteku - + Received {} response code from server Primljen {} kod odgovora sa servera - + Failed to install macro {} Instaliranje makro-a {} nije uspelo - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Izaberi datoteku ikone za ovu stavku sadržaja - + {} is not a subdirectory of {} {} nije podfascikla {} @@ -1902,91 +1917,111 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Pretraži... - + Click for details about package {} Klikni za detalje o paketu {} - + Click for details about workbench {} Klikni za detalje o radnom okruženju {} - + Click for details about macro {} Klikni za detalje o makro-u {} - + Maintainers: Programeri zaduženi za održavanje: - + Tags - Oznake + Tagovi - - updated - ažurirano + + {} ★ on GitHub + {} ★ na GitHub - - + + No ★, or not on GitHub + Nema ★, ili nema na GitHub + + + + Created + Napravljeno + + + + Updated + Ažurirano + + + + Score: + Ocena: + + + + Up-to-date Ažurirano - - - + + + Update available Dostupno jе ažuriranjе - - + + Pending restart Ponovno pokretanje na čekanju - - + + DISABLED ONEMOGUĆENO - + Installed version Instalirana verzija - + Unknown version Nepoznata verzija - + Installed on Instaliran na - + Available version Dostupna verzija Filter by... - Filter by... + Filter... Addon Type - Addon Type + Vrsta dodatka @@ -2007,7 +2042,7 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Installation Status - Installation Status + Status instalacije @@ -2138,23 +2173,23 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Nije moguće locirati datoteku navedenu makro-om {} (trebala je biti u {}) - + {}: Unrecognized internal workbench '{}' {}: Neprepoznato unutrašnje radno okruženje '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Upozorenje za programere dodataka: URL adresa spremišta zadata u package.xml datoteci za dodatak {} ({}) ne odgovara URL adresi sa koje je preuzet ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Upozorenje za programere dodataka: Grana spremišta postavljena u package.xml datoteci za dodatak {} ({}) se ne podudara sa granom iz koje je preuzeta ({}) - - + + Got an error when trying to import {} Greška pri pokušaju uvoza {} @@ -2189,129 +2224,143 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Greška pri pokušaju uklanjanja datoteke makro-a {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Povezivanje sa GitHub-om nije uspelo. Proveri podešavanja veze i proksija. - + WARNING: Duplicate addon {} ignored UPOZORENJE: Duplikat dodatka {} je ignorisan - + Workbenches list was updated. Lista radnih okruženja je ažurirana. - + Git is disabled, skipping git macros Git je onemogućen, preskaču se git makro-i - + Attempting to change non-git Macro setup to use git Pokušaj promene podešavanja makroa bez git-a da koristi git - + An error occurred updating macros from GitHub, trying clean checkout... Došlo je do greške pri ažuriranju makro-a sa GitHub-a, pokušavam clean checkout... - + Attempting to do a clean checkout... Pokušavam da uradim clean checkout... - + Clean checkout succeeded Clean checkout je uspeo - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Ažuriranje makro-a sa GitHub-a nije uspelo -- pokušaj da obrišete keš memoriju Menadžera dodataka. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Greška pri povezivanju na Wiki, FreeCAD trenutno ne može da preuzme Wiki listu makro-a - + Unable to fetch git updates for workbench {} Nije moguće preuzeti git ažuriranja za radno okruženje {} - + git status failed for {} git preuzimanje nije uspelo za {} - + Failed to read metadata from {name} Čitanje metapodataka sa {name} nije uspelo - + Failed to fetch code for macro '{name}' Nije uspelo preuzimanje koda za makro '{name}' - + Caching macro code... Keširanje koda makro-a... - + Addon Manager: a worker process failed to complete while fetching {name} Menadžer dodataka: radni proces nije uspeo da se završi tokom preuzimanja {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Za {num_macros} makro je prekoračen je vremenski limit, {num_failed} tokom obrade - + Addon Manager: a worker process failed to halt ({name}) Menadžer dodataka: radni proces nije uspeo da se zaustavi ({name}) - + Getting metadata from macro {} Preuzimanje metapodataka iz makro-a {} - + Timeout while fetching metadata for macro {} Isteklo je vreme za preuzimanje metapodataka za makro {} - + Failed to kill process for macro {}! Ubijanje procesa za makro {} nije uspelo! - + Retrieving macro description... Preuzimanje opisa makro-a... - + Retrieving info from git Preuzimanje informacija sa git-a - + Retrieving info from wiki Preuzimanje informacija sa wiki-a + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Nije uspelo preuzimanje statistike o dodatku od {} – samo će sortiranje po abecednom redu biti tačno + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Neuspešno preuzimanje ocena o dodatku od '{}' -- sortiranje po ocenama neće uspeti + + Repository URL @@ -2372,7 +2421,7 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Loading page for {} from {}... - Loading page for {} from {}... + Učitavanje stranice za {} od {}... @@ -2387,23 +2436,53 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja Expanded view - Expanded view + Proširen izgled Compact view - Compact view + Kompaktan izgled + + + + Alphabetical + Sort order + Po abecednom redu + + + + Last Updated + Sort order + Poslednje ažurirano + + + + Date Created + Sort order + Datum kreiranja + + + + GitHub Stars + Sort order + Github zvezde + + + + Score + Sort order + Ocena Std_AddonMgr - + &Addon manager &Menadžer dodataka - + Manage external workbenches, macros, and preference packs Upravljaj spoljnim radnim okruženjima, makro-ima i paketima podešavanja @@ -2440,7 +2519,7 @@ instalirani dodaci će biti provereni da li postoje dostupna ažuriranja QObject - + Addon Manager Menadžer dodataka diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sr.qm index cdb3707275..57d890a22b 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_sr.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_sr.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sr.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_sr.ts index 47ad65a2c3..76fada8c58 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_sr.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_sr.ts @@ -261,17 +261,17 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore Edit Tags - Уреди ознаке + Уреди тагове Comma-separated list of tags describing this item: - Листа ознака раздвојених зарезима које описују ову ставку: + Листа тагова раздвојених зарезима које описују ову ставку: HINT: Common tags include "Assembly", "FEM", "Mesh", "NURBS", etc. - САВЕТ: Уобичајене ознаке укључују "Склоп", "FEM", "Мрежа", "NURBS", etc. + САВЕТ: Уобичајени тагови укључују "Склоп", "FEM", "Мрежа", "NURBS", etc. @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Икона - + <h1>Package Name</h1> <h1>Име пакета</h1> - + Version Верзија - + (tags) - (ознаке) + (тагови) - - + + Description Опис - - + + Maintainer Програмер задужен за одржавање - + Update Available Доступно је ажурирање - + + labelSort + labelSort + + + UpdateAvailable На располагању је новија верзија @@ -454,7 +459,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore Upcoming versions of the FreeCAD Addon Manager will support developers' setting a specific branch or tag for use with a specific version of FreeCAD (e.g. setting a specific tag as the last version of your Addon to support v0.19, etc.) - Предстојеће верзије FreeCAD Менаџера додатака ће подржавати програмерско подешавање одређене гране или ознаке за употребу са одређеном верзијом FreeCAD-а (нпр. подешавање одређене ознаке као последње верзије вашег Додатка за подршку v0.19, итд.) + Предстојеће верзије FreeCAD Менаџера додатака ће подржавати програмерско подешавање одређених грана или тагова за употребу са одређеном верзијом FreeCAD-а (нпр. подешавање одређеног таг-а као последње верзије вашег Додатка за подршку v0.19, итд.) @@ -464,7 +469,7 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore Best-available branch, tag, or commit - Најбоља доступна грана, ознака или commit + Најбоља доступна грана, таг или commit @@ -545,17 +550,17 @@ installed addons will be checked for available updates Hide Addons without a license - Hide Addons without a license + Sakrij dodatke bez licence Hide Addons with non-FSF Free/Libre license - Hide Addons with non-FSF Free/Libre license + Сакриј додатке који немају FSF Free/Libre лиценцу Hide Addons with non-OSI-approved license - Hide Addons with non-OSI-approved license + Сакриј додатке који немају ОСИ одобрену лиценцу @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + URL извора оцена + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + УРЛ за оцене додатка (погледајте документацију за детаље). + + + Path to git executable (optional): Стаза ка извршној git датотеци (необавезно): - + The path to the git executable. Autodetected if needed and not specified. Путања до git извршне датотеке. Аутоматски се детектује ако је потребно а није наведено. - + Advanced Options Напредне опције - + Show option to change branches (requires git) Прикажи опцију за промену грана (захтева GitPython) - + Disable git (fall back to ZIP downloads only) Онемогући git (вратите се само на ZIP преузимања) - + Activate Addon Manager options intended for developers of new Addons. Активирај опције Менаџера додатака намењене програмерима нових додатака. - + Addon developer mode Режим програмера додатака @@ -827,7 +842,7 @@ installed addons will be checked for available updates Tags... - Ознаке... + Тагови... @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Покреће се... - + Loading addon information Учитавање информација о додацима - + Worker process {} is taking a long time to stop... Радни процес {} се дуго зауставља... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Менаџер додатака - + You must restart FreeCAD for changes to take effect. Мораш поново покренути FreeCAD да би промене ступиле на снагу. - + Restart now Поново покрени сада - + Restart later Поново покрени касније - - + + Refresh local cache Освежи локални кеш - + Updating cache... Ажурирање кеша... - + Could not find addon '{}' to select Није могуће пронаћи Додатак '{}' да би изабрао - - + + Checking for updates... Проверавам да ли постоје ажурирања... @@ -1182,22 +1197,22 @@ installed addons will be checked for available updates Update all addons - Update all addons + Ажурирај све додатке Check for updates - Check for updates + Провери ажурирања Python dependencies... - Python dependencies... + Python зависности... Developer tools... - Developer tools... + Алати за програмере... @@ -1207,38 +1222,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + Примени доступно ажурирање Apply {} available updates - Apply {} available updates + Примени {} доступних ажурирања - - - + + + Cannot launch a new installer until the previous one has finished. Не може се покренути нови програм за инсталацију док се претходни не заврши. - + Execution of macro failed. See console for failure details. Извршавање макроа није успело. Погледај конзолу за детаље о грешкама. - + + - Maintainer Програмер задужен за одржавање - + + - Author Аутор @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Инсталирано {date} - - - + + + Installed Инсталирано @@ -1365,7 +1380,7 @@ installed addons will be checked for available updates Git tag '{}' checked out, no updates possible - Git ознака '{}' checked out, ажурирања нису могућа + Git таг '{}' checked out, ажурирања нису могућа @@ -1380,12 +1395,12 @@ installed addons will be checked for available updates Changed to branch '{}' -- please restart to use Addon. - Changed to branch '{}' -- please restart to use Addon. + Промењено у грану '{}' -- поново покрени да би користио Додатак. This Addon has been updated. Restart FreeCAD to see changes. - This Addon has been updated. Restart FreeCAD to see changes. + Овај додатак је ажуриран. Поново покрените FreeCAD да бисте видели промене. @@ -1395,17 +1410,17 @@ installed addons will be checked for available updates Currently on branch {}, update available to version {} - Currently on branch {}, update available to version {} + На грани {} доступно је ажурирање до верзије {} Update available to version {} - Update available to version {} + Доступно је ажурирање до верзије {} This is the latest version available - This is the latest version available + Ово је најновија доступна верзија @@ -1415,12 +1430,12 @@ installed addons will be checked for available updates WARNING: This addon is Python 2 only - WARNING: This addon is Python 2 only + УПОЗОРЕЊЕ: Овај додатак је само за Python 2 WARNING: This addon requires FreeCAD {} - WARNING: This addon requires FreeCAD {} + УПОЗОРЕЊЕ: Овај додатак захтева FreeCAD {} @@ -1472,7 +1487,7 @@ installed addons will be checked for available updates Check for update - Check for update + Провери ажурирања @@ -1482,7 +1497,7 @@ installed addons will be checked for available updates Change branch... - Change branch... + Промени грану... @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Локација за нову лиценцну датотеку - + Received {} response code from server Примљен {} код одговора са сервера - + Failed to install macro {} Инсталирање макро-а {} није успело - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Изабери датотеку иконе за ову ставку садржаја - + {} is not a subdirectory of {} {} није подфасцикла {} @@ -1902,91 +1917,111 @@ installed addons will be checked for available updates Претрага... - + Click for details about package {} Кликни за детаље о пакету {} - + Click for details about workbench {} Кликни за детаље о радном окружењу {} - + Click for details about macro {} Кликни за детаље о макро-у {} - + Maintainers: Програмери задужени за одржавање: - + Tags - Ознаке + Тагови - - updated - ажурирано + + {} ★ on GitHub + {} ★ на GitHub - - + + No ★, or not on GitHub + Нема ★, или нема на GitHub + + + + Created + Направљено + + + + Updated + Ажурирано + + + + Score: + Оцена: + + + + Up-to-date Ажурирано - - - + + + Update available Доступно је ажурирање - - + + Pending restart Поновно покретање на чекању - - + + DISABLED ОНЕМОГУЋЕНО - + Installed version Инсталирана верзија - + Unknown version Непозната верзија - + Installed on Инсталиран на - + Available version Доступна верзија Filter by... - Filter by... + Филтери... Addon Type - Addon Type + Врста додатка @@ -2007,7 +2042,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + Статус инсталације @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Није могуће лоцирати датотеку наведену макро-ом {} (требала је бити у {}) - + {}: Unrecognized internal workbench '{}' {}: Непрепознато унутрашње радно окружење '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Упозорење за програмере додатака: URL адреса спремишта задата у package.xml датотеци за додатак {} ({}) не одговара URL адреси са које је преузет ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Упозорење за програмере додатака: Грана спремишта постављена у package.xml датотеци за додатак {} ({}) се не подудара са граном из које је преузета ({}) - - + + Got an error when trying to import {} Грешка при покушају увоза {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Грешка при покушају уклањања датотеке макро-а {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Повезивање са GitHub-ом није успело. Провери подешавања везе и проксија. - + WARNING: Duplicate addon {} ignored УПОЗОРЕЊЕ: Дупликат додатка {} је игнорисан - + Workbenches list was updated. Листа радних окружења је ажурирана. - + Git is disabled, skipping git macros Git је онемогућен, прескачу се git макро-и - + Attempting to change non-git Macro setup to use git Покушај промене подешавања макроа без git-а да користи git - + An error occurred updating macros from GitHub, trying clean checkout... Дошло је до грешке при ажурирању макро-а са GitHub-а, покушавам clean checkout... - + Attempting to do a clean checkout... Покушавам да урадим clean checkout... - + Clean checkout succeeded Clean checkout је успео - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Ажурирање макро-а са GitHub-а није успело -- покушај да обришете кеш меморију Менаџера додатака. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Грешка при повезивању на Wiki, FreeCAD тренутно не може да преузме Wiki листу макро-а - + Unable to fetch git updates for workbench {} Није могуће преузети git ажурирања за радно окружење {} - + git status failed for {} git преузимање није успело за {} - + Failed to read metadata from {name} Читање метаподатака са {name} није успело - + Failed to fetch code for macro '{name}' Није успело преузимање кода за '{name}' - + Caching macro code... Кеширање кода макро-а... - + Addon Manager: a worker process failed to complete while fetching {name} Менаџер додатака: радни процес није успео да се заврши током преузимања {name} - + Out of {num_macros} macros, {num_failed} timed out while processing За {num_macros} макро је прекорачен је временски лимит, {num_failed} током обраде - + Addon Manager: a worker process failed to halt ({name}) Менаџер додатака: радни процес није успео да се заустави ({name}) - + Getting metadata from macro {} Преузимање метаподатака из макро-а {} - + Timeout while fetching metadata for macro {} Истекло је време за преузимање метаподатака за макро {} - + Failed to kill process for macro {}! Убијање процеса за макро {} није успело! - + Retrieving macro description... Преузимање описа макро-а... - + Retrieving info from git Преузимање информација са git-а - + Retrieving info from wiki Преузимање информација са wiki-ја + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Није успело преузимање статистике о додатку од {} – само ће сортирање по абецедном реду бити тачно + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Неуспешно преузимање о додатку од '{}' -- сортирање по оценама неће успети + + Repository URL @@ -2372,7 +2421,7 @@ installed addons will be checked for available updates Loading page for {} from {}... - Loading page for {} from {}... + Учитавање странице за {} од {}... @@ -2387,23 +2436,53 @@ installed addons will be checked for available updates Expanded view - Expanded view + Проширен приказ Compact view - Compact view + Компактан изглед + + + + Alphabetical + Sort order + По абецедном реду + + + + Last Updated + Sort order + Последње ажурирано + + + + Date Created + Sort order + Датум креирања + + + + GitHub Stars + Sort order + GitHub звезде + + + + Score + Sort order + Оцена Std_AddonMgr - + &Addon manager &Менаџер додатака - + Manage external workbenches, macros, and preference packs Управљај спољним радним окружењима, макро-има и пакетима подешавања @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Менаџер додатака diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.qm index 3e2b53d34f..b051d0f12c 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.ts index bce118f9e9..dd77cfae0e 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Ikon - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Version - + (tags) (tags) - - + + Description Beskrivning - - + + Maintainer Maintainer - + Update Available Uppdatering tillgänglig - + + labelSort + labelSort + + + UpdateAvailable UpdateAvailable @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Avancerade alternativ - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Startar upp... - + Loading addon information Laddar tilläggsinformation - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Tilläggshanterare - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Starta om nu - + Restart later Starta om senare - - + + Refresh local cache Uppdatera lokal cache - + Updating cache... Uppdaterar cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Söker efter uppdateringar... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Maintainer - + + - Author Upphovsman @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installerad den {date} - - - + + + Installed Installerad @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Plats för ny licensfil - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Det gick inte att installera makro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Sök... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Taggar - - updated - uppdaterad + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Uppdatering tillgänglig - - + + Pending restart Väntande omstart - - + + DISABLED INAKTIVERAD - + Installed version Installerad version - + Unknown version Okänd version - + Installed on Installerad den - + Available version Tillgänglig version @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Fel vid försök att ta bort makrofil {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Cachar makrokod... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Hämtar metadata från makro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Hämtar makrobeskrivning... - + Retrieving info from git Hämtar information från git - + Retrieving info from wiki Hämtar information från wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Tilläggshanterare diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_tr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_tr.qm index 13b9cb9ba7..fd671df9b8 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_tr.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_tr.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_tr.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_tr.ts index 3e112c8121..bbd01f9936 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_tr.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_tr.ts @@ -360,48 +360,53 @@ Eklenti Yöneticisinin bunları otomatik olarak kurmasını istiyor musunuz? Ekl ExpandedView - + Icon Simge - + <h1>Package Name</h1> <h1>Paket Adı</h1> - + Version Sürüm - + (tags) (etiketler) - - + + Description Açıklama - - + + Maintainer Geliştirici - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable Güncelleme Mevcut @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Gelişmiş seçenekler - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Eklenti geliştirici modu @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Başlatılıyor... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Yerel önbelleği yenile - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Geliştirici - + + - Author Yazar @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Ara... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Etiketler - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Kurulu sürüm - + Unknown version Unknown version - + Installed on Installed on - + Available version Available version @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Eklenti Yöneticisi diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_uk.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_uk.qm index 5f371ff8b4..344125ccff 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_uk.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_uk.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_uk.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_uk.ts index eef1716459..229c2ddf86 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_uk.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_uk.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Піктограма - + <h1>Package Name</h1> <h1>Назва Додатку</h1> - + Version Версія - + (tags) (теги) - - + + Description Опис - - + + Maintainer Розробник - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable Наявність Оновлення @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Додаткові Опції - + Show option to change branches (requires git) Показати можливість зміни гілок (вимагає git) - + Disable git (fall back to ZIP downloads only) Відключити git (повернутися до завантаження тільки ZIP) - + Activate Addon Manager options intended for developers of new Addons. Активувати опції Менеджеру Додатків, призначені для розробників нових Додатків. - + Addon developer mode Режим розробника додатків @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Оновити локальний кеш - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Розробник - + + - Author Автор @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Шукати... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Мітки - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Встановлена версія - + Unknown version Unknown version - + Installed on Installed on - + Available version Доступна версія @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Менеджер додатків diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.qm index f6d751373f..c66428b1a7 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.ts index 5f15e63528..5f192996e6 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon Icona - + <h1>Package Name</h1> <h1>Package Name</h1> - + Version Versió - + (tags) (tags) - - + + Description Descripció - - + + Maintainer Maintainer - + Update Available Update Available - + + labelSort + labelSort + + + UpdateAvailable UpdateAvailable @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): Path to git executable (optional): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options Advanced Options - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) Disable git (fall back to ZIP downloads only) - + Activate Addon Manager options intended for developers of new Addons. Activate Addon Manager options intended for developers of new Addons. - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... Starting up... - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now Restart now - + Restart later Restart later - - + + Refresh local cache Refresh local cache - + Updating cache... Updating cache... - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... Checking for updates... @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer Maintainer - + + - Author Autor @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates Installed on {date} - - - + + + Installed Installed @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server Received {} response code from server - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates Busca... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: Maintainers: - + Tags Tags - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available Update available - - + + Pending restart Pending restart - - + + DISABLED DISABLED - + Installed version Installed version - + Unknown version Unknown version - + Installed on Installed on - + Available version Available version @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &Addon manager - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager Addon Manager diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.qm index d97af15d8b..5f690844a0 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.ts index 7912c4e715..1f4daed46e 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon 图标 - + <h1>Package Name</h1> <h1>软件包名称</h1> - + Version 版本 - + (tags) (标签) - - + + Description 描述 - - + + Maintainer 维护者 - + Update Available 更新可用 - + + labelSort + labelSort + + + UpdateAvailable 可用更新 @@ -599,36 +604,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): git 可执行文件路径(可选): - + The path to the git executable. Autodetected if needed and not specified. The path to the git executable. Autodetected if needed and not specified. - + Advanced Options 高级选项 - + Show option to change branches (requires git) Show option to change branches (requires git) - + Disable git (fall back to ZIP downloads only) 禁用 git (退回仅 ZIP 下载) - + Activate Addon Manager options intended for developers of new Addons. 激活为新附加组件开发者设计的附加组件管理器选项。 - + Addon developer mode Addon developer mode @@ -1101,17 +1116,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... 正在启动… - + Loading addon information Loading addon information - + Worker process {} is taking a long time to stop... Worker process {} is taking a long time to stop... @@ -1130,46 +1145,46 @@ installed addons will be checked for available updates - + Addon manager Addon manager - + You must restart FreeCAD for changes to take effect. You must restart FreeCAD for changes to take effect. - + Restart now 立即重启 - + Restart later 稍后重启 - - + + Refresh local cache 刷新本地缓存 - + Updating cache... 正在更新缓存… - + Could not find addon '{}' to select Could not find addon '{}' to select - - + + Checking for updates... 正在检查更新… @@ -1215,30 +1230,30 @@ installed addons will be checked for available updates Apply {} available updates - - - + + + Cannot launch a new installer until the previous one has finished. Cannot launch a new installer until the previous one has finished. - + Execution of macro failed. See console for failure details. Execution of macro failed. See console for failure details. - + + - Maintainer 维护者 - + + - Author 作者 @@ -1350,10 +1365,10 @@ installed addons will be checked for available updates 安装于{date} - - - + + + Installed 已安装 @@ -1531,17 +1546,17 @@ installed addons will be checked for available updates Location for new license file - + Received {} response code from server 从服务器收到响应代码 {} - + Failed to install macro {} Failed to install macro {} - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1563,9 +1578,9 @@ installed addons will be checked for available updates Select an icon file for this content item - + {} is not a subdirectory of {} {} is not a subdirectory of {} @@ -1902,79 +1917,99 @@ installed addons will be checked for available updates 搜索... - + Click for details about package {} Click for details about package {} - + Click for details about workbench {} Click for details about workbench {} - + Click for details about macro {} Click for details about macro {} - + Maintainers: 维护者: - + Tags 标签 - - updated - updated + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date Up-to-date - - - + + + Update available 有可用的更新 - - + + Pending restart 等待重启 - - + + DISABLED DISABLED - + Installed version 已安装的版本 - + Unknown version 未知版本 - + Installed on 安装于 - + Available version 可用版本 @@ -2138,23 +2173,23 @@ installed addons will be checked for available updates Could not locate macro-specified file {} (expected at {}) - + {}: Unrecognized internal workbench '{}' {}: Unrecognized internal workbench '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) - - + + Got an error when trying to import {} Got an error when trying to import {} @@ -2189,129 +2224,143 @@ installed addons will be checked for available updates Error while trying to remove macro file {}: - + Failed to connect to GitHub. Check your connection and proxy settings. Failed to connect to GitHub. Check your connection and proxy settings. - + WARNING: Duplicate addon {} ignored WARNING: Duplicate addon {} ignored - + Workbenches list was updated. Workbenches list was updated. - + Git is disabled, skipping git macros Git is disabled, skipping git macros - + Attempting to change non-git Macro setup to use git Attempting to change non-git Macro setup to use git - + An error occurred updating macros from GitHub, trying clean checkout... An error occurred updating macros from GitHub, trying clean checkout... - + Attempting to do a clean checkout... Attempting to do a clean checkout... - + Clean checkout succeeded Clean checkout succeeded - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. Failed to update macros from GitHub -- try clearing the Addon Manager's cache. - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time - + Unable to fetch git updates for workbench {} Unable to fetch git updates for workbench {} - + git status failed for {} git status failed for {} - + Failed to read metadata from {name} Failed to read metadata from {name} - + Failed to fetch code for macro '{name}' Failed to fetch code for macro '{name}' - + Caching macro code... Caching macro code... - + Addon Manager: a worker process failed to complete while fetching {name} Addon Manager: a worker process failed to complete while fetching {name} - + Out of {num_macros} macros, {num_failed} timed out while processing Out of {num_macros} macros, {num_failed} timed out while processing - + Addon Manager: a worker process failed to halt ({name}) Addon Manager: a worker process failed to halt ({name}) - + Getting metadata from macro {} Getting metadata from macro {} - + Timeout while fetching metadata for macro {} Timeout while fetching metadata for macro {} - + Failed to kill process for macro {}! Failed to kill process for macro {}! - + Retrieving macro description... Retrieving macro description... - + Retrieving info from git Retrieving info from git - + Retrieving info from wiki Retrieving info from wiki + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2394,16 +2443,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager 附加组件管理器 (&A) - + Manage external workbenches, macros, and preference packs Manage external workbenches, macros, and preference packs @@ -2440,7 +2519,7 @@ installed addons will be checked for available updates QObject - + Addon Manager 插件管理器 diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.qm index 94753d3faf..fa1b2f2716 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.ts b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.ts index fe01324a14..064de72ab0 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.ts @@ -360,48 +360,53 @@ Do you want the Addon Manager to install them automatically? Choose "Ignore ExpandedView - + Icon 圖示 - + <h1>Package Name</h1> <h1>套件名稱</h1> - + Version 版本 - + (tags) (標籤) - - + + Description 說明 - - + + Maintainer 維護者 - + Update Available 有可用更新 - + + labelSort + labelSort + + + UpdateAvailable 可獲得更新 @@ -597,36 +602,46 @@ installed addons will be checked for available updates + Score source URL + Score source URL + + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + Path to git executable (optional): git 可執行檔的路徑(選填): - + The path to the git executable. Autodetected if needed and not specified. git 可執行檔之路徑。如果需要且未指定,則會自動檢測。 - + Advanced Options 進階選項 - + Show option to change branches (requires git) 顯示更改分支的選項 (需要git) - + Disable git (fall back to ZIP downloads only) 停用 git (返回到僅使用 ZIP 下載) - + Activate Addon Manager options intended for developers of new Addons. 啟用針對新附加元件開發者設計的附加元件管理員選項。 - + Addon developer mode 附加元件開發者模式 @@ -1099,17 +1114,17 @@ installed addons will be checked for available updates AddonsInstaller - + Starting up... 啟動中... - + Loading addon information 載入附加元件資訊 - + Worker process {} is taking a long time to stop... 工作行程 {} 正在花費較長時間停止... @@ -1127,45 +1142,45 @@ installed addons will be checked for available updates - + Addon manager 附加元件管理器 - + You must restart FreeCAD for changes to take effect. 您必須重新啟動 FreeCAD 以使更改生效。 - + Restart now 現在重新啟動 - + Restart later 稍後重新啟動 - - + + Refresh local cache 刷新本地端快取 - + Updating cache... 更新快取... - + Could not find addon '{}' to select 無法找到附加元件'{}' 以選擇 - - + + Checking for updates... 檢查更新... @@ -1178,22 +1193,22 @@ installed addons will be checked for available updates Update all addons - Update all addons + 更新所有附加元件 Check for updates - Check for updates + 檢查更新 Python dependencies... - Python dependencies... + Python 相依性... Developer tools... - Developer tools... + 開發者工具... @@ -1203,38 +1218,38 @@ installed addons will be checked for available updates Apply 1 available update - Apply 1 available update + 套用 1 可用更新 Apply {} available updates - Apply {} available updates + 套用 {} 可用更新 - - - + + + Cannot launch a new installer until the previous one has finished. 在前一個安裝程式完成之前無法啟動新的安裝程式。 - + Execution of macro failed. See console for failure details. 執行巨集失敗。查看控制台以獲得失敗的細節。 - + + - Maintainer 維護者 - + + - Author 作者 @@ -1346,10 +1361,10 @@ installed addons will be checked for available updates 安裝於 {date} - - - + + + Installed 己安裝 @@ -1468,7 +1483,7 @@ installed addons will be checked for available updates Check for update - Check for update + 檢查更新 @@ -1527,17 +1542,17 @@ installed addons will be checked for available updates 新授權檔案的位置 - + Received {} response code from server 由伺服器收到 {} 回應碼 - + Failed to install macro {} 安裝巨集 {} 失敗 - + Failed to create installation manifest file: Failed to create installation manifest file: @@ -1559,9 +1574,9 @@ installed addons will be checked for available updates 選擇一個用於此內容項目的圖示檔案 - + {} is not a subdirectory of {} {} 不是 {} 的一個子目錄 @@ -1899,79 +1914,99 @@ installed addons will be checked for available updates 搜尋... - + Click for details about package {} 點擊查看套件 {} 詳細資料 - + Click for details about workbench {} 點擊查看工作台 {} 詳細資料 - + Click for details about macro {} 點擊查看巨集 {} 詳細資料 - + Maintainers: 維護者: - + Tags 標籤 - - updated - 已更新 + + {} ★ on GitHub + {} ★ on GitHub - - + + No ★, or not on GitHub + No ★, or not on GitHub + + + + Created + Created + + + + Updated + Updated + + + + Score: + Score: + + + + Up-to-date 最新 - - - + + + Update available 有可用更新 - - + + Pending restart 等待重啟 - - + + DISABLED 已被停用 - + Installed version - + Unknown version 未知版本 - + Installed on 安裝在 - + Available version 可用版本 @@ -1983,7 +2018,7 @@ installed addons will be checked for available updates Addon Type - Addon Type + 附加元件類型 @@ -2004,7 +2039,7 @@ installed addons will be checked for available updates Installation Status - Installation Status + 安裝狀態 @@ -2135,23 +2170,23 @@ installed addons will be checked for available updates 無法找到巨集指定的檔案 {}(預期在 {}) - + {}: Unrecognized internal workbench '{}' {}:未識別的內部工作台 '{}' - + Addon Developer Warning: Repository URL set in package.xml file for addon {} ({}) does not match the URL it was fetched from ({}) 附加元件開發者警告:給附加元件{} ({}) 之 package.xml 檔中的儲存庫網址集與截取自 ({}) 的網址不匹配 - + Addon Developer Warning: Repository branch set in package.xml file for addon {} ({}) does not match the branch it was fetched from ({}) 附加元件開發者警告:給附加元件{} ({}) 之 package.xml 檔中的儲存庫分支集與截取自 ({}) 的分支不匹配 - - + + Got an error when trying to import {} 當試著匯入 {} 時發生錯誤 @@ -2186,129 +2221,143 @@ installed addons will be checked for available updates 當試著移除巨集檔 {} 發生錯誤: - + Failed to connect to GitHub. Check your connection and proxy settings. 連接到 GitHub 失敗。請檢查您的連線與代理伺服器設定。 - + WARNING: Duplicate addon {} ignored 警告:重複的附加元件 {} 被忽略 - + Workbenches list was updated. 工作台列表已更新。 - + Git is disabled, skipping git macros Git 已被停用,正在跳過 git 巨集 - + Attempting to change non-git Macro setup to use git 嘗試將非 git 巨集設定更改為使用 git - + An error occurred updating macros from GitHub, trying clean checkout... 自 GitHub 更新巨集時發生錯誤,試著進行乾淨檢查... - + Attempting to do a clean checkout... 企圖進行一個乾淨的檢查... - + Clean checkout succeeded 乾淨檢查成功 - + Failed to update macros from GitHub -- try clearing the Addon Manager's cache. 無法從 GitHub 更新巨集 - 請嘗試清除附加元件管理員'的快取。 - + Error connecting to the Wiki, FreeCAD cannot retrieve the Wiki macro list at this time 連接到維基時出現錯誤,FreeCAD 目前無法檢索維基巨集列表 - + Unable to fetch git updates for workbench {} 無法針對工作台 {} 擷取 git 更新 - + git status failed for {} 對於 {} 的 git 狀態查詢失敗 - + Failed to read metadata from {name} 由 {name} 讀取後設資料失敗 - + Failed to fetch code for macro '{name}' 無法擷取巨集 '{name}' 的程式碼 - + Caching macro code... 快取巨集程式碼... - + Addon Manager: a worker process failed to complete while fetching {name} 附加元件管理員:在擷取 {name} 時,工作行程未能完成 - + Out of {num_macros} macros, {num_failed} timed out while processing 在 {num_macros} 個巨集中,有 {num_failed} 個在處理時超時。 - + Addon Manager: a worker process failed to halt ({name}) 附加元件管理員:在停止 ({name}) 時,工作行程未能完成 - + Getting metadata from macro {} 自巨集 {} 取得後設資料 - + Timeout while fetching metadata for macro {} 在擷取巨集 {} 的後設資料時超時 - + Failed to kill process for macro {}! 無法終止巨集 {} 的行程! - + Retrieving macro description... 檢索巨集描述... - + Retrieving info from git 從 git 中檢索訊息 - + Retrieving info from wiki 從 git 中檢索訊息 + + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + Failed to get Addon statistics from {} -- only sorting alphabetically will be accurate + + + + + Failed to get Addon score from '{}' -- sorting by score will fail + + Failed to get Addon score from '{}' -- sorting by score will fail + + Repository URL @@ -2391,16 +2440,46 @@ installed addons will be checked for available updates Compact view Compact view + + + Alphabetical + Sort order + Alphabetical + + + + Last Updated + Sort order + Last Updated + + + + Date Created + Sort order + Date Created + + + + GitHub Stars + Sort order + GitHub Stars + + + + Score + Sort order + Score + Std_AddonMgr - + &Addon manager &附加元件管理器 - + Manage external workbenches, macros, and preference packs 管理外部工作台、巨集和偏好設定套件 @@ -2437,7 +2516,7 @@ installed addons will be checked for available updates QObject - + Addon Manager 附加元件管理器 diff --git a/src/Mod/AddonManager/TODO.md b/src/Mod/AddonManager/TODO.md index 2c51912303..b1d3e7735f 100644 --- a/src/Mod/AddonManager/TODO.md +++ b/src/Mod/AddonManager/TODO.md @@ -1,14 +1,8 @@ # Addon Manager Future Work -* Restructure widgets into logical groups to better enable showing and hiding those groups all at once. * Reduce coupling between data and UI, switching logical groupings of widgets into a MVC or similar framework. * Particularly in the addons list -* Download Addon statistics from central location. - * Allow sorting on those statistics. -* Download a "rank" from user-specified locations. - * Allow sorting on that rank. * Implement a server-side cache of Addon metadata. * Implement an "offline mode" that does not attempt to use remote data for anything. * When installing a Preference Pack, offer to apply it once installed, and to undo after that. * Better support "headless" mode, with no GUI. -* Add "Composite" display mode, showing compact list and details at the same time diff --git a/src/Mod/AddonManager/Widgets/addonmanager_widget_addon_buttons.py b/src/Mod/AddonManager/Widgets/addonmanager_widget_addon_buttons.py index 21583e8850..8c65c5998c 100644 --- a/src/Mod/AddonManager/Widgets/addonmanager_widget_addon_buttons.py +++ b/src/Mod/AddonManager/Widgets/addonmanager_widget_addon_buttons.py @@ -75,6 +75,8 @@ class WidgetAddonButtons(QtWidgets.QWidget): self.retranslateUi(None) def _setup_ui(self): + if self.layout(): + self.setLayout(None) # TODO: Check this self.horizontal_layout = QtWidgets.QHBoxLayout() self.horizontal_layout.setContentsMargins(0, 0, 0, 0) self.back = QtWidgets.QToolButton(self) @@ -98,6 +100,9 @@ class WidgetAddonButtons(QtWidgets.QWidget): self.horizontal_layout.addWidget(self.change_branch) self.setLayout(self.horizontal_layout) + def set_show_back_button(self, show: bool) -> None: + self.back.setVisible(show) + def _set_icons(self): self.back.setIcon(QtGui.QIcon.fromTheme("back", QtGui.QIcon(":/icons/button_left.svg"))) diff --git a/src/Mod/AddonManager/Widgets/addonmanager_widget_global_buttons.py b/src/Mod/AddonManager/Widgets/addonmanager_widget_global_buttons.py index 1c293348aa..e110794d55 100644 --- a/src/Mod/AddonManager/Widgets/addonmanager_widget_global_buttons.py +++ b/src/Mod/AddonManager/Widgets/addonmanager_widget_global_buttons.py @@ -32,7 +32,7 @@ try: except ImportError: FreeCAD = None - def translate(_: str, text: str): + def translate(_: str, text: str, details: str = "", n: int = 0): return text @@ -100,14 +100,7 @@ class WidgetGlobalButtonBar(QtWidgets.QWidget): self.close.setText(translate("AddonsInstaller", "Close")) def set_number_of_available_updates(self, updates: int): - if updates <= 0: - self.update_all_addons.setEnabled(False) - self.update_all_addons.setText(translate("AddonsInstaller", "No updates available")) - elif updates == 1: - self.update_all_addons.setEnabled(True) - self.update_all_addons.setText(translate("AddonsInstaller", "Apply 1 available update")) - else: - self.update_all_addons.setEnabled(True) - self.update_all_addons.setText( - translate("AddonsInstaller", "Apply {} available updates").format(updates) - ) + self.update_all_addons.setEnabled(True) + self.update_all_addons.setText( + translate("AddonsInstaller", "Apply %n available update(s)", "", updates) + ) diff --git a/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py b/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py index ce83b6af6e..fbe892cbb5 100644 --- a/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py +++ b/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py @@ -65,6 +65,7 @@ class MessageType(Enum): @dataclass class UpdateInformation: + unchecked: bool = True check_in_progress: bool = False update_available: bool = False detached_head: bool = False @@ -112,6 +113,7 @@ class PackageDetailsView(QtWidgets.QWidget): self.vertical_layout.addWidget(self.message_label) self.vertical_layout.addWidget(self.location_label) self.vertical_layout.addWidget(self.readme_browser) + self.button_bar.hide() # Start with no bar def set_location(self, location: Optional[str]): if location is not None: @@ -274,6 +276,8 @@ class PackageDetailsView(QtWidgets.QWidget): def _get_update_status_string(self) -> str: if self.update_info.check_in_progress: return translate("AddonsInstaller", "Update check in progress") + "." + elif self.update_info.unchecked: + return "" if self.update_info.detached_head: return ( translate( diff --git a/src/Mod/AddonManager/Widgets/addonmanager_widget_readme_browser.py b/src/Mod/AddonManager/Widgets/addonmanager_widget_readme_browser.py index 8049a5a434..ae452af344 100644 --- a/src/Mod/AddonManager/Widgets/addonmanager_widget_readme_browser.py +++ b/src/Mod/AddonManager/Widgets/addonmanager_widget_readme_browser.py @@ -20,6 +20,7 @@ # * . * # * * # *************************************************************************** +import re import FreeCAD @@ -48,6 +49,7 @@ class WidgetReadmeBrowser(QtWidgets.QTextBrowser): correctly.""" load_resource = QtCore.Signal(str) # Str is a URL to a resource + follow_link = QtCore.Signal(str) # Str is a URL to another page def __init__(self, parent: QtWidgets.QWidget = None): super().__init__(parent) @@ -63,8 +65,10 @@ class WidgetReadmeBrowser(QtWidgets.QTextBrowser): def setMarkdown(self, md: str): """Provides an optional fallback to the markdown library for older versions of Qt (prior to 5.15) that did not have native markdown support. Lacking that, plaintext is displayed.""" + geometry = self.geometry() if hasattr(super(), "setMarkdown"): - super().setMarkdown(md) + + super().setMarkdown(self._clean_markdown(md)) else: try: import markdown @@ -76,6 +80,17 @@ class WidgetReadmeBrowser(QtWidgets.QTextBrowser): FreeCAD.Console.Warning( "Qt < 5.15 and no `import markdown` -- falling back to plain text display\n" ) + self.setGeometry(geometry) + + def _clean_markdown(self, md: str): + # Remove some HTML tags (for now just img and br, which are the most common offenders that break rendering) + br_re = re.compile(r"") + img_re = re.compile(r"]+)(?:'|\").*?\/?>") + + cleaned = br_re.sub("\n", md) + cleaned = img_re.sub("[html tag removed]", cleaned) + + return cleaned def set_resource(self, resource_url: str, image: Optional[QtGui.QImage]): """Once a resource has been fetched (or the fetch has failed), this method should be used to inform the widget @@ -94,6 +109,12 @@ class WidgetReadmeBrowser(QtWidgets.QTextBrowser): self.load_resource.emit(full_url) self.image_map[full_url] = None return self.image_map[full_url] + elif resource_type == QtGui.QTextDocument.MarkdownResource: + self.follow_link.emit(name.toString()) + return self.toMarkdown() + elif resource_type == QtGui.QTextDocument.HtmlResource: + self.follow_link.emit(name.toString()) + return self.toHtml() return super().loadResource(resource_type, name) def _ensure_appropriate_width(self, image: QtGui.QImage) -> QtGui.QImage: diff --git a/src/Mod/AddonManager/Widgets/addonmanager_widget_view_selector.py b/src/Mod/AddonManager/Widgets/addonmanager_widget_view_selector.py index 2bfa935bd8..dca81ec6f8 100644 --- a/src/Mod/AddonManager/Widgets/addonmanager_widget_view_selector.py +++ b/src/Mod/AddonManager/Widgets/addonmanager_widget_view_selector.py @@ -119,7 +119,6 @@ class WidgetViewSelector(QtWidgets.QWidget): self.composite_button.setIcon( QtGui.QIcon.fromTheme("composite_button", QtGui.QIcon(":/icons/composite_view.svg")) ) - self.composite_button.hide() # TODO: Implement this view self.horizontal_layout.addWidget(self.compact_button) self.horizontal_layout.addWidget(self.expanded_button) diff --git a/src/Mod/AddonManager/addonmanager_git.py b/src/Mod/AddonManager/addonmanager_git.py index 3a63d74619..e252283493 100644 --- a/src/Mod/AddonManager/addonmanager_git.py +++ b/src/Mod/AddonManager/addonmanager_git.py @@ -442,10 +442,8 @@ class GitManager: on the Mac actually requires us to check for that installation.""" try: subprocess.check_output(["xcode-select", "-p"]) - fci.Console.PrintMessage("XCode command line tools are installed: git is available\n") return True except subprocess.CalledProcessError: - fci.Console.PrintMessage("XCode command line tools are not installed: not using git\n") return False def _synchronous_call_git(self, args: List[str]) -> str: diff --git a/src/Mod/AddonManager/addonmanager_installer_gui.py b/src/Mod/AddonManager/addonmanager_installer_gui.py index 66d9a26086..6af6d2cfbd 100644 --- a/src/Mod/AddonManager/addonmanager_installer_gui.py +++ b/src/Mod/AddonManager/addonmanager_installer_gui.py @@ -364,9 +364,10 @@ class AddonInstallerGUI(QtCore.QObject): translate("AddonsInstaller", "Cannot execute pip"), translate( "AddonsInstaller", - "Failed to execute pip, which may be missing from your Python installation. Please ensure your system has pip installed and try again. The failed command was: ", + "Failed to execute pip, which may be missing from your Python installation. Please ensure your system " + "has pip installed and try again. The failed command was:", ) - + f"\n\n{command}\n\n" + + f" \n\n{command}\n\n" + translate( "AddonsInstaller", "Continue with installation of {} anyway?", diff --git a/src/Mod/AddonManager/addonmanager_package_details_controller.py b/src/Mod/AddonManager/addonmanager_package_details_controller.py index 13cb5c90b4..09a6c7a76f 100644 --- a/src/Mod/AddonManager/addonmanager_package_details_controller.py +++ b/src/Mod/AddonManager/addonmanager_package_details_controller.py @@ -55,7 +55,6 @@ class PackageDetailsController(QtCore.QObject): update = QtCore.Signal(Addon) execute = QtCore.Signal(Addon) update_status = QtCore.Signal(Addon) - check_for_update = QtCore.Signal(Addon) def __init__(self, widget=None): super().__init__() @@ -63,9 +62,10 @@ class PackageDetailsController(QtCore.QObject): self.readme_controller = ReadmeController(self.ui.readme_browser) self.worker = None self.addon = None - self.status_update_thread = None + self.update_check_thread = None self.original_disabled_state = None self.original_status = None + self.check_for_update_worker = None try: self.git_manager = GitManager() except NoGitFound: @@ -76,9 +76,6 @@ class PackageDetailsController(QtCore.QObject): self.ui.button_bar.install.clicked.connect(lambda: self.install.emit(self.addon)) self.ui.button_bar.uninstall.clicked.connect(lambda: self.uninstall.emit(self.addon)) self.ui.button_bar.update.clicked.connect(lambda: self.update.emit(self.addon)) - self.ui.button_bar.check_for_update.clicked.connect( - lambda: self.check_for_update.emit(self.addon) - ) self.ui.button_bar.change_branch.clicked.connect(self.change_branch_clicked) self.ui.button_bar.enable.clicked.connect(self.enable_clicked) self.ui.button_bar.disable.clicked.connect(self.disable_clicked) @@ -89,6 +86,10 @@ class PackageDetailsController(QtCore.QObject): self.addon = repo self.readme_controller.set_addon(repo) self.original_disabled_state = self.addon.is_disabled() + if repo is not None: + self.ui.button_bar.show() + else: + self.ui.button_bar.hide() if self.worker is not None: if not self.worker.isFinished(): @@ -99,6 +100,7 @@ class PackageDetailsController(QtCore.QObject): self.ui.set_installed(installed) update_info = UpdateInformation() if installed: + update_info.unchecked = self.addon.status() == Addon.Status.UNCHECKED update_info.update_available = self.addon.status() == Addon.Status.UPDATE_AVAILABLE update_info.check_in_progress = False # TODO: Implement the "check in progress" status if repo.metadata: @@ -117,25 +119,30 @@ class PackageDetailsController(QtCore.QObject): self.update_macro_info(repo) if repo.status() == Addon.Status.UNCHECKED: - if not self.status_update_thread: - self.status_update_thread = QtCore.QThread() - self.status_create_addon_list_worker = CheckSingleUpdateWorker(repo) - self.status_create_addon_list_worker.moveToThread(self.status_update_thread) - self.status_update_thread.finished.connect( - self.status_create_addon_list_worker.deleteLater + self.ui.button_bar.check_for_update.show() + self.ui.button_bar.check_for_update.setText( + translate("AddonsInstaller", "Check for " "update") ) - self.check_for_update.connect(self.status_create_addon_list_worker.do_work) - self.status_create_addon_list_worker.update_status.connect(self.display_repo_status) - self.status_update_thread.start() - update_info.check_in_progress = True - self.ui.set_update_available(update_info) - self.check_for_update.emit(self.addon) + self.ui.button_bar.check_for_update.setEnabled(True) + if not self.update_check_thread: + self.update_check_thread = QtCore.QThread() + self.check_for_update_worker = CheckSingleUpdateWorker(repo) + self.check_for_update_worker.moveToThread(self.update_check_thread) + self.update_check_thread.finished.connect(self.check_for_update_worker.deleteLater) + self.ui.button_bar.check_for_update.clicked.connect( + self.check_for_update_worker.do_work + ) + self.check_for_update_worker.update_status.connect(self.display_repo_status) + self.update_check_thread.start() + else: + self.ui.button_bar.check_for_update.hide() flags = WarningFlags() flags.required_freecad_version = self.requires_newer_freecad() flags.obsolete = repo.obsolete flags.python2 = repo.python2 self.ui.set_warning_flags(flags) + self.set_change_branch_button_state() def requires_newer_freecad(self) -> Optional[Version]: """If the current package is not installed, returns the first supported version of @@ -159,7 +166,7 @@ class PackageDetailsController(QtCore.QObject): """The change branch button is only available for installed Addons that have a .git directory and in runs where the git is available.""" - self.ui.button_bar.change_branch_button.hide() + self.ui.button_bar.change_branch.hide() pref = fci.ParamGet("User parameter:BaseApp/Preferences/Addons") show_switcher = pref.GetBool("ShowBranchSwitcher", False) @@ -186,7 +193,7 @@ class PackageDetailsController(QtCore.QObject): # If all four above checks passed, then it's possible for us to switch # branches, if there are any besides the one we are on: show the button - self.ui.button_bar.change_branch_button.show() + self.ui.button_bar.change_branch.show() def update_macro_info(self, repo: Addon) -> None: if not repo.macro.url: @@ -256,3 +263,10 @@ class PackageDetailsController(QtCore.QObject): self.addon.set_status(Addon.Status.PENDING_RESTART) self.ui.set_new_branch(name) self.update_status.emit(self.addon) + + def display_repo_status(self, addon): + self.update_status.emit(self.addon) + self.show_repo(self.addon) + + def macro_readme_updated(self): + self.show_repo(self.addon) diff --git a/src/Mod/AddonManager/addonmanager_preferences_defaults.json b/src/Mod/AddonManager/addonmanager_preferences_defaults.json index c785c154a6..0211354746 100644 --- a/src/Mod/AddonManager/addonmanager_preferences_defaults.json +++ b/src/Mod/AddonManager/addonmanager_preferences_defaults.json @@ -3,8 +3,10 @@ "https://raw.githubusercontent.com/FreeCAD/FreeCAD-addons/master/addonflags.json", "AddonsRemoteCacheURL": "https://addons.freecad.org/metadata.zip", "AddonsStatsURL": "https://freecad.org/addon_stats.json", + "AddonsScoreURL": "NONE", "AutoCheck": false, "BlockedMacros": "BOLTS,WorkFeatures,how to install,documentation,PartsLibrary,FCGear", + "CompositeSplitterState": "", "CustomRepoHash": "", "CustomRepositories": "", "CustomToolbarName": "Auto-Created Macro Toolbar", diff --git a/src/Mod/AddonManager/addonmanager_readme_controller.py b/src/Mod/AddonManager/addonmanager_readme_controller.py index 1760a7ff6f..d699bc6156 100644 --- a/src/Mod/AddonManager/addonmanager_readme_controller.py +++ b/src/Mod/AddonManager/addonmanager_readme_controller.py @@ -63,6 +63,7 @@ class ReadmeController(QtCore.QObject): self.stop = True self.widget = widget self.widget.load_resource.connect(self.loadResource) + self.widget.follow_link.connect(self.follow_link) def set_addon(self, repo: Addon): """Set which Addon's information is displayed""" @@ -74,6 +75,14 @@ class ReadmeController(QtCore.QObject): self.url = self.addon.macro.wiki if not self.url: self.url = self.addon.macro.url + if not self.url: + self.widget.setText( + translate( + "AddonsInstaller", + "Loading info for {} from the FreeCAD Macro Recipes wiki...", + ).format(self.addon.display_name, self.url) + ) + return else: self.url = utils.get_readme_url(repo) self.widget.setUrl(self.url) @@ -144,6 +153,16 @@ class ReadmeController(QtCore.QObject): NetworkManager.AM_NETWORK_MANAGER.abort(request) self.resource_requests.clear() + def follow_link(self, url: str) -> None: + final_url = url + if not url.startswith("http"): + if url.endswith(".md"): + final_url = self._create_markdown_url(url) + else: + final_url = self._create_full_url(url) + FreeCAD.Console.PrintLog(f"Loading {final_url} in the system browser") + QtGui.QDesktopServices.openUrl(final_url) + def _create_full_url(self, url: str) -> str: if url.startswith("http"): return url @@ -152,6 +171,11 @@ class ReadmeController(QtCore.QObject): lhs, slash, _ = self.url.rpartition("/") return lhs + slash + url + def _create_markdown_url(self, file: str) -> str: + base_url = utils.get_readme_html_url(self.addon) + lhs, slash, _ = base_url.rpartition("/") + return lhs + slash + file + class WikiCleaner(HTMLParser): """This HTML parser cleans up FreeCAD Macro Wiki Page for display in a diff --git a/src/Mod/AddonManager/addonmanager_uninstaller.py b/src/Mod/AddonManager/addonmanager_uninstaller.py index 0c42f591dd..bf709f9172 100644 --- a/src/Mod/AddonManager/addonmanager_uninstaller.py +++ b/src/Mod/AddonManager/addonmanager_uninstaller.py @@ -244,8 +244,9 @@ class MacroUninstaller(QObject): errors.append( translate( "AddonsInstaller", - "Error while trying to remove macro file {}: ", + "Error while trying to remove macro file {}:", ).format(full_path) + + " " + str(e) ) success = False diff --git a/src/Mod/AddonManager/composite_view.py b/src/Mod/AddonManager/composite_view.py index b89041adad..bba9dff9ba 100644 --- a/src/Mod/AddonManager/composite_view.py +++ b/src/Mod/AddonManager/composite_view.py @@ -23,7 +23,15 @@ """ Provides a class for showing the list view and detail view at the same time. """ -import addonmanager_freecad_interface +import base64 + +from addonmanager_freecad_interface import Preferences + +from Addon import Addon +from Widgets.addonmanager_widget_package_details_view import PackageDetailsView +from addonmanager_package_details_controller import PackageDetailsController +from Widgets.addonmanager_widget_view_selector import AddonManagerDisplayStyle +from package_list import PackageList # Get whatever version of PySide we can try: @@ -43,14 +51,110 @@ from PySide import QtCore, QtWidgets class CompositeView(QtWidgets.QWidget): """A widget that displays the Addon Manager's top bar, the list of Addons, and the detail - view, all on a single pane (with no switching). Detail view is shown in its "icon-only" mode - for the installation, etc. buttons. The bottom bar remains visible throughout.""" + view. Depending on the view mode selected, these may all be displayed at once, or selecting + an addon in the list may case the list to hide and the detail view to show.""" + + install = QtCore.Signal(Addon) + uninstall = QtCore.Signal(Addon) + update = QtCore.Signal(Addon) + execute = QtCore.Signal(Addon) + update_status = QtCore.Signal(Addon) + check_for_update = QtCore.Signal(Addon) def __init__(self, parent=None): super().__init__(parent) + self.package_details = PackageDetailsView(self) + self.package_details_controller = PackageDetailsController(self.package_details) + self.package_list = PackageList(self) + prefs = Preferences() + self.display_style = prefs.get("ViewStyle") + self.main_layout = QtWidgets.QHBoxLayout(self) + self.splitter = QtWidgets.QSplitter(self) + self.splitter.addWidget(self.package_list) + self.package_list.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + self.splitter.addWidget(self.package_details) + self.package_details.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + self.splitter.setOrientation(QtCore.Qt.Horizontal) + self.splitter.setContentsMargins(0, 0, 0, 0) + self.splitter.setSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding + ) + self.main_layout.addWidget(self.splitter) + self.layout().setContentsMargins(0, 0, 0, 0) + self._setup_ui() + self._setup_connections() + self._restore_splitter_state() - # TODO: Refactor the Addon Manager's display into four custom widgets: - # 1) The top bar showing the filter and search - # 2) The package list widget, which can take three forms (expanded, compact, and list) - # 3) The installer bar, which can take two forms (text and icon) - # 4) The bottom bar + def _save_splitter_state(self): + """Write the splitter state into an Addon manager preference, CompositeSplitterState""" + prefs = Preferences() + state = self.splitter.saveState() + encoded = base64.b64encode(state).decode("ASCII") + prefs.set("CompositeSplitterState", encoded) + + def _restore_splitter_state(self): + """Restore the splitter state from CompositeSplitterState""" + prefs = Preferences() + encoded = prefs.get("CompositeSplitterState") + if encoded: + state = base64.b64decode(encoded) + self.splitter.restoreState(state) + + def setModel(self, model): + self.package_list.setModel(model) + + def set_display_style(self, style: AddonManagerDisplayStyle): + self.display_style = style + self._setup_ui() + + def _setup_ui(self): + if self.display_style == AddonManagerDisplayStyle.EXPANDED: + self._setup_expanded_ui() + elif self.display_style == AddonManagerDisplayStyle.COMPACT: + self._setup_compact_ui() + elif self.display_style == AddonManagerDisplayStyle.COMPOSITE: + self._setup_composite_ui() + else: + raise RuntimeError("Invalid display style") + self.package_list.set_view_style(self.display_style) + + def _setup_expanded_ui(self): + self.package_list.show() + self.package_details.hide() + self.package_details.button_bar.set_show_back_button(True) + + def _setup_compact_ui(self): + self.package_list.show() + self.package_details.hide() + self.package_details.button_bar.set_show_back_button(True) + + def _setup_composite_ui(self): + self.package_list.show() + self.package_details.show() + self.package_details.button_bar.set_show_back_button(False) + + def _setup_connections(self): + self.package_list.itemSelected.connect(self.addon_selected) + self.package_details_controller.back.connect(self._back_button_clicked) + self.package_details_controller.install.connect(self.install) + self.package_details_controller.uninstall.connect(self.uninstall) + self.package_details_controller.update.connect(self.update) + self.package_details_controller.execute.connect(self.execute) + self.package_details_controller.update_status.connect(self.update_status) + self.package_list.ui.view_bar.view_changed.connect(self.set_display_style) + self.splitter.splitterMoved.connect(self._splitter_moved) + + def addon_selected(self, addon): + self.package_details_controller.show_repo(addon) + if self.display_style != AddonManagerDisplayStyle.COMPOSITE: + self.package_list.hide() + self.package_details.show() + self.package_details.button_bar.set_show_back_button(True) + + def _back_button_clicked(self): + if self.display_style != AddonManagerDisplayStyle.COMPOSITE: + self.package_list.show() + self.package_details.hide() + + def _splitter_moved(self, position: int, index: int) -> None: + self._save_splitter_state() diff --git a/src/Mod/AddonManager/manage_python_dependencies.py b/src/Mod/AddonManager/manage_python_dependencies.py index ccfceddb57..969b7d83c8 100644 --- a/src/Mod/AddonManager/manage_python_dependencies.py +++ b/src/Mod/AddonManager/manage_python_dependencies.py @@ -34,6 +34,8 @@ import sys from functools import partial from typing import Dict, List, Tuple +import addonmanager_freecad_interface as fci + import FreeCAD import FreeCADGui from freecad.utils import get_python_exe @@ -69,7 +71,7 @@ class CheckForPythonPackageUpdatesWorker(QtCore.QThread): def check_for_python_package_updates() -> bool: """Returns True if any of the Python packages installed into the AdditionalPythonPackages - directory have updates available, or False if the are all up-to-date.""" + directory have updates available, or False if they are all up-to-date.""" vendor_path = os.path.join(FreeCAD.getUserAppDataDir(), "AdditionalPythonPackages") package_counter = 0 @@ -163,7 +165,8 @@ class PythonPackageManager: translate("AddonsInstaller", "New Python Version Detected"), translate( "AddonsInstaller", - "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?", + "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, ) @@ -343,8 +346,13 @@ class PythonPackageManager: QtCore.QCoreApplication.processEvents(QtCore.QEventLoop.AllEvents, 50) try: + FreeCAD.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) except PipFailed as e: FreeCAD.Console.PrintError(str(e) + "\n") return @@ -360,6 +368,7 @@ class PythonPackageManager: ): updates.append(package_name) + FreeCAD.Console.PrintLog(f"Running update for {len(updates)} Python packages...\n") for package_name in updates: self._update_package(package_name) diff --git a/src/Mod/AddonManager/package_list.py b/src/Mod/AddonManager/package_list.py index 78c7086239..c7a2787aab 100644 --- a/src/Mod/AddonManager/package_list.py +++ b/src/Mod/AddonManager/package_list.py @@ -65,7 +65,6 @@ class PackageList(QtWidgets.QWidget): self.ui.listPackages.setItemDelegate(self.item_delegate) self.ui.listPackages.clicked.connect(self.on_listPackages_clicked) - self.ui.view_bar.view_changed.connect(self.set_view_style) self.ui.view_bar.filter_changed.connect(self.update_status_filter) self.ui.view_bar.search_changed.connect(self.item_filter.setFilterRegularExpression) self.ui.view_bar.sort_changed.connect(self.item_filter.setSortRole) @@ -105,6 +104,20 @@ class PackageList(QtWidgets.QWidget): ) self.item_filter.setHideUnlicensed(pref.GetBool("HideUnlicensed", False)) + def select_addon(self, addon_name: str): + for index, addon in enumerate(self.item_model.repos): + if addon.name == addon_name: + row_index = self.item_model.createIndex(index, 0) + if self.item_filter.filterAcceptsRow(index): + self.ui.listPackages.setCurrentIndex(row_index) + else: + FreeCAD.Console.PrintLog( + f"Addon {addon_name} is not visible given current " + "filter: not selecting it." + ) + return + FreeCAD.Console.PrintLog(f"Could not find addon '{addon_name}' to select it") + def on_listPackages_clicked(self, index: QtCore.QModelIndex): """Determine what addon was selected and emit the itemSelected signal with it as an argument.""" @@ -124,10 +137,10 @@ class PackageList(QtWidgets.QWidget): def set_view_style(self, style: AddonManagerDisplayStyle) -> None: """Set the style (compact or expanded) of the list""" - self.item_model.layoutAboutToBeChanged.emit() + if self.item_model: + self.item_model.layoutAboutToBeChanged.emit() self.item_delegate.set_view(style) - # TODO: Update to support composite - if style == AddonManagerDisplayStyle.COMPACT: + if style == AddonManagerDisplayStyle.COMPACT or style == AddonManagerDisplayStyle.COMPOSITE: self.ui.listPackages.setSpacing(2) self.ui.listPackages.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerItem) self.ui.listPackages.verticalScrollBar().setSingleStep(-1) @@ -135,7 +148,8 @@ class PackageList(QtWidgets.QWidget): self.ui.listPackages.setSpacing(5) self.ui.listPackages.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) self.ui.listPackages.verticalScrollBar().setSingleStep(24) - self.item_model.layoutChanged.emit() + if self.item_model: + self.item_model.layoutChanged.emit() pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") pref.SetInt("ViewStyle", style) @@ -288,6 +302,9 @@ class PackageListItemDelegate(QtWidgets.QStyledItemDelegate): elif self.displayStyle == AddonManagerDisplayStyle.COMPACT: self.widget = self.compact self._setup_compact_view(repo) + elif self.displayStyle == AddonManagerDisplayStyle.COMPOSITE: + self.widget = self.compact # For now re-use the compact list + self._setup_composite_view(repo) self.widget.adjustSize() def _setup_expanded_view(self, addon: Addon) -> None: @@ -334,6 +351,22 @@ class PackageListItemDelegate(QtWidgets.QStyledItemDelegate): else: self.widget.ui.labelDescription.setText(self._get_sort_label_text(addon)) + def _setup_composite_view(self, addon: Addon) -> None: + self.widget.ui.labelPackageName.setText(f"{addon.display_name}") + self.widget.ui.labelIcon.setPixmap(addon.icon.pixmap(QtCore.QSize(16, 16))) + self.widget.ui.labelStatus.setText(self.get_compact_update_string(addon)) + self.widget.ui.labelIcon.setText("") + if addon.metadata: + self.widget.ui.labelVersion.setText(f"v{addon.metadata.version}") + elif addon.macro: + self._set_macro_version_label(addon) + else: + self.widget.ui.labelVersion.setText("") + if self.sort_order != SortOptions.Alphabetical: + self.widget.ui.labelDescription.setText(self._get_sort_label_text(addon)) + else: + self.widget.ui.labelDescription.setText("") + def _set_package_maintainer_label(self, addon: Addon): maintainers = addon.metadata.maintainer maintainers_string = "" @@ -395,14 +428,13 @@ class PackageListItemDelegate(QtWidgets.QStyledItemDelegate): return "" def _get_compact_description(self, addon: Addon) -> str: + description = "" if addon.metadata: - trimmed_text = addon.metadata.description - # TODO: Un-hardcode the 25 character limiter - return trimmed_text.replace("\r\n", " ")[:25] + "..." - if addon.macro and addon.macro.comment: - trimmed_text = addon.macro.comment - return trimmed_text.replace("\r\n", " ")[:25] + "..." - return "" + description = addon.metadata.description + elif addon.macro and addon.macro.comment: + description = addon.macro.comment + trimmed_text, _, _ = description.partition(".") + return trimmed_text.replace("\n", " ") @staticmethod def get_compact_update_string(repo: Addon) -> str: diff --git a/src/Mod/Arch/ArchBuildingPart.py b/src/Mod/Arch/ArchBuildingPart.py index 7a1cf4a71d..91da2f5b79 100644 --- a/src/Mod/Arch/ArchBuildingPart.py +++ b/src/Mod/Arch/ArchBuildingPart.py @@ -497,7 +497,7 @@ class BuildingPart(ArchIFC.IfcProduct): FreeCAD.Console.PrintLog("Auto-updating Height of "+child.Name+"\n") self.touchChildren(child) child.Proxy.execute(child) - elif Draft.getType(child) in ["Group","BuildingPart"]: + elif Draft.getType(child) in ["App::DocumentObjectGroup","Group","BuildingPart"]: self.touchChildren(child) @@ -883,7 +883,7 @@ class ViewProviderBuildingPart: return True def setEdit(self, vobj, mode): - # mode == 1 if Transform is selected in the Tree view contex menu. + # mode == 1 if Transform is selected in the Tree view context menu. # mode == 2 has been added for consistency. if mode == 1 or mode == 2: return None diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 19a45f6a26..df23cf434d 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -112,8 +112,8 @@ def addComponents(objectsList,host): g.append(host) o.Hosts = g elif DraftGeomUtils.isValidPath(o.Shape) and (hostType in ["Structure","Precast"]): - if o.Support == host: - o.Support = None + if o.AttachmentSupport == host: + o.AttachmentSupport = None host.Tool = o elif Draft.getType(o) == "Axis": if not o in x: diff --git a/src/Mod/Arch/ArchRebar.py b/src/Mod/Arch/ArchRebar.py index d60585a60a..14f724fb30 100644 --- a/src/Mod/Arch/ArchRebar.py +++ b/src/Mod/Arch/ArchRebar.py @@ -66,13 +66,13 @@ def makeRebar(baseobj=None,sketch=None,diameter=None,amount=1,offset=None,name=N if FreeCAD.GuiUp: _ViewProviderRebar(obj.ViewObject) if baseobj and sketch: - if hasattr(sketch,"Support"): - if sketch.Support: - if isinstance(sketch.Support,tuple): - if sketch.Support[0] == baseobj: - sketch.Support = None - elif sketch.Support == baseobj: - sketch.Support = None + if hasattr(sketch,"AttachmentSupport"): + if sketch.AttachmentSupport: + if isinstance(sketch.AttachmentSupport,tuple): + if sketch.AttachmentSupport[0] == baseobj: + sketch.AttachmentSupport = None + elif sketch.AttachmentSupport == baseobj: + sketch.AttachmentSupport = None obj.Base = sketch if FreeCAD.GuiUp: sketch.ViewObject.hide() @@ -145,10 +145,10 @@ class _CommandRebar: if len(obj.Shape.Wires) == 1: # we have only a wire: extract its support object, if available, and make the rebar support = "None" - if hasattr(obj,"Support"): - if obj.Support: - if len(obj.Support) != 0: - support = "FreeCAD.ActiveDocument."+obj.Support[0][0].Name + if hasattr(obj,"AttachmentSupport"): + if obj.AttachmentSupport: + if len(obj.AttachmentSupport) != 0: + support = "FreeCAD.ActiveDocument."+obj.AttachmentSupport[0][0].Name FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Rebar")) FreeCADGui.addModule("Arch") FreeCADGui.doCommand("Arch.makeRebar("+support+",FreeCAD.ActiveDocument."+obj.Name+")") diff --git a/src/Mod/Arch/ArchSpace.py b/src/Mod/Arch/ArchSpace.py index 3fcc7af653..a1eec138a0 100644 --- a/src/Mod/Arch/ArchSpace.py +++ b/src/Mod/Arch/ArchSpace.py @@ -656,6 +656,10 @@ class _ViewProviderSpace(ArchComponent.ViewProviderComponent): t = t.replace("$walls",vobj.Object.FinishWalls) if hasattr(vobj.Object,"FinishCeiling"): t = t.replace("$ceiling",vobj.Object.FinishCeiling) + if hasattr(vobj.Object,"LongName"): + t = t.replace("$longname",vobj.Object.LongName) + if hasattr(vobj.Object,"Description"): + t = t.replace("$description",vobj.Object.Description) if first: text1.append(t) else: diff --git a/src/Mod/Arch/ArchStructure.py b/src/Mod/Arch/ArchStructure.py index a1da58dde3..46616b0443 100644 --- a/src/Mod/Arch/ArchStructure.py +++ b/src/Mod/Arch/ArchStructure.py @@ -325,6 +325,7 @@ class _CommandStructure: title=translate("Arch","First point of the beam")+":" else: title=translate("Arch","Base point of column")+":" + FreeCAD.activeDraftCommand = self # register as a Draft command for auto grid on/off FreeCADGui.Snapper.getPoint(callback=self.getPoint,movecallback=self.update,extradlg=[self.taskbox(),self.precast.form,self.dents.form],title=title) def getPoint(self,point=None,obj=None): @@ -334,12 +335,16 @@ class _CommandStructure: self.bmode = self.modeb.isChecked() if point is None: self.tracker.finalize() + FreeCAD.activeDraftCommand = None + FreeCADGui.Snapper.off() return if self.bmode and (self.bpoint is None): self.bpoint = point FreeCADGui.Snapper.getPoint(last=point,callback=self.getPoint,movecallback=self.update,extradlg=[self.taskbox(),self.precast.form,self.dents.form],title=translate("Arch","Next point")+":",mode="line") return self.tracker.finalize() + FreeCAD.activeDraftCommand = None + FreeCADGui.Snapper.off() horiz = True # determines the type of rotation to apply to the final object FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Structure")) FreeCADGui.addModule("Arch") diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index 02490d41e1..f7176d42ad 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -349,6 +349,7 @@ class _CommandWall: import WorkingPlane self.wp = WorkingPlane.get_working_plane() self.tracker = DraftTrackers.boxTracker() + FreeCAD.activeDraftCommand = self # register as a Draft command for auto grid on/off FreeCADGui.Snapper.getPoint(callback=self.getPoint, extradlg=self.taskbox(), title=translate("Arch","First point of wall")+":") @@ -373,6 +374,8 @@ class _CommandWall: self.existing.append(obj) if point is None: self.tracker.finalize() + FreeCAD.activeDraftCommand = None + FreeCADGui.Snapper.off() return self.points.append(point) if len(self.points) == 1: @@ -390,6 +393,8 @@ class _CommandWall: l = Part.LineSegment(self.wp.get_local_coords(self.points[0]), self.wp.get_local_coords(self.points[1])) self.tracker.finalize() + FreeCAD.activeDraftCommand = None + FreeCADGui.Snapper.off() FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Wall")) FreeCADGui.addModule("Arch") FreeCADGui.doCommand('import Part') @@ -1270,7 +1275,8 @@ class _Wall(ArchComponent.Component): # If the object is a single edge, use that as the # basewires. - # TODO 2023.11.26: Need to check if it is not Sketch afterall first or use algoritm for Sketch altogher? + # TODO 2023.11.26: Need to check if it isn't Sketch after all first + # or use algorithm for Sketch altogether? elif len(obj.Base.Shape.Edges) == 1: self.basewires = [Part.Wire(obj.Base.Shape.Edges)] diff --git a/src/Mod/Arch/ArchWindow.py b/src/Mod/Arch/ArchWindow.py index f176dce458..f3c11c5e9c 100644 --- a/src/Mod/Arch/ArchWindow.py +++ b/src/Mod/Arch/ArchWindow.py @@ -195,15 +195,15 @@ class _CommandWindow: if obj.Shape.Wires and (not obj.Shape.Solids) and (not obj.Shape.Shells): FreeCADGui.Control.closeDialog() host = None - if hasattr(obj,"Support"): - if obj.Support: - if isinstance(obj.Support,tuple): - host = obj.Support[0] - elif isinstance(obj.Support,list): - host = obj.Support[0][0] + if hasattr(obj,"AttachmentSupport"): + if obj.AttachmentSupport: + if isinstance(obj.AttachmentSupport,tuple): + host = obj.AttachmentSupport[0] + elif isinstance(obj.AttachmentSupport,list): + host = obj.AttachmentSupport[0][0] else: - host = obj.Support - obj.Support = None # remove + host = obj.AttachmentSupport + obj.AttachmentSupport = None # remove elif Draft.isClone(obj,"Window"): if obj.Objects[0].Inlist: host = obj.Objects[0].Inlist[0] diff --git a/src/Mod/Arch/Resources/translations/Arch.ts b/src/Mod/Arch/Resources/translations/Arch.ts index dc2d5c008c..ea3676dac8 100644 --- a/src/Mod/Arch/Resources/translations/Arch.ts +++ b/src/Mod/Arch/Resources/translations/Arch.ts @@ -1258,8 +1258,8 @@ are placed in a 'Group' instead. - + Export options @@ -1680,40 +1680,40 @@ unit to work with when opening the file. - - + + Category - - + + Preset - - - + + + Length - - + + Width - + Height @@ -1729,8 +1729,8 @@ unit to work with when opening the file. - + Con&tinue @@ -1747,8 +1747,8 @@ unit to work with when opening the file. - + Facemaker returned an error @@ -1860,8 +1860,8 @@ unit to work with when opening the file. - + Couldn't compute a shape @@ -2028,8 +2028,8 @@ Site creation aborted. - + Please select a base object @@ -2318,37 +2318,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela - + + - Remove - + + - Add - - - - + + + + - + + + - - Edit @@ -2369,8 +2369,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela - + Components @@ -2380,30 +2380,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Name - - + + Type + - Thickness - + Offset @@ -2471,9 +2471,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Axes @@ -2485,9 +2485,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written @@ -2497,8 +2497,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela - + Please select only one base object or none @@ -3052,24 +3052,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela - + Description - - + + Value - + Unit @@ -3157,19 +3157,19 @@ Floor creation aborted. - + has a null shape - + Toggle subcomponents @@ -3179,8 +3179,8 @@ Floor creation aborted. - + Component @@ -3377,8 +3377,8 @@ Floor creation aborted. - + Building @@ -3749,14 +3749,14 @@ Building creation aborted. - + The length of this element, if not based on a profile - + The width of this element, if not based on a profile @@ -3766,15 +3766,15 @@ Building creation aborted. - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element @@ -3789,8 +3789,8 @@ Building creation aborted. - + The facemaker type to use to build the profile of this object @@ -3867,9 +3867,9 @@ Building creation aborted. - + The type of this building @@ -4188,20 +4188,20 @@ Building creation aborted. - + Other shapes that are appended to this object - + Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane @@ -4236,8 +4236,8 @@ Building creation aborted. - + The type of this object @@ -6672,9 +6672,9 @@ Building creation aborted. Command - - + + Transform diff --git a/src/Mod/Arch/Resources/translations/Arch_be.qm b/src/Mod/Arch/Resources/translations/Arch_be.qm index a47468c7f9..85de64f370 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_be.qm and b/src/Mod/Arch/Resources/translations/Arch_be.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_be.ts b/src/Mod/Arch/Resources/translations/Arch_be.ts index 66a737c13f..09ff05fcde 100644 --- a/src/Mod/Arch/Resources/translations/Arch_be.ts +++ b/src/Mod/Arch/Resources/translations/Arch_be.ts @@ -1293,8 +1293,8 @@ are placed in a 'Group' instead. DAE - + Export options Налады экспартавання @@ -1744,40 +1744,40 @@ unit to work with when opening the file. Налады чарчэння - - + + Category Катэгорыя - - + + Preset Перадустаноўка - - - + + + Length Даўжыня - - + + Width Шырыня - + Height Вышыня @@ -1793,8 +1793,8 @@ unit to work with when opening the file. Пераключыць даўжыню/шырыню - + Con&tinue Пра&цягнуць @@ -1811,8 +1811,8 @@ unit to work with when opening the file. Паліганальная сетка з'яўляецца хібным суцэльным целам - + Facemaker returned an error Майстар граняў вярнуў памылку @@ -1925,8 +1925,8 @@ unit to work with when opening the file. Зроблена - + Couldn't compute a shape Не атрымалася вылічыць фігуру @@ -2101,8 +2101,8 @@ Site creation aborted. Немагчыма стварыць дах - + Please select a base object Калі ласка, абярыце асноўны аб'ект @@ -2404,37 +2404,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Выбраць абранае - + + - Remove Выдаліць - + + - Add Дадаць - - - - + + + + - + + + - - Edit Змяніць @@ -2455,8 +2455,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Ломаныя лініі - + Components Кампаненты @@ -2466,30 +2466,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Стварыць новы кампанент + - Name Назва - - + + Type Тып + - Thickness Таўшчыня - + Offset Зрушэнне @@ -2557,9 +2557,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Калі ласка, абярыце хаця б адну вось + - Axes Восі @@ -2571,9 +2571,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Паспяхова запісана @@ -2583,8 +2583,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Канструкцыя ферма - + Please select only one base object or none Калі ласка, абярыце толькі адзін асноўны аб'ект, альбо нічога @@ -3138,24 +3138,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Немагчыма распазнаць тып файла - + Description Апісанне - - + + Value Значэнне - + Unit Адзінка вымярэння @@ -3251,19 +3251,19 @@ Floor creation aborted. мае хібную фігуру - + has a null shape мае пустую фігуру - + Toggle subcomponents Пераключыць укладзеныя кампаненты @@ -3273,8 +3273,8 @@ Floor creation aborted. Зачыненне змены Эскізу - + Component Кампанент @@ -3471,8 +3471,8 @@ Floor creation aborted. Цэнтруе плоскасць па аб'ектах з прыведзенага вышэй спісу - + Building Будынак @@ -3851,14 +3851,14 @@ Building creation aborted. Кручэнне асновы вакол восі інструмента (ужываецца толькі ў тым выпадку, калі BasePerpendicularToTool зададзены ў True) - + The length of this element, if not based on a profile Даўжыня элементу, калі не заснаваны на профілі - + The width of this element, if not based on a profile Шырыня элементу, калі не заснаваны на профілі @@ -3868,15 +3868,15 @@ Building creation aborted. Вышыня ці глыбіня выдушвання элементу. Задайце 0 для аўтаматычнага вызначэння - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Вектар нармалі напрамку выдушвання аб'екту (пакіньце (0,0,0) для аўтаматычнага вектару нармалі) - + The structural nodes of this element Структурныя вузлы элемента @@ -3891,8 +3891,8 @@ Building creation aborted. Адлегласць зрушэння паміж цэнтральнай ліній і лініяй вузлоў - + The facemaker type to use to build the profile of this object Тып майстра граняў, які ўжываецца для стварэння профілю аб'екта @@ -3969,9 +3969,9 @@ Building creation aborted. Электрычная магутнасць у ватах (Вт), якая неабходная абсталяванню - + The type of this building Тып будынка @@ -4290,20 +4290,20 @@ Building creation aborted. URL-адрас, які паказвае дадзеную мясцовасць на супастаўленым інтэрнэт-сайце - + Other shapes that are appended to this object Іншыя фігуры, якія дадаюцца да аб'екта - + Other shapes that are subtracted from this object Іншыя фігуры, якія адымаюцца ад аб'екту - + The area of the projection of this object onto the XY plane Плошча праекцыі аб'екту на плоскасць XY @@ -4338,8 +4338,8 @@ Building creation aborted. Неабавязковае зрушэнне паміж пачаткам каардынат мадэлі (0,0,0) і кропкай, названай геаграфічнымі каардынатамі - + The type of this object Тып аб'екту @@ -4456,7 +4456,8 @@ Building creation aborted. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Неабавязковы аб'ект, які вызначае аб'ём для аднімання са сцен. +Калі поле зададзена - яно мае прыярытэт над аўтаматычна створаным укладзеным аб'ёмам @@ -6774,9 +6775,9 @@ Building creation aborted. Command - - + + Transform Пераўтварыць diff --git a/src/Mod/Arch/Resources/translations/Arch_ca.ts b/src/Mod/Arch/Resources/translations/Arch_ca.ts index 0e0c1dd4f6..ca5de1d85a 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ca.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ca.ts @@ -1271,8 +1271,8 @@ es col·loquen en un grup. DAE - + Export options Opcions d'exportació @@ -1703,40 +1703,40 @@ De totes maneres, algunes aplicacions BIM utilitzen aquest factor per escollir q Mode de dibuix - - + + Category Categoria - - + + Preset Predefinits - - - + + + Length Longitud - - + + Width Amplària - + Height Alçària @@ -1752,8 +1752,8 @@ De totes maneres, algunes aplicacions BIM utilitzen aquest factor per escollir q Canvia L/W - + Con&tinue Con&tinua @@ -1770,8 +1770,8 @@ De totes maneres, algunes aplicacions BIM utilitzen aquest factor per escollir q Aquesta malla no és un sòlid vàlid - + Facemaker returned an error El generador de cares ha retornat un error @@ -1884,8 +1884,8 @@ De totes maneres, algunes aplicacions BIM utilitzen aquest factor per escollir q Fet - + Couldn't compute a shape No s'ha pogut calcular la forma @@ -2058,8 +2058,8 @@ Site creation aborted. No s'ha pogut crear un sostre - + Please select a base object Seleccioneu un objecte base @@ -2361,37 +2361,37 @@ Si Distància = 0 aleshores la distància es calcula de manera que l'alçària s Tria el seleccionat - + + - Remove Elimina - + + - Add Afegeix - - - - + + + + - + + + - - Edit Edita @@ -2412,8 +2412,8 @@ Si Distància = 0 aleshores la distància es calcula de manera que l'alçària s Wires - + Components Components @@ -2423,30 +2423,30 @@ Si Distància = 0 aleshores la distància es calcula de manera que l'alçària s Crea un component nou + - Name Nom - - + + Type Tipus + - Thickness Gruix - + Offset Equidistancia (ofset) @@ -2514,9 +2514,9 @@ Si Distància = 0 aleshores la distància es calcula de manera que l'alçària s Please select at least one axis + - Axes Axes @@ -2528,9 +2528,9 @@ Si Distància = 0 aleshores la distància es calcula de manera que l'alçària s + - Successfully written Successfully written @@ -2540,8 +2540,8 @@ Si Distància = 0 aleshores la distància es calcula de manera que l'alçària s Gelosia - + Please select only one base object or none Please select only one base object or none @@ -3095,24 +3095,24 @@ Si Distància = 0 aleshores la distància es calcula de manera que l'alçària s Unable to recognize that file type - + Description Descripció - - + + Value Valor - + Unit Unitat @@ -3208,19 +3208,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3230,8 +3230,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3428,8 +3428,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Construcció @@ -3808,14 +3808,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3825,15 +3825,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3848,8 +3848,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3926,9 +3926,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4247,20 +4247,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4295,8 +4295,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6731,9 +6731,9 @@ Building creation aborted. Command - - + + Transform Transformar diff --git a/src/Mod/Arch/Resources/translations/Arch_cs.ts b/src/Mod/Arch/Resources/translations/Arch_cs.ts index ce2c789045..f2e88372d0 100644 --- a/src/Mod/Arch/Resources/translations/Arch_cs.ts +++ b/src/Mod/Arch/Resources/translations/Arch_cs.ts @@ -1282,8 +1282,8 @@ jsou místo toho umístěny do „skupiny“. DAE - + Export options Možnosti exportu @@ -1735,40 +1735,40 @@ bude pracovat při otevírání souboru. Režim kreslení - - + + Category Kategorie - - + + Preset Předvolba - - - + + + Length Délka - - + + Width Šířka - + Height Výška @@ -1784,8 +1784,8 @@ bude pracovat při otevírání souboru. Přepnout L/W - + Con&tinue Pokračovat @@ -1802,8 +1802,8 @@ bude pracovat při otevírání souboru. Tato síť netvoří platné těleso - + Facemaker returned an error Fakulta vrátila chybu @@ -1916,8 +1916,8 @@ bude pracovat při otevírání souboru. Hotovo - + Couldn't compute a shape Nelze vypočítat tvar @@ -2092,8 +2092,8 @@ Vytvoření webu bylo přerušeno. Nelze vytvořit střechu - + Please select a base object Vyber základní objekt @@ -2395,37 +2395,37 @@ Je-li Run = 0, pak se běh vypočítá tak, aby výška byla stejná jako relati Vybrat vybrané - + + - Remove Odstranit - + + - Add Přidat - - - - + + + + - + + + - - Edit Upravit @@ -2446,8 +2446,8 @@ Je-li Run = 0, pak se běh vypočítá tak, aby výška byla stejná jako relati Dráty - + Components Komponenty @@ -2457,30 +2457,30 @@ Je-li Run = 0, pak se běh vypočítá tak, aby výška byla stejná jako relati Vytvořit nový díl + - Name Jméno - - + + Type Typ + - Thickness Tloušťka - + Offset Odstup @@ -2548,9 +2548,9 @@ Je-li Run = 0, pak se běh vypočítá tak, aby výška byla stejná jako relati Vyberte prosím alespoň jednu osu + - Axes Osy @@ -2562,9 +2562,9 @@ Je-li Run = 0, pak se běh vypočítá tak, aby výška byla stejná jako relati + - Successfully written Úspěšně zapsáno @@ -2574,8 +2574,8 @@ Je-li Run = 0, pak se běh vypočítá tak, aby výška byla stejná jako relati Vazník - + Please select only one base object or none Vyberte prosím pouze jeden základní objekt nebo žádný @@ -3129,24 +3129,24 @@ Je-li Run = 0, pak se běh vypočítá tak, aby výška byla stejná jako relati Unable to recognize that file type - + Description Popis - - + + Value Hodnota - + Unit Jednotka @@ -3242,19 +3242,19 @@ Floor creation aborted. má neplatný tvar - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3264,8 +3264,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3462,8 +3462,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Budova @@ -3842,14 +3842,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3859,15 +3859,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3882,8 +3882,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3960,9 +3960,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4281,20 +4281,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4329,8 +4329,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object Typ tohoto objektu @@ -6765,9 +6765,9 @@ Building creation aborted. Command - - + + Transform Transformace diff --git a/src/Mod/Arch/Resources/translations/Arch_de.qm b/src/Mod/Arch/Resources/translations/Arch_de.qm index 52d4c8267b..b6ce73d282 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_de.qm and b/src/Mod/Arch/Resources/translations/Arch_de.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_de.ts b/src/Mod/Arch/Resources/translations/Arch_de.ts index 705f4f2438..71748d0b8b 100644 --- a/src/Mod/Arch/Resources/translations/Arch_de.ts +++ b/src/Mod/Arch/Resources/translations/Arch_de.ts @@ -1270,8 +1270,8 @@ are placed in a 'Group' instead. DAE - + Export options Export Einstellungen @@ -1704,40 +1704,40 @@ unit to work with when opening the file. Planungsmodus - - + + Category Kategorie - - + + Preset Voreinstellung - - - + + + Length Länge - - + + Width Breite - + Height Höhe @@ -1753,8 +1753,8 @@ unit to work with when opening the file. Tausche L und B - + Con&tinue Fortfahren @@ -1771,8 +1771,8 @@ unit to work with when opening the file. Dieses Polygonnetz ist ein ungültiger Volumenkörper - + Facemaker returned an error Facemaker wurde mit Fehler beendet @@ -1885,8 +1885,8 @@ unit to work with when opening the file. Fertig - + Couldn't compute a shape Es konnte keine Form berechnet werden @@ -2061,8 +2061,8 @@ Grundstück Erstellung abgebrochen. Dach konnte nicht erzeugt werden - + Please select a base object Bitte ein Basisobjekt auswählen @@ -2364,37 +2364,37 @@ Wenn Länge = 0 dann wird die Länge so berechnet, dass die Höhe gleich dem rel Ausgewähltes wählen - + + - Remove Entfernen - + + - Add Hinzufügen - - - - + + + + - + + + - - Edit Bearbeiten @@ -2415,8 +2415,8 @@ Wenn Länge = 0 dann wird die Länge so berechnet, dass die Höhe gleich dem rel Kantenzüge - + Components Komponenten @@ -2426,30 +2426,30 @@ Wenn Länge = 0 dann wird die Länge so berechnet, dass die Höhe gleich dem rel Neue Komponente erstellen + - Name Name - - + + Type Typ + - Thickness Dicke - + Offset Versatz @@ -2517,9 +2517,9 @@ Wenn Länge = 0 dann wird die Länge so berechnet, dass die Höhe gleich dem rel Bitte wählen Sie mindestens eine Achse + - Axes Achsen @@ -2531,9 +2531,9 @@ Wenn Länge = 0 dann wird die Länge so berechnet, dass die Höhe gleich dem rel + - Successfully written Erfolgreich geschrieben @@ -2543,8 +2543,8 @@ Wenn Länge = 0 dann wird die Länge so berechnet, dass die Höhe gleich dem rel Traverse - + Please select only one base object or none Bitte wählen Sie nur ein Basisobjekt oder keines @@ -3098,24 +3098,24 @@ Wenn Länge = 0 dann wird die Länge so berechnet, dass die Höhe gleich dem rel Dateityp nicht erkannt - + Description Beschreibung - - + + Value Wert - + Unit Einheit @@ -3208,19 +3208,19 @@ Geschoß-Erstellung abgebrochen. hat eine ungültige Form - + has a null shape hat eine ungültige Form - + Toggle subcomponents Unterkomponenten umschalten @@ -3230,8 +3230,8 @@ Geschoß-Erstellung abgebrochen. Schließe Skizzenbearbeitung - + Component Komponente @@ -3428,8 +3428,8 @@ Geschoß-Erstellung abgebrochen. Zentriert die Ebene gemäß den Objekten in obiger Liste - + Building Gebäude @@ -3808,14 +3808,14 @@ Gebäudeerstellung abgebrochen. Rotation der Basis um die Werkzeug-Achse (funktioniert nur, wenn "Basis senkrecht zu Werkzeug"- aktiviert ist) - + The length of this element, if not based on a profile Die Länge dieses Elements, wenn es nicht auf einem Profil basiert - + The width of this element, if not based on a profile Die Breite dieses Elements, wenn es nicht auf einem Profil basiert @@ -3825,15 +3825,15 @@ Gebäudeerstellung abgebrochen. Die Höhe oder Extrusionstiefe dieses Elements. Behalten Sie 0 für automatische Bestimmung der Höhe - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Die normale Extrusionsrichtung dieses Objekts (behalten Sie (0,0,0) für die automatische Normale) - + The structural nodes of this element Die Strukturknoten dieses Elements @@ -3848,8 +3848,8 @@ Gebäudeerstellung abgebrochen. Versatzabstand zwischen der Mittellinie und der Knotenlinie - + The facemaker type to use to build the profile of this object Der Typ Flächenerzeuger, der verwendet werden soll, um das Profil dieses Objekts zu erstellen @@ -3926,9 +3926,9 @@ Gebäudeerstellung abgebrochen. Die elektrische Leistung in Watt, die dieses Gerät benötigt - + The type of this building Die Art dieses Gebäudes @@ -4247,20 +4247,20 @@ Gebäudeerstellung abgebrochen. Eine URL für diesen Standort in einer Karten-Webseite - + Other shapes that are appended to this object Andere Formen, die an dieses Objekt angehängt sind - + Other shapes that are subtracted from this object Andere Formen, die von diesem Objekt abgezogen werden - + The area of the projection of this object onto the XY plane Die Fläche der Projektion des Objekts auf die XY-Ebene @@ -4295,8 +4295,8 @@ Gebäudeerstellung abgebrochen. Ein optionaler Offset zwischen dem Modell-Ursprung (0,0,0) und dem von den Geokoordinaten angegebenen Punkt - + The type of this object Der Typ dieses Objekts @@ -4413,7 +4413,7 @@ Gebäudeerstellung abgebrochen. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Ein optionales Objekt, das ein Volumen definiert, das von Wänden subtrahiert werden soll. Wenn Feld gesetzt ist hat es eine Priorität vor automatisch generierten Untervolumen @@ -5917,7 +5917,7 @@ Gebäudeerstellung abgebrochen. Creates 3 views (top, front, side) from a mesh-based object - Erstellt von 3 Ansichten (Oben, Vorne, Seite) von einem netz-basierten Objekt + Erstellt 3 Ansichten (Draufsicht, Vorderansicht, Seitenansicht) von einem netzbasierten Objekt @@ -6731,9 +6731,9 @@ Gebäudeerstellung abgebrochen. Command - - + + Transform Transformieren diff --git a/src/Mod/Arch/Resources/translations/Arch_el.ts b/src/Mod/Arch/Resources/translations/Arch_el.ts index 2e1b1f4908..f7105a814b 100644 --- a/src/Mod/Arch/Resources/translations/Arch_el.ts +++ b/src/Mod/Arch/Resources/translations/Arch_el.ts @@ -1279,8 +1279,8 @@ are placed in a 'Group' instead. DAE - + Export options Επιλογές εξαγωγής @@ -1732,40 +1732,40 @@ unit to work with when opening the file. Drawing mode - - + + Category Κατηγορία - - + + Preset Preset - - - + + + Length Μήκος - - + + Width Πλάτος - + Height Ύψος @@ -1781,8 +1781,8 @@ unit to work with when opening the file. Switch L/W - + Con&tinue Con&tinue @@ -1799,8 +1799,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Facemaker returned an error @@ -1913,8 +1913,8 @@ unit to work with when opening the file. Έγινε - + Couldn't compute a shape Couldn't compute a shape @@ -2089,8 +2089,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2392,37 +2392,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Διαλέξτε τα επιλεγμένα - + + - Remove Αφαίρεση - + + - Add Προσθήκη - - - - + + + + - + + + - - Edit Επεξεργασία @@ -2443,8 +2443,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components Στοιχεία @@ -2454,30 +2454,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name Όνομα - - + + Type Τύπος + - Thickness Πάχος - + Offset Μετατοπίστε @@ -2545,9 +2545,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2559,9 +2559,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2571,8 +2571,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3126,24 +3126,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Περιγραφή - - + + Value Τιμή - + Unit Μονάδα @@ -3239,19 +3239,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3261,8 +3261,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3459,8 +3459,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Κτίριο @@ -3839,14 +3839,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3856,15 +3856,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3879,8 +3879,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3957,9 +3957,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4278,20 +4278,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4326,8 +4326,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6762,9 +6762,9 @@ Building creation aborted. Command - - + + Transform Μετατόπιση diff --git a/src/Mod/Arch/Resources/translations/Arch_es-AR.qm b/src/Mod/Arch/Resources/translations/Arch_es-AR.qm index 2bf928ed3d..a20df73580 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_es-AR.qm and b/src/Mod/Arch/Resources/translations/Arch_es-AR.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_es-AR.ts b/src/Mod/Arch/Resources/translations/Arch_es-AR.ts index dc8b0f31ae..2aa0b3d54a 100644 --- a/src/Mod/Arch/Resources/translations/Arch_es-AR.ts +++ b/src/Mod/Arch/Resources/translations/Arch_es-AR.ts @@ -903,22 +903,22 @@ en lugar del entorno de trabajo web FreeCAD Wall color - Wall color + Color de muro Structure color - Structure color + Color de estructura Rebar color - Rebar color + Color de refuerzo Window glass transparency - Window glass transparency + Transparencia de vidrio de ventanas @@ -929,12 +929,12 @@ en lugar del entorno de trabajo web FreeCAD Window glass color - Window glass color + Transparencia de vidrio de ventanas Panel color - Panel color + Color de panel @@ -944,12 +944,12 @@ en lugar del entorno de trabajo web FreeCAD Space transparency - Space transparency + Transparencia de espacio Space line style - Space line style + Estilo de la línea de espacio @@ -974,7 +974,7 @@ en lugar del entorno de trabajo web FreeCAD Space line color - Space line color + Color de línea de espacio @@ -984,17 +984,17 @@ en lugar del entorno de trabajo web FreeCAD Use sketches for walls - Use sketches for walls + Usar bocetos para muros Pipe diameter - Pipe diameter + Diametro de tubería Rebar diameter - Rebar diameter + Diámetro de refuerzo @@ -1282,8 +1282,8 @@ Los 'Buildings' y 'Storeys' siguen siendo importados si hay más de uno.DAE - + Export options Opciones de exportación @@ -1728,40 +1728,40 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Modo de dibujo - - + + Category Categoría - - + + Preset Predefinido - - - + + + Length Longitud - - + + Width Ancho - + Height Altura @@ -1777,8 +1777,8 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Cambiar L/W - + Con&tinue Con&tinuar @@ -1795,8 +1795,8 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Esta malla es un sólido no válido - + Facemaker returned an error Facemaker devolvió un error @@ -1909,8 +1909,8 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Hecho - + Couldn't compute a shape No se pudo procesar una forma @@ -2085,8 +2085,8 @@ Creación del sitio abortada. No se puede crear un techo - + Please select a base object Por favor, seleccione un objeto base @@ -2388,37 +2388,37 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Elegir lo seleccionado - + + - Remove Eliminar - + + - Add Agregar - - - - + + + + - + + + - - Edit Editar @@ -2439,8 +2439,8 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Alambres - + Components Componentes @@ -2450,30 +2450,30 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Crear nuevo componente + - Name Nombre - - + + Type Tipo + - Thickness Espesor - + Offset Desfase @@ -2541,9 +2541,9 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Por favor seleccione al menos un eje + - Axes Ejes @@ -2555,9 +2555,9 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu + - Successfully written Escrito correctamente @@ -2567,8 +2567,8 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Celosía - + Please select only one base object or none Por favor, seleccione sólo un objeto base o ninguno @@ -3122,24 +3122,24 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu No se puede reconocer ese tipo de archivo - + Description Descripción - - + + Value Valor - + Unit Unidad @@ -3235,19 +3235,19 @@ Creación de planta cancelada. Tiene una forma no válida - + has a null shape Tiene una forma nula - + Toggle subcomponents Alternar subcomponentes @@ -3257,8 +3257,8 @@ Creación de planta cancelada. Cerrando edición del esquema - + Component Componente @@ -3455,8 +3455,8 @@ Creación de planta cancelada. Centra el plano en los objetos de la lista anterior - + Building Edificio @@ -3835,14 +3835,14 @@ Creación de construcción cancelada. Rotación base alrededor del eje de la herramienta (sólo se utiliza si BasePerpendicularToTool es verdadero) - + The length of this element, if not based on a profile La longitud de este elemento, si no está basado en un perfil - + The width of this element, if not based on a profile La anchura de este elemento, si no está basado en un perfil @@ -3852,15 +3852,15 @@ Creación de construcción cancelada. La altura o profundidad de extrusión de este elemento. Mantener 0 para automático - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Dirección de extrusión normal de este objeto (mantener (0,0,0) para normal automática) - + The structural nodes of this element Los nodos estructurales de este elemento @@ -3875,8 +3875,8 @@ Creación de construcción cancelada. Distancia de separación entre la línea central y las líneas punteadas - + The facemaker type to use to build the profile of this object El tipo facemaker se usa para construir el perfil de este objeto @@ -3953,9 +3953,9 @@ Creación de construcción cancelada. Potencia eléctrica necesaria por este equipo en Watts - + The type of this building Tipo de este edificio @@ -4274,20 +4274,20 @@ Creación de construcción cancelada. Una URL que muestra este sitio en un sitio web de mapeo - + Other shapes that are appended to this object Otras formas que están anexadas a este objeto - + Other shapes that are subtracted from this object Otras formas que están extraídas de este objeto - + The area of the projection of this object onto the XY plane El área de la proyección de este objeto sobre el plano XY @@ -4322,8 +4322,8 @@ Creación de construcción cancelada. Un desplazamiento opcional entre el origen del modelo (0,0,0) y el punto indicado por las coordenadas geográficas - + The type of this object El tipo de este objeto @@ -4440,7 +4440,7 @@ Creación de construcción cancelada. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Un objeto opcional que define un volumen a ser restado de las paredes. Si el campo está establecido - tiene prioridad sobre el subvolumen generado automáticamente @@ -6758,9 +6758,9 @@ Creación de construcción cancelada. Command - - + + Transform Transformar diff --git a/src/Mod/Arch/Resources/translations/Arch_es-ES.qm b/src/Mod/Arch/Resources/translations/Arch_es-ES.qm index 0ed78ce88e..5a3460fcd7 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_es-ES.qm and b/src/Mod/Arch/Resources/translations/Arch_es-ES.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_es-ES.ts b/src/Mod/Arch/Resources/translations/Arch_es-ES.ts index 7571c82f43..1328d332ba 100644 --- a/src/Mod/Arch/Resources/translations/Arch_es-ES.ts +++ b/src/Mod/Arch/Resources/translations/Arch_es-ES.ts @@ -903,22 +903,22 @@ en lugar del entorno de trabajo web FreeCAD Wall color - Wall color + Color de muro Structure color - Structure color + Color de estructura Rebar color - Rebar color + Color de refuerzo Window glass transparency - Window glass transparency + Transparencia de vidrio de ventanas @@ -929,12 +929,12 @@ en lugar del entorno de trabajo web FreeCAD Window glass color - Window glass color + Transparencia de vidrio de ventanas Panel color - Panel color + Color de panel @@ -944,12 +944,12 @@ en lugar del entorno de trabajo web FreeCAD Space transparency - Space transparency + Transparencia de espacio Space line style - Space line style + Estilo de la línea de espacio @@ -974,7 +974,7 @@ en lugar del entorno de trabajo web FreeCAD Space line color - Space line color + Color de línea de espacio @@ -984,17 +984,17 @@ en lugar del entorno de trabajo web FreeCAD Use sketches for walls - Use sketches for walls + Usar bocetos para muros Pipe diameter - Pipe diameter + Diametro de tubería Rebar diameter - Rebar diameter + Diámetro de refuerzo @@ -1282,8 +1282,8 @@ se colocan en 'Group' en su lugar. DAE - + Export options Opciones de exportación @@ -1728,40 +1728,40 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Modo de dibujo - - + + Category Categoría - - + + Preset Predefinido - - - + + + Length Longitud - - + + Width Ancho - + Height Altura @@ -1777,8 +1777,8 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Cambiar L/W - + Con&tinue Con&tinuar @@ -1795,8 +1795,8 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Esta malla es un sólido no válido - + Facemaker returned an error Facemaker devolvió un error @@ -1909,8 +1909,8 @@ En cualquier caso, algunas aplicaciones BIM usarán este factor para elegir con Hecho - + Couldn't compute a shape No se pudo procesar una forma @@ -2085,8 +2085,8 @@ Creación del sitio abortada. No se puede crear un techo - + Please select a base object Por favor, seleccione un objeto base @@ -2388,37 +2388,37 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Elegir lo seleccionado - + + - Remove Quitar - + + - Add Añadir - - - - + + + + - + + + - - Edit Editar @@ -2439,8 +2439,8 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Alambres - + Components Componentes @@ -2450,30 +2450,30 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Crear nuevo componente + - Name Nombre - - + + Type Tipo + - Thickness Espesor - + Offset Desplazamiento @@ -2541,9 +2541,9 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Por favor seleccione al menos un eje + - Axes Ejes @@ -2555,9 +2555,9 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu + - Successfully written Escrito correctamente @@ -2567,8 +2567,8 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu Celosía - + Please select only one base object or none Por favor, seleccione sólo un objeto base o ninguno @@ -3122,24 +3122,24 @@ Si Distancia = 0 entonces la distancia es calcula de forma que la altura sea igu No se puede reconocer ese tipo de archivo - + Description Descripción - - + + Value Valor - + Unit Unidad @@ -3235,19 +3235,19 @@ Creación de planta cancelada. Tiene una forma no válida - + has a null shape Tiene una forma nula - + Toggle subcomponents Alternar subcomponentes @@ -3257,8 +3257,8 @@ Creación de planta cancelada. Cerrando edición del esquema - + Component Componente @@ -3455,8 +3455,8 @@ Creación de planta cancelada. Centra el plano en los objetos de la lista anterior - + Building Construcción @@ -3835,14 +3835,14 @@ Creación de construcción cancelada. Rotación base alrededor del eje de la herramienta (sólo se utiliza si BasePerpendicularToTool es verdadero) - + The length of this element, if not based on a profile La longitud de este elemento, si no está basado en un perfil - + The width of this element, if not based on a profile La anchura de este elemento, si no está basado en un perfil @@ -3852,15 +3852,15 @@ Creación de construcción cancelada. La altura o profundidad de extrusión de este elemento. Mantener 0 para automático - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Dirección de extrusión normal de este objeto (mantener (0,0,0) para normal automática) - + The structural nodes of this element Los nodos estructurales de este elemento @@ -3875,8 +3875,8 @@ Creación de construcción cancelada. Distancia de separación entre la línea central y las líneas punteadas - + The facemaker type to use to build the profile of this object El tipo facemaker se usa para construir el perfil de este objeto @@ -3953,9 +3953,9 @@ Creación de construcción cancelada. Potencia eléctrica necesaria por este equipo en Watts - + The type of this building Tipo de este edificio @@ -4274,20 +4274,20 @@ Creación de construcción cancelada. Una URL que muestra este sitio en un sitio web de mapeo - + Other shapes that are appended to this object Otras formas que están anexadas a este objeto - + Other shapes that are subtracted from this object Otras formas que están extraídas de este objeto - + The area of the projection of this object onto the XY plane El área de la proyección de este objeto sobre el plano XY @@ -4322,8 +4322,8 @@ Creación de construcción cancelada. Un desplazamiento opcional entre el origen del modelo (0,0,0) y el punto indicado por las coordenadas geográficas - + The type of this object El tipo de este objeto @@ -4440,7 +4440,7 @@ Creación de construcción cancelada. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Un objeto opcional que define un volumen a ser restado de las paredes. Si el campo está establecido - tiene prioridad sobre el subvolumen generado automáticamente @@ -6758,9 +6758,9 @@ Creación de construcción cancelada. Command - - + + Transform Transformar diff --git a/src/Mod/Arch/Resources/translations/Arch_eu.ts b/src/Mod/Arch/Resources/translations/Arch_eu.ts index 008dfc23c5..e9ffcb7d2f 100644 --- a/src/Mod/Arch/Resources/translations/Arch_eu.ts +++ b/src/Mod/Arch/Resources/translations/Arch_eu.ts @@ -1283,8 +1283,8 @@ objektu guztiak 'taldea' objektu batean kokatuko dira. DAE - + Export options Esportazio-aukerak @@ -1734,40 +1734,40 @@ dute fitxategia irekitzean zein unitatetan egingo duten lan aukeratzeko.Marrazte modua - - + + Category Kategoria - - + + Preset Aurrezarpena - - - + + + Length Luzera - - + + Width Zabalera - + Height Altuera @@ -1783,8 +1783,8 @@ dute fitxategia irekitzean zein unitatetan egingo duten lan aukeratzeko.Trukatu luz./zab. - + Con&tinue Ja&rraitu @@ -1801,8 +1801,8 @@ dute fitxategia irekitzean zein unitatetan egingo duten lan aukeratzeko.Amaraun hau solido baliogabea da - + Facemaker returned an error Aurpegi-sortzaileak errorea eman du @@ -1915,8 +1915,8 @@ dute fitxategia irekitzean zein unitatetan egingo duten lan aukeratzeko.Egina - + Couldn't compute a shape Ezin izan da forma bat kalkulatu @@ -2091,8 +2091,8 @@ Gunearen sorrera utzi egin da. Ezin da teilatua sortu - + Please select a base object Hautatu oinarri-objektu bat @@ -2394,37 +2394,37 @@ Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboare Hartu hautatua - + + - Remove Kendu - + + - Add Gehitu - - - - + + + + - + + + - - Edit Editatu @@ -2445,8 +2445,8 @@ Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboare Alanbreak - + Components Osagaiak @@ -2456,30 +2456,30 @@ Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboare Sortu osagai berria + - Name Izena - - + + Type Mota + - Thickness Lodiera - + Offset Desplazamendua @@ -2547,9 +2547,9 @@ Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboare Hautatu gutxienez ardatz bat + - Axes Ardatzak @@ -2561,9 +2561,9 @@ Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboare + - Successfully written Ongi idatzi da @@ -2573,8 +2573,8 @@ Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboare Zurajea - + Please select only one base object or none Hautatu oinarri-objektu bakar bat edo bat ere ez @@ -3128,24 +3128,24 @@ Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboare Ez da fitxategi mota hori ezagutzen - + Description Deskribapena - - + + Value Balioa - + Unit Unitatea @@ -3241,19 +3241,19 @@ Solairuaren sorrera utzi egin da. baliogabeko forma du - + has a null shape forma nulua du - + Toggle subcomponents Txandakatu azpiosagaiak @@ -3263,8 +3263,8 @@ Solairuaren sorrera utzi egin da. Krokisaren edizioa ixten - + Component Osagaia @@ -3461,8 +3461,8 @@ Solairuaren sorrera utzi egin da. Planoa goiko zerrendako objektuetan zentratzen du - + Building Eraikina @@ -3841,14 +3841,14 @@ Eraikinaren sorrera utzi egin da. Oinarriaren biraketa tresna-ardatzaren inguruan (BasePerpendicularToTool egia bada soilik erabilia) - + The length of this element, if not based on a profile Elementu honen luzera, profil batean oinarrituta ez badago - + The width of this element, if not based on a profile Elementu honen luzera, profil batean oinarrituta ez badago @@ -3858,15 +3858,15 @@ Eraikinaren sorrera utzi egin da. Elementu honen altuera edo estrusio-sakonera. Mantendu 0 balio automatikoa erabiltzeko - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Objektu honen estrusio-norabide normala (mantendu (0,0,0) normal automatikorako) - + The structural nodes of this element Elementu honen egiturazko nodoak @@ -3881,8 +3881,8 @@ Eraikinaren sorrera utzi egin da. Erdiko lerroaren eta nodo-lerroen arteko desplazamendu-distantzia - + The facemaker type to use to build the profile of this object Objektu honen profila eraikitzeko erabiliko den aurpegi-sortzailearen mota @@ -3959,9 +3959,9 @@ Eraikinaren sorrera utzi egin da. Ekipamendu honek behar duen energia elektrikoa, watt-etan - + The type of this building Eraikin honen mota @@ -4280,20 +4280,20 @@ Eraikinaren sorrera utzi egin da. Gune hau mapatze-webgune batean erakutsiko duen URL bat - + Other shapes that are appended to this object Objektu honi erantsitako beste forma batzuk - + Other shapes that are subtracted from this object Objektu honi kendutako beste forma batzuk - + The area of the projection of this object onto the XY plane Objektu honen proiekzioaren area XY planoan @@ -4328,8 +4328,8 @@ Eraikinaren sorrera utzi egin da. Ereduaren (0,0,0) jatorriaren eta geokoordinatuek adierazten duten puntuaren arteko aukerako desplazamendu bat - + The type of this object Objektu honen mota @@ -6764,9 +6764,9 @@ Eraikinaren sorrera utzi egin da. Command - - + + Transform Transformatu diff --git a/src/Mod/Arch/Resources/translations/Arch_fi.ts b/src/Mod/Arch/Resources/translations/Arch_fi.ts index 048fbd3a61..a4c272a86b 100644 --- a/src/Mod/Arch/Resources/translations/Arch_fi.ts +++ b/src/Mod/Arch/Resources/translations/Arch_fi.ts @@ -1283,8 +1283,8 @@ are placed in a 'Group' instead. DAE - + Export options Vientiasetukset @@ -1736,40 +1736,40 @@ unit to work with when opening the file. Drawing mode - - + + Category Kategoria - - + + Preset Preset - - - + + + Length Pituus - - + + Width Leveys - + Height Korkeus @@ -1785,8 +1785,8 @@ unit to work with when opening the file. Switch L/W - + Con&tinue Con&tinue @@ -1803,8 +1803,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Facemaker returned an error @@ -1917,8 +1917,8 @@ unit to work with when opening the file. Valmis - + Couldn't compute a shape Couldn't compute a shape @@ -2093,8 +2093,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2396,37 +2396,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Valitse valittu - + + - Remove Poista - + + - Add Lisää - - - - + + + + - + + + - - Edit Muokkaa @@ -2447,8 +2447,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components Osat @@ -2458,30 +2458,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Luo uusi komponentti + - Name Nimi - - + + Type Tyyppi + - Thickness Paksuus - + Offset Siirtymä @@ -2549,9 +2549,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2563,9 +2563,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2575,8 +2575,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3130,24 +3130,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Kuvaus - - + + Value Arvo - + Unit Yksikkö @@ -3243,19 +3243,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3265,8 +3265,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3463,8 +3463,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Rakennus @@ -3843,14 +3843,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3860,15 +3860,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3883,8 +3883,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3961,9 +3961,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4282,20 +4282,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4330,8 +4330,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6766,9 +6766,9 @@ Building creation aborted. Command - - + + Transform Muunna diff --git a/src/Mod/Arch/Resources/translations/Arch_fr.qm b/src/Mod/Arch/Resources/translations/Arch_fr.qm index 0114996f62..4f1157cd23 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_fr.qm and b/src/Mod/Arch/Resources/translations/Arch_fr.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_fr.ts b/src/Mod/Arch/Resources/translations/Arch_fr.ts index 7f54c11b95..145b041c40 100644 --- a/src/Mod/Arch/Resources/translations/Arch_fr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_fr.ts @@ -1290,8 +1290,8 @@ Les objets "Bâtiments" et "Étages" sont toujours importés s'il y en a plus d' DAE - + Export options Options d'exportation @@ -1734,40 +1734,40 @@ travailler lors de l'ouverture du fichier. Mode Dessin - - + + Category Catégorie - - + + Preset Préréglage - - - + + + Length Longueur - - + + Width Largeur - + Height Hauteur @@ -1783,8 +1783,8 @@ travailler lors de l'ouverture du fichier. Intervertir L/La - + Con&tinue Poursuivre @@ -1801,8 +1801,8 @@ travailler lors de l'ouverture du fichier. Ce maillage n'est pas un solide valide - + Facemaker returned an error FaceMaker a retouné une erreur @@ -1915,8 +1915,8 @@ travailler lors de l'ouverture du fichier. Fait - + Couldn't compute a shape Impossible de calculer une forme @@ -2091,8 +2091,8 @@ La création du site est annulée. Impossible de créer un toit - + Please select a base object Sélectionner un objet de base @@ -2391,37 +2391,37 @@ Si Course = 0 alors la course est calculée de façon à ce que la hauteur du pr Choisir la sélection - + + - Remove Supprimer - + + - Add Ajouter - - - - + + + + - + + + - - Edit Éditer @@ -2442,8 +2442,8 @@ Si Course = 0 alors la course est calculée de façon à ce que la hauteur du pr Polylignes - + Components Composants @@ -2453,30 +2453,30 @@ Si Course = 0 alors la course est calculée de façon à ce que la hauteur du pr Créer un nouveau composant + - Name Nom - - + + Type Type + - Thickness Épaisseur - + Offset Décalage @@ -2544,9 +2544,9 @@ Si Course = 0 alors la course est calculée de façon à ce que la hauteur du pr Sélectionner au moins un axe + - Axes Axes @@ -2558,9 +2558,9 @@ Si Course = 0 alors la course est calculée de façon à ce que la hauteur du pr + - Successfully written Écrit avec succès @@ -2570,8 +2570,8 @@ Si Course = 0 alors la course est calculée de façon à ce que la hauteur du pr Treillis - + Please select only one base object or none Sélectionner un seul objet de base ou aucun @@ -3125,24 +3125,24 @@ Si Course = 0 alors la course est calculée de façon à ce que la hauteur du pr Impossible de reconnaître ce type de fichier - + Description Description - - + + Value Valeur - + Unit Unité @@ -3238,19 +3238,19 @@ La création du niveau est annulée. a une forme non valide - + has a null shape a une forme nulle - + Toggle subcomponents Activer/désactiver les sous-composants @@ -3260,8 +3260,8 @@ La création du niveau est annulée. Fermeture de l'édition de l'esquisse - + Component Composant @@ -3458,8 +3458,8 @@ La création du niveau est annulée. Centre le plan sur les objets de la liste ci-dessus - + Building Bâtiment @@ -3838,14 +3838,14 @@ La création du bâtiment est annulée. Rotation de la base autour de l'axe de l'outil (utilisé uniquement si BasePerpendicularToTool est mis à vrai) - + The length of this element, if not based on a profile La longueur de cet élément, si il n'est pas basé sur un profil - + The width of this element, if not based on a profile La largeur de cet élément, si il n'est pas basé sur un profilé @@ -3855,15 +3855,15 @@ La création du bâtiment est annulée. La hauteur ou profondeur d’extrusion de cet élément. Laisser à 0 pour un réglage automatique - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) La direction d'extrusion normale de cet objet (laisser à (0,0,0) pour une normale automatique) - + The structural nodes of this element Les nœuds structurels de cet élément @@ -3878,8 +3878,8 @@ La création du bâtiment est annulée. Décalage entre la ligne centrale et la ligne des nœuds - + The facemaker type to use to build the profile of this object Le type de facemaker à utiliser pour créer le profilé de cet objet @@ -3956,9 +3956,9 @@ La création du bâtiment est annulée. La puissance électrique nécessaire à cet équipement en Watts - + The type of this building Le type de ce bâtiment @@ -4277,20 +4277,20 @@ La création du bâtiment est annulée. URL montrant ce site sur un site de cartographie - + Other shapes that are appended to this object Autres formes ajoutées à cet objet - + Other shapes that are subtracted from this object Autres formes soustraites de cet objet - + The area of the projection of this object onto the XY plane Surface projetée de l'objet sur un plan XY @@ -4325,8 +4325,8 @@ La création du bâtiment est annulée. Un décalage facultatif entre l'origine du modèle (0,0,0) et le point indiqué par les géocoordonnées - + The type of this object Le type de cet objet @@ -4443,7 +4443,7 @@ La création du bâtiment est annulée. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Objet facultatif définissant un volume à soustraire des murs. Si le champ est défini, il a priorité sur le sous-volume généré automatiquement. @@ -6762,9 +6762,9 @@ La création du bâtiment est annulée. Command - - + + Transform Transformer diff --git a/src/Mod/Arch/Resources/translations/Arch_gl.ts b/src/Mod/Arch/Resources/translations/Arch_gl.ts index c6a509c282..68087fdf07 100644 --- a/src/Mod/Arch/Resources/translations/Arch_gl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_gl.ts @@ -1283,8 +1283,8 @@ are placed in a 'Group' instead. DAE - + Export options Opcións de exportación @@ -1736,40 +1736,40 @@ unit to work with when opening the file. Drawing mode - - + + Category Categoría - - + + Preset Preset - - - + + + Length Lonxitude - - + + Width Largura - + Height Altura @@ -1785,8 +1785,8 @@ unit to work with when opening the file. Switch L/W - + Con&tinue Con&tinue @@ -1803,8 +1803,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Facemaker returned an error @@ -1917,8 +1917,8 @@ unit to work with when opening the file. Feito - + Couldn't compute a shape Couldn't compute a shape @@ -2093,8 +2093,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2396,37 +2396,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Elixir o escolmado - + + - Remove Rexeitar - + + - Add Engadir - - - - + + + + - + + + - - Edit Editar @@ -2447,8 +2447,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components Compoñentes @@ -2458,30 +2458,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name Nome - - + + Type Tipo + - Thickness Grosor - + Offset Separación @@ -2549,9 +2549,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2563,9 +2563,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2575,8 +2575,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3130,24 +3130,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Descrición - - + + Value Valor - + Unit Unidade @@ -3243,19 +3243,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3265,8 +3265,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3463,8 +3463,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Edificio @@ -3843,14 +3843,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3860,15 +3860,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3883,8 +3883,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3961,9 +3961,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4282,20 +4282,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4330,8 +4330,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6766,9 +6766,9 @@ Building creation aborted. Command - - + + Transform Transformar diff --git a/src/Mod/Arch/Resources/translations/Arch_hr.ts b/src/Mod/Arch/Resources/translations/Arch_hr.ts index 3cd4dd4079..2421beb5d1 100644 --- a/src/Mod/Arch/Resources/translations/Arch_hr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_hr.ts @@ -1295,8 +1295,8 @@ umjesto toga smješteni su u "Grupu". DAE - + Export options Postavke izvoza @@ -1751,33 +1751,33 @@ jedinice s kojom treba raditi prilikom otvaranja datoteke. Način crtanja - - + + Category Kategorija - - + + Preset Unaprijed postavljene postavke - - - + + + Length Dužina - - + + Width @@ -1785,8 +1785,8 @@ jedinice s kojom treba raditi prilikom otvaranja datoteke. Širina - + Height Visina @@ -1802,8 +1802,8 @@ jedinice s kojom treba raditi prilikom otvaranja datoteke. Obrni D/Š - + Con&tinue Nas&tavi @@ -1820,8 +1820,8 @@ jedinice s kojom treba raditi prilikom otvaranja datoteke. Ova mreža je nevažeće čvrsto tijelo - + Facemaker returned an error Graditelj lica je vratio pogrešku @@ -1934,8 +1934,8 @@ jedinice s kojom treba raditi prilikom otvaranja datoteke. Gotovo - + Couldn't compute a shape Oblik se nije mogao izračunati @@ -2110,8 +2110,8 @@ Stvaranje Parcele prekinuto. Nije moguće izraditi krov - + Please select a base object Odaberite osnovni objekt @@ -2425,37 +2425,37 @@ Ako je Run = 0, tada se proračun izračunava tako da je visina jednaka relativn Pokupi odabrano - + + - Remove Ukloni - + + - Add Dodaj - - - - + + + + - + + + - - Edit Uredi @@ -2476,8 +2476,8 @@ Ako je Run = 0, tada se proračun izračunava tako da je visina jednaka relativn Žice - + Components Komponente @@ -2487,30 +2487,30 @@ Ako je Run = 0, tada se proračun izračunava tako da je visina jednaka relativn Izradi novu komponentu + - Name Ime - - + + Type Tip + - Thickness Debljina - + Offset Pomak @@ -2582,9 +2582,9 @@ Ako je Run = 0, tada se proračun izračunava tako da je visina jednaka relativn Molimo odaberite najmanje jednu os + - Axes Osi @@ -2596,9 +2596,9 @@ Ako je Run = 0, tada se proračun izračunava tako da je visina jednaka relativn + - Successfully written Uspješno napisan @@ -2608,8 +2608,8 @@ Ako je Run = 0, tada se proračun izračunava tako da je visina jednaka relativn Poprečna greda - + Please select only one base object or none Odaberite samo jedan osnovni objekt ili nijedan @@ -3165,24 +3165,24 @@ Here is a breakdown of the translation: Nije moguće prepoznati vrstu datoteke - + Description Opis - - + + Value Vrijednost - + Unit Jedinica @@ -3278,19 +3278,19 @@ Stvaranje etaže prekinuto. ima jedan neispravan oblik - + has a null shape ima jedan ništavni oblik - + Toggle subcomponents Uključivanje/isključivanje podsastavnice @@ -3300,8 +3300,8 @@ Stvaranje etaže prekinuto. Zatvori uređivanje Skice - + Component Komponenta @@ -3498,8 +3498,8 @@ Stvaranje etaže prekinuto. Centrira ravninu na objekte na gornjem popisu - + Building Zgrada @@ -3882,14 +3882,14 @@ Stvaranje zgrade prekinuto. Rotacija osnove oko osi alata (koristi se samo ako je OsnovaOkomitoNaAlat Istina) - + The length of this element, if not based on a profile Dužina ovog elementa, ako se ne temelji na profilu - + The width of this element, if not based on a profile Širina ovog elementa, ako se ne temelji na profilu @@ -3899,15 +3899,15 @@ Stvaranje zgrade prekinuto. Visine ili dubina istiskivanja ovog elementa. Držite 0 za automatsko - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Smjer normalnog istiskivanja objekta (zadrži (0,0,0) za automatsko normalno) - + The structural nodes of this element Strukturni čvorovi ovog elementa @@ -3922,8 +3922,8 @@ Stvaranje zgrade prekinuto. Udaljenost od centralne linije i čvora - + The facemaker type to use to build the profile of this object Vrsta dotjeravanja izgleda, koristi se za izgradnju profila ovog objekta @@ -4000,9 +4000,9 @@ Stvaranje zgrade prekinuto. Električna energija potrebna u ovoj opremi - + The type of this building Vrsta ove zgrade @@ -4324,20 +4324,20 @@ Stvaranje zgrade prekinuto. Url koji pokazuje ovo mjesto na mapiranoj web-stranici - + Other shapes that are appended to this object Drugi oblici koji su dodani ovom objektu - + Other shapes that are subtracted from this object Drugi oblici koji su oduzeti ovom objektu - + The area of the projection of this object onto the XY plane Područje projekcije ovog objekta na ravnini XY @@ -4372,8 +4372,8 @@ Stvaranje zgrade prekinuto. Opcionalni pomak između porijekla modela (0,0,0) i mjesta označenog na geokoordinatama - + The type of this object Tip ovog objekta @@ -6836,9 +6836,9 @@ Stvaranje zgrade prekinuto. Command - - + + Transform Transformacija diff --git a/src/Mod/Arch/Resources/translations/Arch_hu.qm b/src/Mod/Arch/Resources/translations/Arch_hu.qm index ef276c2a81..a6cfa611b5 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_hu.qm and b/src/Mod/Arch/Resources/translations/Arch_hu.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_hu.ts b/src/Mod/Arch/Resources/translations/Arch_hu.ts index 964ee4c37f..b2c4961945 100644 --- a/src/Mod/Arch/Resources/translations/Arch_hu.ts +++ b/src/Mod/Arch/Resources/translations/Arch_hu.ts @@ -1283,8 +1283,8 @@ Az 'Épületek' és az 'Emeletek' még mindig importálva vannak, ha egynél tö DAE - + Export options Exportálási beállítások @@ -1736,40 +1736,40 @@ kiválasszák a mértékegységet a fájl megnyitásakor. Rajzolási mód - - + + Category Kategória - - + + Preset Előre beállított - - - + + + Length Hossz - - + + Width Szélesség - + Height Magasság @@ -1785,8 +1785,8 @@ kiválasszák a mértékegységet a fájl megnyitásakor. Kapcsoló H/SZ - + Con&tinue Folytatás @@ -1803,8 +1803,8 @@ kiválasszák a mértékegységet a fájl megnyitásakor. Ez a háló egy érvénytelen szilárd test - + Facemaker returned an error Felületlétrehozás hibával tért vissza @@ -1917,8 +1917,8 @@ kiválasszák a mértékegységet a fájl megnyitásakor. Kész - + Couldn't compute a shape Nem tudott kiszámítani egy alakzatot @@ -2093,8 +2093,8 @@ A hely létrehozása megszakadt. Tető nem hozható létre - + Please select a base object Kérjük válassza ki az alap tárgyat @@ -2396,37 +2396,37 @@ Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság m Véletlenszerűen kiválasztott - + + - Remove Törlés - + + - Add Hozzáad - - - - + + + + - + + + - - Edit Szerkesztés @@ -2447,8 +2447,8 @@ Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság m Drótvázak - + Components Összetevők @@ -2458,30 +2458,30 @@ Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság m Új összetevő létrehozásához + - Name Név - - + + Type Típus + - Thickness Vastagság - + Offset Eltolás @@ -2549,9 +2549,9 @@ Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság m Kérlek válassz legalább egy tengelyt + - Axes Tengelyek @@ -2563,9 +2563,9 @@ Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság m + - Successfully written Sikeresen kiírva @@ -2575,8 +2575,8 @@ Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság m Kereszttartó - + Please select only one base object or none Csak egy alaptárgyat jelöljön ki, vagy egyiket sem @@ -3130,24 +3130,24 @@ Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság m Ismeretlen file-típus - + Description Leírás - - + + Value Érték - + Unit Egység @@ -3243,19 +3243,19 @@ Szint létrehozása megszakítva. van egy érvénytelen alakzat - + has a null shape van egy nulla alakja - + Toggle subcomponents Al összetevők ki-/ bekapcsolása @@ -3265,8 +3265,8 @@ Szint létrehozása megszakítva. Vázlat szerkesztés bezárása - + Component Összetevő @@ -3463,8 +3463,8 @@ Szint létrehozása megszakítva. Sík középpontja a fenti listában szereplő tárgyakon - + Building Épület @@ -3843,14 +3843,14 @@ Building creation aborted. Alap forgás a szerszámtengely körül (csak akkor használható, ha a BasePerpendicularTool igaz) - + The length of this element, if not based on a profile Ennek az elemnek a hossza, ha nem profilon áll - + The width of this element, if not based on a profile Ennek az elemnek a szélessége, ha nem profilon áll @@ -3860,15 +3860,15 @@ Building creation aborted. Ez az elem magassága vagy kihúzás nagysága. 0 megtartása automatikushoz - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Ennek a tárgynak az aktuális kihúzás iránya (automatikus normál (0,0,0) megtartása) - + The structural nodes of this element Ennek az elemnek a szerkezeti csomópontjai @@ -3883,8 +3883,8 @@ Building creation aborted. A középtengely és az egyenes csomópontok közti eltolás - + The facemaker type to use to build the profile of this object Ennek a tárgynak a felület profiljához használt felületlétrehozó típus @@ -3961,9 +3961,9 @@ Building creation aborted. Ehhez az eszközhöz szükséges elektromos áram Wattban - + The type of this building Ennek az épületnek a típusa @@ -4282,20 +4282,20 @@ Building creation aborted. Egy URL-cím ami leképzett weboldalon jeleníti meg ezt az oldalt - + Other shapes that are appended to this object Ehhez a tárgyhoz csatolt egyéb alakzatok - + Other shapes that are subtracted from this object Ebből a tárgyból kivált egyéb alakzatok - + The area of the projection of this object onto the XY plane Ennek a tárgynak az XY síkra vetített vetületének területe @@ -4330,8 +4330,8 @@ Building creation aborted. A modell (0,0,0) eredetű és a geo-koordináták által megjelölt pont közötti választható eltolás - + The type of this object Ennek a tárgynak a típusa @@ -4448,7 +4448,7 @@ Building creation aborted. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Egy opcionális tárgy, amely meghatározza a falakból kivonandó térfogatot. Ha a mező be van állítva - elsőbbsége van az automatikusan generált résztérfogathoz képest @@ -6766,9 +6766,9 @@ Building creation aborted. Command - - + + Transform Átalakítás diff --git a/src/Mod/Arch/Resources/translations/Arch_id.ts b/src/Mod/Arch/Resources/translations/Arch_id.ts index 50b520576c..c8a2e38e5a 100644 --- a/src/Mod/Arch/Resources/translations/Arch_id.ts +++ b/src/Mod/Arch/Resources/translations/Arch_id.ts @@ -1276,8 +1276,8 @@ are placed in a 'Group' instead. DAE - + Export options Pilihan ekspor @@ -1730,40 +1730,40 @@ unit untuk digunakan saat membuka file. Mode Drawing - - + + Category Kategori - - + + Preset Preset - - - + + + Length Panjangnya - - + + Width Lebar - + Height Tinggi @@ -1779,8 +1779,8 @@ unit untuk digunakan saat membuka file. Beralih L/W - + Con&tinue Melanjutkan @@ -1797,8 +1797,8 @@ unit untuk digunakan saat membuka file. Mesh ini adalah solid yang tidak valid - + Facemaker returned an error Facemaker mengembalikan sebuah kesalahan @@ -1911,8 +1911,8 @@ unit untuk digunakan saat membuka file. Selesai - + Couldn't compute a shape Tidak dapat menghitung bentuk @@ -2087,8 +2087,8 @@ Pembuatan situs dibatalkan. Tidak dapat membuat sebuah atap - + Please select a base object Mohon pilih sebuah objek dasar @@ -2380,37 +2380,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Pilih yang dipilih - + + - Remove Menghapus - + + - Add Menambahkan - - - - + + + + - + + + - - Edit Edit @@ -2431,8 +2431,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Kawat - + Components Komponen @@ -2442,30 +2442,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name Nama - - + + Type Jenis + - Thickness Thickness - + Offset Mengimbangi @@ -2533,9 +2533,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Silakan pilih setidaknya satu sumbu + - Axes Sumbu @@ -2547,9 +2547,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Berhasil ditulis @@ -2559,8 +2559,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3114,24 +3114,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Description - - + + Value Nilai - + Unit Satuan @@ -3227,19 +3227,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3249,8 +3249,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3447,8 +3447,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Bangunan @@ -3827,14 +3827,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3844,15 +3844,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3867,8 +3867,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3945,9 +3945,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4266,20 +4266,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4314,8 +4314,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6750,9 +6750,9 @@ Building creation aborted. Command - - + + Transform Transform diff --git a/src/Mod/Arch/Resources/translations/Arch_it.ts b/src/Mod/Arch/Resources/translations/Arch_it.ts index e821b403d6..c777df13ae 100644 --- a/src/Mod/Arch/Resources/translations/Arch_it.ts +++ b/src/Mod/Arch/Resources/translations/Arch_it.ts @@ -1274,8 +1274,8 @@ are placed in a 'Group' instead. DAE - + Export options Opzioni di esportazione @@ -1722,40 +1722,40 @@ unit to work with when opening the file. Modalità di disegno - - + + Category Categoria - - + + Preset Predefinito - - - + + + Length Lunghezza - - + + Width Larghezza - + Height Altezza @@ -1771,8 +1771,8 @@ unit to work with when opening the file. Scambia L/W - + Con&tinue Con&tinua @@ -1789,8 +1789,8 @@ unit to work with when opening the file. Questa mesh non è un solido valido - + Facemaker returned an error FaceMaker ha restituito un errore @@ -1903,8 +1903,8 @@ unit to work with when opening the file. Fatto - + Couldn't compute a shape Impossibile calcolare una forma @@ -2079,8 +2079,8 @@ Creazione del Sito interrotta. Impossibile creare un tetto - + Please select a base object Selezionare un oggetto base @@ -2382,37 +2382,37 @@ Se Base = 0 allora la Base viene calcolata in modo che l'altezza sia la stessa d Usa selezionata - + + - Remove Rimuovi - + + - Add Aggiungi - - - - + + + + - + + + - - Edit Modifica @@ -2433,8 +2433,8 @@ Se Base = 0 allora la Base viene calcolata in modo che l'altezza sia la stessa d Polilinee - + Components Componenti @@ -2444,30 +2444,30 @@ Se Base = 0 allora la Base viene calcolata in modo che l'altezza sia la stessa d Crea un nuovo componente + - Name Nome - - + + Type Tipo + - Thickness Spessore - + Offset Offset @@ -2535,9 +2535,9 @@ Se Base = 0 allora la Base viene calcolata in modo che l'altezza sia la stessa d Selezionare almeno un asse + - Axes Assi @@ -2549,9 +2549,9 @@ Se Base = 0 allora la Base viene calcolata in modo che l'altezza sia la stessa d + - Successfully written Scritto correttamente @@ -2561,8 +2561,8 @@ Se Base = 0 allora la Base viene calcolata in modo che l'altezza sia la stessa d Travatura - + Please select only one base object or none Si prega di selezionare un solo oggetto base o nessuno @@ -3116,24 +3116,24 @@ Se Base = 0 allora la Base viene calcolata in modo che l'altezza sia la stessa d Impossibile riconoscere quel tipo di file - + Description Descrizione - - + + Value Valore - + Unit Unità @@ -3229,19 +3229,19 @@ Creazione del Piano interrotta. ha una forma non valida - + has a null shape ha una forma nulla - + Toggle subcomponents Attiva/disattiva sottocomponenti @@ -3251,8 +3251,8 @@ Creazione del Piano interrotta. Chiudi modifica Sketch - + Component Componente @@ -3449,8 +3449,8 @@ Creazione del Piano interrotta. Centra il piano sugli oggetti nella lista precedente - + Building Edificio @@ -3829,14 +3829,14 @@ Creazione Edificio interrotta. Rotazione della Base attorno all'asse dello Strumento (usata solo se BasePerpendicularToTool è Vero) - + The length of this element, if not based on a profile La lunghezza di questo elemento, se non è basato su un profilo - + The width of this element, if not based on a profile La larghezza di questo elemento, se non è basato su un profilo @@ -3846,15 +3846,15 @@ Creazione Edificio interrotta. L'altezza o la profondità di estrusione di questo elemento. Lasciare 0 per automatico - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) La direzione di estrusione normale di questo oggetto (lasciare (0, 0,0) per normale in automatico) - + The structural nodes of this element I nodi strutturali di questo elemento @@ -3869,8 +3869,8 @@ Creazione Edificio interrotta. Distanza di offset tra la linea centrale e la linea dei nodi - + The facemaker type to use to build the profile of this object Il tipo di Crea facce da utilizzare per creare il profilo di questo oggetto @@ -3947,9 +3947,9 @@ Creazione Edificio interrotta. L'energia richiesta da questa apparecchiatura in watt - + The type of this building Il tipo di questo edificio @@ -4268,20 +4268,20 @@ Creazione Edificio interrotta. Un URL che mostra questo sito in un sito di mappatura - + Other shapes that are appended to this object Altre forme che vengono aggiunte a questo oggetto - + Other shapes that are subtracted from this object Altre forme che sono sottratte da questo oggetto - + The area of the projection of this object onto the XY plane L'area della proiezione di questo oggetto sul piano XY @@ -4316,8 +4316,8 @@ Creazione Edificio interrotta. Scostamento facoltativo tra l'origine del modello (0,0,0) e il punto indicato dalle geocoordinate - + The type of this object Il tipo di questo oggetto @@ -6752,9 +6752,9 @@ Creazione Edificio interrotta. Command - - + + Transform Trasforma diff --git a/src/Mod/Arch/Resources/translations/Arch_ja.ts b/src/Mod/Arch/Resources/translations/Arch_ja.ts index 092662d62f..82934c8dbd 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ja.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ja.ts @@ -1275,8 +1275,8 @@ are placed in a 'Group' instead. DAE - + Export options エクスポート・オプション @@ -1721,40 +1721,40 @@ unit to work with when opening the file. Drawing mode - - + + Category カテゴリ - - + + Preset Preset - - - + + + Length 長さ - - + + Width - + Height 高さ @@ -1770,8 +1770,8 @@ unit to work with when opening the file. Switch L/W - + Con&tinue Con&tinue @@ -1788,8 +1788,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Facemaker returned an error @@ -1902,8 +1902,8 @@ unit to work with when opening the file. 終了 - + Couldn't compute a shape Couldn't compute a shape @@ -2078,8 +2078,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2381,37 +2381,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela ピック選択 - + + - Remove 削除 - + + - Add 追加 - - - - + + + + - + + + - - Edit 編集 @@ -2432,8 +2432,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components コンポーネント @@ -2443,30 +2443,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name 名前 - - + + Type タイプ + - Thickness 厚み - + Offset オフセット @@ -2534,9 +2534,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2548,9 +2548,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2560,8 +2560,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3115,24 +3115,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description 説明 - - + + Value - + Unit 単位 @@ -3228,19 +3228,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3250,8 +3250,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3448,8 +3448,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building ビルディング @@ -3828,14 +3828,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3845,15 +3845,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3868,8 +3868,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3946,9 +3946,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4267,20 +4267,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4315,8 +4315,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6751,9 +6751,9 @@ Building creation aborted. Command - - + + Transform 変換 diff --git a/src/Mod/Arch/Resources/translations/Arch_ka.qm b/src/Mod/Arch/Resources/translations/Arch_ka.qm index f38e24f8fd..5ca17d8fb2 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_ka.qm and b/src/Mod/Arch/Resources/translations/Arch_ka.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_ka.ts b/src/Mod/Arch/Resources/translations/Arch_ka.ts index cfea2bdc5e..091ef4525f 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ka.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ka.ts @@ -1275,8 +1275,8 @@ are placed in a 'Group' instead. DAE - + Export options გატანის პარამეტრები @@ -1719,40 +1719,40 @@ unit to work with when opening the file. ხაზვის რეჟიმი - - + + Category კატეგორია - - + + Preset პრესეტი - - - + + + Length სიგრძე - - + + Width სიგანე - + Height სიმაღლე @@ -1768,8 +1768,8 @@ unit to work with when opening the file. სიგრძე/სიგანის გადამრთველი - + Con&tinue გაგრძ&ელება @@ -1786,8 +1786,8 @@ unit to work with when opening the file. ეს პოლიხაზი არ წარმოადგენს შეკრულ სხეულს - + Facemaker returned an error Facemaker-მა დააბრუნა შეცდომა @@ -1900,8 +1900,8 @@ unit to work with when opening the file. დასრულებულია - + Couldn't compute a shape ფიგურის გამოთვლის შეცდომა @@ -2076,8 +2076,8 @@ Site creation aborted. სახურავის შექმნა შეუძლებელია - + Please select a base object გთხოვთ, აირჩიოთ საბაზისო ობიექტი @@ -2379,37 +2379,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela მონიშნულის არჩევა - + + - Remove წაშლა - + + - Add დამატება - - - - + + + + - + + + - - Edit ჩასწორება @@ -2430,8 +2430,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela პოლიხაზები - + Components კომპონენტები @@ -2441,30 +2441,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela ახალი კომპონენტის შექმნა + - Name სახელი - - + + Type ტიპი + - Thickness სისქე - + Offset წანაცვლება @@ -2532,9 +2532,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela აირჩიეთ ერთი ღერძი მაინც + - Axes ღერძები @@ -2546,9 +2546,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written წარმატებით ჩაიწერა @@ -2558,8 +2558,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela ფერმა - + Please select only one base object or none გთხოვთ, აირჩიოთ მხოლოდ ერთი საბაზისო ობიექტი ან არცერთი @@ -3113,24 +3113,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela უცნობი ფაილის ტიპი - + Description აღწერა - - + + Value მნიშვნელობა - + Unit საზომი ერთეულები @@ -3226,19 +3226,19 @@ Floor creation aborted. აქვს არასწორი ფორმა - + has a null shape აქვს ცარიელი ფორმა - + Toggle subcomponents ქვეკომპონენტების ჩართ/გამორთ @@ -3248,8 +3248,8 @@ Floor creation aborted. ესკიზის ჩასწორების დახურვა - + Component კომპონენტი @@ -3446,8 +3446,8 @@ Floor creation aborted. სიბრტყის ზემოთ მოცემულ სიაში არსებულ ობიექტებზე დაცენტრება - + Building შენობა @@ -3826,14 +3826,14 @@ Building creation aborted. ბაზის მოტრიალება ხელსაწყოს ღერძის გარშემო (გამოიყენება მხოლოდ თუ BasePerpendicularToTool დაყენებულია "True"-ზე) - + The length of this element, if not based on a profile ამ ელემენტის სიგრძე, თუ არ არის დაფუძნებული პროფილზე - + The width of this element, if not based on a profile ამ ელემენტის სიგანე, თუ არ არის დაფუძნებული პროფილზე @@ -3843,15 +3843,15 @@ Building creation aborted. ამ ელემენტის სიმაღლე ან გამოწნევის სიღრმე. ავტომატური მნიშვნელობისთვის დატოვეთ 0 - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) ამ ობიექტის ნორმალის გამოწნეხვის მიმართულება (ავტომატური ნორმალისთვის დატოვეთ (0,0,0)) - + The structural nodes of this element ამ ელემენტის სტრუქტურული კვანძები @@ -3866,8 +3866,8 @@ Building creation aborted. ცენტრალურ ხაზსა და საკვანძო ხაზს შორის წანაცვლებული მანძილი - + The facemaker type to use to build the profile of this object ობიექტის პროფილის შესაქმნელად გამოსაყენებელი facemaker-ის ტიპი @@ -3944,9 +3944,9 @@ Building creation aborted. ამ აღჭურვილობისთვის საჭირო ელექტროენერგია ვატებში - + The type of this building შენობის ტიპი @@ -4265,20 +4265,20 @@ Building creation aborted. URL, რომელიც ამ ადგილს რუკის ვებგვერდზე აჩვენებს - + Other shapes that are appended to this object სხვა ფორმები, რომლებიც დართულია ამ ობიექტზე - + Other shapes that are subtracted from this object სხვა ფორმები, რომლებიც გამოაკლდა ამ ობიექტს - + The area of the projection of this object onto the XY plane ამ ობიექტის პროექციის ფართობი XY სიბრტყეზე @@ -4313,8 +4313,8 @@ Building creation aborted. არასავალდებულო წანაცვლება მოდელის (0,0,0) საწყისსა და გეოკოორდინატებით მითითებულ წერტილს შორის - + The type of this object ობიექტის ტიპი @@ -4431,7 +4431,7 @@ Building creation aborted. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + არასავალდებული ობიექტი, რომელიც განსაზღვრავს მოცულობას, რომელიც კედლებს გამოაკლდება. თუ ველი დაყენებულია - მას ავტომატურად შექმნილ ქვემოცულობაზე მეტი პრიორიტეტი გააჩნია @@ -6755,9 +6755,9 @@ Building creation aborted. Command - - + + Transform გარდაქმნა diff --git a/src/Mod/Arch/Resources/translations/Arch_ko.ts b/src/Mod/Arch/Resources/translations/Arch_ko.ts index 90418c9383..1ee21e5308 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ko.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ko.ts @@ -1276,8 +1276,8 @@ are placed in a 'Group' instead. DAE - + Export options 내보내기 옵션 @@ -1718,40 +1718,40 @@ IFC 파일은 "항상" 메트릭 단위로 작성됩니다. 임페리얼 단위 그리기 모드 - - + + Category 카테고리 - - + + Preset 프리셋 - - - + + + Length 거리 - - + + Width 너비 - + Height 높이 @@ -1767,8 +1767,8 @@ IFC 파일은 "항상" 메트릭 단위로 작성됩니다. 임페리얼 단위 L/W 전환 - + Con&tinue 계속 @@ -1785,8 +1785,8 @@ IFC 파일은 "항상" 메트릭 단위로 작성됩니다. 임페리얼 단위 이 메시는 유효하지 않은 솔리드입니다 - + Facemaker returned an error 페이스메이커가 오류를 반환했습니다 @@ -1899,8 +1899,8 @@ IFC 파일은 "항상" 메트릭 단위로 작성됩니다. 임페리얼 단위 완료 - + Couldn't compute a shape 모양을 계산할 수 없습니다 @@ -2075,8 +2075,8 @@ Site creation aborted. 지붕을 만들 수 없습니다 - + Please select a base object 기본 객체를 선택 하십시오 @@ -2379,37 +2379,37 @@ Run = 0인 경우 Height가 상대 프로파일과 동일하도록 Run이 계산 선택 - + + - Remove 제거 - + + - Add 추가하기 - - - - + + + + - + + + - - Edit 편집 @@ -2430,8 +2430,8 @@ Run = 0인 경우 Height가 상대 프로파일과 동일하도록 Run이 계산 와이어 - + Components 구성 요소 @@ -2441,30 +2441,30 @@ Run = 0인 경우 Height가 상대 프로파일과 동일하도록 Run이 계산 새 구성 요소 만들기 + - Name 이름 - - + + Type 유형 + - Thickness 두께 - + Offset 오프셋 @@ -2532,9 +2532,9 @@ Run = 0인 경우 Height가 상대 프로파일과 동일하도록 Run이 계산 축을 하나 이상 선택하십시오 + - Axes @@ -2546,9 +2546,9 @@ Run = 0인 경우 Height가 상대 프로파일과 동일하도록 Run이 계산 + - Successfully written 작성을 성공했습니다 @@ -2558,8 +2558,8 @@ Run = 0인 경우 Height가 상대 프로파일과 동일하도록 Run이 계산 트러스 - + Please select only one base object or none 기본 객체를 하나만 선택하거나 선택하지 마십시오 @@ -3113,24 +3113,24 @@ Run = 0인 경우 Height가 상대 프로파일과 동일하도록 Run이 계산 해당 파일 형식을 인식할 수 없음 - + Description 설명 - - + + Value - + Unit 단위 @@ -3226,19 +3226,19 @@ Floor creation aborted. 유효하지 않은 도형이 있습니다 - + has a null shape 널 모양이 있습니다 - + Toggle subcomponents 하위 구성요소 전환 @@ -3248,8 +3248,8 @@ Floor creation aborted. 스케치 편집 종료 - + Component 구성 요소 @@ -3446,8 +3446,8 @@ Floor creation aborted. 위 목록의 객체에 맞게 평면을 중앙에 맞춥니다. - + Building 빌딩 @@ -3826,14 +3826,14 @@ Building creation aborted. 공구 축을 중심으로 한 베이스 회전(BasePerpendicularToTool 이 참인 경우에만 사용) - + The length of this element, if not based on a profile 프로파일에서 지원하지 않는 경우, 엘리먼트의 길이임. - + The width of this element, if not based on a profile 프로파일에서 지원하지 않는 경우, 엘리먼트의 폭임. @@ -3843,15 +3843,15 @@ Building creation aborted. 엘리먼트의 높이 또는 돌출 깊이, 자동은 0를 유지합니다. - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) 객체의 일반적인 돌출 방향(자동의 경우 (0,0,0) 를 유지) - + The structural nodes of this element 이 원소의 구조적 노드 @@ -3866,8 +3866,8 @@ Building creation aborted. 중심선과 노드 선 사이의 오프셋 거리 - + The facemaker type to use to build the profile of this object 이 객체의 프로파일을 작성하는 데 사용할 페이스메이커 유형 @@ -3944,9 +3944,9 @@ Building creation aborted. 이 장비에 필요한 와트 단위 전력 - + The type of this building 건물의 종류 @@ -4265,20 +4265,20 @@ Building creation aborted. 매핑 웹 사이트에 이 사이트를 표시하는 URL - + Other shapes that are appended to this object 이 객체에 덧붙인 다른 모양 - + Other shapes that are subtracted from this object 이 객체에서 뺀 다른 모양 - + The area of the projection of this object onto the XY plane XY 평면 위에 이 오브젝트의 투영 면적 @@ -4313,8 +4313,8 @@ Building creation aborted. 모형 (0,0,0) 원점과 지오 좌표로 표시된 점 사이의 선택적 오프셋 - + The type of this object 이 객체의 유형 @@ -6749,9 +6749,9 @@ Building creation aborted. Command - - + + Transform 변환하기 diff --git a/src/Mod/Arch/Resources/translations/Arch_nl.ts b/src/Mod/Arch/Resources/translations/Arch_nl.ts index 12fadebfb9..0ba9c119e4 100644 --- a/src/Mod/Arch/Resources/translations/Arch_nl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_nl.ts @@ -1279,8 +1279,8 @@ are placed in a 'Group' instead. DAE - + Export options Exportopties @@ -1730,40 +1730,40 @@ Echter, sommige BIM programma's zullen deze conversie factor gebruiken bij het k Tekenmodus - - + + Category Categorie - - + + Preset Voorinstelling - - - + + + Length Lengte - - + + Width Breedte - + Height Hoogte @@ -1779,8 +1779,8 @@ Echter, sommige BIM programma's zullen deze conversie factor gebruiken bij het k Switch L/W - + Con&tinue Con&tinue @@ -1797,8 +1797,8 @@ Echter, sommige BIM programma's zullen deze conversie factor gebruiken bij het k Dit net vormt een ongeldige solid - + Facemaker returned an error Facemaker gaf een foutmelding @@ -1911,8 +1911,8 @@ Echter, sommige BIM programma's zullen deze conversie factor gebruiken bij het k Klaar - + Couldn't compute a shape Kon geen vorm berekenen @@ -2086,8 +2086,8 @@ Bouwterrein object wordt niet gemaakt. Onmogelijk om een dak te maken - + Please select a base object Selecteer een basisobject @@ -2389,37 +2389,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Kies geselecteerde - + + - Remove Verwijderen - + + - Add Toevoegen - - - - + + + + - + + + - - Edit Bewerken @@ -2440,8 +2440,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Draden - + Components Onderdelen @@ -2451,30 +2451,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Maak een nieuw onderdeel + - Name Naam - - + + Type Type + - Thickness Dikte - + Offset Verschuiving @@ -2542,9 +2542,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Assen @@ -2556,9 +2556,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Met succes geschreven @@ -2568,8 +2568,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3123,24 +3123,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Omschrijving - - + + Value Waarde - + Unit Eenheid @@ -3236,19 +3236,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3258,8 +3258,8 @@ Floor creation aborted. Closing Sketch edit - + Component Onderdeel @@ -3456,8 +3456,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Gebouw @@ -3836,14 +3836,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3853,15 +3853,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3876,8 +3876,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3954,9 +3954,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4275,20 +4275,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4323,8 +4323,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object Het type van dit object @@ -6759,9 +6759,9 @@ Building creation aborted. Command - - + + Transform Transformeren diff --git a/src/Mod/Arch/Resources/translations/Arch_pl.qm b/src/Mod/Arch/Resources/translations/Arch_pl.qm index d73ec70cfd..c3918404d3 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_pl.qm and b/src/Mod/Arch/Resources/translations/Arch_pl.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_pl.ts b/src/Mod/Arch/Resources/translations/Arch_pl.ts index bff325e520..81e1012367 100644 --- a/src/Mod/Arch/Resources/translations/Arch_pl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_pl.ts @@ -1292,8 +1292,8 @@ umieszczone w grupie. Budynki i kondygnacje są nadal importowane, jeśli jest i DAE - + Export options Opcje eksportu @@ -1746,40 +1746,40 @@ które pozwalają na wybór systemu miar przy otwieraniu pliku. Tryb kreślenia - - + + Category Kategoria - - + + Preset Nastawa wstępna - - - + + + Length Długość - - + + Width Szerokość - + Height Wysokość @@ -1795,8 +1795,8 @@ które pozwalają na wybór systemu miar przy otwieraniu pliku. Przełącz długość / szerokość - + Con&tinue Kon&tynuuj @@ -1813,8 +1813,8 @@ które pozwalają na wybór systemu miar przy otwieraniu pliku. Ta siatka nie jest poprawną bryłą - + Facemaker returned an error Kreator ścian zwrócił błąd @@ -1927,8 +1927,8 @@ które pozwalają na wybór systemu miar przy otwieraniu pliku. Gotowe - + Couldn't compute a shape Nie można obliczyć kształtu @@ -2103,8 +2103,8 @@ Tworzenie terenu zostało przerwane. Nie można utworzyć dachu - + Please select a base object Wybierz obiekt bazowy @@ -2406,37 +2406,37 @@ obiekt do wycięcia i obiekt definiujący płaszczyznę cięcia. Wybierz zaznaczone - + + - Remove Usuń - + + - Add Dodaj - - - - + + + + - + + + - - Edit Edytuj @@ -2457,8 +2457,8 @@ obiekt do wycięcia i obiekt definiujący płaszczyznę cięcia. Polilinie - + Components Komponenty @@ -2468,30 +2468,30 @@ obiekt do wycięcia i obiekt definiujący płaszczyznę cięcia. Utwórz nowy komponent + - Name Nazwa - - + + Type Typ + - Thickness Grubość - + Offset Odsunięcie @@ -2559,9 +2559,9 @@ obiekt do wycięcia i obiekt definiujący płaszczyznę cięcia. Zaznacz przynajmniej jedną oś + - Axes Osie @@ -2573,9 +2573,9 @@ obiekt do wycięcia i obiekt definiujący płaszczyznę cięcia. + - Successfully written Zapisano pomyślnie @@ -2585,8 +2585,8 @@ obiekt do wycięcia i obiekt definiujący płaszczyznę cięcia. Wiązar - + Please select only one base object or none Proszę wybrać tylko jeden obiekt bazowy lub nic @@ -3140,24 +3140,24 @@ obiekt do wycięcia i obiekt definiujący płaszczyznę cięcia. Nie można rozpoznać typu pliku - + Description Opis - - + + Value Wartość - + Unit Jednostka @@ -3253,19 +3253,19 @@ Tworzenie piętra zostało przerwane. ma nieprawidłowy kształt - + has a null shape ma kształt zerowy - + Toggle subcomponents Przełącz komponenty podrzędne @@ -3275,8 +3275,8 @@ Tworzenie piętra zostało przerwane. Zamykanie edycji szkicu - + Component Komponent @@ -3473,8 +3473,8 @@ Tworzenie piętra zostało przerwane. Wyśrodkuje płaszczyznę na obiektach znajdujących się powyżej - + Building Budynek @@ -3853,14 +3853,14 @@ Tworzenie budynku zostało przerwane. Obrót bazy wokół osi narzędzia (używany, tylko jeśli parametr BasePerpendicularToTool ma wartość Prawda) - + The length of this element, if not based on a profile Długość tego elementu, jeśli nie jest oparta na profilu - + The width of this element, if not based on a profile Szerokość tego elementu, jeśli nie jest oparta na profilu @@ -3870,15 +3870,15 @@ Tworzenie budynku zostało przerwane. Wysokość lub głębokość wyciągnięcia tego elementu. Zostaw 0 dla automatycznej wartości - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Kierunek normalny wyciągnięcia tego obiektu (zostaw (0,0,0) dla automatycznego kierunku normalnego) - + The structural nodes of this element Węzły konstrukcyjne tego elementu @@ -3893,8 +3893,8 @@ Tworzenie budynku zostało przerwane. Odległość odsunięcia między linią środkową a linią węzłów - + The facemaker type to use to build the profile of this object Typ kreatora ścian używany do utworzenia profilu tego obiektu @@ -3971,9 +3971,9 @@ Tworzenie budynku zostało przerwane. Zapotrzebowanie na moc elektryczną osprzętu w Watach [W] - + The type of this building Typ tego budynku @@ -4292,20 +4292,20 @@ Tworzenie budynku zostało przerwane. Adres URL, który pokazuje tę lokalizację działki na mapie internetowej - + Other shapes that are appended to this object Inne kształty dołączone do obiektu - + Other shapes that are subtracted from this object Inne kształty odejmowane od obiektu - + The area of the projection of this object onto the XY plane Pole powierzchni rzutu tego obiektu na płaszczyznę XY @@ -4340,8 +4340,8 @@ Tworzenie budynku zostało przerwane. Opcjonalne odsunięcie między odniesieniem położenia modelu (0,0,0) a punktem wskazanym przez współrzędne geocentryczne - + The type of this object Typ tego obiektu @@ -4458,7 +4458,8 @@ Tworzenie budynku zostało przerwane. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Opcjonalny obiekt definiujący objętość do odjęcia od ścian. Jeśli pole jest ustawione, +ma pierwszeństwo przed automatycznie generowaną pod objętością. @@ -6776,9 +6777,9 @@ Tworzenie budynku zostało przerwane. Command - - + + Transform Przemieszczenie diff --git a/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts b/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts index 2fa77c4338..d48efd387d 100644 --- a/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts +++ b/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts @@ -1273,8 +1273,8 @@ are placed in a 'Group' instead. DAE - + Export options Opções de Exportação @@ -1715,40 +1715,40 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Modo de desenho - - + + Category Categoria - - + + Preset Predefinição - - - + + + Length Comprimento - - + + Width Largura - + Height Altura @@ -1764,8 +1764,8 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Trocar L/W - + Con&tinue Continuar @@ -1782,8 +1782,8 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Esta malha não é um sólido válido - + Facemaker returned an error O FaceMaker retornou um erro @@ -1895,8 +1895,8 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Feito - + Couldn't compute a shape Não foi possível calcular uma forma. @@ -2065,8 +2065,8 @@ Criação de sítio abortada. Não foi possível criar um telhado - + Please select a base object Por favor, selecione um objeto de base @@ -2368,37 +2368,37 @@ Se a extensão = 0, ela será calculada de modo que a altura seja a mesma do per Usar seleção - + + - Remove Remover - + + - Add Adicionar - - - - + + + + - + + + - - Edit Editar @@ -2419,8 +2419,8 @@ Se a extensão = 0, ela será calculada de modo que a altura seja a mesma do per Arames - + Components Componentes @@ -2430,30 +2430,30 @@ Se a extensão = 0, ela será calculada de modo que a altura seja a mesma do per Criar um novo componente + - Name Nome - - + + Type Tipo + - Thickness Espessura - + Offset Deslocamento @@ -2521,9 +2521,9 @@ Se a extensão = 0, ela será calculada de modo que a altura seja a mesma do per Por favor, selecione pelo menos um eixo + - Axes Eixos @@ -2535,9 +2535,9 @@ Se a extensão = 0, ela será calculada de modo que a altura seja a mesma do per + - Successfully written Gravado com sucesso @@ -2547,8 +2547,8 @@ Se a extensão = 0, ela será calculada de modo que a altura seja a mesma do per Treliça - + Please select only one base object or none Por favor selecione apenas um ou nenhum objeto @@ -3102,24 +3102,24 @@ Se a extensão = 0, ela será calculada de modo que a altura seja a mesma do per Não é possível reconhecer o tipo do arquivo - + Description Descrição - - + + Value Valor - + Unit Unidade @@ -3207,19 +3207,19 @@ Floor creation aborted. tem uma forma inválida - + has a null shape tem uma forma nula - + Toggle subcomponents Alternar subcomponentes @@ -3229,8 +3229,8 @@ Floor creation aborted. Fechar edição do Esboço - + Component Componente @@ -3427,8 +3427,8 @@ Floor creation aborted. Centraliza o plano na lista de objetos acima - + Building Edificação @@ -3801,14 +3801,14 @@ Criação de edifício abortada. Rotação da Base em torno do eixo da ferramenta (usado somente se BasePerpendicularToTool for Verdadeiro) - + The length of this element, if not based on a profile O comprimento deste elemento, se não for baseado em um perfil - + The width of this element, if not based on a profile A largura deste elemento, se não for baseado em um perfil @@ -3818,15 +3818,15 @@ Criação de edifício abortada. A profundidade ou altura de extrusão deste elemento. Mantenha 0 para automático - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) A direção normal de extrusão deste objeto (mantenha (0,0,0) para normal automática) - + The structural nodes of this element Os nós estruturais deste elemento @@ -3841,8 +3841,8 @@ Criação de edifício abortada. A distância o eixo central e a linha de nós - + The facemaker type to use to build the profile of this object O tipo de gerador de faces a ser usado para construir o perfil deste objeto @@ -3919,9 +3919,9 @@ Criação de edifício abortada. A energia elétrica necessária para este equipamento em Watts - + The type of this building O tipo desta construção @@ -4240,20 +4240,20 @@ Criação de edifício abortada. Uma url que mostra este site em um site de mapeamento - + Other shapes that are appended to this object Outras formas que são acrescentadas a este objeto - + Other shapes that are subtracted from this object Outras formas que são subtraídas deste objeto - + The area of the projection of this object onto the XY plane A área da projeção deste objeto no plano XY @@ -4288,8 +4288,8 @@ Criação de edifício abortada. Um deslocamento opcional entre a origem do modelo (0,0,0) e o ponto indicado pelas coordenadas geográficas - + The type of this object O tipo deste objeto @@ -6724,9 +6724,9 @@ Criação de edifício abortada. Command - - + + Transform Transformar diff --git a/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts b/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts index 0b541eef4c..8b474e51bb 100644 --- a/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts +++ b/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts @@ -1280,8 +1280,8 @@ são colocados num 'Grupo'. DAE - + Export options Opções de Exportação @@ -1728,40 +1728,40 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Modo de desenho - - + + Category Categoria - - + + Preset Predefinição - - - + + + Length Comprimento - - + + Width Largura - + Height Altura @@ -1777,8 +1777,8 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Trocar L/W - + Con&tinue Con&tinuar @@ -1795,8 +1795,8 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Esta malha é um sólido inválido - + Facemaker returned an error O Facemaker retornou um erro @@ -1909,8 +1909,8 @@ No entanto, alguns aplicativos BIM usarão este fator para escolher com qual uni Concluído - + Couldn't compute a shape Não foi possível calcular uma forma @@ -2085,8 +2085,8 @@ Criação de site abortada. Não foi possível criar um telhado - + Please select a base object Por favor, selecione um objeto base @@ -2388,37 +2388,37 @@ Se executar = 0, então a execução é calculada de modo que a altura seja a me Usar seleção - + + - Remove Remover - + + - Add Adicionar - - - - + + + + - + + + - - Edit Editar @@ -2439,8 +2439,8 @@ Se executar = 0, então a execução é calculada de modo que a altura seja a me Wires - + Components Componentes @@ -2450,30 +2450,30 @@ Se executar = 0, então a execução é calculada de modo que a altura seja a me Criar novo componente + - Name Nome - - + + Type Tipo + - Thickness Espessura - + Offset Deslocamento paralelo @@ -2541,9 +2541,9 @@ Se executar = 0, então a execução é calculada de modo que a altura seja a me Por favor, selecione pelo menos um eixo + - Axes Eixos @@ -2555,9 +2555,9 @@ Se executar = 0, então a execução é calculada de modo que a altura seja a me + - Successfully written Gravado com sucesso @@ -2567,8 +2567,8 @@ Se executar = 0, então a execução é calculada de modo que a altura seja a me Treliça - + Please select only one base object or none Por favor, selecione apenas um objeto base ou nenhum @@ -3122,24 +3122,24 @@ Se executar = 0, então a execução é calculada de modo que a altura seja a me Não é possível reconhecer o tipo de arquivo - + Description Descrição - - + + Value Valor - + Unit Unidade @@ -3235,19 +3235,19 @@ Criação de piso abortada. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3257,8 +3257,8 @@ Criação de piso abortada. Closing Sketch edit - + Component Component @@ -3455,8 +3455,8 @@ Criação de piso abortada. Centers the plane on the objects in the list above - + Building Edifício @@ -3835,14 +3835,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3852,15 +3852,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3875,8 +3875,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3953,9 +3953,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4274,20 +4274,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4322,8 +4322,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6758,9 +6758,9 @@ Building creation aborted. Command - - + + Transform Transformar diff --git a/src/Mod/Arch/Resources/translations/Arch_ro.ts b/src/Mod/Arch/Resources/translations/Arch_ro.ts index 147c5246aa..b191c6c05a 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ro.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ro.ts @@ -1283,8 +1283,8 @@ sunt plasate în schimb într-un 'Grup'. DAE - + Export options Opţiunile de export @@ -1736,40 +1736,40 @@ unitate cu care să lucreze la deschiderea fișierului. Mod desenare - - + + Category Categorie - - + + Preset Presetare - - - + + + Length Lungime - - + + Width Lăţime - + Height Înălţime @@ -1785,8 +1785,8 @@ unitate cu care să lucreze la deschiderea fișierului. Comutare L/W - + Con&tinue Continuare @@ -1803,8 +1803,8 @@ unitate cu care să lucreze la deschiderea fișierului. Această plasă este un solid nevalid - + Facemaker returned an error Facemaker a returnat o eroare @@ -1916,8 +1916,8 @@ unitate cu care să lucreze la deschiderea fișierului. Gata - + Couldn't compute a shape Nu s-a putut calcula o formă @@ -2092,8 +2092,8 @@ Crearea site-ului a fost anulată. Nu pot crea acoperișul - + Please select a base object Selectați un obiect de bază @@ -2395,37 +2395,37 @@ Dacă rulează = 0, atunci rularea este calculată astfel încât înălțimea s Choix sélectionné - + + - Remove Elimină - + + - Add Adaugă - - - - + + + + - + + + - - Edit Editare @@ -2446,8 +2446,8 @@ Dacă rulează = 0, atunci rularea este calculată astfel încât înălțimea s Fir - + Components Componente @@ -2457,30 +2457,30 @@ Dacă rulează = 0, atunci rularea este calculată astfel încât înălțimea s Creează o componentă nouă + - Name Nume - - + + Type Tip + - Thickness Grosime - + Offset Compensare @@ -2548,9 +2548,9 @@ Dacă rulează = 0, atunci rularea este calculată astfel încât înălțimea s Selectați cel puțin o axă + - Axes Axe @@ -2562,9 +2562,9 @@ Dacă rulează = 0, atunci rularea este calculată astfel încât înălțimea s + - Successfully written Scris cu succes @@ -2574,8 +2574,8 @@ Dacă rulează = 0, atunci rularea este calculată astfel încât înălțimea s Adevărat - + Please select only one base object or none Vă rugăm să selectaţi un singur obiect de bază sau niciunul @@ -3129,24 +3129,24 @@ Dacă rulează = 0, atunci rularea este calculată astfel încât înălțimea s Imposibil de recunoscut acest tip de fișier - + Description Descriere - - + + Value Valoare - + Unit Unitate @@ -3242,19 +3242,19 @@ Crearea etajelor a fost întreruptă. are o formă invalidă - + has a null shape are o formă nulă - + Toggle subcomponents Comutare subcomponente @@ -3264,8 +3264,8 @@ Crearea etajelor a fost întreruptă. Închide editarea schiței - + Component Componentă @@ -3462,8 +3462,8 @@ Crearea etajelor a fost întreruptă. Centrează planul pe obiectele din lista de mai sus - + Building Construcţia @@ -3842,14 +3842,14 @@ Crearea de construcții a fost întreruptă. Rotația de bază în jurul axei sculei (utilizată numai dacă BasePerpendicularTool este adevărat) - + The length of this element, if not based on a profile Lungimea acestui element, dacă nu este bazat pe un profil - + The width of this element, if not based on a profile Lățimea acestui element, dacă nu este bazat pe un profil @@ -3859,15 +3859,15 @@ Crearea de construcții a fost întreruptă. Înălțimea sau adâncimea de extrudare a acestui element. Păstrați 0 pentru automat - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Direcția normală de extrudare a acestui obiect (păstrează (0,0,0) pentru normalizare automată) - + The structural nodes of this element Nodurile structurale ale acestui element @@ -3882,8 +3882,8 @@ Crearea de construcții a fost întreruptă. Compensează distanța dintre linia centrală și linia de noduri - + The facemaker type to use to build the profile of this object Tipul de facemaker folosit pentru a construi profilul acestui obiect @@ -3960,9 +3960,9 @@ Crearea de construcții a fost întreruptă. Energia electrică necesară acestui echipament în wați - + The type of this building Tipul acestei clădiri @@ -4281,20 +4281,20 @@ Crearea de construcții a fost întreruptă. Un URL care afișează acest site într-un site de cartografiere - + Other shapes that are appended to this object Alte forme care sunt atașate la acest obiect - + Other shapes that are subtracted from this object Alte forme care sunt scăzute din acest obiect - + The area of the projection of this object onto the XY plane Suprafața proiecției acestui obiect în planul XY @@ -4329,8 +4329,8 @@ Crearea de construcții a fost întreruptă. Un opţional offset între originea modelului (0,0,0) şi punctul indicat de geocoordonate - + The type of this object Tipul acestui obiect @@ -6765,9 +6765,9 @@ Crearea de construcții a fost întreruptă. Command - - + + Transform Transformare diff --git a/src/Mod/Arch/Resources/translations/Arch_ru.qm b/src/Mod/Arch/Resources/translations/Arch_ru.qm index db34108b08..f84d4cfa3e 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_ru.qm and b/src/Mod/Arch/Resources/translations/Arch_ru.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_ru.ts b/src/Mod/Arch/Resources/translations/Arch_ru.ts index d90a6956fd..0b21392a04 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ru.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ru.ts @@ -946,7 +946,7 @@ instead of the FreeCAD web workbench Space line style - Space line style + Стиль оси @@ -971,7 +971,7 @@ instead of the FreeCAD web workbench Space line color - Space line color + Цвет оси @@ -981,7 +981,7 @@ instead of the FreeCAD web workbench Use sketches for walls - Use sketches for walls + Используйте эскизы для стен @@ -1274,8 +1274,8 @@ are placed in a 'Group' instead. DAE - + Export options Параметры экспорта @@ -1714,40 +1714,40 @@ unit to work with when opening the file. Режим рисования - - + + Category Категория - - + + Preset Предустановка - - - + + + Length Длина - - + + Width Ширина - + Height Высота @@ -1763,8 +1763,8 @@ unit to work with when opening the file. Перекл. Длина/Высота - + Con&tinue &Продолжить @@ -1781,8 +1781,8 @@ unit to work with when opening the file. Эта сетка является недействительным телом - + Facemaker returned an error Генератор граней вернул ошибку @@ -1895,8 +1895,8 @@ unit to work with when opening the file. Готово - + Couldn't compute a shape Не удалось вычислить форму @@ -2071,8 +2071,8 @@ Site creation aborted. Невозможно создать крышу - + Please select a base object Пожалуйста, выберите базовый объект @@ -2157,21 +2157,21 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Select two objects, an object to be cut and an object defining a cutting plane, in that order - Select two objects, an object to be cut and an object defining a cutting plane, in that order + Выберите два объекта: объект, который нужно разрезать, и объект, определяющий плоскость сечения, в указанном порядке The first object does not have a shape - The first object does not have a shape + Первый объект не имеет формы The second object does not define a plane - The second object does not define a plane + Второй объект не определяет плоскость @@ -2374,37 +2374,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Указать выбранное - + + - Remove Удалить - + + - Add Добавить - - - - + + + + - + + + - - Edit Редактировать @@ -2425,8 +2425,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Направляющие - + Components Компоненты @@ -2436,30 +2436,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Создать новый компонент + - Name Название - - + + Type Тип + - Thickness Толщина - + Offset Смещение @@ -2527,9 +2527,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Пожалуйста, выберите по крайней мере одну ось + - Axes Оси @@ -2541,9 +2541,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Успешно записано @@ -2553,8 +2553,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Ферма - + Please select only one base object or none Пожалуйста, выберите только один базовый объект или ничего @@ -3108,24 +3108,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Не удается определить тип файла - + Description Описание - - + + Value Значение - + Unit Единица измерения @@ -3221,19 +3221,19 @@ Floor creation aborted. имеет неправильную фигуру - + has a null shape Имеет пустую форму - + Toggle subcomponents Переключить подкомпоненты @@ -3243,8 +3243,8 @@ Floor creation aborted. Закрытие редактирования эскиза - + Component Компонент @@ -3441,8 +3441,8 @@ Floor creation aborted. Центровать плоскость по объектам в списке - + Building Здание @@ -3821,14 +3821,14 @@ Building creation aborted. Вращение базы вокруг оси инструмента (используется только если BasePerpendicularToTool равен True) - + The length of this element, if not based on a profile Длина элемента, если не определена в профиле - + The width of this element, if not based on a profile Ширина элемента, если она не определена в профиле @@ -3838,15 +3838,15 @@ Building creation aborted. Высота или глубина выдавливания элемента. Задайте 0 для автоматического определения - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Нормальное направление выдавливания для этого объекта (оставить (0,0,0) для задания автоматической нормали) - + The structural nodes of this element Структурные узлы этого элемента @@ -3861,8 +3861,8 @@ Building creation aborted. Расстояние смещения между осевой и узловой линией - + The facemaker type to use to build the profile of this object Facemaker тип, используемый для построения профиля объекта @@ -3939,9 +3939,9 @@ Building creation aborted. Электрическая мощность в ваттах, необходимая оборудованию - + The type of this building Тип здания @@ -4260,20 +4260,20 @@ Building creation aborted. Ссылка для показа участка на картографическом сайте - + Other shapes that are appended to this object Другие фигуры, добавленные к объекту - + Other shapes that are subtracted from this object Другие фигуры, которые вычитаются из этого объекта - + The area of the projection of this object onto the XY plane Площадь проекции объекта на плоскость XY @@ -4308,8 +4308,8 @@ Building creation aborted. Опционально смещение между началом координат модели (0,0,0) и точкой, обозначенную геокоординатами - + The type of this object Тип данного объекта @@ -4426,7 +4426,7 @@ Building creation aborted. An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume - An optional object that defines a volume to be subtracted from walls. If field is set - it has a priority over auto-generated subvolume + Необязательный объект, определяющий объем, который нужно вычесть из стен. Если поле установлено - оно имеет приоритет над автоматически созданным субтомом @@ -6744,9 +6744,9 @@ Building creation aborted. Command - - + + Transform Преобразовать diff --git a/src/Mod/Arch/Resources/translations/Arch_sl.ts b/src/Mod/Arch/Resources/translations/Arch_sl.ts index e05c6b1a74..5d4a855b34 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sl.ts @@ -1283,8 +1283,8 @@ Ne glede na to, pa se "Stavbe" in "Nadstropja" uvozijo, če jih je več od enega DAE - + Export options Možnosti izvoza @@ -1735,40 +1735,40 @@ da se pri odpiranju datoteke izbere delovne enote. Risalni način - - + + Category Skupina - - + + Preset Prednastavljeno - - - + + + Length Dolžina - - + + Width Širina - + Height Višina @@ -1784,8 +1784,8 @@ da se pri odpiranju datoteke izbere delovne enote. Preklopi D/Š - + Con&tinue &Nadaljuj @@ -1802,8 +1802,8 @@ da se pri odpiranju datoteke izbere delovne enote. To ploskovje ni veljavno telo - + Facemaker returned an error Ploskovnik je vrnil napako @@ -1916,8 +1916,8 @@ da se pri odpiranju datoteke izbere delovne enote. Končano - + Couldn't compute a shape Ni bilo možno izračunati oblike @@ -2092,8 +2092,8 @@ Ustvarjanje lokacije prekinjeno. Strehe ni bilo mogoče ustvariti - + Please select a base object Izberite osnovni objekt @@ -2395,37 +2395,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Izberi označeno - + + - Remove Odstrani - + + - Add Dodaj - - - - + + + + - + + + - - Edit Uredi @@ -2446,8 +2446,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Črtovja - + Components Sestavine @@ -2457,30 +2457,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Ustvari novo sestavino + - Name Ime - - + + Type Vrsta + - Thickness Debelina - + Offset Odmik @@ -2548,9 +2548,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Izberite vsaj eno os + - Axes Osi @@ -2562,9 +2562,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Uspešno zapisano @@ -2574,8 +2574,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Paličje - + Please select only one base object or none Izberite le en osnovni predmet ali pa nobenega @@ -3129,24 +3129,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Te vrste datoteke ni mogoče prepoznati - + Description Opis - - + + Value Vrednost - + Unit Enota @@ -3242,19 +3242,19 @@ Ustvarjanje etaže prekinjeno. ima neveljavno obliko - + has a null shape ima ničelno obliko - + Toggle subcomponents Preklapljanje podsestavin @@ -3264,8 +3264,8 @@ Ustvarjanje etaže prekinjeno. Zapiranje urejanja očrta - + Component Sestavina @@ -3462,8 +3462,8 @@ Ustvarjanje etaže prekinjeno. Usredini ravnino na predmete z zgornjega seznama - + Building Zgradba @@ -3840,14 +3840,14 @@ Ustvarjanj stavbe prekinjeno. Sukanje osnove okoli osi orodja (uporablja se le, če je Pravokotnost osnove na orodje omogočena) - + The length of this element, if not based on a profile Dolžina tega gradnika, če ne izhaja iz preseka - + The width of this element, if not based on a profile Širina tega gradnika, če ne izhaja iz preseka @@ -3857,15 +3857,15 @@ Ustvarjanj stavbe prekinjeno. Višina oziroma globina izriva tega gradnika. Pustite 0 za samodejnost - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) Normala smeri izrivanja tega predmeta (pustite (0,0,0) za samodejno smer) - + The structural nodes of this element Konstrukcijska vozlišča tega gradnika @@ -3880,8 +3880,8 @@ Ustvarjanj stavbe prekinjeno. Odmik med središčnico in vozliščno črto - + The facemaker type to use to build the profile of this object Vrsta "facemaker" uporabljena za izgradnjo profila predmeta @@ -3958,9 +3958,9 @@ Ustvarjanj stavbe prekinjeno. Električna energija v vatih, ki jo ta oprema rabi - + The type of this building Vrsta te zgradbe @@ -4279,20 +4279,20 @@ Ustvarjanj stavbe prekinjeno. URL, ki prikazuje to lokacijo na spletnem zemljevidu - + Other shapes that are appended to this object Druge oblike, ki so pripete temu predmetu - + Other shapes that are subtracted from this object Druge oblike, ki so odštete od tega predmeta - + The area of the projection of this object onto the XY plane Površina preslikave tega predmeta na ravnino XY @@ -4327,8 +4327,8 @@ Ustvarjanj stavbe prekinjeno. Neobvezen odmik med izhodiščem modela (0,0,0) in točko podano v zemljepisnih sorednicah - + The type of this object Vrsta tega predmeta @@ -6763,9 +6763,9 @@ Ustvarjanj stavbe prekinjeno. Command - - + + Transform Preoblikuj diff --git a/src/Mod/Arch/Resources/translations/Arch_sr-CS.ts b/src/Mod/Arch/Resources/translations/Arch_sr-CS.ts index 14b0a548df..09cefcf99e 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sr-CS.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sr-CS.ts @@ -1283,8 +1283,8 @@ are placed in a 'Group' instead. DAE - + Export options Opcije izvoza @@ -1736,40 +1736,40 @@ jedinicama treba raditi prilikom otvaranja datoteke. Drawing mode - - + + Category Kategorija - - + + Preset Preset - - - + + + Length Dužina - - + + Width Širina - + Height Visina @@ -1785,8 +1785,8 @@ jedinicama treba raditi prilikom otvaranja datoteke. Switch L/W - + Con&tinue Con&tinue @@ -1803,8 +1803,8 @@ jedinicama treba raditi prilikom otvaranja datoteke. This mesh is an invalid solid - + Facemaker returned an error Tvorac stranica je vratio grešku @@ -1917,8 +1917,8 @@ jedinicama treba raditi prilikom otvaranja datoteke. Gotovo - + Couldn't compute a shape Couldn't compute a shape @@ -2093,8 +2093,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2396,37 +2396,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Izaberi - + + - Remove Ukloni - + + - Add Dodaj - - - - + + + + - + + + - - Edit Uredi @@ -2447,8 +2447,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components Komponente @@ -2458,30 +2458,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name Ime - - + + Type Vrsta + - Thickness Debljina - + Offset Odmak @@ -2549,9 +2549,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2563,9 +2563,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2575,8 +2575,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3130,24 +3130,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Opis - - + + Value Vrednost - + Unit Merna jedinica @@ -3243,19 +3243,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3265,8 +3265,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3463,8 +3463,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Building @@ -3843,14 +3843,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3860,15 +3860,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3883,8 +3883,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object Vrsta tvorca stranica koja će se koristiti za pravljenje profila ovog objekta @@ -3961,9 +3961,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4282,20 +4282,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4330,8 +4330,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6766,9 +6766,9 @@ Building creation aborted. Command - - + + Transform Pomeri diff --git a/src/Mod/Arch/Resources/translations/Arch_sr.ts b/src/Mod/Arch/Resources/translations/Arch_sr.ts index abd4722c4f..df9156024e 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sr.ts @@ -1283,8 +1283,8 @@ are placed in a 'Group' instead. DAE - + Export options Опције извоза @@ -1736,40 +1736,40 @@ unit to work with when opening the file. Drawing mode - - + + Category Категорија - - + + Preset Preset - - - + + + Length Дужина - - + + Width Ширина - + Height Висина @@ -1785,8 +1785,8 @@ unit to work with when opening the file. Switch L/W - + Con&tinue Con&tinue @@ -1803,8 +1803,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Творац страница је вратио грешку @@ -1917,8 +1917,8 @@ unit to work with when opening the file. Готово - + Couldn't compute a shape Couldn't compute a shape @@ -2093,8 +2093,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2396,37 +2396,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Изабери - + + - Remove Уклони - + + - Add Додај - - - - + + + + - + + + - - Edit Уреди @@ -2447,8 +2447,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components Компоненте @@ -2458,30 +2458,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name Име - - + + Type Врста + - Thickness Дебљина - + Offset Одмак @@ -2549,9 +2549,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2563,9 +2563,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2575,8 +2575,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3130,24 +3130,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Опис - - + + Value Вредност - + Unit Мерна јединица @@ -3243,19 +3243,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3265,8 +3265,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3463,8 +3463,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Building @@ -3843,14 +3843,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3860,15 +3860,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3883,8 +3883,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object Врста творца страница која ће се користити за прављење профила овог објекта @@ -3961,9 +3961,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4282,20 +4282,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4330,8 +4330,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6766,9 +6766,9 @@ Building creation aborted. Command - - + + Transform Помери diff --git a/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts b/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts index 6eb202f1f3..c97e100cf9 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts @@ -1282,8 +1282,8 @@ are placed in a 'Group' instead. DAE - + Export options Alternativ för exportering @@ -1734,40 +1734,40 @@ unit to work with when opening the file. Ritläge - - + + Category Kategori - - + + Preset Förval - - - + + + Length Längd - - + + Width Bredd - + Height Höjd @@ -1783,8 +1783,8 @@ unit to work with when opening the file. Byt L/W - + Con&tinue For&tsättning @@ -1801,8 +1801,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Facemaker returned an error @@ -1915,8 +1915,8 @@ unit to work with when opening the file. Färdig - + Couldn't compute a shape Kunde inte beräkna en form @@ -2091,8 +2091,8 @@ Site creation aborted. Kunde inte skapa ett tak - + Please select a base object Vänligen välj ett basobjekt @@ -2394,37 +2394,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Välj markering - + + - Remove Ta bort - + + - Add Lägg till - - - - + + + + - + + + - - Edit Redigera @@ -2445,8 +2445,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Trådar - + Components Komponenter @@ -2456,30 +2456,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Skapa ny komponent + - Name Namn - - + + Type Typ + - Thickness Tjocklek - + Offset Offset @@ -2547,9 +2547,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axlar @@ -2561,9 +2561,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Framgångsrikt skriven @@ -2573,8 +2573,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3128,24 +3128,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Kunde inte känna igen den filtypen - + Description Beskrivning - - + + Value Värde - + Unit Enhet @@ -3241,19 +3241,19 @@ Floor creation aborted. har en ogiltig form - + has a null shape has a null shape - + Toggle subcomponents Växla underkomponenter @@ -3263,8 +3263,8 @@ Floor creation aborted. Closing Sketch edit - + Component Komponent @@ -3461,8 +3461,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Byggnad @@ -3841,14 +3841,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3858,15 +3858,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3881,8 +3881,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3959,9 +3959,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4280,20 +4280,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4328,8 +4328,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object Typen av detta objekt @@ -6764,9 +6764,9 @@ Building creation aborted. Command - - + + Transform Omvandla diff --git a/src/Mod/Arch/Resources/translations/Arch_tr.ts b/src/Mod/Arch/Resources/translations/Arch_tr.ts index baa7090ab4..f7bbb79ddd 100644 --- a/src/Mod/Arch/Resources/translations/Arch_tr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_tr.ts @@ -1281,8 +1281,8 @@ bunun yerine bir 'Grup'a yerleştirilir. DAE - + Export options Dışa aktarım seçenekleri @@ -1732,40 +1732,40 @@ Ancak bazı BIM uygulamaları dosya açılırken seçilen faktörü uygular.Çizim modu - - + + Category Kategori - - + + Preset Ön ayar - - - + + + Length Uzunluk - - + + Width Genişlik - + Height Yükseklik @@ -1781,8 +1781,8 @@ Ancak bazı BIM uygulamaları dosya açılırken seçilen faktörü uygular.L/W değiştir - + Con&tinue Devam @@ -1799,8 +1799,8 @@ Ancak bazı BIM uygulamaları dosya açılırken seçilen faktörü uygular.Bu kafes hatalı bir katıdır - + Facemaker returned an error Facemaker bir hata döndürdü @@ -1913,8 +1913,8 @@ Ancak bazı BIM uygulamaları dosya açılırken seçilen faktörü uygular.Bitti - + Couldn't compute a shape Couldn't compute a shape @@ -2089,8 +2089,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2392,37 +2392,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Seçilen çekme - + + - Remove Kaldır - + + - Add Ekle - - - - + + + + - + + + - - Edit Düzenle @@ -2443,8 +2443,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components Bileşenler @@ -2454,30 +2454,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name Isim - - + + Type Türü + - Thickness Kalınlık - + Offset Uzaklaşma @@ -2545,9 +2545,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2559,9 +2559,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2571,8 +2571,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3126,24 +3126,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Açıklama - - + + Value Değer - + Unit Birim @@ -3239,19 +3239,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3261,8 +3261,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3459,8 +3459,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building İnşa ediliyor @@ -3839,14 +3839,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3856,15 +3856,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3879,8 +3879,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3957,9 +3957,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4278,20 +4278,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4326,8 +4326,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6763,9 +6763,9 @@ Building creation aborted. Command - - + + Transform Dönüştür diff --git a/src/Mod/Arch/Resources/translations/Arch_uk.ts b/src/Mod/Arch/Resources/translations/Arch_uk.ts index e8147ea89f..2fc32735f6 100644 --- a/src/Mod/Arch/Resources/translations/Arch_uk.ts +++ b/src/Mod/Arch/Resources/translations/Arch_uk.ts @@ -1291,8 +1291,8 @@ are placed in a 'Group' instead. DAE - + Export options Налаштування експорту @@ -1744,40 +1744,40 @@ unit to work with when opening the file. Режим креслення - - + + Category Категорія - - + + Preset Налаштування - - - + + + Length Довжина - - + + Width Ширина - + Height Висота @@ -1793,8 +1793,8 @@ unit to work with when opening the file. Перемкнути Д/Ш [Довжина/Ширина] - + Con&tinue Продовжити @@ -1811,8 +1811,8 @@ unit to work with when opening the file. Ця сітка не може бути тілом - + Facemaker returned an error Генератор граней повернув помилку @@ -1925,8 +1925,8 @@ unit to work with when opening the file. Готово - + Couldn't compute a shape Не вдалось обчислити форму @@ -2101,8 +2101,8 @@ Site creation aborted. Не вдалося створити покрівлю - + Please select a base object Будь ласка, виберіть базовий об'єкт @@ -2404,37 +2404,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Вибрати вибране - + + - Remove Вилучити - + + - Add Додати - - - - + + + + - + + + - - Edit Редагувати @@ -2455,8 +2455,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Сітки - + Components Компоненти @@ -2466,30 +2466,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Створити новий компонент + - Name Назва - - + + Type Тип + - Thickness Товщина - + Offset Зсув @@ -2557,9 +2557,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Виберіть принаймні одну вісь + - Axes Вісі @@ -2571,9 +2571,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Записано успішно @@ -2583,8 +2583,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Ферма - + Please select only one base object or none Виберіть лише один базовий об'єкт або нічого не вибирайте, будь ласка @@ -3138,24 +3138,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Опис - - + + Value Значення - + Unit Одиниця @@ -3251,19 +3251,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3273,8 +3273,8 @@ Floor creation aborted. Closing Sketch edit - + Component Компонент @@ -3471,8 +3471,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Будівля @@ -3851,14 +3851,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3868,15 +3868,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3891,8 +3891,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3969,9 +3969,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4290,20 +4290,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4338,8 +4338,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6774,9 +6774,9 @@ Building creation aborted. Command - - + + Transform Перетворити diff --git a/src/Mod/Arch/Resources/translations/Arch_val-ES.ts b/src/Mod/Arch/Resources/translations/Arch_val-ES.ts index cb7434e667..3b7a8b37dd 100644 --- a/src/Mod/Arch/Resources/translations/Arch_val-ES.ts +++ b/src/Mod/Arch/Resources/translations/Arch_val-ES.ts @@ -1271,8 +1271,8 @@ are placed in a 'Group' instead. DAE - + Export options Opcions d'exportació @@ -1705,40 +1705,40 @@ unit to work with when opening the file. Drawing mode - - + + Category Categoria - - + + Preset Preset - - - + + + Length Longitud - - + + Width Amplària - + Height Alçària @@ -1754,8 +1754,8 @@ unit to work with when opening the file. Switch L/W - + Con&tinue Con&tinue @@ -1772,8 +1772,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Facemaker returned an error @@ -1886,8 +1886,8 @@ unit to work with when opening the file. Fet - + Couldn't compute a shape Couldn't compute a shape @@ -2062,8 +2062,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2365,37 +2365,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Tria el seleccionat - + + - Remove Elimina - + + - Add Afegir - - - - + + + + - + + + - - Edit Edita @@ -2416,8 +2416,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components Components @@ -2427,30 +2427,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name Nom - - + + Type Tipus + - Thickness Gruix - + Offset Separació @@ -2518,9 +2518,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2532,9 +2532,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2544,8 +2544,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3099,24 +3099,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description Descripció - - + + Value Valor - + Unit Unitat @@ -3212,19 +3212,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3234,8 +3234,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3432,8 +3432,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building Construcció @@ -3812,14 +3812,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3829,15 +3829,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3852,8 +3852,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3930,9 +3930,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4251,20 +4251,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4299,8 +4299,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6735,9 +6735,9 @@ Building creation aborted. Command - - + + Transform Transforma diff --git a/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts b/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts index 6d6d75b867..0fca54edb9 100644 --- a/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts +++ b/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts @@ -1277,8 +1277,8 @@ are placed in a 'Group' instead. DAE - + Export options 导出选项 @@ -1720,40 +1720,40 @@ unit to work with when opening the file. 绘图模式 - - + + Category 类别 - - + + Preset 预设值 - - - + + + Length 长度 - - + + Width 宽度 - + Height 高度 @@ -1769,8 +1769,8 @@ unit to work with when opening the file. 切换 长/宽 - + Con&tinue 继续&t @@ -1787,8 +1787,8 @@ unit to work with when opening the file. 该网格是无效实体 - + Facemaker returned an error 服务器返回了一个错误 @@ -1901,8 +1901,8 @@ unit to work with when opening the file. 完成 - + Couldn't compute a shape 无法计算形状 @@ -2074,8 +2074,8 @@ Site creation aborted. 无法创建屋顶 - + Please select a base object 请选择一个基物体 @@ -2377,37 +2377,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela 选取选定的 - + + - Remove 删除 - + + - Add 添加 - - - - + + + + - + + + - - Edit 编辑 @@ -2428,8 +2428,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela 线框 - + Components 组件 @@ -2439,30 +2439,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela 创建新组件 + - Name 名称 - - + + Type 类型 + - Thickness 厚度 - + Offset 偏移 @@ -2530,9 +2530,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela 请至少选择一个坐标轴 + - Axes 坐标轴 @@ -2544,9 +2544,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written 写入成功 @@ -2556,8 +2556,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela 桁架 - + Please select only one base object or none 请只选择一个基对象或不选 @@ -3111,24 +3111,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description 描述 - - + + Value - + Unit 单位 @@ -3224,19 +3224,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3246,8 +3246,8 @@ Floor creation aborted. Closing Sketch edit - + Component Component @@ -3444,8 +3444,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building 建筑 @@ -3824,14 +3824,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3841,15 +3841,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element The structural nodes of this element @@ -3864,8 +3864,8 @@ Building creation aborted. Offset distance between the centerline and the nodes line - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3942,9 +3942,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4263,20 +4263,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4311,8 +4311,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6747,9 +6747,9 @@ Building creation aborted. Command - - + + Transform 变换 diff --git a/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts b/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts index 2d90ae9d07..929dd6bec7 100644 --- a/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts +++ b/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts @@ -1274,8 +1274,8 @@ are placed in a 'Group' instead. DAE - + Export options 匯出選項 @@ -1723,40 +1723,40 @@ unit to work with when opening the file. 繪圖模式 - - + + Category 類別 - - + + Preset 預設 - - - + + + Length 間距 - - + + Width 寬度 - + Height 高度 @@ -1772,8 +1772,8 @@ unit to work with when opening the file. 切換 L/W - + Con&tinue 繼續(&t) @@ -1790,8 +1790,8 @@ unit to work with when opening the file. This mesh is an invalid solid - + Facemaker returned an error Facemaker returned an error @@ -1904,8 +1904,8 @@ unit to work with when opening the file. 完成 - + Couldn't compute a shape Couldn't compute a shape @@ -2078,8 +2078,8 @@ Site creation aborted. Unable to create a roof - + Please select a base object Please select a base object @@ -2381,37 +2381,37 @@ If Run = 0 then the run is calculated so that the height is the same as the rela 挑選 - + + - Remove 移除 - + + - Add 新增 - - - - + + + + - + + + - - Edit 編輯 @@ -2432,8 +2432,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Wires - + Components 組件 @@ -2443,30 +2443,30 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Create new component + - Name 名稱 - - + + Type 類型 + - Thickness 厚度 - + Offset 偏移 @@ -2534,9 +2534,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Please select at least one axis + - Axes Axes @@ -2548,9 +2548,9 @@ If Run = 0 then the run is calculated so that the height is the same as the rela + - Successfully written Successfully written @@ -2560,8 +2560,8 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Truss - + Please select only one base object or none Please select only one base object or none @@ -3115,24 +3115,24 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Unable to recognize that file type - + Description 說明 - - + + Value - + Unit 單位 @@ -3228,19 +3228,19 @@ Floor creation aborted. has an invalid shape - + has a null shape has a null shape - + Toggle subcomponents Toggle subcomponents @@ -3250,8 +3250,8 @@ Floor creation aborted. Closing Sketch edit - + Component 組件 @@ -3448,8 +3448,8 @@ Floor creation aborted. Centers the plane on the objects in the list above - + Building 建築 @@ -3828,14 +3828,14 @@ Building creation aborted. Base rotation around the Tool axis (only used if BasePerpendicularToTool is True) - + The length of this element, if not based on a profile The length of this element, if not based on a profile - + The width of this element, if not based on a profile The width of this element, if not based on a profile @@ -3845,15 +3845,15 @@ Building creation aborted. The height or extrusion depth of this element. Keep 0 for automatic - + The normal extrusion direction of this object (keep (0,0,0) for automatic normal) The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The structural nodes of this element 此元件之結構節點 @@ -3868,8 +3868,8 @@ Building creation aborted. 中心線與節點線之偏移距離 - + The facemaker type to use to build the profile of this object The facemaker type to use to build the profile of this object @@ -3946,9 +3946,9 @@ Building creation aborted. The electric power needed by this equipment in Watts - + The type of this building The type of this building @@ -4267,20 +4267,20 @@ Building creation aborted. A URL that shows this site in a mapping website - + Other shapes that are appended to this object Other shapes that are appended to this object - + Other shapes that are subtracted from this object Other shapes that are subtracted from this object - + The area of the projection of this object onto the XY plane The area of the projection of this object onto the XY plane @@ -4315,8 +4315,8 @@ Building creation aborted. An optional offset between the model (0,0,0) origin and the point indicated by the geocoordinates - + The type of this object The type of this object @@ -6751,9 +6751,9 @@ Building creation aborted. Command - - + + Transform 轉換 diff --git a/src/Mod/Arch/TestArch.py b/src/Mod/Arch/TestArch.py index cfce1fc6b9..4058c96ff8 100644 --- a/src/Mod/Arch/TestArch.py +++ b/src/Mod/Arch/TestArch.py @@ -444,7 +444,7 @@ class ArchTest(unittest.TestCase): App.Console.PrintLog ('Checking Arch Rebar...\n') s = Arch.makeStructure(length=2,width=3,height=5) sk = App.ActiveDocument.addObject('Sketcher::SketchObject','Sketch') - sk.Support = (s,["Face6"]) + sk.AttachmentSupport = (s,["Face6"]) sk.addGeometry(Part.LineSegment(App.Vector(-0.85,1.25,0),App.Vector(0.75,1.25,0))) sk.addGeometry(Part.LineSegment(App.Vector(0.75,1.25,0),App.Vector(0.75,-1.20,0))) sk.addGeometry(Part.LineSegment(App.Vector(0.75,-1.20,0),App.Vector(-0.85,-1.20,0))) diff --git a/src/Mod/Arch/exportIFC.py b/src/Mod/Arch/exportIFC.py index 92161a2b11..d940b7c249 100644 --- a/src/Mod/Arch/exportIFC.py +++ b/src/Mod/Arch/exportIFC.py @@ -108,9 +108,11 @@ END-ISO-10303-21; def getPreferences(): """Retrieve the IFC preferences available in import and export.""" + + import ifcopenshell + if FreeCAD.GuiUp and params.get_param_arch("ifcShowDialog"): FreeCADGui.showPreferences("Import-Export", 1) - ifcunit = params.get_param_arch("ifcUnit") # Factor to multiply the dimension in millimeters @@ -203,7 +205,7 @@ def export(exportList, filename, colors=None, preferences=None): "Visit https://wiki.freecad.org/IfcOpenShell " "to learn about installing it.") return - if filename.lower().endswith("json"): + if str(filename).lower().endswith("json"): import json try: from ifcjson import ifc2json5a @@ -216,47 +218,53 @@ def export(exportList, filename, colors=None, preferences=None): starttime = time.time() + global ifcfile, surfstyles, clones, sharedobjects, profiledefs, shapedefs, uids, template + if preferences is None: preferences = getPreferences() - # process template + existing_file = False + if isinstance(filename, ifcopenshell.file): + ifcfile = filename + existing_file = True + else: + # process template - version = FreeCAD.Version() - owner = FreeCAD.ActiveDocument.CreatedBy - email = '' - if ("@" in owner) and ("<" in owner): - s = owner.split("<") - owner = s[0].strip() - email = s[1].strip(">") + version = FreeCAD.Version() + owner = FreeCAD.ActiveDocument.CreatedBy + email = '' + if ("@" in owner) and ("<" in owner): + s = owner.split("<") + owner = s[0].strip() + email = s[1].strip(">") - global template - template = ifctemplate.replace("$version", - version[0] + "." - + version[1] + " build " + version[2]) - if preferences['DEBUG']: print("Exporting an", preferences['SCHEMA'], "file...") - template = template.replace("$ifcschema", preferences['SCHEMA']) - template = template.replace("$owner", owner) - template = template.replace("$company", FreeCAD.ActiveDocument.Company) - template = template.replace("$email", email) - template = template.replace("$now", str(int(time.time()))) - template = template.replace("$filename", os.path.basename(filename)) - template = template.replace("$timestamp", - str(time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()))) - if hasattr(ifcopenshell, "version"): - template = template.replace("IfcOpenShell", - "IfcOpenShell " + ifcopenshell.version) - templatefilehandle, templatefile = tempfile.mkstemp(suffix=".ifc") - of = pyopen(templatefile, "w") + template = ifctemplate.replace("$version", + version[0] + "." + + version[1] + " build " + version[2]) + if preferences['DEBUG']: print("Exporting an", preferences['SCHEMA'], "file...") + template = template.replace("$ifcschema", preferences['SCHEMA']) + template = template.replace("$owner", owner) + template = template.replace("$company", FreeCAD.ActiveDocument.Company) + template = template.replace("$email", email) + template = template.replace("$now", str(int(time.time()))) + template = template.replace("$filename", os.path.basename(filename)) + template = template.replace("$timestamp", + str(time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()))) + if hasattr(ifcopenshell, "version"): + template = template.replace("IfcOpenShell", + "IfcOpenShell " + ifcopenshell.version) + templatefilehandle, templatefile = tempfile.mkstemp(suffix=".ifc") + of = pyopen(templatefile, "w") - of.write(template) - of.close() - os.close(templatefilehandle) + of.write(template) + of.close() + os.close(templatefilehandle) - # create IFC file + # create IFC file + + ifcfile = ifcopenshell.open(templatefile) + ifcfile = exportIFCHelper.writeUnits(ifcfile,preferences["IFC_UNIT"]) - global ifcfile, surfstyles, clones, sharedobjects, profiledefs, shapedefs, uids - ifcfile = ifcopenshell.open(templatefile) - ifcfile = exportIFCHelper.writeUnits(ifcfile,preferences["IFC_UNIT"]) history = ifcfile.by_type("IfcOwnerHistory")[0] objectslist = Draft.get_group_contents(exportList, walls=True, addgroups=True) @@ -286,10 +294,14 @@ def export(exportList, filename, colors=None, preferences=None): # create project, context and geodata settings - contextCreator = exportIFCHelper.ContextCreator(ifcfile, objectslist) - context = contextCreator.model_view_subcontext - project = contextCreator.project - objectslist = [obj for obj in objectslist if obj != contextCreator.project_object] + if existing_file: + project = ifcfile.by_type("IfcProject")[0] + context = ifcfile.by_type("IFcGeometricRepresentationContext")[-1] + else: + contextCreator = exportIFCHelper.ContextCreator(ifcfile, objectslist) + context = contextCreator.model_view_subcontext + project = contextCreator.project + objectslist = [obj for obj in objectslist if obj != contextCreator.project_object] if Draft.getObjectsOfType(objectslist, "Site"): # we assume one site and one representation context only decl = Draft.getObjectsOfType(objectslist, "Site")[0].Declination.getValueAs(FreeCAD.Units.Radian) @@ -298,7 +310,7 @@ def export(exportList, filename, colors=None, preferences=None): # reusable entity system global ifcbin - ifcbin = exportIFCHelper.recycler(ifcfile) + ifcbin = exportIFCHelper.recycler(ifcfile, template=not existing_file) # setup analytic model @@ -369,11 +381,7 @@ def export(exportList, filename, colors=None, preferences=None): assemblyElements = [] - # if ifctype == "IfcArray": - # FIXME: the first array element is not placed correct if the array is not on coordinate origin - # https://forum.freecad.org/viewtopic.php?f=39&t=50085&p=431476#p431476 - # workaround: do not use the assembly in ifc but a normal compound instead - if False: + if ifctype == "IfcArray": clonedeltas = [] if obj.ArrayType == "ortho": for i in range(obj.NumberX): @@ -384,8 +392,6 @@ def export(exportList, filename, colors=None, preferences=None): for k in range(obj.NumberZ): if k > 0: clonedeltas.append(obj.Placement.Base+(i*obj.IntervalX)+(j*obj.IntervalY)+(k*obj.IntervalZ)) - - #print("clonedeltas:",clonedeltas) if clonedeltas: ifctype = "IfcElementAssembly" for delta in clonedeltas: @@ -412,12 +418,14 @@ def export(exportList, filename, colors=None, preferences=None): preferences ) assemblyElements.append(subproduct) - # if an array was handled assemblyElements is not empty - # if assemblyElements is not empty later on - # the own Shape is ignored if representation is retrieved - # this because we will build an assembly for the assemblyElements - # from here and the assembly itself should not have a representation - if ifctype in ["IfcApp::Part","IfcPart::Compound","IfcElementAssembly"]: + exportIFCHelper.writeQuantities(ifcfile, + obj.Base, + subproduct, + history, + preferences['SCALE_FACTOR'] + ) + + elif ifctype in ["IfcApp::Part","IfcPart::Compound","IfcElementAssembly"]: if hasattr(obj,"Group"): group = obj.Group elif hasattr(obj,"Links"): @@ -751,7 +759,9 @@ def export(exportList, filename, colors=None, preferences=None): #if preferences['DEBUG'] : print(" adding ifc attributes") props = [] for key in obj.IfcData: - if not (key in ["attributes", "complex_attributes", "IfcUID", "FlagForceBrep"]): + if not (key in ["attributes", "complex_attributes", "IfcUID", "FlagForceBrep", + "ExportHeight", "ExportWidth", "ExportLength", "ExportHorizontalArea", + "ExportVerticalArea", "ExportVolume"]): # (deprecated) properties in IfcData dict are stored as "key":"type(value)" @@ -800,35 +810,7 @@ def export(exportList, filename, colors=None, preferences=None): # Quantities - if hasattr(obj,"IfcData"): - quantities = [] - if ("ExportHeight" in obj.IfcData) and obj.IfcData["ExportHeight"] and hasattr(obj,"Height"): - quantities.append(ifcfile.createIfcQuantityLength('Height',None,None,obj.Height.Value*preferences['SCALE_FACTOR'])) - if ("ExportWidth" in obj.IfcData) and obj.IfcData["ExportWidth"] and hasattr(obj,"Width"): - quantities.append(ifcfile.createIfcQuantityLength('Width',None,None,obj.Width.Value*preferences['SCALE_FACTOR'])) - if ("ExportLength" in obj.IfcData) and obj.IfcData["ExportLength"] and hasattr(obj,"Length"): - quantities.append(ifcfile.createIfcQuantityLength('Length',None,None,obj.Length.Value*preferences['SCALE_FACTOR'])) - if ("ExportHorizontalArea" in obj.IfcData) and obj.IfcData["ExportHorizontalArea"] and hasattr(obj,"HorizontalArea"): - quantities.append(ifcfile.createIfcQuantityArea('HorizontalArea',None,None,obj.HorizontalArea.Value*(preferences['SCALE_FACTOR']**2))) - if ("ExportVerticalArea" in obj.IfcData) and obj.IfcData["ExportVerticalArea"] and hasattr(obj,"VerticalArea"): - quantities.append(ifcfile.createIfcQuantityArea('VerticalArea',None,None,obj.VerticalArea.Value*(preferences['SCALE_FACTOR']**2))) - if ("ExportVolume" in obj.IfcData) and obj.IfcData["ExportVolume"] and obj.isDerivedFrom("Part::Feature"): - quantities.append(ifcfile.createIfcQuantityVolume('Volume',None,None,obj.Shape.Volume*(preferences['SCALE_FACTOR']**3))) - if quantities: - eltq = ifcfile.createIfcElementQuantity( - ifcopenshell.guid.new(), - history, - "ElementQuantities", - None, - "FreeCAD",quantities - ) - ifcfile.createIfcRelDefinesByProperties( - ifcopenshell.guid.new(), - history, - None, - None, - [product],eltq - ) + exportIFCHelper.writeQuantities(ifcfile, obj, product, history, preferences['SCALE_FACTOR']) if preferences['FULL_PARAMETRIC']: @@ -1065,7 +1047,7 @@ def export(exportList, filename, colors=None, preferences=None): # add default site, building and storey as required if not sites: - if preferences['ADD_DEFAULT_SITE']: + if preferences['ADD_DEFAULT_SITE'] and not existing_file: if preferences['DEBUG']: print("No site found. Adding default site") sites = [ifcfile.createIfcSite( ifcopenshell.guid.new(), @@ -1091,7 +1073,7 @@ def export(exportList, filename, colors=None, preferences=None): project,sites ) if not buildings: - if preferences['ADD_DEFAULT_BUILDING']: + if preferences['ADD_DEFAULT_BUILDING'] and not existing_file: if preferences['DEBUG']: print("No building found. Adding default building") buildings = [ifcfile.createIfcBuilding( ifcopenshell.guid.new(), @@ -1115,7 +1097,7 @@ def export(exportList, filename, colors=None, preferences=None): '', project,buildings ) - if floors: + if floors and buildings: ifcfile.createIfcRelAggregates( ifcopenshell.guid.new(), history, @@ -1147,7 +1129,7 @@ def export(exportList, filename, colors=None, preferences=None): untreated.append(v) if untreated: if not defaulthost: - if preferences['ADD_DEFAULT_STOREY']: + if preferences['ADD_DEFAULT_STOREY'] and not existing_file: if preferences['DEBUG']: print("No floor found. Adding default floor") defaulthost = ifcfile.createIfcBuildingStorey( ifcopenshell.guid.new(), @@ -1595,26 +1577,31 @@ def export(exportList, filename, colors=None, preferences=None): remaining ) - if preferences['DEBUG']: print("writing ",filename,"...") + if not existing_file: + if preferences['DEBUG']: + print("writing ",filename,"...") - if filename.lower().endswith("json"): - writeJson(filename,ifcfile) - else: - ifcfile.write(filename) + if filename.lower().endswith("json"): + writeJson(filename,ifcfile) + else: + ifcfile.write(filename) - if preferences['STORE_UID']: - # some properties might have been changed - FreeCAD.ActiveDocument.recompute() + if preferences['STORE_UID']: + # some properties might have been changed + FreeCAD.ActiveDocument.recompute() - os.remove(templatefile) + os.remove(templatefile) - if preferences['DEBUG'] and ifcbin.compress and (not filename.lower().endswith("json")): - f = pyopen(filename,"r") - s = len(f.read().split("\n")) - f.close() - print("Compression ratio:",int((float(ifcbin.spared)/(s+ifcbin.spared))*100),"%") + if preferences['DEBUG'] and ifcbin.compress and (not filename.lower().endswith("json")): + f = pyopen(filename,"r") + s = len(f.read().split("\n")) + f.close() + print("Compression ratio:",int((float(ifcbin.spared)/(s+ifcbin.spared))*100),"%") del ifcbin + if existing_file: + return products | spatialelements + endtime = time.time() - starttime _msg("Finished exporting in {} seconds".format(int(endtime))) @@ -2302,6 +2289,8 @@ def getRepresentation( gpl = ifcbin.createIfcAxis2Placement3D() repmap = ifcfile.createIfcRepresentationMap(gpl,subrep) pla = obj.getGlobalPlacement() + if isinstance(forceclone,FreeCAD.Vector): + pla.Base += forceclone axis1 = ifcbin.createIfcDirection(tuple(pla.Rotation.multVec(FreeCAD.Vector(1,0,0)))) axis2 = ifcbin.createIfcDirection(tuple(pla.Rotation.multVec(FreeCAD.Vector(0,1,0)))) origin = ifcbin.createIfcCartesianPoint(tuple(FreeCAD.Vector(pla.Base).multiply(preferences['SCALE_FACTOR']))) @@ -2371,7 +2360,7 @@ def getRepresentation( representation = [ifcfile.createIfcShapeRepresentation(context,'Body',solidType,shapes)] # additional representations? if Draft.getType(obj) in ["Wall","Structure"]: - addrepr = createAxis(ifcfile,obj,preferences) + addrepr = createAxis(ifcfile,obj,preferences, forceclone) if addrepr: representation = representation + [addrepr] productdef = ifcfile.createIfcProductDefinitionShape(None,None,representation) @@ -2476,12 +2465,15 @@ def getAxisContext(ifcfile): return nctx -def createAxis(ifcfile,obj,preferences): +def createAxis(ifcfile,obj,preferences, delta=None): """Creates an axis for a given wall, if applicable""" shape = None + pla = FreeCAD.Placement(obj.Placement) + if isinstance(delta,FreeCAD.Vector): + pla.Base += delta if getattr(obj,"Nodes",None): - shape = Part.makePolygon([obj.Placement.multVec(v) for v in obj.Nodes]) + shape = Part.makePolygon([pla.multVec(v) for v in obj.Nodes]) elif hasattr(obj,"Base") and hasattr(obj.Base,"Shape") and obj.Base.Shape: shape = obj.Base.Shape if shape: diff --git a/src/Mod/Arch/exportIFCHelper.py b/src/Mod/Arch/exportIFCHelper.py index cd2f6c0304..a0a8a41ef2 100644 --- a/src/Mod/Arch/exportIFCHelper.py +++ b/src/Mod/Arch/exportIFCHelper.py @@ -56,6 +56,40 @@ def writeUnits(ifcfile,unit="metre"): return ifcfile +def writeQuantities(ifcfile, obj, product, history, scale): + "append quantities to the given object" + + if hasattr(obj,"IfcData"): + quantities = [] + if ("ExportHeight" in obj.IfcData) and obj.IfcData["ExportHeight"] and hasattr(obj,"Height"): + quantities.append(ifcfile.createIfcQuantityLength('Height',None,None,obj.Height.Value*scale)) + if ("ExportWidth" in obj.IfcData) and obj.IfcData["ExportWidth"] and hasattr(obj,"Width"): + quantities.append(ifcfile.createIfcQuantityLength('Width',None,None,obj.Width.Value*scale)) + if ("ExportLength" in obj.IfcData) and obj.IfcData["ExportLength"] and hasattr(obj,"Length"): + quantities.append(ifcfile.createIfcQuantityLength('Length',None,None,obj.Length.Value*scale)) + if ("ExportHorizontalArea" in obj.IfcData) and obj.IfcData["ExportHorizontalArea"] and hasattr(obj,"HorizontalArea"): + quantities.append(ifcfile.createIfcQuantityArea('HorizontalArea',None,None,obj.HorizontalArea.Value*(scale**2))) + if ("ExportVerticalArea" in obj.IfcData) and obj.IfcData["ExportVerticalArea"] and hasattr(obj,"VerticalArea"): + quantities.append(ifcfile.createIfcQuantityArea('VerticalArea',None,None,obj.VerticalArea.Value*(scale**2))) + if ("ExportVolume" in obj.IfcData) and obj.IfcData["ExportVolume"] and obj.isDerivedFrom("Part::Feature"): + quantities.append(ifcfile.createIfcQuantityVolume('Volume',None,None,obj.Shape.Volume*(scale**3))) + if quantities: + eltq = ifcfile.createIfcElementQuantity( + ifcopenshell.guid.new(), + history, + "ElementQuantities", + None, + "FreeCAD",quantities + ) + ifcfile.createIfcRelDefinesByProperties( + ifcopenshell.guid.new(), + history, + None, + None, + [product],eltq + ) + + class SIUnitCreator: def __init__(self, file, text, type): self.prefixes = [ diff --git a/src/Mod/Assembly/App/AssemblyObject.cpp b/src/Mod/Assembly/App/AssemblyObject.cpp index b5a060560c..dead9a8c65 100644 --- a/src/Mod/Assembly/App/AssemblyObject.cpp +++ b/src/Mod/Assembly/App/AssemblyObject.cpp @@ -1190,7 +1190,7 @@ std::vector AssemblyObject::getDownstreamParts(App::Docume } AssemblyObject::setJointActivated(joint, state); - /*if (limit > 1000) { // Inifinite loop protection + /*if (limit > 1000) { // Infinite loop protection return {}; } limit++; @@ -1243,7 +1243,7 @@ std::vector AssemblyObject::getDownstreamParts(App::Docume std::vector AssemblyObject::getUpstreamParts(App::DocumentObject* part, int limit) { - if (limit > 1000) { // Inifinite loop protection + if (limit > 1000) { // Infinite loop protection return {}; } limit++; diff --git a/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointCylindrical.svg b/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointCylindrical.svg index 95a23d3760..8ed38f57b9 100644 --- a/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointCylindrical.svg +++ b/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointCylindrical.svg @@ -3,13 +3,7 @@ width="64px" height="64px" id="svg2821" - sodipodi:version="0.32" - inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" - sodipodi:docname="Assembly_CreateJointCylindrical.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" @@ -19,7 +13,6 @@ - - - - - @@ -246,7 +180,6 @@ [wmayer] - Part_Cylinder 2011-10-10 https://www.freecad.org/wiki/index.php?title=Artwork @@ -270,125 +203,88 @@ + id="layer1"> + id="g3" + transform="rotate(-120,31.879612,32.082447)"> - - - - - - - - - - - - - - - - - - + id="g15-6" + transform="matrix(1.1122207,0,0,1.1122207,-3.793277,28.042367)"> + + + + + + + + + + + + + + + + + + - - - - - - + style="fill:#cc0000;stroke:#280000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + + + + + d="M 42.294596,61.458559 36.569302,62.26303 47.6973,71.281842 53.888294,59.977938 47.993171,60.40505 c 0,0 -5.098096,-12.019738 -4.755572,-25.591292 C 43.580123,21.242204 44.972361,12.57644 49.056995,4.8823104 L 54.501933,5.7523283 48.673377,-6.64344 37.040489,2.5499919 l 5.69744,1.262008 C 40.115582,12.087163 37.884178,20.2052 37.277916,34.520587 c -0.606263,14.315386 5.01668,26.937972 5.01668,26.937972 z" /> diff --git a/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointRevolute.svg b/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointRevolute.svg index ce8ca8c136..b4e46bae5f 100644 --- a/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointRevolute.svg +++ b/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointRevolute.svg @@ -3,13 +3,7 @@ width="64px" height="64px" id="svg2821" - sodipodi:version="0.32" - inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" - sodipodi:docname="Joint_Revolute_Alt.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" @@ -18,8 +12,18 @@ xmlns:dc="http://purl.org/dc/elements/1.1/"> + + + + - - - - - - - + gradientTransform="matrix(0.91296596,0,0,0.91296596,-53.260025,-10.845327)" /> + gradientTransform="translate(-61.166465,-8.8148077)" + x1="74.090889" + y1="36.438313" + x2="98.940155" + y2="39.402027" + spreadMethod="reflect" /> - - - - + xlink:href="#linearGradient15" + id="linearGradient1" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-60.858374,-24.486759)" + x1="74.090889" + y1="36.438313" + x2="98.940155" + y2="39.402027" + spreadMethod="reflect" /> - - - - @@ -246,9 +165,8 @@ [wmayer] - Part_Cylinder 2011-10-10 - https://www.freecad.org/wiki/index.php?title=Artwork + http://www.freecad.org/wiki/index.php?title=Artwork FreeCAD @@ -270,121 +188,73 @@ + id="layer1"> + id="g1"> + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + transform="matrix(-0.45845699,-0.84418234,0.79407079,-0.4873889,18.64512,75.356751)" + style="stroke-width:1.05775"> + style="fill:#fce94f;stroke:#302b00;stroke-width:1.93138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1" + d="m 53.556993,35.317428 c 0,4.033737 -9.809971,7.303728 -21.911183,7.303728 -12.101212,0 -21.9111824,-3.269991 -21.9111824,-7.303728 l -1.8e-6,-21.821485 H 53.556992 Z" + id="path2994-3" /> + style="fill:url(#linearGradient3807);fill-opacity:1;stroke:#fce94f;stroke-width:1.93138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1" + d="m 51.73106,34.155472 c 0,3.667033 -8.992468,6.639752 -20.085251,6.639752 -11.092778,0 -20.085251,-2.972719 -20.085251,-6.639752 l -1e-6,-19.06549 H 51.73106 Z" + id="path2994-3-6" /> + + + + + + diff --git a/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointSlider.svg b/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointSlider.svg index b7cf7649cb..b04d7eae73 100644 --- a/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointSlider.svg +++ b/src/Mod/Assembly/Gui/Resources/icons/Assembly_CreateJointSlider.svg @@ -3,13 +3,7 @@ width="64px" height="64px" id="svg2821" - sodipodi:version="0.32" - inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" - sodipodi:docname="Joint_Slider_Alt.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" @@ -19,23 +13,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id="stop33" /> + offset="1" + id="stop34" /> + + + offset="0" + id="stop21" /> + - + gradientTransform="matrix(1.0546639,0,0,1.047623,-9.2679129,3.0093584)" /> + id="linearGradient4389" + x1="20.243999" + x2="17.243999" + y1="37.588001" + y2="27.587999" + gradientTransform="translate(-1.2435,-2.5881)" + gradientUnits="userSpaceOnUse" + xlink:href="#linearGradient3774" /> + + id="stop21-8" /> - + stop-color="#8ae234" + offset="1" + id="stop23" /> + xlink:href="#linearGradient3774" /> + + + + + + + + + gradientTransform="translate(-0.30409276,0.05778729)" + x1="22.782017" + y1="37.760967" + x2="11.930232" + y2="29.936911" /> + + + + + + + + + + + - - - - @@ -246,9 +387,8 @@ [wmayer] - Part_Cylinder 2011-10-10 - https://www.freecad.org/wiki/index.php?title=Artwork + http://www.freecad.org/wiki/index.php?title=Artwork FreeCAD @@ -271,101 +411,124 @@ + style="stroke-width:1.5;stroke-dasharray:none"> + + - - - - - - - - - - - - - - - - + id="g69" + transform="matrix(-0.60621985,0.35000119,-0.35000119,-0.60621985,70.246003,30.283761)" + style="display:inline;stroke-width:2.14284984;stroke-dasharray:none"> + + + + + + + id="g65" + style="display:inline;stroke-width:1.5;stroke-dasharray:none"> + style="fill:#fce94f;fill-rule:nonzero;stroke:#231f0b;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" + d="M 14.449219,39.851562 V 19.550781 L 32.048828,29.701172 32,50 14.449219,39.851562" + id="path53" /> + style="fill:url(#linearGradient62);fill-rule:nonzero;stroke:#fce94f;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" + d="M 15.949214,39.014965 V 22.059929 l 14.599619,8.477518 -0.0405,16.953405 -14.559114,-8.475887" + id="path61" /> + + + + + + + + + + + + + + + + diff --git a/src/Mod/Assembly/Gui/Resources/icons/Assembly_SolveAssembly.svg b/src/Mod/Assembly/Gui/Resources/icons/Assembly_SolveAssembly.svg index d3044a83f6..4ac02cf3bd 100644 --- a/src/Mod/Assembly/Gui/Resources/icons/Assembly_SolveAssembly.svg +++ b/src/Mod/Assembly/Gui/Resources/icons/Assembly_SolveAssembly.svg @@ -4,11 +4,7 @@ height="64" id="svg3559" version="1.1" - inkscape:version="1.1-beta1 (77e7b44db3, 2021-03-28)" - sodipodi:docname="Assembly_SolveAssembly.svg" viewBox="0 0 64 64" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" @@ -18,8 +14,7 @@ + id="linearGradient4383-3"> - - - @@ -374,7 +316,6 @@ image/svg+xml - Path-Stock 2015-07-04 https://www.freecadweb.org/wiki/index.php?title=Artwork @@ -398,12 +339,11 @@ + id="layer1"> + transform="matrix(1.0964113,0,0,1.0964113,-13.226965,60.643745)" + style="opacity:1"> + style="fill:url(#linearGradient949);stroke:#302b00;stroke-linejoin:round" /> + style="fill:url(#linearGradient951);stroke:#302b00;stroke-linejoin:round" /> + style="fill:#edd400;stroke:#fce94f" /> + style="fill:#edd400;stroke:#fce94f" /> + style="fill:url(#linearGradient69709);stroke:#302b00;stroke-width:2;stroke-linejoin:round;stroke-opacity:1" /> + style="fill:#edd400;stroke:#fce94f;stroke-width:2" /> + style="fill:#edd400;stroke:#302b00;stroke-width:2;stroke-linejoin:round;stroke-opacity:1" /> + style="fill:#edd400;stroke:#fce94f;stroke-width:2" /> + style="fill:#fce94f;stroke:#302b00;stroke-width:2;stroke-linejoin:round;stroke-opacity:1" /> + style="fill:#edd400;stroke:#fce94f;stroke-width:2;stroke-opacity:1" /> + + transform="matrix(0.82819734,0,0,0.82819734,-66.264643,5.39994)" + style="display:inline"> + id="path1880" /> + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:none;stroke:#729fcf;stroke-width:2.20149;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:21;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> + id="path1880-2" /> + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:none;stroke:#729fcf;stroke-width:2.20149;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:21;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> diff --git a/src/Mod/Path/.flake8 b/src/Mod/CAM/.flake8 similarity index 100% rename from src/Mod/Path/.flake8 rename to src/Mod/CAM/.flake8 diff --git a/src/Mod/Path/App/AppPath.cpp b/src/Mod/CAM/App/AppPath.cpp similarity index 100% rename from src/Mod/Path/App/AppPath.cpp rename to src/Mod/CAM/App/AppPath.cpp diff --git a/src/Mod/Path/App/AppPathPy.cpp b/src/Mod/CAM/App/AppPathPy.cpp similarity index 100% rename from src/Mod/Path/App/AppPathPy.cpp rename to src/Mod/CAM/App/AppPathPy.cpp diff --git a/src/Mod/Path/App/Area.cpp b/src/Mod/CAM/App/Area.cpp similarity index 99% rename from src/Mod/Path/App/Area.cpp rename to src/Mod/CAM/App/Area.cpp index 39fbc884af..291aef72e5 100644 --- a/src/Mod/Path/App/Area.cpp +++ b/src/Mod/CAM/App/Area.cpp @@ -75,8 +75,8 @@ #include #include #include -#include -#include +#include +#include #include "Area.h" diff --git a/src/Mod/Path/App/Area.h b/src/Mod/CAM/App/Area.h similarity index 99% rename from src/Mod/Path/App/Area.h rename to src/Mod/CAM/App/Area.h index e79a62577d..89c397d40e 100644 --- a/src/Mod/Path/App/Area.h +++ b/src/Mod/CAM/App/Area.h @@ -30,7 +30,7 @@ #include -#include +#include #include #include diff --git a/src/Mod/Path/App/AreaParams.h b/src/Mod/CAM/App/AreaParams.h similarity index 99% rename from src/Mod/Path/App/AreaParams.h rename to src/Mod/CAM/App/AreaParams.h index 55a96ec762..6740e6efb5 100644 --- a/src/Mod/Path/App/AreaParams.h +++ b/src/Mod/CAM/App/AreaParams.h @@ -68,7 +68,7 @@ "behave like wire cutting. Without exploding, 'Difference' in ClipperLib\n"\ "behave like face cutting."))\ ((enum,open_mode,OpenMode,0,\ - "Specify how to handle open wires. 'None' means combin without openeration.\n"\ + "Specify how to handle open wires. 'None' means combine without openeration.\n"\ "'Edges' means separate to edges before Union. ClipperLib seems to have an.\n"\ "urge to close open wires.",(None)(Union)(Edges)))\ AREA_PARAMS_DEFLECTION \ diff --git a/src/Mod/Path/App/AreaPy.xml b/src/Mod/CAM/App/AreaPy.xml similarity index 76% rename from src/Mod/Path/App/AreaPy.xml rename to src/Mod/CAM/App/AreaPy.xml index a38a84aec1..9d420af481 100644 --- a/src/Mod/Path/App/AreaPy.xml +++ b/src/Mod/CAM/App/AreaPy.xml @@ -5,7 +5,7 @@ Name="AreaPy" Twin="Area" TwinPointer="Area" - Include="Mod/Path/App/Area.h" + Include="Mod/CAM/App/Area.h" Namespace="Path" FatherInclude="Base/BaseClassPy.h" FatherNamespace="Base" @@ -49,52 +49,52 @@ same algorithm - + Make an offset of the shape. - + Generate pocket toolpath of the shape. - + Make a list of area holding the sectioned children shapes on given heights. - + Gets the area cleared when a tool of the specified diameter follows the gcode represented in the path, ignoring cleared space above zmax and path segments that don't affect space within the x/y space of bbox. - + Rest machining: Gets the area left to be machined, assuming some of this area has already been cleared by previous tool paths. - + Convert the Area object to a TopoShape. - + Set algorithm parameters. - + Static method to set the default parameters of all following Path.Area, plus the following additional parameters. - + Static method to return the current default parameters. - + Returns a list of supported parameters and their descriptions. @@ -104,7 +104,7 @@ same algorithm - + Abort the current operation. diff --git a/src/Mod/Path/App/AreaPyImp.cpp b/src/Mod/CAM/App/AreaPyImp.cpp similarity index 100% rename from src/Mod/Path/App/AreaPyImp.cpp rename to src/Mod/CAM/App/AreaPyImp.cpp diff --git a/src/Mod/Path/App/CMakeLists.txt b/src/Mod/CAM/App/CMakeLists.txt similarity index 99% rename from src/Mod/Path/App/CMakeLists.txt rename to src/Mod/CAM/App/CMakeLists.txt index e26fbab6a6..84c6dcd232 100644 --- a/src/Mod/Path/App/CMakeLists.txt +++ b/src/Mod/CAM/App/CMakeLists.txt @@ -142,7 +142,7 @@ if(FREECAD_USE_PCH) ADD_MSVC_PRECOMPILED_HEADER(Path PreCompiled.h PreCompiled.cpp Path_CPP_SRCS) endif(FREECAD_USE_PCH) -SET_BIN_DIR(Path PathApp /Mod/Path) +SET_BIN_DIR(Path PathApp /Mod/CAM) SET_PYTHON_PREFIX_SUFFIX(Path) INSTALL(TARGETS Path DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/Mod/Path/App/Command.cpp b/src/Mod/CAM/App/Command.cpp similarity index 100% rename from src/Mod/Path/App/Command.cpp rename to src/Mod/CAM/App/Command.cpp diff --git a/src/Mod/Path/App/Command.h b/src/Mod/CAM/App/Command.h similarity index 99% rename from src/Mod/Path/App/Command.h rename to src/Mod/CAM/App/Command.h index bbd1301657..28cc449e3d 100644 --- a/src/Mod/Path/App/Command.h +++ b/src/Mod/CAM/App/Command.h @@ -29,7 +29,7 @@ #include #include #include -#include +#include namespace Path { diff --git a/src/Mod/Path/App/CommandPy.xml b/src/Mod/CAM/App/CommandPy.xml similarity index 98% rename from src/Mod/Path/App/CommandPy.xml rename to src/Mod/CAM/App/CommandPy.xml index 01da6a0587..e0500ec9b0 100644 --- a/src/Mod/Path/App/CommandPy.xml +++ b/src/Mod/CAM/App/CommandPy.xml @@ -5,7 +5,7 @@ Name="CommandPy" Twin="Command" TwinPointer="Command" - Include="Mod/Path/App/Command.h" + Include="Mod/CAM/App/Command.h" Namespace="Path" FatherInclude="Base/PersistencePy.h" FatherNamespace="Base" diff --git a/src/Mod/Path/App/CommandPyImp.cpp b/src/Mod/CAM/App/CommandPyImp.cpp similarity index 100% rename from src/Mod/Path/App/CommandPyImp.cpp rename to src/Mod/CAM/App/CommandPyImp.cpp diff --git a/src/Mod/Path/App/FeatureArea.cpp b/src/Mod/CAM/App/FeatureArea.cpp similarity index 100% rename from src/Mod/Path/App/FeatureArea.cpp rename to src/Mod/CAM/App/FeatureArea.cpp diff --git a/src/Mod/Path/App/FeatureArea.h b/src/Mod/CAM/App/FeatureArea.h similarity index 100% rename from src/Mod/Path/App/FeatureArea.h rename to src/Mod/CAM/App/FeatureArea.h diff --git a/src/Mod/Path/App/FeatureAreaPy.xml b/src/Mod/CAM/App/FeatureAreaPy.xml similarity index 97% rename from src/Mod/Path/App/FeatureAreaPy.xml rename to src/Mod/CAM/App/FeatureAreaPy.xml index fda7b500d0..c167df2b4f 100644 --- a/src/Mod/Path/App/FeatureAreaPy.xml +++ b/src/Mod/CAM/App/FeatureAreaPy.xml @@ -5,7 +5,7 @@ Name="FeatureAreaPy" Twin="FeatureArea" TwinPointer="FeatureArea" - Include="Mod/Path/App/FeatureArea.h" + Include="Mod/CAM/App/FeatureArea.h" Namespace="Path" FatherInclude="App/DocumentObjectPy.h" FatherNamespace="App"> diff --git a/src/Mod/Path/App/FeatureAreaPyImp.cpp b/src/Mod/CAM/App/FeatureAreaPyImp.cpp similarity index 100% rename from src/Mod/Path/App/FeatureAreaPyImp.cpp rename to src/Mod/CAM/App/FeatureAreaPyImp.cpp diff --git a/src/Mod/Path/App/FeaturePath.cpp b/src/Mod/CAM/App/FeaturePath.cpp similarity index 100% rename from src/Mod/Path/App/FeaturePath.cpp rename to src/Mod/CAM/App/FeaturePath.cpp diff --git a/src/Mod/Path/App/FeaturePath.h b/src/Mod/CAM/App/FeaturePath.h similarity index 100% rename from src/Mod/Path/App/FeaturePath.h rename to src/Mod/CAM/App/FeaturePath.h diff --git a/src/Mod/Path/App/FeaturePathCompound.cpp b/src/Mod/CAM/App/FeaturePathCompound.cpp similarity index 100% rename from src/Mod/Path/App/FeaturePathCompound.cpp rename to src/Mod/CAM/App/FeaturePathCompound.cpp diff --git a/src/Mod/Path/App/FeaturePathCompound.h b/src/Mod/CAM/App/FeaturePathCompound.h similarity index 100% rename from src/Mod/Path/App/FeaturePathCompound.h rename to src/Mod/CAM/App/FeaturePathCompound.h diff --git a/src/Mod/Path/App/FeaturePathCompoundPy.xml b/src/Mod/CAM/App/FeaturePathCompoundPy.xml similarity index 95% rename from src/Mod/Path/App/FeaturePathCompoundPy.xml rename to src/Mod/CAM/App/FeaturePathCompoundPy.xml index 180b707ee2..886c471f8e 100644 --- a/src/Mod/Path/App/FeaturePathCompoundPy.xml +++ b/src/Mod/CAM/App/FeaturePathCompoundPy.xml @@ -5,7 +5,7 @@ Name="FeaturePathCompoundPy" Twin="FeaturePathCompound" TwinPointer="FeatureCompound" - Include="Mod/Path/App/FeaturePathCompound.h" + Include="Mod/CAM/App/FeaturePathCompound.h" Namespace="Path" FatherInclude="App/DocumentObjectPy.h" FatherNamespace="App"> diff --git a/src/Mod/Path/App/FeaturePathCompoundPyImp.cpp b/src/Mod/CAM/App/FeaturePathCompoundPyImp.cpp similarity index 100% rename from src/Mod/Path/App/FeaturePathCompoundPyImp.cpp rename to src/Mod/CAM/App/FeaturePathCompoundPyImp.cpp diff --git a/src/Mod/Path/App/FeaturePathShape.cpp b/src/Mod/CAM/App/FeaturePathShape.cpp similarity index 100% rename from src/Mod/Path/App/FeaturePathShape.cpp rename to src/Mod/CAM/App/FeaturePathShape.cpp diff --git a/src/Mod/Path/App/FeaturePathShape.h b/src/Mod/CAM/App/FeaturePathShape.h similarity index 100% rename from src/Mod/Path/App/FeaturePathShape.h rename to src/Mod/CAM/App/FeaturePathShape.h diff --git a/src/Mod/Path/App/ParamsHelper.h b/src/Mod/CAM/App/ParamsHelper.h similarity index 99% rename from src/Mod/Path/App/ParamsHelper.h rename to src/Mod/CAM/App/ParamsHelper.h index df49eb5d03..c479817531 100644 --- a/src/Mod/Path/App/ParamsHelper.h +++ b/src/Mod/CAM/App/ParamsHelper.h @@ -50,15 +50,15 @@ * double check your macro definition of the parameter is correctly, not missing * or having extra parenthesis or comma. Then, you can use the CMake * intermediate file target to get the preprocessor output for checking. For - * example, for a file located at \c src/Mod/Path/App/Area.cpp, + * example, for a file located at \c src/Mod/CAM/App/Area.cpp, * \code{.sh} - * cd /src/Mod/Path/App + * cd /src/Mod/CAM/App * make Area.cpp.i * \endcode * * The preprocessed intermediate output will be at, * \code{.sh} - * /src/Mod/Path/App.CMakeFiles/Path.dir/Area.cpp.i + * /src/Mod/CAM/App.CMakeFiles/Path.dir/Area.cpp.i * \endcode * * \section Introduction of Boost.Preprocessor diff --git a/src/Mod/Path/App/Path.cpp b/src/Mod/CAM/App/Path.cpp similarity index 99% rename from src/Mod/Path/App/Path.cpp rename to src/Mod/CAM/App/Path.cpp index 52cfab2bc2..cb61089bc6 100644 --- a/src/Mod/Path/App/Path.cpp +++ b/src/Mod/CAM/App/Path.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include "Path.h" @@ -141,7 +141,7 @@ double Toolpath::getCycleTime(double hFeed, double vFeed, double hRapid, double { // check the feedrates are set if ((hFeed == 0) || (vFeed == 0)) { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Path"); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/CAM"); if (!hGrp->GetBool("WarningsSuppressAllSpeeds", true)) { Base::Console().Warning("Feed Rate Error: Check Tool Controllers have Feed Rates"); } diff --git a/src/Mod/Path/App/Path.h b/src/Mod/CAM/App/Path.h similarity index 100% rename from src/Mod/Path/App/Path.h rename to src/Mod/CAM/App/Path.h diff --git a/src/Mod/Path/App/PathPy.xml b/src/Mod/CAM/App/PathPy.xml similarity index 99% rename from src/Mod/Path/App/PathPy.xml rename to src/Mod/CAM/App/PathPy.xml index 7a9f8ed42b..d0d6dac98c 100644 --- a/src/Mod/Path/App/PathPy.xml +++ b/src/Mod/CAM/App/PathPy.xml @@ -5,7 +5,7 @@ Name="PathPy" Twin="Toolpath" TwinPointer="Toolpath" - Include="Mod/Path/App/Path.h" + Include="Mod/CAM/App/Path.h" Namespace="Path" FatherInclude="Base/PersistencePy.h" FatherNamespace="Base" diff --git a/src/Mod/Path/App/PathPyImp.cpp b/src/Mod/CAM/App/PathPyImp.cpp similarity index 100% rename from src/Mod/Path/App/PathPyImp.cpp rename to src/Mod/CAM/App/PathPyImp.cpp diff --git a/src/Mod/Path/App/PathSegmentWalker.cpp b/src/Mod/CAM/App/PathSegmentWalker.cpp similarity index 100% rename from src/Mod/Path/App/PathSegmentWalker.cpp rename to src/Mod/CAM/App/PathSegmentWalker.cpp diff --git a/src/Mod/Path/App/PathSegmentWalker.h b/src/Mod/CAM/App/PathSegmentWalker.h similarity index 100% rename from src/Mod/Path/App/PathSegmentWalker.h rename to src/Mod/CAM/App/PathSegmentWalker.h diff --git a/src/Mod/Path/App/PreCompiled.cpp b/src/Mod/CAM/App/PreCompiled.cpp similarity index 100% rename from src/Mod/Path/App/PreCompiled.cpp rename to src/Mod/CAM/App/PreCompiled.cpp diff --git a/src/Mod/Path/App/PreCompiled.h b/src/Mod/CAM/App/PreCompiled.h similarity index 100% rename from src/Mod/Path/App/PreCompiled.h rename to src/Mod/CAM/App/PreCompiled.h diff --git a/src/Mod/Path/App/PropertyPath.cpp b/src/Mod/CAM/App/PropertyPath.cpp similarity index 100% rename from src/Mod/Path/App/PropertyPath.cpp rename to src/Mod/CAM/App/PropertyPath.cpp diff --git a/src/Mod/Path/App/PropertyPath.h b/src/Mod/CAM/App/PropertyPath.h similarity index 100% rename from src/Mod/Path/App/PropertyPath.h rename to src/Mod/CAM/App/PropertyPath.h diff --git a/src/Mod/Path/App/Voronoi.cpp b/src/Mod/CAM/App/Voronoi.cpp similarity index 100% rename from src/Mod/Path/App/Voronoi.cpp rename to src/Mod/CAM/App/Voronoi.cpp diff --git a/src/Mod/Path/App/Voronoi.h b/src/Mod/CAM/App/Voronoi.h similarity index 99% rename from src/Mod/Path/App/Voronoi.h rename to src/Mod/CAM/App/Voronoi.h index 48d0fa9578..84136175ea 100644 --- a/src/Mod/Path/App/Voronoi.h +++ b/src/Mod/CAM/App/Voronoi.h @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/Mod/Path/App/VoronoiCell.cpp b/src/Mod/CAM/App/VoronoiCell.cpp similarity index 100% rename from src/Mod/Path/App/VoronoiCell.cpp rename to src/Mod/CAM/App/VoronoiCell.cpp diff --git a/src/Mod/Path/App/VoronoiCell.h b/src/Mod/CAM/App/VoronoiCell.h similarity index 100% rename from src/Mod/Path/App/VoronoiCell.h rename to src/Mod/CAM/App/VoronoiCell.h diff --git a/src/Mod/Path/App/VoronoiCellPy.xml b/src/Mod/CAM/App/VoronoiCellPy.xml similarity index 98% rename from src/Mod/Path/App/VoronoiCellPy.xml rename to src/Mod/CAM/App/VoronoiCellPy.xml index 1d439da46a..71c5df4b30 100644 --- a/src/Mod/Path/App/VoronoiCellPy.xml +++ b/src/Mod/CAM/App/VoronoiCellPy.xml @@ -6,7 +6,7 @@ PythonName="Path.Voronoi.Cell" Twin="VoronoiCell" TwinPointer="VoronoiCell" - Include="Mod/Path/App/VoronoiCell.h" + Include="Mod/CAM/App/VoronoiCell.h" FatherInclude="Base/BaseClassPy.h" Namespace="Path" FatherNamespace="Base" diff --git a/src/Mod/Path/App/VoronoiCellPyImp.cpp b/src/Mod/CAM/App/VoronoiCellPyImp.cpp similarity index 100% rename from src/Mod/Path/App/VoronoiCellPyImp.cpp rename to src/Mod/CAM/App/VoronoiCellPyImp.cpp diff --git a/src/Mod/Path/App/VoronoiEdge.cpp b/src/Mod/CAM/App/VoronoiEdge.cpp similarity index 100% rename from src/Mod/Path/App/VoronoiEdge.cpp rename to src/Mod/CAM/App/VoronoiEdge.cpp diff --git a/src/Mod/Path/App/VoronoiEdge.h b/src/Mod/CAM/App/VoronoiEdge.h similarity index 100% rename from src/Mod/Path/App/VoronoiEdge.h rename to src/Mod/CAM/App/VoronoiEdge.h diff --git a/src/Mod/Path/App/VoronoiEdgePy.xml b/src/Mod/CAM/App/VoronoiEdgePy.xml similarity index 99% rename from src/Mod/Path/App/VoronoiEdgePy.xml rename to src/Mod/CAM/App/VoronoiEdgePy.xml index 5d92739411..a554957cc2 100644 --- a/src/Mod/Path/App/VoronoiEdgePy.xml +++ b/src/Mod/CAM/App/VoronoiEdgePy.xml @@ -6,7 +6,7 @@ PythonName="Path.Voronoi.Edge" Twin="VoronoiEdge" TwinPointer="VoronoiEdge" - Include="Mod/Path/App/VoronoiEdge.h" + Include="Mod/CAM/App/VoronoiEdge.h" FatherInclude="Base/BaseClassPy.h" Namespace="Path" FatherNamespace="Base" diff --git a/src/Mod/Path/App/VoronoiEdgePyImp.cpp b/src/Mod/CAM/App/VoronoiEdgePyImp.cpp similarity index 100% rename from src/Mod/Path/App/VoronoiEdgePyImp.cpp rename to src/Mod/CAM/App/VoronoiEdgePyImp.cpp diff --git a/src/Mod/Path/App/VoronoiPy.xml b/src/Mod/CAM/App/VoronoiPy.xml similarity index 99% rename from src/Mod/Path/App/VoronoiPy.xml rename to src/Mod/CAM/App/VoronoiPy.xml index bf170fad18..c54b4cccd0 100644 --- a/src/Mod/Path/App/VoronoiPy.xml +++ b/src/Mod/CAM/App/VoronoiPy.xml @@ -6,7 +6,7 @@ PythonName="Path.Voronoi.Diagram" Twin="Voronoi" TwinPointer="Voronoi" - Include="Mod/Path/App/Voronoi.h" + Include="Mod/CAM/App/Voronoi.h" Namespace="Path" FatherInclude="Base/BaseClassPy.h" FatherNamespace="Base" diff --git a/src/Mod/Path/App/VoronoiPyImp.cpp b/src/Mod/CAM/App/VoronoiPyImp.cpp similarity index 100% rename from src/Mod/Path/App/VoronoiPyImp.cpp rename to src/Mod/CAM/App/VoronoiPyImp.cpp diff --git a/src/Mod/Path/App/VoronoiVertex.cpp b/src/Mod/CAM/App/VoronoiVertex.cpp similarity index 100% rename from src/Mod/Path/App/VoronoiVertex.cpp rename to src/Mod/CAM/App/VoronoiVertex.cpp diff --git a/src/Mod/Path/App/VoronoiVertex.h b/src/Mod/CAM/App/VoronoiVertex.h similarity index 100% rename from src/Mod/Path/App/VoronoiVertex.h rename to src/Mod/CAM/App/VoronoiVertex.h diff --git a/src/Mod/Path/App/VoronoiVertexPy.xml b/src/Mod/CAM/App/VoronoiVertexPy.xml similarity index 97% rename from src/Mod/Path/App/VoronoiVertexPy.xml rename to src/Mod/CAM/App/VoronoiVertexPy.xml index dc049bf0dd..a04cba6e1b 100644 --- a/src/Mod/Path/App/VoronoiVertexPy.xml +++ b/src/Mod/CAM/App/VoronoiVertexPy.xml @@ -6,7 +6,7 @@ PythonName="Path.Voronoi.Vertex" Twin="VoronoiVertex" TwinPointer="VoronoiVertex" - Include="Mod/Path/App/VoronoiVertex.h" + Include="Mod/CAM/App/VoronoiVertex.h" FatherInclude="Base/BaseClassPy.h" Namespace="Path" FatherNamespace="Base" diff --git a/src/Mod/Path/App/VoronoiVertexPyImp.cpp b/src/Mod/CAM/App/VoronoiVertexPyImp.cpp similarity index 100% rename from src/Mod/Path/App/VoronoiVertexPyImp.cpp rename to src/Mod/CAM/App/VoronoiVertexPyImp.cpp diff --git a/src/Mod/Path/CMakeLists.txt b/src/Mod/CAM/CMakeLists.txt similarity index 75% rename from src/Mod/Path/CMakeLists.txt rename to src/Mod/CAM/CMakeLists.txt index 89c3e736de..f60574ded5 100644 --- a/src/Mod/Path/CMakeLists.txt +++ b/src/Mod/CAM/CMakeLists.txt @@ -9,7 +9,7 @@ endif(BUILD_GUI) set(Path_Scripts Init.py PathCommands.py - TestPathApp.py + TestCAMApp.py ) if(BUILD_GUI) @@ -20,7 +20,7 @@ INSTALL( FILES ${Path_Scripts} DESTINATION - Mod/Path + Mod/CAM ) SET(PathPython_SRCS @@ -206,7 +206,6 @@ SET(PathPythonOpGui_SRCS Path/Op/Gui/Engrave.py Path/Op/Gui/FeatureExtension.py Path/Op/Gui/Helix.py - Path/Op/Gui/Hop.py Path/Op/Gui/MillFace.py Path/Op/Gui/Pocket.py Path/Op/Gui/PocketBase.py @@ -277,65 +276,65 @@ SET(Tools_Shape_SRCS Tools/Shape/v-bit.fcstd ) -SET(PathTests_SRCS - PathTests/__init__.py - PathTests/boxtest.fcstd - PathTests/boxtest1.fcstd - PathTests/Drilling_1.FCStd - PathTests/drill_test1.FCStd - PathTests/PathTestUtils.py - PathTests/test_adaptive.fcstd - PathTests/test_profile.fcstd - PathTests/test_centroid_00.ngc - PathTests/test_filenaming.fcstd - PathTests/test_geomop.fcstd - PathTests/test_holes00.fcstd - PathTests/TestCentroidPost.py - PathTests/TestGrblPost.py - PathTests/TestLinuxCNCPost.py - PathTests/TestMach3Mach4Post.py - PathTests/TestPathAdaptive.py - PathTests/TestPathCore.py - PathTests/TestPathDepthParams.py - PathTests/TestPathDressupDogbone.py - PathTests/TestPathDressupDogboneII.py - PathTests/TestPathDressupHoldingTags.py - PathTests/TestPathDrillGenerator.py - PathTests/TestPathDrillable.py - PathTests/TestPathGeneratorDogboneII.py - PathTests/TestPathGeom.py - PathTests/TestPathHelix.py - PathTests/TestPathHelpers.py - PathTests/TestPathHelixGenerator.py - PathTests/TestPathLanguage.py - PathTests/TestPathLog.py - PathTests/TestPathOpDeburr.py - PathTests/TestPathOpUtil.py - PathTests/TestPathPost.py - PathTests/TestPathPreferences.py - PathTests/TestPathProfile.py - PathTests/TestPathPropertyBag.py - PathTests/TestPathRotationGenerator.py - PathTests/TestPathSetupSheet.py - PathTests/TestPathStock.py - PathTests/TestPathToolChangeGenerator.py - PathTests/TestPathThreadMilling.py - PathTests/TestPathThreadMillingGenerator.py - PathTests/TestPathToolBit.py - PathTests/TestPathToolController.py - PathTests/TestPathUtil.py - PathTests/TestPathVcarve.py - PathTests/TestPathVoronoi.py - PathTests/TestRefactoredCentroidPost.py - PathTests/TestRefactoredGrblPost.py - PathTests/TestRefactoredLinuxCNCPost.py - PathTests/TestRefactoredMach3Mach4Post.py - PathTests/TestRefactoredTestPost.py - PathTests/TestRefactoredTestPostGCodes.py - PathTests/TestRefactoredTestPostMCodes.py - PathTests/Tools/Bit/test-path-tool-bit-bit-00.fctb - PathTests/Tools/Library/test-path-tool-bit-library-00.fctl - PathTests/Tools/Shape/test-path-tool-bit-shape-00.fcstd +SET(Tests_SRCS + Tests/__init__.py + Tests/boxtest.fcstd + Tests/boxtest1.fcstd + Tests/Drilling_1.FCStd + Tests/drill_test1.FCStd + Tests/PathTestUtils.py + Tests/test_adaptive.fcstd + Tests/test_profile.fcstd + Tests/test_centroid_00.ngc + Tests/test_filenaming.fcstd + Tests/test_geomop.fcstd + Tests/test_holes00.fcstd + Tests/TestCentroidPost.py + Tests/TestGrblPost.py + Tests/TestLinuxCNCPost.py + Tests/TestMach3Mach4Post.py + Tests/TestPathAdaptive.py + Tests/TestPathCore.py + Tests/TestPathDepthParams.py + Tests/TestPathDressupDogbone.py + Tests/TestPathDressupDogboneII.py + Tests/TestPathDressupHoldingTags.py + Tests/TestPathDrillGenerator.py + Tests/TestPathDrillable.py + Tests/TestPathGeneratorDogboneII.py + Tests/TestPathGeom.py + Tests/TestPathHelix.py + Tests/TestPathHelpers.py + Tests/TestPathHelixGenerator.py + Tests/TestPathLanguage.py + Tests/TestPathLog.py + Tests/TestPathOpDeburr.py + Tests/TestPathOpUtil.py + Tests/TestPathPost.py + Tests/TestPathPreferences.py + Tests/TestPathProfile.py + Tests/TestPathPropertyBag.py + Tests/TestPathRotationGenerator.py + Tests/TestPathSetupSheet.py + Tests/TestPathStock.py + Tests/TestPathToolChangeGenerator.py + Tests/TestPathThreadMilling.py + Tests/TestPathThreadMillingGenerator.py + Tests/TestPathToolBit.py + Tests/TestPathToolController.py + Tests/TestPathUtil.py + Tests/TestPathVcarve.py + Tests/TestPathVoronoi.py + Tests/TestRefactoredCentroidPost.py + Tests/TestRefactoredGrblPost.py + Tests/TestRefactoredLinuxCNCPost.py + Tests/TestRefactoredMach3Mach4Post.py + Tests/TestRefactoredTestPost.py + Tests/TestRefactoredTestPostGCodes.py + Tests/TestRefactoredTestPostMCodes.py + Tests/Tools/Bit/test-path-tool-bit-bit-00.fctb + Tests/Tools/Library/test-path-tool-bit-library-00.fctl + Tests/Tools/Shape/test-path-tool-bit-shape-00.fcstd ) SET(PathImages_Ops @@ -398,131 +397,131 @@ ADD_CUSTOM_TARGET(PathScripts ALL SET(test_files ${Path_Scripts} - ${PathTests_SRCS} + ${Tests_SRCS} ) -ADD_CUSTOM_TARGET(PathTests ALL +ADD_CUSTOM_TARGET(Tests ALL SOURCES ${test_files} ) -fc_copy_sources(PathScripts "${CMAKE_BINARY_DIR}/Mod/Path" ${all_files}) -fc_copy_sources(PathTests "${CMAKE_BINARY_DIR}/Mod/Path" ${test_files}) +fc_copy_sources(PathScripts "${CMAKE_BINARY_DIR}/Mod/CAM" ${all_files}) +fc_copy_sources(Tests "${CMAKE_BINARY_DIR}/Mod/CAM" ${test_files}) INSTALL( FILES ${PathScripts_SRCS} DESTINATION - Mod/Path/PathScripts + Mod/CAM/PathScripts ) INSTALL( FILES ${PathPython_SRCS} DESTINATION - Mod/Path/Path + Mod/CAM/Path ) INSTALL( FILES ${PathPythonBase_SRCS} DESTINATION - Mod/Path/Path/Base + Mod/CAM/Path/Base ) INSTALL( FILES ${PathPythonBaseGenerator_SRCS} DESTINATION - Mod/Path/Path/Base/Generator + Mod/CAM/Path/Base/Generator ) INSTALL( FILES ${PathPythonBaseGui_SRCS} DESTINATION - Mod/Path/Path/Base/Gui + Mod/CAM/Path/Base/Gui ) INSTALL( FILES ${PathPythonDressup_SRCS} DESTINATION - Mod/Path/Path/Dressup + Mod/CAM/Path/Dressup ) INSTALL( FILES ${PathPythonDressupGui_SRCS} DESTINATION - Mod/Path/Path/Dressup/Gui + Mod/CAM/Path/Dressup/Gui ) INSTALL( FILES ${PathPythonMain_SRCS} DESTINATION - Mod/Path/Path/Main + Mod/CAM/Path/Main ) INSTALL( FILES ${PathPythonMainGui_SRCS} DESTINATION - Mod/Path/Path/Main/Gui + Mod/CAM/Path/Main/Gui ) INSTALL( FILES ${PathPythonOp_SRCS} DESTINATION - Mod/Path/Path/Op + Mod/CAM/Path/Op ) INSTALL( FILES ${PathPythonOpGui_SRCS} DESTINATION - Mod/Path/Path/Op/Gui + Mod/CAM/Path/Op/Gui ) INSTALL( FILES ${PathPythonPost_SRCS} DESTINATION - Mod/Path/Path/Post + Mod/CAM/Path/Post ) INSTALL( FILES ${PathPythonPostScripts_SRCS} DESTINATION - Mod/Path/Path/Post/scripts + Mod/CAM/Path/Post/scripts ) INSTALL( FILES ${PathPythonTools_SRCS} DESTINATION - Mod/Path/Path/Tool + Mod/CAM/Path/Tool ) INSTALL( FILES ${PathPythonToolsGui_SRCS} DESTINATION - Mod/Path/Path/Tool/Gui + Mod/CAM/Path/Tool/Gui ) INSTALL( FILES - ${PathTests_SRCS} + ${Tests_SRCS} DESTINATION - Mod/Path/PathTests + Mod/CAM/Tests ) INSTALL( DIRECTORY - PathTests/Tools + Tests/Tools DESTINATION - Mod/Path/PathTests + Mod/CAM/Tests ) @@ -530,54 +529,54 @@ INSTALL( FILES ${PathPythonGui_SRCS} DESTINATION - Mod/Path/PathPythonGui + Mod/CAM/PathPythonGui ) INSTALL( FILES ${Tools_SRCS} DESTINATION - Mod/Path/Tools + Mod/CAM/Tools ) INSTALL( FILES ${Tools_Bit_SRCS} DESTINATION - Mod/Path/Tools/Bit + Mod/CAM/Tools/Bit ) INSTALL( FILES ${Tools_Library_SRCS} DESTINATION - Mod/Path/Tools/Library + Mod/CAM/Tools/Library ) INSTALL( FILES ${Tools_Shape_SRCS} DESTINATION - Mod/Path/Tools/Shape + Mod/CAM/Tools/Shape ) INSTALL( FILES ${PathImages_Ops} DESTINATION - Mod/Path/Images/Ops + Mod/CAM/Images/Ops ) INSTALL( FILES ${PathImages_Tools} DESTINATION - Mod/Path/Images/Tools + Mod/CAM/Images/Tools ) INSTALL( FILES ${PathData_Threads} DESTINATION - Mod/Path/Data/Threads + Mod/CAM/Data/Threads ) diff --git a/src/Mod/Path/Data/Threads/imperial-external-2A.csv b/src/Mod/CAM/Data/Threads/imperial-external-2A.csv similarity index 100% rename from src/Mod/Path/Data/Threads/imperial-external-2A.csv rename to src/Mod/CAM/Data/Threads/imperial-external-2A.csv diff --git a/src/Mod/Path/Data/Threads/imperial-external-3A.csv b/src/Mod/CAM/Data/Threads/imperial-external-3A.csv similarity index 100% rename from src/Mod/Path/Data/Threads/imperial-external-3A.csv rename to src/Mod/CAM/Data/Threads/imperial-external-3A.csv diff --git a/src/Mod/Path/Data/Threads/imperial-internal-2B.csv b/src/Mod/CAM/Data/Threads/imperial-internal-2B.csv similarity index 100% rename from src/Mod/Path/Data/Threads/imperial-internal-2B.csv rename to src/Mod/CAM/Data/Threads/imperial-internal-2B.csv diff --git a/src/Mod/Path/Data/Threads/imperial-internal-3B.csv b/src/Mod/CAM/Data/Threads/imperial-internal-3B.csv similarity index 100% rename from src/Mod/Path/Data/Threads/imperial-internal-3B.csv rename to src/Mod/CAM/Data/Threads/imperial-internal-3B.csv diff --git a/src/Mod/Path/Data/Threads/metric-external-4G6G.csv b/src/Mod/CAM/Data/Threads/metric-external-4G6G.csv similarity index 100% rename from src/Mod/Path/Data/Threads/metric-external-4G6G.csv rename to src/Mod/CAM/Data/Threads/metric-external-4G6G.csv diff --git a/src/Mod/Path/Data/Threads/metric-external-6G.csv b/src/Mod/CAM/Data/Threads/metric-external-6G.csv similarity index 100% rename from src/Mod/Path/Data/Threads/metric-external-6G.csv rename to src/Mod/CAM/Data/Threads/metric-external-6G.csv diff --git a/src/Mod/Path/Data/Threads/metric-internal-6H.csv b/src/Mod/CAM/Data/Threads/metric-internal-6H.csv similarity index 100% rename from src/Mod/Path/Data/Threads/metric-internal-6H.csv rename to src/Mod/CAM/Data/Threads/metric-internal-6H.csv diff --git a/src/Mod/Path/Data/Threads/sources.txt b/src/Mod/CAM/Data/Threads/sources.txt similarity index 100% rename from src/Mod/Path/Data/Threads/sources.txt rename to src/Mod/CAM/Data/Threads/sources.txt diff --git a/src/Mod/Path/DemoParts/hole_puzzle.fcstd b/src/Mod/CAM/DemoParts/hole_puzzle.fcstd similarity index 100% rename from src/Mod/Path/DemoParts/hole_puzzle.fcstd rename to src/Mod/CAM/DemoParts/hole_puzzle.fcstd diff --git a/src/Mod/Path/DemoParts/motor_mount_inch.fcstd b/src/Mod/CAM/DemoParts/motor_mount_inch.fcstd similarity index 100% rename from src/Mod/Path/DemoParts/motor_mount_inch.fcstd rename to src/Mod/CAM/DemoParts/motor_mount_inch.fcstd diff --git a/src/Mod/Path/DemoParts/strange_part_with_holes.fcstd b/src/Mod/CAM/DemoParts/strange_part_with_holes.fcstd similarity index 100% rename from src/Mod/Path/DemoParts/strange_part_with_holes.fcstd rename to src/Mod/CAM/DemoParts/strange_part_with_holes.fcstd diff --git a/src/Mod/Path/GCode-description.md b/src/Mod/CAM/GCode-description.md similarity index 100% rename from src/Mod/Path/GCode-description.md rename to src/Mod/CAM/GCode-description.md diff --git a/src/Mod/Path/Gui/AppPathGui.cpp b/src/Mod/CAM/Gui/AppPathGui.cpp similarity index 99% rename from src/Mod/Path/Gui/AppPathGui.cpp rename to src/Mod/CAM/Gui/AppPathGui.cpp index 8b3c0641c2..84dbb84a1c 100644 --- a/src/Mod/Path/Gui/AppPathGui.cpp +++ b/src/Mod/CAM/Gui/AppPathGui.cpp @@ -87,7 +87,7 @@ PyMOD_INIT_FUNC(PathGui) loadPathResource(); // register preferences pages - new Gui::PrefPageProducer (QT_TRANSLATE_NOOP("QObject","Path")); + new Gui::PrefPageProducer (QT_TRANSLATE_NOOP("QObject","CAM")); PyMOD_Return(mod); } diff --git a/src/Mod/Path/Gui/AppPathGuiPy.cpp b/src/Mod/CAM/Gui/AppPathGuiPy.cpp similarity index 98% rename from src/Mod/Path/Gui/AppPathGuiPy.cpp rename to src/Mod/CAM/Gui/AppPathGuiPy.cpp index ea49fdda68..e484c4ab80 100644 --- a/src/Mod/Path/Gui/AppPathGuiPy.cpp +++ b/src/Mod/CAM/Gui/AppPathGuiPy.cpp @@ -76,7 +76,7 @@ private: try { std::string path = App::Application::getHomePath(); - path += "Mod/Path/Path/Post/scripts/"; + path += "Mod/CAM/Path/Post/scripts/"; QDir dir1(QString::fromUtf8(path.c_str()), QString::fromLatin1("*_pre.py")); std::string cMacroPath = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro") ->GetASCII("MacroPath",App::Application::getUserMacroDir().c_str()); @@ -143,7 +143,7 @@ private: try { std::string path = App::Application::getHomePath(); - path += "Mod/Path/Path/Post/scripts/"; + path += "Mod/CAM/Path/Post/scripts/"; QDir dir1(QString::fromUtf8(path.c_str()), QString::fromLatin1("*_pre.py")); std::string cMacroPath = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro") ->GetASCII("MacroPath",App::Application::getUserMacroDir().c_str()); @@ -219,7 +219,7 @@ private: throw Py::RuntimeError("No object to export"); std::string path = App::Application::getHomePath(); - path += "Mod/Path/Path/Post/scripts/"; + path += "Mod/CAM/Path/Post/scripts/"; QDir dir1(QString::fromUtf8(path.c_str()), QString::fromLatin1("*_post.py")); std::string cMacroPath = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro") ->GetASCII("MacroPath",App::Application::getUserMacroDir().c_str()); diff --git a/src/Mod/Path/Gui/CMakeLists.txt b/src/Mod/CAM/Gui/CMakeLists.txt similarity index 94% rename from src/Mod/Path/Gui/CMakeLists.txt rename to src/Mod/CAM/Gui/CMakeLists.txt index 113722c393..bfa71d5079 100644 --- a/src/Mod/Path/Gui/CMakeLists.txt +++ b/src/Mod/CAM/Gui/CMakeLists.txt @@ -80,16 +80,16 @@ if(FREECAD_USE_PCH) endif(FREECAD_USE_PCH) SET(PathGuiIcon_SVG - Resources/icons/PathWorkbench.svg + Resources/icons/CAMWorkbench.svg ) add_library(PathGui SHARED ${PathGui_SRCS} ${PathGuiIcon_SVG}) target_link_libraries(PathGui ${PathGui_LIBS}) -SET_BIN_DIR(PathGui PathGui /Mod/Path) +SET_BIN_DIR(PathGui PathGui /Mod/CAM) SET_PYTHON_PREFIX_SUFFIX(PathGui) -fc_copy_sources(PathGui "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/Path" ${PathGuiIcon_SVG}) +fc_copy_sources(PathGui "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/CAM" ${PathGuiIcon_SVG}) INSTALL(TARGETS PathGui DESTINATION ${CMAKE_INSTALL_LIBDIR}) -INSTALL(FILES ${PathGuiIcon_SVG} DESTINATION "${CMAKE_INSTALL_DATADIR}/Mod/Path/Resources/icons") +INSTALL(FILES ${PathGuiIcon_SVG} DESTINATION "${CMAKE_INSTALL_DATADIR}/Mod/CAM/Resources/icons") diff --git a/src/Mod/Path/Gui/Command.cpp b/src/Mod/CAM/Gui/Command.cpp similarity index 95% rename from src/Mod/Path/Gui/Command.cpp rename to src/Mod/CAM/Gui/Command.cpp index 0af7ec5ef9..d31526b160 100644 --- a/src/Mod/Path/Gui/Command.cpp +++ b/src/Mod/CAM/Gui/Command.cpp @@ -31,8 +31,8 @@ #include #include #include -#include -#include +#include +#include // Path Area ##################################################################################################### @@ -40,15 +40,15 @@ DEF_STD_CMD_A(CmdPathArea) CmdPathArea::CmdPathArea() - :Command("Path_Area") + :Command("CAM_Area") { sAppModule = "Path"; sGroup = QT_TR_NOOP("Path"); sMenuText = QT_TR_NOOP("Area"); sToolTipText = QT_TR_NOOP("Creates a feature area from selected objects"); - sWhatsThis = "Path_Area"; + sWhatsThis = "CAM_Area"; sStatusTip = sToolTipText; - sPixmap = "Path_Area"; + sPixmap = "CAM_Area"; } void CmdPathArea::activated(int iMsg) @@ -122,15 +122,15 @@ bool CmdPathArea::isActive() DEF_STD_CMD_A(CmdPathAreaWorkplane) CmdPathAreaWorkplane::CmdPathAreaWorkplane() - :Command("Path_Area_Workplane") + :Command("CAM_Area_Workplane") { sAppModule = "Path"; sGroup = QT_TR_NOOP("Path"); sMenuText = QT_TR_NOOP("Area workplane"); sToolTipText = QT_TR_NOOP("Select a workplane for a FeatureArea"); - sWhatsThis = "Path_Area_Workplane"; + sWhatsThis = "CAM_Area_Workplane"; sStatusTip = sToolTipText; - sPixmap = "Path_Area_Workplane"; + sPixmap = "CAM_Area_Workplane"; } void CmdPathAreaWorkplane::activated(int iMsg) @@ -212,15 +212,15 @@ bool CmdPathAreaWorkplane::isActive() DEF_STD_CMD_A(CmdPathCompound) CmdPathCompound::CmdPathCompound() - :Command("Path_Compound") + :Command("CAM_Compound") { sAppModule = "Path"; sGroup = QT_TR_NOOP("Path"); sMenuText = QT_TR_NOOP("Compound"); - sToolTipText = QT_TR_NOOP("Creates a compound from selected paths"); - sWhatsThis = "Path_Compound"; + sToolTipText = QT_TR_NOOP("Creates a compound from selected toolpaths"); + sWhatsThis = "CAM_Compound"; sStatusTip = sToolTipText; - sPixmap = "Path_Compound"; + sPixmap = "CAM_Compound"; } void CmdPathCompound::activated(int iMsg) @@ -264,15 +264,15 @@ bool CmdPathCompound::isActive() DEF_STD_CMD_A(CmdPathShape) CmdPathShape::CmdPathShape() - :Command("Path_Shape") + :Command("CAM_Shape") { sAppModule = "Path"; sGroup = QT_TR_NOOP("Path"); sMenuText = QT_TR_NOOP("From Shape"); - sToolTipText = QT_TR_NOOP("Creates a path from a selected shape"); - sWhatsThis = "Path_Shape"; + sToolTipText = QT_TR_NOOP("Creates a toolpath from a selected shape"); + sWhatsThis = "CAM_Shape"; sStatusTip = sToolTipText; - sPixmap = "Path_Shape"; + sPixmap = "CAM_Shape"; } void CmdPathShape::activated(int iMsg) diff --git a/src/Mod/Path/Gui/DlgJobChooser.ui b/src/Mod/CAM/Gui/DlgJobChooser.ui similarity index 100% rename from src/Mod/Path/Gui/DlgJobChooser.ui rename to src/Mod/CAM/Gui/DlgJobChooser.ui diff --git a/src/Mod/Path/Gui/DlgProcessorChooser.cpp b/src/Mod/CAM/Gui/DlgProcessorChooser.cpp similarity index 100% rename from src/Mod/Path/Gui/DlgProcessorChooser.cpp rename to src/Mod/CAM/Gui/DlgProcessorChooser.cpp diff --git a/src/Mod/Path/Gui/DlgProcessorChooser.h b/src/Mod/CAM/Gui/DlgProcessorChooser.h similarity index 100% rename from src/Mod/Path/Gui/DlgProcessorChooser.h rename to src/Mod/CAM/Gui/DlgProcessorChooser.h diff --git a/src/Mod/Path/Gui/DlgProcessorChooser.ui b/src/Mod/CAM/Gui/DlgProcessorChooser.ui similarity index 100% rename from src/Mod/Path/Gui/DlgProcessorChooser.ui rename to src/Mod/CAM/Gui/DlgProcessorChooser.ui diff --git a/src/Mod/Path/Gui/DlgSettingsPathColor.cpp b/src/Mod/CAM/Gui/DlgSettingsPathColor.cpp similarity index 100% rename from src/Mod/Path/Gui/DlgSettingsPathColor.cpp rename to src/Mod/CAM/Gui/DlgSettingsPathColor.cpp diff --git a/src/Mod/Path/Gui/DlgSettingsPathColor.h b/src/Mod/CAM/Gui/DlgSettingsPathColor.h similarity index 100% rename from src/Mod/Path/Gui/DlgSettingsPathColor.h rename to src/Mod/CAM/Gui/DlgSettingsPathColor.h diff --git a/src/Mod/Path/Gui/DlgSettingsPathColor.ui b/src/Mod/CAM/Gui/DlgSettingsPathColor.ui similarity index 97% rename from src/Mod/Path/Gui/DlgSettingsPathColor.ui rename to src/Mod/CAM/Gui/DlgSettingsPathColor.ui index a43fc80a68..390d36b78e 100644 --- a/src/Mod/Path/Gui/DlgSettingsPathColor.ui +++ b/src/Mod/CAM/Gui/DlgSettingsPathColor.ui @@ -41,7 +41,7 @@ DefaultPathLineWidth - Mod/Path + Mod/CAM @@ -87,7 +87,7 @@ DefaultBBoxNormalColor - Mod/Path + Mod/CAM @@ -120,7 +120,7 @@ DefaultNormalPathColor - Mod/Path + Mod/CAM @@ -140,7 +140,7 @@ DefaultRapidPathColor - Mod/Path + Mod/CAM @@ -186,7 +186,7 @@ DefaultHighlightPathColor - Mod/Path + Mod/CAM @@ -232,7 +232,7 @@ DefaultPathMarkerColor - Mod/Path + Mod/CAM @@ -265,7 +265,7 @@ DefaultProbePathColor - Mod/Path + Mod/CAM @@ -285,7 +285,7 @@ DefaultBBoxSelectionColor - Mod/Path + Mod/CAM @@ -329,7 +329,7 @@ DefaultSelectionStyle - Mod/Path + Mod/CAM @@ -361,7 +361,7 @@ DefaultTaskPanelLayout - Mod/Path + Mod/CAM diff --git a/src/Mod/Path/Gui/PreCompiled.cpp b/src/Mod/CAM/Gui/PreCompiled.cpp similarity index 100% rename from src/Mod/Path/Gui/PreCompiled.cpp rename to src/Mod/CAM/Gui/PreCompiled.cpp diff --git a/src/Mod/Path/Gui/PreCompiled.h b/src/Mod/CAM/Gui/PreCompiled.h similarity index 100% rename from src/Mod/Path/Gui/PreCompiled.h rename to src/Mod/CAM/Gui/PreCompiled.h diff --git a/src/Mod/CAM/Gui/Resources/Path.qrc b/src/Mod/CAM/Gui/Resources/Path.qrc new file mode 100644 index 0000000000..1f57b53a6e --- /dev/null +++ b/src/Mod/CAM/Gui/Resources/Path.qrc @@ -0,0 +1,129 @@ + + + icons/CAM_Adaptive.svg + icons/CAM_3DPocket.svg + icons/CAM_3DSurface.svg + icons/CAM_Area_View.svg + icons/CAM_Area_Workplane.svg + icons/CAM_Area.svg + icons/CAM_Array.svg + icons/CAM_BFastForward.svg + icons/CAM_BPause.svg + icons/CAM_BPlay.svg + icons/CAM_BStep.svg + icons/CAM_BStop.svg + icons/CAM_BaseGeometry.svg + icons/CAM_Camotics.svg + icons/CAM_Comment.svg + icons/CAM_Compound.svg + icons/CAM_Copy.svg + icons/CAM_Custom.svg + icons/CAM_Datums.svg + icons/CAM_Deburr.svg + icons/CAM_Depths.svg + icons/CAM_Dressup.svg + icons/CAM_Drilling.svg + icons/CAM_Engrave.svg + icons/CAM_ExportTemplate.svg + icons/CAM_Face.svg + icons/CAM_FacePocket.svg + icons/CAM_FaceProfile.svg + icons/CAM_Heights.svg + icons/CAM_Helix.svg + icons/CAM_Inspect.svg + icons/CAM_Job.svg + icons/CAM_LengthOffset.svg + icons/CAM_OpActive.svg + icons/CAM_OpCopy.svg + icons/CAM_OperationA.svg + icons/CAM_OperationB.svg + icons/CAM_Pocket.svg + icons/CAM_Post.svg + icons/CAM_Probe.svg + icons/CAM_Profile_Edges.svg + icons/CAM_Profile_Face.svg + icons/CAM_Profile.svg + icons/CAM_Sanity.svg + icons/CAM_SelectLoop.svg + icons/CAM_SetupSheet.svg + icons/CAM_Shape.svg + icons/CAM_SimpleCopy.svg + icons/CAM_Simulator.svg + icons/CAM_Slot.svg + icons/CAM_Stop.svg + icons/CAM_ThreadMilling.svg + icons/CAM_ToolBit.svg + icons/CAM_ToolChange.svg + icons/CAM_ToolController.svg + icons/CAM_ToolDuplicate.svg + icons/CAM_Toolpath.svg + icons/CAM_ToolTable.svg + icons/CAM_Vcarve.svg + icons/CAM_Waterline.svg + icons/arrow-ccw.svg + icons/arrow-cw.svg + icons/arrow-down.svg + icons/arrow-left-down.svg + icons/arrow-left-up.svg + icons/arrow-left.svg + icons/arrow-right-down.svg + icons/arrow-right-up.svg + icons/arrow-right.svg + icons/arrow-up.svg + icons/edge-join-miter-not.svg + icons/edge-join-miter.svg + icons/edge-join-round-not.svg + icons/edge-join-round.svg + icons/preferences-cam.svg + panels/AxisMapEdit.ui + panels/DlgJobCreate.ui + panels/DlgJobModelSelect.ui + panels/DlgJobTemplateExport.ui + panels/DlgSelectPostProcessor.ui + panels/DlgTCChooser.ui + panels/DlgToolControllerEdit.ui + panels/DlgToolCopy.ui + panels/DlgToolEdit.ui + panels/DogboneEdit.ui + panels/DressupPathBoundary.ui + panels/DragKnifeEdit.ui + panels/DressUpLeadInOutEdit.ui + panels/HoldingTagsEdit.ui + panels/PageBaseGeometryEdit.ui + panels/PageBaseHoleGeometryEdit.ui + panels/PageBaseLocationEdit.ui + panels/PageDepthsEdit.ui + panels/PageDiametersEdit.ui + panels/PageHeightsEdit.ui + panels/PageOpAdaptiveEdit.ui + panels/PageOpCustomEdit.ui + panels/PageOpDeburrEdit.ui + panels/PageOpDrillingEdit.ui + panels/PageOpEngraveEdit.ui + panels/PageOpHelixEdit.ui + panels/PageOpPocketExtEdit.ui + panels/PageOpPocketFullEdit.ui + panels/PageOpProbeEdit.ui + panels/PageOpProfileFullEdit.ui + panels/PageOpSlotEdit.ui + panels/PageOpSurfaceEdit.ui + panels/PageOpThreadMillingEdit.ui + panels/PageOpWaterlineEdit.ui + panels/PageOpVcarveEdit.ui + panels/PathEdit.ui + panels/PointEdit.ui + panels/PropertyBag.ui + panels/PropertyCreate.ui + panels/SetupGlobal.ui + panels/SetupOp.ui + panels/ToolBitEditor.ui + panels/ToolBitLibraryEdit.ui + panels/ToolBitSelector.ui + panels/TaskPathCamoticsSim.ui + panels/TaskPathSimulator.ui + panels/ZCorrectEdit.ui + preferences/Advanced.ui + preferences/PathDressupHoldingTags.ui + preferences/PathJob.ui + + diff --git a/src/Mod/Path/Gui/Resources/icons/PathWorkbench.svg b/src/Mod/CAM/Gui/Resources/icons/CAMWorkbench.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/PathWorkbench.svg rename to src/Mod/CAM/Gui/Resources/icons/CAMWorkbench.svg index 3870d468ee..714280eb8c 100644 --- a/src/Mod/Path/Gui/Resources/icons/PathWorkbench.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAMWorkbench.svg @@ -355,7 +355,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/PathWorkbench.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/PathWorkbench.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_3DPocket.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_3DPocket.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_3DPocket.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_3DPocket.svg index 9dc00eac2a..f9d0e005ad 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_3DPocket.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_3DPocket.svg @@ -14,7 +14,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="Path_3DPocket.svg"> + sodipodi:docname="CAM_3DPocket.svg"> - Path_3DSurface + CAM_3DSurface 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -197,7 +197,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_3DSurface.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_3DSurface.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_3DSurface.svg index f5e6518bc1..f9c19b9615 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_3DSurface.svg @@ -1,5 +1,5 @@ - + @@ -47,7 +47,7 @@ image/svg+xml - Path_3DSurface + CAM_3DSurface 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -55,7 +55,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_3DSurface.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Adaptive.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Adaptive.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Adaptive.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Adaptive.svg index 22d6e7ee52..8eb864ce67 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Adaptive.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Adaptive.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path_Adaptive.svg"> + sodipodi:docname="CAM_Adaptive.svg"> - Path_FaceProfile + CAM_Adaptive 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -583,7 +583,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Area.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Area.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Area.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Area.svg index 3fba657bc6..1ac79d83e0 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Area.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Area.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path_Area.svg"> + sodipodi:docname="CAM_Area.svg"> - Path_FaceProfile + CAM_Area 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -595,7 +595,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Area_View.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Area_View.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Area_View.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Area_View.svg index ec6d9028ae..385a501022 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Area_View.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Area_View.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path_Area_View.svg"> + sodipodi:docname="CAM_Area_View.svg"> - Path_FaceProfile + CAM_Area_View 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -595,7 +595,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Area_Workplane.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Area_Workplane.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Area_Workplane.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Area_Workplane.svg index e5ecd91b06..9b6f1dd2d2 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Area_Workplane.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Area_Workplane.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path_Area_Workplane.svg"> + sodipodi:docname="CAM_Area_Workplane.svg"> - Path_FaceProfile + CAM_Area_Workplane 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -617,7 +617,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Array.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Array.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Array.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Array.svg index f9449f422c..86d33636f3 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Array.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Array.svg @@ -1,6 +1,6 @@ - + @@ -111,7 +111,7 @@ image/svg+xml - Path_Array + CAM_Array 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -119,7 +119,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Array.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Array.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_BFastForward.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_BFastForward.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path_BFastForward.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_BFastForward.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path_BPause.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_BPause.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path_BPause.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_BPause.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path_BPlay.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_BPlay.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path_BPlay.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_BPlay.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path_BStep.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_BStep.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path_BStep.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_BStep.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path_BStop.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_BStop.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path_BStop.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_BStop.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_BaseGeometry.svg similarity index 95% rename from src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_BaseGeometry.svg index e015f6b9b2..7b5444d2dc 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_BaseGeometry.svg @@ -1,5 +1,5 @@ - + @@ -21,7 +21,7 @@ image/svg+xml - Path_BaseGeometry + CAM_BaseGeometry 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -29,7 +29,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_BaseGeometry.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Camotics.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Camotics.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Camotics.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Camotics.svg index 473e5a99a4..0d07bd55be 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Camotics.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Camotics.svg @@ -8,7 +8,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - sodipodi:docname="Path_Camotics.svg" + sodipodi:docname="CAM_Camotics.svg" inkscape:version="0.92.3 (2405546, 2018-03-11)" version="1.1" id="svg2816" @@ -576,7 +576,7 @@ - Path_Drilling + CAM_Camotics 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -584,7 +584,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Camotics.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Comment.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Comment.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_Comment.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Comment.svg index 0fb296ad34..0ff607852d 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Comment.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Comment.svg @@ -1,6 +1,6 @@ - + @@ -105,7 +105,7 @@ image/svg+xml - Path_Comment + CAM_Comment 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -113,7 +113,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Comment.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Comment.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Compound.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Compound.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Compound.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Compound.svg index e6ab1ada00..7a3eb12c3c 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Compound.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Compound.svg @@ -1,6 +1,6 @@ - + @@ -154,7 +154,7 @@ image/svg+xml - Path_Compound + CAM_Compound 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -162,7 +162,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Compound.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Compound.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Copy.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Copy.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Copy.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Copy.svg index f5fd853d51..49eb262541 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Copy.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Copy.svg @@ -1,6 +1,6 @@ - + @@ -124,7 +124,7 @@ image/svg+xml - Path_Copy + CAM_Copy 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -132,7 +132,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Copy.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Copy.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Custom.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Custom.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Custom.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Custom.svg index dfa927d511..85979b0084 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Custom.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Custom.svg @@ -1,6 +1,6 @@ - + @@ -94,7 +94,7 @@ image/svg+xml - Path_Custom + CAM_Custom 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -102,7 +102,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Custom.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Custom.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Datums.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Datums.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_Datums.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Datums.svg index a1e1bd648b..3b0ca7952d 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Datums.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Datums.svg @@ -1,6 +1,6 @@ - + @@ -48,7 +48,7 @@ image/svg+xml - Path_Datums + CAM_Datums 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -56,7 +56,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Datums.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Datums.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Deburr.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Deburr.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Deburr.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Deburr.svg index 988878a8b4..0b2d104463 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Deburr.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Deburr.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.3 (2405546, 2018-03-11)" - sodipodi:docname="Path_Deburr.svg"> + sodipodi:docname="CAM_Deburr.svg"> - Path_Drilling + CAM_Deburr 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -604,7 +604,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Deburr.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Depths.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Depths.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path_Depths.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Depths.svg index 14f09790d7..00ca3a10cc 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Depths.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Depths.svg @@ -1,5 +1,5 @@ - + @@ -46,7 +46,7 @@ image/svg+xml - Path_Depths + CAM_Depths 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -54,7 +54,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Depths.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Depths.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Dressup.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Dressup.svg index e09798b303..a92b64f1b6 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Dressup.svg @@ -1,6 +1,6 @@ - + @@ -130,7 +130,7 @@ image/svg+xml - Path_Dressup + CAM_Dressup 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -138,7 +138,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Dressup.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Drilling.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Drilling.svg index 96f8d822a9..0756431bfc 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Drilling.svg @@ -1,6 +1,6 @@ - + @@ -111,7 +111,7 @@ image/svg+xml - Path_Drilling + CAM_Drilling 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -119,7 +119,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Drilling.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Engrave.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Engrave.svg index 13a3248040..ebefdf959f 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Engrave.svg @@ -1,6 +1,6 @@ - + @@ -112,7 +112,7 @@ image/svg+xml - Path_Engrave + CAM_Engrave 2016-02-24 https://www.freecad.org/wiki/index.php?title=Artwork @@ -120,7 +120,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Engrave.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ExportTemplate.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_ExportTemplate.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_ExportTemplate.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_ExportTemplate.svg index eef71f0aca..a024c78591 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_ExportTemplate.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_ExportTemplate.svg @@ -16,7 +16,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="Path_ExportTemplate.svg"> + sodipodi:docname="CAM_ExportTemplate.svg"> - Path_Job + CAM_ExportTemplate 2016-06-27 https://www.freecad.org/wiki/index.php?title=Artwork @@ -1089,7 +1089,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Job.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ExportTemplate.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Face.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Face.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Face.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Face.svg index bf9c0ce5af..e08a357f4d 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Face.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Face.svg @@ -1,6 +1,6 @@ - + @@ -166,7 +166,7 @@ image/svg+xml - Path_Face + CAM_Face 2016-11-07 https://www.freecad.org/wiki/index.php?title=Artwork @@ -174,7 +174,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_FacePocket.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_FacePocket.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_FacePocket.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_FacePocket.svg index 845e31078b..05103cd79c 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_FacePocket.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_FacePocket.svg @@ -1,6 +1,6 @@ - + @@ -117,7 +117,7 @@ image/svg+xml - Path_FacePocket + CAM_FacePocket 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -125,7 +125,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_FaceProfile.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_FaceProfile.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_FaceProfile.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_FaceProfile.svg index a2b1ac5d5c..43fd932553 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_FaceProfile.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_FaceProfile.svg @@ -1,6 +1,6 @@ - + @@ -117,7 +117,7 @@ image/svg+xml - Path_FaceProfile + CAM_FaceProfile 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -125,7 +125,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Heights.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Heights.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path_Heights.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Heights.svg index e36311f607..6e64c78fc3 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Heights.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Heights.svg @@ -1,5 +1,5 @@ - + @@ -31,7 +31,7 @@ image/svg+xml - Path_Heights + CAM_Heights 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -39,7 +39,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Heights.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Heights.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Helix.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Helix.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Helix.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Helix.svg index a8b00c64cb..c67cfcf23e 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Helix.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Helix.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="Path_Helix.svg" + sodipodi:docname="CAM_Helix.svg" inkscape:export-filename="C:\Users\Alex Gryson\Desktop\Path-Helix_64.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> @@ -1399,7 +1399,7 @@ [Lorenz Hüdepohl] - Path_Helix + CAM_Helix 2016-05-10 https://www.freecad.org/wiki/index.php?title=Artwork @@ -1407,7 +1407,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Helix.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Helix.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_InactiveOp.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_InactiveOp.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_InactiveOp.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_InactiveOp.svg index 8cd142bff8..a310c24c63 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_InactiveOp.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_InactiveOp.svg @@ -15,7 +15,7 @@ id="svg2726" sodipodi:version="0.32" inkscape:version="0.91 r13725" - sodipodi:docname="Path_InactiveOp.svg" + sodipodi:docname="CAM_InactiveOp.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> ellipsis - Path_OperationA + CAM_OperationA https://www.gnu.org/copyleft/lesser.html diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Inspect.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Inspect.svg index d60819ac89..0c6f17df15 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Inspect.svg @@ -1,6 +1,6 @@ - + @@ -190,7 +190,7 @@ image/svg+xml - Path_Inspect + CAM_Inspect 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -198,7 +198,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Inspect.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Job.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Job.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Job.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Job.svg index 9a458e2360..27f2d06a3e 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Job.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Job.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="Path_Job.svg"> + sodipodi:docname="CAM_Job.svg"> - Path_Job + CAM_Job 2016-06-27 https://www.freecad.org/wiki/index.php?title=Artwork @@ -1129,7 +1129,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Job.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Job.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_LengthOffset.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_LengthOffset.svg index 85a963040e..eb056b49e1 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_LengthOffset.svg @@ -1,6 +1,6 @@ - + @@ -97,7 +97,7 @@ image/svg+xml - Path_LengthOffset + CAM_LengthOffset 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -105,7 +105,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_LengthOffset.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Machine.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Machine.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Machine.svg index 0e676877c2..441c300927 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Machine.svg @@ -1,6 +1,6 @@ - + @@ -118,7 +118,7 @@ image/svg+xml - Path_Machine + CAM_Machine 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -126,7 +126,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Machine.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_MachineLathe.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_MachineLathe.svg index 8e0306ff5b..f7f6733232 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_MachineLathe.svg @@ -1,5 +1,5 @@ - + @@ -61,7 +61,7 @@ image/svg+xml - Path_MachineLathe + CAM_MachineLathe 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -69,7 +69,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_MachineLathe.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_MachineMill.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_MachineMill.svg index 9d05f2ad9d..3c53f413f6 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_MachineMill.svg @@ -1,5 +1,5 @@ - + @@ -38,7 +38,7 @@ image/svg+xml - Path_MachineMill + CAM_MachineMill 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -46,7 +46,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_MachineMill.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Machine_test1.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Machine_test1.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Machine_test1.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Machine_test1.svg index 737400293a..4b37ded5ae 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Machine_test1.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Machine_test1.svg @@ -1,6 +1,6 @@ - + @@ -136,7 +136,7 @@ image/svg+xml - Path_Machine_test1 + CAM_Machine_test1 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -144,7 +144,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Machine_test1.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Machine_test1.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_OpActive.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_OpActive.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_OpActive.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_OpActive.svg index 4c841afcb7..4f2bee8769 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_OpActive.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_OpActive.svg @@ -15,7 +15,7 @@ id="svg2726" sodipodi:version="0.32" inkscape:version="0.91 r13725" - sodipodi:docname="Path_OpActive.svg" + sodipodi:docname="CAM_OpActive.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> ellipsis - Path_OperationA + CAM_OperationA https://www.gnu.org/copyleft/lesser.html diff --git a/src/Mod/Path/Gui/Resources/icons/Path_OpCopy.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_OpCopy.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_OpCopy.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_OpCopy.svg index a96da1451a..2a3479cef2 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_OpCopy.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_OpCopy.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path_OpCopy.svg"> + sodipodi:docname="CAM_OpCopy.svg"> - Path_FaceProfile + CAM_OpCopy 2016-01-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -613,7 +613,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_OperationA.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_OperationA.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_OperationA.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_OperationA.svg index a18b6452ba..af876a0c59 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_OperationA.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_OperationA.svg @@ -139,7 +139,7 @@ ellipsis - Path_OperationA + CAM_OperationA https://www.gnu.org/copyleft/lesser.html diff --git a/src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_OperationB.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_OperationB.svg index f42344864b..afd8232b7f 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_OperationB.svg @@ -1,5 +1,5 @@ - + @@ -58,7 +58,7 @@ image/svg+xml - Path_OperationB + CAM_OperationB 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -66,7 +66,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_OperationB.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Pocket.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Pocket.svg index 9b147f6b78..7299e0b1bb 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Pocket.svg @@ -1,6 +1,6 @@ - + @@ -125,7 +125,7 @@ image/svg+xml - Path_Pocket + CAM_Pocket 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -133,7 +133,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Pocket.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Post.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Post.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Post.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Post.svg index 25fb4de91d..3db66463c2 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Post.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Post.svg @@ -1,6 +1,6 @@ - + @@ -209,7 +209,7 @@ image/svg+xml - Path_Job + CAM_Post 2016-06-27 https://www.freecad.org/wiki/index.php?title=Artwork @@ -217,7 +217,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Job.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Post.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Probe.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Probe.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Probe.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Probe.svg index 6a2d992780..b8304c163d 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Probe.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Probe.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path_Probe.svg"> + sodipodi:docname="CAM_Probe.svg"> - Path_Drilling + CAM_Probe 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -585,7 +585,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Probe.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Profile.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Profile.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Profile.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Profile.svg index c965e5a122..5ef63b5fa2 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Profile.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Profile.svg @@ -1,6 +1,6 @@ - + @@ -138,7 +138,7 @@ image/svg+xml - Path_Profile + CAM_Profile 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -146,7 +146,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Profile.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Profile.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Profile_Edges.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Edges.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Profile_Edges.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Edges.svg index 2be223b0be..047910fb89 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Profile_Edges.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Edges.svg @@ -1,6 +1,6 @@ - + @@ -143,7 +143,7 @@ image/svg+xml - Path_Profile_Edges + CAM_Profile_Edges_Edges 2016-10-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -151,7 +151,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Profile_Edges.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Edges_Edges.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Profile_Face.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Face.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Profile_Face.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Face.svg index 301235c2a6..9c0ee85866 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Profile_Face.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Face.svg @@ -1,6 +1,6 @@ - + @@ -138,7 +138,7 @@ image/svg+xml - Path_Profile_Face + CAM_Profile_Face_Face 2016-10-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -146,7 +146,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Profile_ + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Profile_Face_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Sanity.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Sanity.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_Sanity.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Sanity.svg index 380a7c6d64..05b2b5d220 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Sanity.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Sanity.svg @@ -1,14 +1,14 @@ - + image/svg+xml - Path_Sanity - 2016-05-15https://www.freecad.org/wiki/index.php?title=ArtworkFreeCADFreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Sanity.svgFreeCAD LGPL2+https://www.gnu.org/copyleft/lesser.html[agryson] Alexander Gryson + CAM_Sanity + 2016-05-15https://www.freecad.org/wiki/index.php?title=ArtworkFreeCADFreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Sanity.svgFreeCAD LGPL2+https://www.gnu.org/copyleft/lesser.html[agryson] Alexander Gryson diff --git a/src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_SelectLoop.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_SelectLoop.svg index ffd12f17f6..4fa1dd201a 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_SelectLoop.svg @@ -1,6 +1,6 @@ - + @@ -109,7 +109,7 @@ image/svg+xml - Path_SelectLoop + CAM_SelectLoop 2016-10-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -117,7 +117,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_SelectLoop.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_SetupSheet.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_SetupSheet.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path_SetupSheet.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_SetupSheet.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Shape.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Shape.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Shape.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Shape.svg index 1c6fa01fb8..b9e8325f18 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Shape.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Shape.svg @@ -1,6 +1,6 @@ - + @@ -118,7 +118,7 @@ image/svg+xml - Path_Shape + CAM_Shape 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -126,7 +126,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Shape.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Shape.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_SimpleCopy.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_SimpleCopy.svg index bf9422b562..dae43dfb0d 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_SimpleCopy.svg @@ -1,6 +1,6 @@ - + @@ -114,7 +114,7 @@ image/svg+xml - Path_SimpleCopy + CAM_SimpleCopy 2016-01-23 https://www.freecad.org/wiki/index.php?title=Artwork @@ -122,7 +122,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_SimpleCopy.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Simulator.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Simulator.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Simulator.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Simulator.svg index dc5145cd8b..ca2c9ad092 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Simulator.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Simulator.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.1 r15371" - sodipodi:docname="Path_Simulator.svg"> + sodipodi:docname="CAM_Simulator.svg"> - Path_Machine + CAM_Machine 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -1291,7 +1291,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Machine.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Slot.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Slot.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Slot.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Slot.svg index 8b4d832743..484174384a 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Slot.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Slot.svg @@ -8,7 +8,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - sodipodi:docname="Path_Slot.svg" + sodipodi:docname="CAM_Slot.svg" inkscape:version="1.0 (4035a4fb49, 2020-05-01)" version="1.1" id="svg2816" @@ -624,7 +624,7 @@ - Path_Drilling + CAM_Slot 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -632,7 +632,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Slot.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Speed.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Speed.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path_Speed.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Speed.svg index beffb62419..192050d971 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Speed.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Speed.svg @@ -1,5 +1,5 @@ - + @@ -43,7 +43,7 @@ image/svg+xml - Path_Speed + CAM_Speed 2016-05-15 https://www.freecad.org/wiki/index.php?title=Artwork @@ -51,7 +51,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Speed.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Speed.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Stop.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Stop.svg similarity index 95% rename from src/Mod/Path/Gui/Resources/icons/Path_Stop.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Stop.svg index 8fabf03d09..c874f4a613 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Stop.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Stop.svg @@ -1,6 +1,6 @@ - + @@ -17,7 +17,7 @@ image/svg+xml - Path_Stop + CAM_Stop 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -25,7 +25,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Stop.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Stop.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Tags.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Tags.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Tags.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Tags.svg index 1602e29312..2be202f328 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Tags.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Tags.svg @@ -1,6 +1,6 @@ - + @@ -123,7 +123,7 @@ image/svg+xml - Path_Tags + CAM_Tags 2016-02-24 https://www.freecad.org/wiki/index.php?title=Artwork @@ -131,7 +131,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Tags.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Tags.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ThreadMilling.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_ThreadMilling.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_ThreadMilling.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_ThreadMilling.svg index 675e0b8439..4e2496b6d6 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_ThreadMilling.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_ThreadMilling.svg @@ -1453,7 +1453,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Helix.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/Path-Helix.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ToolBit.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolBit.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_ToolBit.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_ToolBit.svg index 57ef1414d5..75a95ae19e 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_ToolBit.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolBit.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.4 (5da689c313, 2019-01-14)" - sodipodi:docname="Path_Tool.svg"> + sodipodi:docname="CAM_Tool.svg"> - Path_ToolTable + CAM_ToolTable 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -874,7 +874,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ToolTable.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolChange.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_ToolChange.svg index d0c39e1707..0d72e029e7 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolChange.svg @@ -1,6 +1,6 @@ - + @@ -151,7 +151,7 @@ image/svg+xml - Path_ToolChange + CAM_ToolChange 2016-01-20 https://www.freecad.org/wiki/index.php?title=Artwork @@ -159,7 +159,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ToolChange.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ToolController.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolController.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path_ToolController.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_ToolController.svg index b080462474..7f9914dbef 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_ToolController.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolController.svg @@ -1,6 +1,6 @@ - + @@ -113,7 +113,7 @@ image/svg+xml - Path_LoadTool + CAM_LoadTool 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -121,7 +121,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_LoadTool.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_LoadTool.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ToolDuplicate.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolDuplicate.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_ToolDuplicate.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_ToolDuplicate.svg index 7aab66612a..a1f3ad3bc5 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_ToolDuplicate.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolDuplicate.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.4 (5da689c313, 2019-01-14)" - sodipodi:docname="Path_ToolDuplicate.svg"> + sodipodi:docname="CAM_ToolDuplicate.svg"> - Path_ToolChange + CAM_ToolChange 2016-01-20 https://www.freecad.org/wiki/index.php?title=Artwork @@ -745,7 +745,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ToolChange.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolTable.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_ToolTable.svg index dd3eee79a8..8f3d56967b 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_ToolTable.svg @@ -1,6 +1,6 @@ - + @@ -174,7 +174,7 @@ image/svg+xml - Path_ToolTable + CAM_ToolTable 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -182,7 +182,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_ToolTable.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Toolpath.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Toolpath.svg index 0e460f3e1e..218877f5a9 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Toolpath.svg @@ -1,6 +1,6 @@ - + @@ -116,7 +116,7 @@ image/svg+xml - Path_Toolpath + CAM_Toolpath 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -124,7 +124,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Toolpath.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Vcarve.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Vcarve.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path_Vcarve.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Vcarve.svg index f27a178e55..0f269e8db0 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Vcarve.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Vcarve.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.3 (2405546, 2018-03-11)" - sodipodi:docname="Path_Vcarve.svg"> + sodipodi:docname="CAM_Vcarve.svg"> - Path_Engrave + CAM_Vcarve 2016-02-24 https://www.freecad.org/wiki/index.php?title=Artwork @@ -604,7 +604,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Vcarve.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg b/src/Mod/CAM/Gui/Resources/icons/CAM_Waterline.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg rename to src/Mod/CAM/Gui/Resources/icons/CAM_Waterline.svg index 6fbb95ac15..8a0c496289 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg +++ b/src/Mod/CAM/Gui/Resources/icons/CAM_Waterline.svg @@ -14,9 +14,9 @@ id="svg2816" version="1.1" inkscape:version="0.92.4 (5da689c313, 2019-01-14)" - sodipodi:docname="Path_Waterline.svg"> + sodipodi:docname="CAM_Waterline.svg"> Path_Waterline + id="title165">CAM_Waterline image/svg+xml - Path_Waterline - Path_Waterline + CAM_Waterline + CAM_Waterline 2019-05-19 https://www.freecad.org/wiki/index.php?title=Artwork @@ -184,7 +184,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Waterline.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-ccw.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-ccw.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-ccw.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-ccw.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-cw.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-cw.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-cw.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-cw.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-down.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-down.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-down.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-down.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-left-down.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-left-down.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-left-down.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-left-down.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-left-up.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-left-up.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-left-up.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-left-up.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-left.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-left.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-left.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-left.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-right-down.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-right-down.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-right-down.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-right-down.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-right-up.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-right-up.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-right-up.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-right-up.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-right.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-right.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-right.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-right.svg diff --git a/src/Mod/Path/Gui/Resources/icons/arrow-up.svg b/src/Mod/CAM/Gui/Resources/icons/arrow-up.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/arrow-up.svg rename to src/Mod/CAM/Gui/Resources/icons/arrow-up.svg diff --git a/src/Mod/Path/Gui/Resources/icons/camotics-logo.png b/src/Mod/CAM/Gui/Resources/icons/camotics-logo.png similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/camotics-logo.png rename to src/Mod/CAM/Gui/Resources/icons/camotics-logo.png diff --git a/src/Mod/Path/Gui/Resources/icons/edge-join-miter-not.svg b/src/Mod/CAM/Gui/Resources/icons/edge-join-miter-not.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/edge-join-miter-not.svg rename to src/Mod/CAM/Gui/Resources/icons/edge-join-miter-not.svg diff --git a/src/Mod/Path/Gui/Resources/icons/edge-join-miter.svg b/src/Mod/CAM/Gui/Resources/icons/edge-join-miter.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/edge-join-miter.svg rename to src/Mod/CAM/Gui/Resources/icons/edge-join-miter.svg diff --git a/src/Mod/Path/Gui/Resources/icons/edge-join-round-not.svg b/src/Mod/CAM/Gui/Resources/icons/edge-join-round-not.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/edge-join-round-not.svg rename to src/Mod/CAM/Gui/Resources/icons/edge-join-round-not.svg diff --git a/src/Mod/Path/Gui/Resources/icons/edge-join-round.svg b/src/Mod/CAM/Gui/Resources/icons/edge-join-round.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/edge-join-round.svg rename to src/Mod/CAM/Gui/Resources/icons/edge-join-round.svg diff --git a/src/Mod/Path/Gui/Resources/icons/preferences-path.svg b/src/Mod/CAM/Gui/Resources/icons/preferences-cam.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/preferences-path.svg rename to src/Mod/CAM/Gui/Resources/icons/preferences-cam.svg index 111e032f79..f904d562c7 100644 --- a/src/Mod/Path/Gui/Resources/icons/preferences-path.svg +++ b/src/Mod/CAM/Gui/Resources/icons/preferences-cam.svg @@ -128,7 +128,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/preferences-path.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/preferences-path.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/panels/AxisMapEdit.ui b/src/Mod/CAM/Gui/Resources/panels/AxisMapEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/AxisMapEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/AxisMapEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgJobCreate.ui b/src/Mod/CAM/Gui/Resources/panels/DlgJobCreate.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgJobCreate.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgJobCreate.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgJobModelSelect.ui b/src/Mod/CAM/Gui/Resources/panels/DlgJobModelSelect.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgJobModelSelect.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgJobModelSelect.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgJobTemplateExport.ui b/src/Mod/CAM/Gui/Resources/panels/DlgJobTemplateExport.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgJobTemplateExport.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgJobTemplateExport.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgSelectPostProcessor.ui b/src/Mod/CAM/Gui/Resources/panels/DlgSelectPostProcessor.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgSelectPostProcessor.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgSelectPostProcessor.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgTCChooser.ui b/src/Mod/CAM/Gui/Resources/panels/DlgTCChooser.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgTCChooser.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgTCChooser.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui b/src/Mod/CAM/Gui/Resources/panels/DlgToolControllerEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgToolControllerEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgToolCopy.ui b/src/Mod/CAM/Gui/Resources/panels/DlgToolCopy.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgToolCopy.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgToolCopy.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DlgToolEdit.ui b/src/Mod/CAM/Gui/Resources/panels/DlgToolEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DlgToolEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/DlgToolEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DogboneEdit.ui b/src/Mod/CAM/Gui/Resources/panels/DogboneEdit.ui similarity index 99% rename from src/Mod/Path/Gui/Resources/panels/DogboneEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/DogboneEdit.ui index 537172faee..121db96ccb 100644 --- a/src/Mod/Path/Gui/Resources/panels/DogboneEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/DogboneEdit.ui @@ -104,7 +104,7 @@ - Incision + Incision diff --git a/src/Mod/Path/Gui/Resources/panels/DragKnifeEdit.ui b/src/Mod/CAM/Gui/Resources/panels/DragKnifeEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DragKnifeEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/DragKnifeEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui b/src/Mod/CAM/Gui/Resources/panels/DressUpLeadInOutEdit.ui similarity index 98% rename from src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/DressUpLeadInOutEdit.ui index 8997bf03e1..5edf0b83fa 100644 --- a/src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/DressUpLeadInOutEdit.ui @@ -1,7 +1,7 @@ - Path_DressupLeadInOut - + CAM_DressupLeadInOut + 0 diff --git a/src/Mod/Path/Gui/Resources/panels/DressupPathBoundary.ui b/src/Mod/CAM/Gui/Resources/panels/DressupPathBoundary.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/DressupPathBoundary.ui rename to src/Mod/CAM/Gui/Resources/panels/DressupPathBoundary.ui diff --git a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui b/src/Mod/CAM/Gui/Resources/panels/HoldingTagsEdit.ui similarity index 99% rename from src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/HoldingTagsEdit.ui index 341765258a..cbceb97244 100644 --- a/src/Mod/Path/Gui/Resources/panels/HoldingTagsEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/HoldingTagsEdit.ui @@ -37,7 +37,7 @@ - Angle + Angle diff --git a/src/Mod/Path/Gui/Resources/panels/PageBaseGeometryEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageBaseGeometryEdit.ui similarity index 97% rename from src/Mod/Path/Gui/Resources/panels/PageBaseGeometryEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageBaseGeometryEdit.ui index 75e50235c3..0057f64d2b 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageBaseGeometryEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/PageBaseGeometryEdit.ui @@ -21,7 +21,7 @@ - :/icons/Path_BaseGeometry.svg:/icons/Path_BaseGeometry.svg + :/icons/CAM_BaseGeometry.svg:/icons/CAM_BaseGeometry.svg diff --git a/src/Mod/Path/Gui/Resources/panels/PageBaseHoleGeometryEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageBaseHoleGeometryEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageBaseHoleGeometryEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageBaseHoleGeometryEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageBaseLocationEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageBaseLocationEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageBaseLocationEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageBaseLocationEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageDepthsEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageDepthsEdit.ui similarity index 98% rename from src/Mod/Path/Gui/Resources/panels/PageDepthsEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageDepthsEdit.ui index 696c60e060..8834a594a6 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageDepthsEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/PageDepthsEdit.ui @@ -18,7 +18,7 @@ - :/icons/Path_Depths.svg:/icons/Path_Depths.svg + :/icons/CAM_Depths.svg:/icons/CAM_Depths.svg diff --git a/src/Mod/Path/Gui/Resources/panels/PageDiametersEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageDiametersEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageDiametersEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageDiametersEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageHeightsEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageHeightsEdit.ui similarity index 96% rename from src/Mod/Path/Gui/Resources/panels/PageHeightsEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageHeightsEdit.ui index 9878b8c4b7..ceab3ede12 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageHeightsEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/PageHeightsEdit.ui @@ -15,7 +15,7 @@ - :/icons/Path_Heights.svg:/icons/Path_Heights.svg + :/icons/CAM_Heights.svg:/icons/CAM_Heights.svg diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpAdaptiveEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpAdaptiveEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpAdaptiveEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpAdaptiveEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpCustomEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpCustomEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpCustomEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpCustomEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpDeburrEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpDeburrEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpDeburrEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpDeburrEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpDrillingEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpDrillingEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpDrillingEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpDrillingEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpEngraveEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpEngraveEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpEngraveEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpEngraveEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpHelixEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpHelixEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpHelixEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpHelixEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpPocketExtEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpPocketExtEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpPocketExtEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpPocketExtEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpPocketFullEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpPocketFullEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpPocketFullEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpPocketFullEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpProbeEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpProbeEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpProbeEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpProbeEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpProfileFullEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpProfileFullEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpProfileFullEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpProfileFullEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpSlotEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpSlotEdit.ui similarity index 94% rename from src/Mod/Path/Gui/Resources/panels/PageOpSlotEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpSlotEdit.ui index 52690b5f7b..0631eb9f9b 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageOpSlotEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/PageOpSlotEdit.ui @@ -87,7 +87,7 @@ - Choose what point to use on the first selected feature + Choose what point to use on the first selected feature false @@ -159,7 +159,7 @@ - Choose what point to use on the second selected feature + Choose what point to use on the second selected feature false @@ -219,7 +219,7 @@ - No Base Geometry selected + No Base Geometry selected color:blue @@ -238,7 +238,7 @@ - Currently using custom point inputs in the Property View of the Data tab + Currently using custom point inputs in the Property View of the Data tab Currently using custom point inputs available in the Property View of the Data tab. @@ -288,7 +288,7 @@ - Positive extends the beginning of the path, negative shortens + Positive extends the beginning of the path, negative shortens @@ -314,7 +314,7 @@ - Positive extends the end of the path, negative shortens + Positive extends the end of the path, negative shortens @@ -354,7 +354,7 @@ - Complete the operation in a single pass at depth, or multiple passes to final depth + Complete the operation in a single pass at depth, or multiple passes to final depth @@ -378,7 +378,7 @@ - Choose the path orientation with regard to the feature(s) selected + Choose the path orientation with regard to the feature(s) selected @@ -395,7 +395,7 @@ - Enable to reverse the cut direction of the slot path + Enable to reverse the cut direction of the slot path Reverse cut direction diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpSurfaceEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpSurfaceEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpSurfaceEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpSurfaceEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpThreadMillingEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpThreadMillingEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpThreadMillingEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpThreadMillingEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpVcarveEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpVcarveEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpVcarveEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpVcarveEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpWaterlineEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpWaterlineEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PageOpWaterlineEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PageOpWaterlineEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PathEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PathEdit.ui similarity index 99% rename from src/Mod/Path/Gui/Resources/panels/PathEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PathEdit.ui index 968dca7e82..dd8c783eee 100644 --- a/src/Mod/Path/Gui/Resources/panels/PathEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/PathEdit.ui @@ -1404,7 +1404,7 @@ Default: "5mm" - Active Tool + Active Tool diff --git a/src/Mod/Path/Gui/Resources/panels/PointEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PointEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PointEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/PointEdit.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PropertyBag.ui b/src/Mod/CAM/Gui/Resources/panels/PropertyBag.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PropertyBag.ui rename to src/Mod/CAM/Gui/Resources/panels/PropertyBag.ui diff --git a/src/Mod/Path/Gui/Resources/panels/PropertyCreate.ui b/src/Mod/CAM/Gui/Resources/panels/PropertyCreate.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/PropertyCreate.ui rename to src/Mod/CAM/Gui/Resources/panels/PropertyCreate.ui diff --git a/src/Mod/Path/Gui/Resources/panels/SetupGlobal.ui b/src/Mod/CAM/Gui/Resources/panels/SetupGlobal.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/SetupGlobal.ui rename to src/Mod/CAM/Gui/Resources/panels/SetupGlobal.ui diff --git a/src/Mod/Path/Gui/Resources/panels/SetupOp.ui b/src/Mod/CAM/Gui/Resources/panels/SetupOp.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/SetupOp.ui rename to src/Mod/CAM/Gui/Resources/panels/SetupOp.ui diff --git a/src/Mod/Path/Gui/Resources/panels/SurfaceEdit.ui b/src/Mod/CAM/Gui/Resources/panels/SurfaceEdit.ui similarity index 96% rename from src/Mod/Path/Gui/Resources/panels/SurfaceEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/SurfaceEdit.ui index a3f874d277..eafef0471a 100644 --- a/src/Mod/Path/Gui/Resources/panels/SurfaceEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/SurfaceEdit.ui @@ -39,7 +39,7 @@ - :/icons/Path_BaseGeometry.svg:/icons/Path_BaseGeometry.svg + :/icons/CAM_BaseGeometry.svg:/icons/CAM_BaseGeometry.svg Base Geometry @@ -117,7 +117,7 @@ - :/icons/Path_Depths.svg:/icons/Path_Depths.svg + :/icons/CAM_Depths.svg:/icons/CAM_Depths.svg Depths @@ -192,7 +192,7 @@ - :/icons/Path_Heights.svg:/icons/Path_Heights.svg + :/icons/CAM_Heights.svg:/icons/CAM_Heights.svg Heights @@ -242,7 +242,7 @@ - :/icons/Path_OperationB.svg:/icons/Path_OperationB.svg + :/icons/CAM_OperationB.svg:/icons/CAM_OperationB.svg Operation diff --git a/src/Mod/Path/Gui/Resources/panels/TaskPathCamoticsSim.ui b/src/Mod/CAM/Gui/Resources/panels/TaskPathCamoticsSim.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/TaskPathCamoticsSim.ui rename to src/Mod/CAM/Gui/Resources/panels/TaskPathCamoticsSim.ui diff --git a/src/Mod/Path/Gui/Resources/panels/TaskPathSimulator.ui b/src/Mod/CAM/Gui/Resources/panels/TaskPathSimulator.ui similarity index 94% rename from src/Mod/Path/Gui/Resources/panels/TaskPathSimulator.ui rename to src/Mod/CAM/Gui/Resources/panels/TaskPathSimulator.ui index 8d5e7fec6c..040e814c1d 100644 --- a/src/Mod/Path/Gui/Resources/panels/TaskPathSimulator.ui +++ b/src/Mod/CAM/Gui/Resources/panels/TaskPathSimulator.ui @@ -39,7 +39,7 @@ - :/icons/Path_BStop.svg:/icons/Path_BStop.svg + :/icons/CAM_BStop.svg:/icons/CAM_BStop.svg @@ -59,7 +59,7 @@ - :/icons/Path_BPlay.svg:/icons/Path_BPlay.svg + :/icons/CAM_BPlay.svg:/icons/CAM_BPlay.svg @@ -79,7 +79,7 @@ - :/icons/Path_BPause.svg:/icons/Path_BPause.svg + :/icons/CAM_BPause.svg:/icons/CAM_BPause.svg @@ -99,7 +99,7 @@ - :/icons/Path_BStep.svg:/icons/Path_BStep.svg + :/icons/CAM_BStep.svg:/icons/CAM_BStep.svg @@ -119,7 +119,7 @@ - :/icons/Path_BFastForward.svg:/icons/Path_BFastForward.svg + :/icons/CAM_BFastForward.svg:/icons/CAM_BFastForward.svg diff --git a/src/Mod/Path/Gui/Resources/panels/ToolBitEditor.ui b/src/Mod/CAM/Gui/Resources/panels/ToolBitEditor.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/ToolBitEditor.ui rename to src/Mod/CAM/Gui/Resources/panels/ToolBitEditor.ui diff --git a/src/Mod/Path/Gui/Resources/panels/ToolBitLibraryEdit.ui b/src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui similarity index 97% rename from src/Mod/Path/Gui/Resources/panels/ToolBitLibraryEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui index 21a0dea14d..d07da00243 100644 --- a/src/Mod/Path/Gui/Resources/panels/ToolBitLibraryEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui @@ -36,7 +36,7 @@ - :/icons/Path_ToolBit.svg:/icons/Path_ToolBit.svg + :/icons/CAM_ToolBit.svg:/icons/CAM_ToolBit.svg @@ -56,7 +56,7 @@ - :/icons/Path_ToolDuplicate.svg:/icons/Path_ToolDuplicate.svg + :/icons/CAM_ToolDuplicate.svg:/icons/CAM_ToolDuplicate.svg diff --git a/src/Mod/Path/Gui/Resources/panels/ToolBitSelector.ui b/src/Mod/CAM/Gui/Resources/panels/ToolBitSelector.ui similarity index 97% rename from src/Mod/Path/Gui/Resources/panels/ToolBitSelector.ui rename to src/Mod/CAM/Gui/Resources/panels/ToolBitSelector.ui index f54112a0ae..6876d3c617 100644 --- a/src/Mod/Path/Gui/Resources/panels/ToolBitSelector.ui +++ b/src/Mod/CAM/Gui/Resources/panels/ToolBitSelector.ui @@ -57,7 +57,7 @@ - :/icons/Path_ToolTable.svg:/icons/Path_ToolTable.svg + :/icons/CAM_ToolTable.svg:/icons/CAM_ToolTable.svg diff --git a/src/Mod/Path/Gui/Resources/panels/ToolEditor.ui b/src/Mod/CAM/Gui/Resources/panels/ToolEditor.ui similarity index 98% rename from src/Mod/Path/Gui/Resources/panels/ToolEditor.ui rename to src/Mod/CAM/Gui/Resources/panels/ToolEditor.ui index af490af35e..03ff55b27b 100644 --- a/src/Mod/Path/Gui/Resources/panels/ToolEditor.ui +++ b/src/Mod/CAM/Gui/Resources/panels/ToolEditor.ui @@ -193,7 +193,7 @@ - D = + D = @@ -210,7 +210,7 @@ - d = + d = @@ -227,7 +227,7 @@ - H = + H = @@ -264,7 +264,7 @@ false - S = + S = diff --git a/src/Mod/Path/Gui/Resources/panels/ZCorrectEdit.ui b/src/Mod/CAM/Gui/Resources/panels/ZCorrectEdit.ui similarity index 100% rename from src/Mod/Path/Gui/Resources/panels/ZCorrectEdit.ui rename to src/Mod/CAM/Gui/Resources/panels/ZCorrectEdit.ui diff --git a/src/Mod/Path/Gui/Resources/preferences/Advanced.ui b/src/Mod/CAM/Gui/Resources/preferences/Advanced.ui similarity index 96% rename from src/Mod/Path/Gui/Resources/preferences/Advanced.ui rename to src/Mod/CAM/Gui/Resources/preferences/Advanced.ui index ffd8d2ea74..b8cb82864e 100644 --- a/src/Mod/Path/Gui/Resources/preferences/Advanced.ui +++ b/src/Mod/CAM/Gui/Resources/preferences/Advanced.ui @@ -35,7 +35,7 @@ WarningSuppressAllSpeeds - Mod/Path + Mod/CAM @@ -54,7 +54,7 @@ WarningSuppressRapidSpeeds - Mod/Path + Mod/CAM @@ -73,7 +73,7 @@ WarningSuppressVelocity - Mod/Path + Mod/CAM @@ -92,7 +92,7 @@ WarningSuppressSelectionMode - Mod/Path + Mod/CAM @@ -130,7 +130,7 @@ EnableAdvancedOCLFeatures - Mod/Path + Mod/CAM @@ -149,7 +149,7 @@ WarningSuppressOpenCamLib - Mod/Path + Mod/CAM diff --git a/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui b/src/Mod/CAM/Gui/Resources/preferences/PathDressupHoldingTags.ui similarity index 99% rename from src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui rename to src/Mod/CAM/Gui/Resources/preferences/PathDressupHoldingTags.ui index ef2bc6797b..8bd419669b 100644 --- a/src/Mod/Path/Gui/Resources/preferences/PathDressupHoldingTags.ui +++ b/src/Mod/CAM/Gui/Resources/preferences/PathDressupHoldingTags.ui @@ -106,7 +106,7 @@ If the radius is bigger than that which the tag shape itself supports, the resul - Initial # Tags + Initial # Tags diff --git a/src/Mod/Path/Gui/Resources/preferences/PathJob.ui b/src/Mod/CAM/Gui/Resources/preferences/PathJob.ui similarity index 98% rename from src/Mod/Path/Gui/Resources/preferences/PathJob.ui rename to src/Mod/CAM/Gui/Resources/preferences/PathJob.ui index 86f5d8c5e0..6421637eb2 100644 --- a/src/Mod/Path/Gui/Resources/preferences/PathJob.ui +++ b/src/Mod/CAM/Gui/Resources/preferences/PathJob.ui @@ -6,8 +6,8 @@ 0 0 - 440 - 669 + 707 + 728 @@ -24,8 +24,8 @@ 0 0 - 424 - 268 + 681 + 370 @@ -146,8 +146,8 @@ If left empty no template will be preselected. 0 0 - 424 - 432 + 681 + 518 @@ -285,7 +285,7 @@ See the file save policy below on how to deal with name conflicts. - Post Processors Selection + Post Processors Selection @@ -312,10 +312,10 @@ See the file save policy below on how to deal with name conflicts. Select one of the post processors as the default. - DefaultPostProcessor + DefaultPostProcessor - Mod/Path + Mod/CAM @@ -335,7 +335,7 @@ See the file save policy below on how to deal with name conflicts. DefaultPostProcessorArgs - Mod/Path + Mod/CAM @@ -362,8 +362,8 @@ See the file save policy below on how to deal with name conflicts. 0 0 - 411 - 527 + 662 + 755 @@ -639,8 +639,8 @@ See the file save policy below on how to deal with name conflicts. 0 0 - 424 - 200 + 681 + 171 @@ -652,7 +652,7 @@ See the file save policy below on how to deal with name conflicts. References to Tool Bits and their shapes can either be stored with an absolute path or with a relative path to the search path. Generally it is recommended to use relative paths due to their flexibility and robustness to layout changes. -Should multiple tools or tool shapes with the same name exist in different directories it can be required to use absolute paths. +Should multiple tools or tool shapes with the same name exist in different directories it can be required to use absolute paths. Store Absolute Paths diff --git a/src/Mod/Path/Gui/TaskDlgPathCompound.cpp b/src/Mod/CAM/Gui/TaskDlgPathCompound.cpp similarity index 98% rename from src/Mod/Path/Gui/TaskDlgPathCompound.cpp rename to src/Mod/CAM/Gui/TaskDlgPathCompound.cpp index a5ff799522..aec3a06a08 100644 --- a/src/Mod/Path/Gui/TaskDlgPathCompound.cpp +++ b/src/Mod/CAM/Gui/TaskDlgPathCompound.cpp @@ -46,7 +46,7 @@ using namespace Gui; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TaskWidgetPathCompound::TaskWidgetPathCompound(ViewProviderPathCompound *CompoundView,QWidget *parent) - : TaskBox(Gui::BitmapFactory().pixmap("Path_Compound"),tr("Compound paths"),true, parent) + : TaskBox(Gui::BitmapFactory().pixmap("CAM_Compound"),tr("Compound paths"),true, parent) { // we need a separate container widget to add all controls to proxy = new QWidget(this); diff --git a/src/Mod/Path/Gui/TaskDlgPathCompound.h b/src/Mod/CAM/Gui/TaskDlgPathCompound.h similarity index 98% rename from src/Mod/Path/Gui/TaskDlgPathCompound.h rename to src/Mod/CAM/Gui/TaskDlgPathCompound.h index 4ced6cca33..7ddb9a0679 100644 --- a/src/Mod/Path/Gui/TaskDlgPathCompound.h +++ b/src/Mod/CAM/Gui/TaskDlgPathCompound.h @@ -25,7 +25,7 @@ #include #include -#include +#include #include "ViewProviderPathCompound.h" diff --git a/src/Mod/Path/Gui/TaskDlgPathCompound.ui b/src/Mod/CAM/Gui/TaskDlgPathCompound.ui similarity index 100% rename from src/Mod/Path/Gui/TaskDlgPathCompound.ui rename to src/Mod/CAM/Gui/TaskDlgPathCompound.ui diff --git a/src/Mod/Path/Gui/ViewProviderArea.cpp b/src/Mod/CAM/Gui/ViewProviderArea.cpp similarity index 98% rename from src/Mod/Path/Gui/ViewProviderArea.cpp rename to src/Mod/CAM/Gui/ViewProviderArea.cpp index 40d0f6588a..2254445318 100644 --- a/src/Mod/Path/Gui/ViewProviderArea.cpp +++ b/src/Mod/CAM/Gui/ViewProviderArea.cpp @@ -23,7 +23,7 @@ #include "PreCompiled.h" #include -#include +#include #include "ViewProviderArea.h" @@ -34,7 +34,7 @@ PROPERTY_SOURCE(PathGui::ViewProviderArea, PartGui::ViewProviderPlaneParametric) ViewProviderArea::ViewProviderArea() { - sPixmap = "Path_Area.svg"; + sPixmap = "CAM_Area.svg"; } ViewProviderArea::~ViewProviderArea() @@ -118,7 +118,7 @@ PROPERTY_SOURCE(PathGui::ViewProviderAreaView, PartGui::ViewProviderPlaneParamet ViewProviderAreaView::ViewProviderAreaView() { - sPixmap = "Path_Area_View.svg"; + sPixmap = "CAM_Area_View.svg"; } ViewProviderAreaView::~ViewProviderAreaView() diff --git a/src/Mod/Path/Gui/ViewProviderArea.h b/src/Mod/CAM/Gui/ViewProviderArea.h similarity index 99% rename from src/Mod/Path/Gui/ViewProviderArea.h rename to src/Mod/CAM/Gui/ViewProviderArea.h index 22d458e554..6877beae96 100644 --- a/src/Mod/Path/Gui/ViewProviderArea.h +++ b/src/Mod/CAM/Gui/ViewProviderArea.h @@ -25,7 +25,7 @@ #include #include -#include +#include namespace PathGui { diff --git a/src/Mod/Path/Gui/ViewProviderPath.cpp b/src/Mod/CAM/Gui/ViewProviderPath.cpp similarity index 98% rename from src/Mod/Path/Gui/ViewProviderPath.cpp rename to src/Mod/CAM/Gui/ViewProviderPath.cpp index 63b24a4bae..0be6dd03af 100644 --- a/src/Mod/Path/Gui/ViewProviderPath.cpp +++ b/src/Mod/CAM/Gui/ViewProviderPath.cpp @@ -47,8 +47,8 @@ #include #include #include -#include -#include +#include +#include #include "ViewProviderPath.h" @@ -135,7 +135,7 @@ PROPERTY_SOURCE(PathGui::ViewProviderPath, Gui::ViewProviderGeometryObject) ViewProviderPath::ViewProviderPath() :pt0Index(-1),blockPropertyChange(false),edgeStart(-1),coordStart(-1),coordEnd(-1) { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Path"); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/CAM"); unsigned long lcol = hGrp->GetUnsigned("DefaultNormalPathColor",11141375UL); // dark green (0,170,0) float lr,lg,lb; lr = ((lcol >> 24) & 0xff) / 255.0; lg = ((lcol >> 16) & 0xff) / 255.0; lb = ((lcol >> 8) & 0xff) / 255.0; @@ -339,7 +339,7 @@ void ViewProviderPath::onChanged(const App::Property* prop) } else if (prop == &NormalColor) { if (!colorindex.empty() && coordStart>=0 && coordStart<(int)colorindex.size()) { const App::Color& c = NormalColor.getValue(); - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Path"); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/CAM"); unsigned long rcol = hGrp->GetUnsigned("DefaultRapidPathColor",2852126975UL); // dark red (170,0,0) float rr,rg,rb; rr = ((rcol >> 24) & 0xff) / 255.0; rg = ((rcol >> 16) & 0xff) / 255.0; rb = ((rcol >> 8) & 0xff) / 255.0; @@ -401,7 +401,7 @@ void ViewProviderPath::showBoundingBox(bool show) { } unsigned long ViewProviderPath::getBoundColor() const { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Path"); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/CAM"); if(SelectionStyle.getValue() == 0 || !Selectable.getValue()) return hGrp->GetUnsigned("DefaultBBoxNormalColor",4294967295UL); // white (255,255,255) else @@ -716,7 +716,7 @@ void ViewProviderPath::recomputeBoundingBox() QIcon ViewProviderPath::getIcon() const { - return Gui::BitmapFactory().pixmap("Path_Toolpath"); + return Gui::BitmapFactory().pixmap("CAM_Toolpath"); } // Python object ----------------------------------------------------------------------- diff --git a/src/Mod/Path/Gui/ViewProviderPath.h b/src/Mod/CAM/Gui/ViewProviderPath.h similarity index 99% rename from src/Mod/Path/Gui/ViewProviderPath.h rename to src/Mod/CAM/Gui/ViewProviderPath.h index 8d9f3864ec..e8bed73f27 100644 --- a/src/Mod/Path/Gui/ViewProviderPath.h +++ b/src/Mod/CAM/Gui/ViewProviderPath.h @@ -28,7 +28,7 @@ #include #include #include -#include +#include class SoCoordinate3; diff --git a/src/Mod/Path/Gui/ViewProviderPathCompound.cpp b/src/Mod/CAM/Gui/ViewProviderPathCompound.cpp similarity index 98% rename from src/Mod/Path/Gui/ViewProviderPathCompound.cpp rename to src/Mod/CAM/Gui/ViewProviderPathCompound.cpp index a6d72afa0e..9c6061ab77 100644 --- a/src/Mod/Path/Gui/ViewProviderPathCompound.cpp +++ b/src/Mod/CAM/Gui/ViewProviderPathCompound.cpp @@ -76,7 +76,7 @@ void ViewProviderPathCompound::dropObject(App::DocumentObject* obj) QIcon ViewProviderPathCompound::getIcon() const { - return Gui::BitmapFactory().pixmap("Path_Compound"); + return Gui::BitmapFactory().pixmap("CAM_Compound"); } // Python object ----------------------------------------------------------------------- diff --git a/src/Mod/Path/Gui/ViewProviderPathCompound.h b/src/Mod/CAM/Gui/ViewProviderPathCompound.h similarity index 100% rename from src/Mod/Path/Gui/ViewProviderPathCompound.h rename to src/Mod/CAM/Gui/ViewProviderPathCompound.h diff --git a/src/Mod/Path/Gui/ViewProviderPathShape.cpp b/src/Mod/CAM/Gui/ViewProviderPathShape.cpp similarity index 97% rename from src/Mod/Path/Gui/ViewProviderPathShape.cpp rename to src/Mod/CAM/Gui/ViewProviderPathShape.cpp index f8e559695d..d4bd7f7bca 100644 --- a/src/Mod/Path/Gui/ViewProviderPathShape.cpp +++ b/src/Mod/CAM/Gui/ViewProviderPathShape.cpp @@ -24,7 +24,7 @@ #include #include -#include +#include #include "ViewProviderPathShape.h" @@ -36,7 +36,7 @@ PROPERTY_SOURCE(PathGui::ViewProviderPathShape, PathGui::ViewProviderPath) QIcon ViewProviderPathShape::getIcon() const { - return Gui::BitmapFactory().pixmap("Path_Shape"); + return Gui::BitmapFactory().pixmap("CAM_Shape"); } std::vector ViewProviderPathShape::claimChildren() const diff --git a/src/Mod/Path/Gui/ViewProviderPathShape.h b/src/Mod/CAM/Gui/ViewProviderPathShape.h similarity index 100% rename from src/Mod/Path/Gui/ViewProviderPathShape.h rename to src/Mod/CAM/Gui/ViewProviderPathShape.h diff --git a/src/Mod/Path/Images/Ops/chamfer.svg b/src/Mod/CAM/Images/Ops/chamfer.svg similarity index 100% rename from src/Mod/Path/Images/Ops/chamfer.svg rename to src/Mod/CAM/Images/Ops/chamfer.svg diff --git a/src/Mod/Path/Images/Tools/drill.svg b/src/Mod/CAM/Images/Tools/drill.svg similarity index 100% rename from src/Mod/Path/Images/Tools/drill.svg rename to src/Mod/CAM/Images/Tools/drill.svg diff --git a/src/Mod/Path/Images/Tools/endmill.svg b/src/Mod/CAM/Images/Tools/endmill.svg similarity index 100% rename from src/Mod/Path/Images/Tools/endmill.svg rename to src/Mod/CAM/Images/Tools/endmill.svg diff --git a/src/Mod/Path/Images/Tools/reamer.svg b/src/Mod/CAM/Images/Tools/reamer.svg similarity index 100% rename from src/Mod/Path/Images/Tools/reamer.svg rename to src/Mod/CAM/Images/Tools/reamer.svg diff --git a/src/Mod/Path/Images/Tools/v-bit.svg b/src/Mod/CAM/Images/Tools/v-bit.svg similarity index 100% rename from src/Mod/Path/Images/Tools/v-bit.svg rename to src/Mod/CAM/Images/Tools/v-bit.svg diff --git a/src/Mod/Path/Init.py b/src/Mod/CAM/Init.py similarity index 95% rename from src/Mod/Path/Init.py rename to src/Mod/CAM/Init.py index 138a54ed40..28d09d051d 100644 --- a/src/Mod/Path/Init.py +++ b/src/Mod/CAM/Init.py @@ -26,7 +26,7 @@ ParGrp = App.ParamGet("System parameter:Modules").GetGroup("Path") # Set the needed information ParGrp.SetString("HelpIndex", "Path/Help/index.html") -ParGrp.SetString("WorkBenchName", "Path") +ParGrp.SetString("WorkBenchName", "CAM") ParGrp.SetString("WorkBenchModule", "PathWorkbench.py") -FreeCAD.__unit_test__ += ["TestPathApp"] +FreeCAD.__unit_test__ += ["TestCAMApp"] diff --git a/src/Mod/Path/InitGui.py b/src/Mod/CAM/InitGui.py similarity index 74% rename from src/Mod/Path/InitGui.py rename to src/Mod/CAM/InitGui.py index 246ebc6d22..d8b7979f45 100644 --- a/src/Mod/Path/InitGui.py +++ b/src/Mod/CAM/InitGui.py @@ -45,15 +45,15 @@ class PathCommandGroup: return False -class PathWorkbench(Workbench): - "Path workbench" +class CAMWorkbench(Workbench): + "CAM workbench" def __init__(self): self.__class__.Icon = ( - FreeCAD.getResourceDir() + "Mod/Path/Resources/icons/PathWorkbench.svg" + FreeCAD.getResourceDir() + "Mod/CAM/Resources/icons/CAMWorkbench.svg" ) - self.__class__.MenuText = "Path" - self.__class__.ToolTip = "Path workbench" + self.__class__.MenuText = "CAM" + self.__class__.ToolTip = "CAM workbench" def Initialize(self): global PathCommandGroup @@ -84,72 +84,70 @@ class PathWorkbench(Workbench): import subprocess from packaging.version import Version, parse - FreeCADGui.addPreferencePage(PathPreferencesPathJob.JobPreferencesPage, QT_TRANSLATE_NOOP("QObject", "Path")) + FreeCADGui.addPreferencePage(PathPreferencesPathJob.JobPreferencesPage, QT_TRANSLATE_NOOP("QObject", "CAM")) FreeCADGui.addPreferencePage( - PathPreferencesPathDressup.DressupPreferencesPage, QT_TRANSLATE_NOOP("QObject", "Path") + PathPreferencesPathDressup.DressupPreferencesPage, QT_TRANSLATE_NOOP("QObject", "CAM") ) Path.GuiInit.Startup() # build commands list - projcmdlist = ["Path_Job", "Path_Post", "Path_Sanity"] + projcmdlist = ["CAM_Job", "CAM_Post", "CAM_Sanity"] toolcmdlist = [ - "Path_Inspect", - "Path_Simulator", - "Path_SelectLoop", - "Path_OpActiveToggle", + "CAM_Inspect", + "CAM_Simulator", + "CAM_SelectLoop", + "CAM_OpActiveToggle", ] prepcmdlist = [ - "Path_Fixture", - "Path_Comment", - "Path_Stop", - "Path_Custom", - "Path_Probe", + "CAM_Fixture", + "CAM_Comment", + "CAM_Stop", + "CAM_Custom", + "CAM_Probe", ] twodopcmdlist = [ - "Path_Profile", - "Path_Pocket_Shape", - "Path_Drilling", - "Path_MillFace", - "Path_Helix", - "Path_Adaptive", + "CAM_Profile", + "CAM_Pocket_Shape", + "CAM_Drilling", + "CAM_MillFace", + "CAM_Helix", + "CAM_Adaptive", ] - threedopcmdlist = ["Path_Pocket3D"] - engravecmdlist = ["Path_Engrave", "Path_Deburr", "Path_Vcarve"] - modcmdlist = ["Path_OperationCopy", "Path_Array", "Path_SimpleCopy"] + threedopcmdlist = ["CAM_Pocket3D"] + engravecmdlist = ["CAM_Engrave", "CAM_Deburr", "CAM_Vcarve"] + modcmdlist = ["CAM_OperationCopy", "CAM_Array", "CAM_SimpleCopy"] dressupcmdlist = [ - "Path_DressupAxisMap", - "Path_DressupPathBoundary", - "Path_DressupDogbone", - "Path_DressupDragKnife", - "Path_DressupLeadInOut", - "Path_DressupRampEntry", - "Path_DressupTag", - "Path_DressupZCorrect", + "CAM_DressupAxisMap", + "CAM_DressupPathBoundary", + "CAM_DressupDogbone", + "CAM_DressupDragKnife", + "CAM_DressupLeadInOut", + "CAM_DressupRampEntry", + "CAM_DressupTag", + "CAM_DressupZCorrect", ] extracmdlist = [] - # modcmdmore = ["Path_Hop",] - # remotecmdlist = ["Path_Remote"] specialcmdlist = [] toolcmdlist.extend(PathToolBitLibraryCmd.BarList) toolbitcmdlist = PathToolBitLibraryCmd.MenuList - engravecmdgroup = ["Path_EngraveTools"] + engravecmdgroup = ["CAM_EngraveTools"] FreeCADGui.addCommand( - "Path_EngraveTools", + "CAM_EngraveTools", PathCommandGroup( engravecmdlist, - QT_TRANSLATE_NOOP("Path_EngraveTools", "Engraving Operations"), + QT_TRANSLATE_NOOP("CAM_EngraveTools", "Engraving Operations"), ), ) threedcmdgroup = threedopcmdlist if Path.Preferences.experimentalFeaturesEnabled(): - prepcmdlist.append("Path_Shape") - extracmdlist.extend(["Path_Area", "Path_Area_Workplane"]) - specialcmdlist.append("Path_ThreadMilling") - twodopcmdlist.append("Path_Slot") + prepcmdlist.append("CAM_Shape") + extracmdlist.extend(["CAM_Area", "CAM_Area_Workplane"]) + specialcmdlist.append("CAM_ThreadMilling") + twodopcmdlist.append("CAM_Slot") if Path.Preferences.advancedOCLFeaturesEnabled(): try: @@ -159,7 +157,7 @@ class PathWorkbench(Workbench): v = parse(r) if v >= Version("1.2.2"): - toolcmdlist.append("Path_Camotics") + toolcmdlist.append("CAM_Camotics") except (FileNotFoundError, ModuleNotFoundError): pass @@ -171,13 +169,13 @@ class PathWorkbench(Workbench): from Path.Op.Gui import Surface from Path.Op.Gui import Waterline - threedopcmdlist.extend(["Path_Surface", "Path_Waterline"]) - threedcmdgroup = ["Path_3dTools"] + threedopcmdlist.extend(["CAM_Surface", "CAM_Waterline"]) + threedcmdgroup = ["CAM_3dTools"] FreeCADGui.addCommand( - "Path_3dTools", + "CAM_3dTools", PathCommandGroup( threedopcmdlist, - QT_TRANSLATE_NOOP("Path_3dTools", "3D Operations"), + QT_TRANSLATE_NOOP("CAM_3dTools", "3D Operations"), ), ) except ImportError: @@ -199,9 +197,9 @@ class PathWorkbench(Workbench): ) self.appendMenu( - [QT_TRANSLATE_NOOP("Workbench", "&Path")], + [QT_TRANSLATE_NOOP("Workbench", "&CAM")], projcmdlist - + ["Path_ExportTemplate", "Separator"] + + ["CAM_ExportTemplate", "Separator"] + toolcmdlist + toolbitcmdlist + ["Separator"] @@ -213,21 +211,21 @@ class PathWorkbench(Workbench): ) self.appendMenu( [ - QT_TRANSLATE_NOOP("Workbench", "&Path"), + QT_TRANSLATE_NOOP("Workbench", "&CAM"), QT_TRANSLATE_NOOP("Workbench", "Path Dressup"), ], dressupcmdlist, ) self.appendMenu( [ - QT_TRANSLATE_NOOP("Workbench", "&Path"), + QT_TRANSLATE_NOOP("Workbench", "&CAM"), QT_TRANSLATE_NOOP("Workbench", "Supplemental Commands"), ], prepcmdlist, ) self.appendMenu( [ - QT_TRANSLATE_NOOP("Workbench", "&Path"), + QT_TRANSLATE_NOOP("Workbench", "&CAM"), QT_TRANSLATE_NOOP("Workbench", "Path Modification"), ], modcmdlist, @@ -235,21 +233,21 @@ class PathWorkbench(Workbench): if specialcmdlist: self.appendMenu( [ - QT_TRANSLATE_NOOP("Workbench", "&Path"), + QT_TRANSLATE_NOOP("Workbench", "&CAM"), QT_TRANSLATE_NOOP("Workbench", "Specialty Operations"), ], specialcmdlist, ) if extracmdlist: - self.appendMenu([QT_TRANSLATE_NOOP("Workbench", "&Path")], extracmdlist) + self.appendMenu([QT_TRANSLATE_NOOP("Workbench", "&CAM")], extracmdlist) - self.appendMenu([QT_TRANSLATE_NOOP("Workbench", "&Path")], ["Separator"]) + self.appendMenu([QT_TRANSLATE_NOOP("Workbench", "&CAM")], ["Separator"]) self.appendMenu( [ - QT_TRANSLATE_NOOP("Workbench", "&Path"), + QT_TRANSLATE_NOOP("Workbench", "&CAM"), QT_TRANSLATE_NOOP("Workbench", "Utils"), ], - ["Path_PropertyBag"], + ["CAM_PropertyBag"], ) self.dressupcmds = dressupcmdlist @@ -263,9 +261,9 @@ class PathWorkbench(Workbench): from Path.Preferences import preferences FreeCADGui.addPreferencePage( - PathPreferencesAdvanced.AdvancedPreferencesPage, QT_TRANSLATE_NOOP("QObject", "Path") + PathPreferencesAdvanced.AdvancedPreferencesPage, QT_TRANSLATE_NOOP("QObject", "CAM") ) - Log("Loading Path workbench... done\n") + Log("Loading CAM workbench... done\n") def GetClassName(self): return "Gui::PythonWorkbench" @@ -273,10 +271,10 @@ class PathWorkbench(Workbench): def Activated(self): # update the translation engine FreeCADGui.updateLocale() - # Msg("Path workbench activated\n") + # Msg("CAM workbench activated\n") def Deactivated(self): - # Msg("Path workbench deactivated\n") + # Msg("CAM workbench deactivated\n") pass def ContextMenu(self, recipient): @@ -287,18 +285,18 @@ class PathWorkbench(Workbench): obj = FreeCADGui.Selection.getSelection()[0] if obj.isDerivedFrom("Path::Feature"): self.appendContextMenu("", "Separator") - self.appendContextMenu("", ["Path_Inspect"]) + self.appendContextMenu("", ["CAM_Inspect"]) selectedName = obj.Name if "Remote" in selectedName: self.appendContextMenu("", ["Refresh_Path"]) if "Job" in selectedName: self.appendContextMenu( - "", ["Path_ExportTemplate"] + self.toolbitctxmenu + "", ["CAM_ExportTemplate"] + self.toolbitctxmenu ) menuAppended = True if isinstance(obj.Proxy, Path.Op.Base.ObjectOp): self.appendContextMenu( - "", ["Path_OperationCopy", "Path_OpActiveToggle"] + "", ["CAM_OperationCopy", "CAM_OpActiveToggle"] ) menuAppended = True if obj.isDerivedFrom("Path::Feature"): @@ -314,12 +312,12 @@ class PathWorkbench(Workbench): self.appendContextMenu("", [cmd]) menuAppended = True if isinstance(obj.Proxy, Path.Tool.Bit.ToolBit): - self.appendContextMenu("", ["Path_ToolBitSave", "Path_ToolBitSaveAs"]) + self.appendContextMenu("", ["CAM_ToolBitSave", "CAM_ToolBitSaveAs"]) menuAppended = True if menuAppended: self.appendContextMenu("", "Separator") -Gui.addWorkbench(PathWorkbench()) +Gui.addWorkbench(CAMWorkbench()) FreeCAD.addImportType("GCode (*.nc *.NC *.gc *.GC *.ncc *.NCC *.ngc *.NGC *.cnc *.CNC *.tap *.TAP *.gcode *.GCODE)", "PathGui") diff --git a/src/Mod/Path/Path/Base/Drillable.py b/src/Mod/CAM/Path/Base/Drillable.py similarity index 100% rename from src/Mod/Path/Path/Base/Drillable.py rename to src/Mod/CAM/Path/Base/Drillable.py diff --git a/src/Mod/Path/Path/Base/FeedRate.py b/src/Mod/CAM/Path/Base/FeedRate.py similarity index 100% rename from src/Mod/Path/Path/Base/FeedRate.py rename to src/Mod/CAM/Path/Base/FeedRate.py diff --git a/src/Mod/Path/Path/Base/Generator/__init__.py b/src/Mod/CAM/Path/Base/Generator/__init__.py similarity index 100% rename from src/Mod/Path/Path/Base/Generator/__init__.py rename to src/Mod/CAM/Path/Base/Generator/__init__.py diff --git a/src/Mod/Path/Path/Base/Generator/dogboneII.py b/src/Mod/CAM/Path/Base/Generator/dogboneII.py similarity index 100% rename from src/Mod/Path/Path/Base/Generator/dogboneII.py rename to src/Mod/CAM/Path/Base/Generator/dogboneII.py diff --git a/src/Mod/Path/Path/Base/Generator/drill.py b/src/Mod/CAM/Path/Base/Generator/drill.py similarity index 99% rename from src/Mod/Path/Path/Base/Generator/drill.py rename to src/Mod/CAM/Path/Base/Generator/drill.py index 9cdc8579af..a8da08c431 100644 --- a/src/Mod/Path/Path/Base/Generator/drill.py +++ b/src/Mod/CAM/Path/Base/Generator/drill.py @@ -24,7 +24,7 @@ import Path import numpy -__title__ = "Drilling Path Generator" +__title__ = "Drilling Toolpath Generator" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Generates the drilling toolpath for a single spotshape" diff --git a/src/Mod/Path/Path/Base/Generator/helix.py b/src/Mod/CAM/Path/Base/Generator/helix.py similarity index 98% rename from src/Mod/Path/Path/Base/Generator/helix.py rename to src/Mod/CAM/Path/Base/Generator/helix.py index bbb06ca084..1ea355c518 100644 --- a/src/Mod/Path/Path/Base/Generator/helix.py +++ b/src/Mod/CAM/Path/Base/Generator/helix.py @@ -24,10 +24,10 @@ from numpy import ceil, linspace, isclose import Path -__title__ = "Helix Path Generator" +__title__ = "Helix toolpath Generator" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Generates the helix for a single spot targetshape" +__doc__ = "Generates the helical toolpath for a single spot targetshape" __contributors__ = "russ4262 (Russell Johnson), Lorenz Hüdepohl" diff --git a/src/Mod/Path/Path/Base/Generator/rotation.py b/src/Mod/CAM/Path/Base/Generator/rotation.py similarity index 99% rename from src/Mod/Path/Path/Base/Generator/rotation.py rename to src/Mod/CAM/Path/Base/Generator/rotation.py index 9869f662ea..fae6e8cf70 100644 --- a/src/Mod/Path/Path/Base/Generator/rotation.py +++ b/src/Mod/CAM/Path/Base/Generator/rotation.py @@ -30,7 +30,7 @@ import Path import FreeCAD from enum import Enum -__title__ = "Rotation Path Generator" +__title__ = "Rotation toolpath Generator" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Generates the rotation toolpath" diff --git a/src/Mod/Path/Path/Base/Generator/threadmilling.py b/src/Mod/CAM/Path/Base/Generator/threadmilling.py similarity index 98% rename from src/Mod/Path/Path/Base/Generator/threadmilling.py rename to src/Mod/CAM/Path/Base/Generator/threadmilling.py index c691602104..aa7efa3f76 100644 --- a/src/Mod/Path/Path/Base/Generator/threadmilling.py +++ b/src/Mod/CAM/Path/Base/Generator/threadmilling.py @@ -25,10 +25,10 @@ import Path import math from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Thread Milling generator" +__title__ = "CAM Thread Milling generator" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Path thread milling operation." +__doc__ = "CAM thread milling operation." if False: Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) diff --git a/src/Mod/Path/Path/Base/Generator/toolchange.py b/src/Mod/CAM/Path/Base/Generator/toolchange.py similarity index 98% rename from src/Mod/Path/Path/Base/Generator/toolchange.py rename to src/Mod/CAM/Path/Base/Generator/toolchange.py index 994b094ee5..02ad2475c4 100644 --- a/src/Mod/Path/Path/Base/Generator/toolchange.py +++ b/src/Mod/CAM/Path/Base/Generator/toolchange.py @@ -24,7 +24,7 @@ import Path from enum import Enum -__title__ = "Toolchange Path Generator" +__title__ = "Toolchange toolpath Generator" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Generates the rotation toolpath" diff --git a/src/Mod/Path/Path/Base/Gui/GetPoint.py b/src/Mod/CAM/Path/Base/Gui/GetPoint.py similarity index 99% rename from src/Mod/Path/Path/Base/Gui/GetPoint.py rename to src/Mod/CAM/Path/Base/Gui/GetPoint.py index 9a2a94bd35..0b893b6e42 100644 --- a/src/Mod/Path/Path/Base/Gui/GetPoint.py +++ b/src/Mod/CAM/Path/Base/Gui/GetPoint.py @@ -32,7 +32,7 @@ Draft = LazyLoader("Draft", globals(), "Draft") from PySide import QtCore, QtGui from pivy import coin -__title__ = "Path GetPoint UI" +__title__ = "CAM GetPoint UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Helper class to use FreeCADGUi.Snapper to let the user enter arbitrary points while the task panel is active." @@ -206,7 +206,7 @@ class TaskPanel: if cleanup: self.removeGlobalCallbacks() - FreeCADGui.Snapper.off(True) + FreeCADGui.Snapper.off() if self.buttonBox: self.buttonBox.setEnabled(True) self.removeEscapeShortcut() diff --git a/src/Mod/Path/Path/Base/Gui/IconViewProvider.py b/src/Mod/CAM/Path/Base/Gui/IconViewProvider.py similarity index 97% rename from src/Mod/Path/Path/Base/Gui/IconViewProvider.py rename to src/Mod/CAM/Path/Base/Gui/IconViewProvider.py index c92531cc6e..6154b3307f 100644 --- a/src/Mod/Path/Path/Base/Gui/IconViewProvider.py +++ b/src/Mod/CAM/Path/Base/Gui/IconViewProvider.py @@ -25,7 +25,7 @@ import Path import PathGui import importlib -__title__ = "Path Icon ViewProvider" +__title__ = "CAM Icon ViewProvider" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "ViewProvider who's main and only task is to assign an icon." @@ -69,7 +69,7 @@ class ViewProvider(object): self.editCallback = state["editCallback"] def getIcon(self): - return ":/icons/Path_{}.svg".format(self.icon) + return ":/icons/CAM_{}.svg".format(self.icon) def onEdit(self, callback): self.editModule = callback.__module__ diff --git a/src/Mod/Path/Path/Base/Gui/PreferencesAdvanced.py b/src/Mod/CAM/Path/Base/Gui/PreferencesAdvanced.py similarity index 100% rename from src/Mod/Path/Path/Base/Gui/PreferencesAdvanced.py rename to src/Mod/CAM/Path/Base/Gui/PreferencesAdvanced.py diff --git a/src/Mod/Path/Path/Base/Gui/PropertyBag.py b/src/Mod/CAM/Path/Base/Gui/PropertyBag.py similarity index 98% rename from src/Mod/Path/Path/Base/Gui/PropertyBag.py rename to src/Mod/CAM/Path/Base/Gui/PropertyBag.py index 1dc4b01e14..d40c95f3bc 100644 --- a/src/Mod/Path/Path/Base/Gui/PropertyBag.py +++ b/src/Mod/CAM/Path/Base/Gui/PropertyBag.py @@ -436,9 +436,9 @@ class PropertyBagCreateCommand(object): def GetResources(self): return { - "MenuText": translate("Path_PropertyBag", "PropertyBag"), + "MenuText": translate("CAM_PropertyBag", "PropertyBag"), "ToolTip": translate( - "Path_PropertyBag", + "CAM_PropertyBag", "Creates an object which can be used to store reference properties.", ), } @@ -463,6 +463,6 @@ class PropertyBagCreateCommand(object): if FreeCAD.GuiUp: - FreeCADGui.addCommand("Path_PropertyBag", PropertyBagCreateCommand()) + FreeCADGui.addCommand("CAM_PropertyBag", PropertyBagCreateCommand()) FreeCAD.Console.PrintLog("Loading PathPropertyBagGui ... done\n") diff --git a/src/Mod/Path/Path/Base/Gui/PropertyEditor.py b/src/Mod/CAM/Path/Base/Gui/PropertyEditor.py similarity index 99% rename from src/Mod/Path/Path/Base/Gui/PropertyEditor.py rename to src/Mod/CAM/Path/Base/Gui/PropertyEditor.py index 81fc1d62d7..7dac3f4c5f 100644 --- a/src/Mod/Path/Path/Base/Gui/PropertyEditor.py +++ b/src/Mod/CAM/Path/Base/Gui/PropertyEditor.py @@ -26,7 +26,7 @@ import Path.Base.SetupSheetOpPrototype as PathSetupSheetOpPrototype from PySide import QtCore, QtGui -__title__ = "Path Property Editor" +__title__ = "CAM Property Editor" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Task panel editor for Properties" diff --git a/src/Mod/Path/Path/Base/Gui/SetupSheet.py b/src/Mod/CAM/Path/Base/Gui/SetupSheet.py similarity index 99% rename from src/Mod/Path/Path/Base/Gui/SetupSheet.py rename to src/Mod/CAM/Path/Base/Gui/SetupSheet.py index 8c8b5cf98a..beac01ca1b 100644 --- a/src/Mod/Path/Path/Base/Gui/SetupSheet.py +++ b/src/Mod/CAM/Path/Base/Gui/SetupSheet.py @@ -65,7 +65,7 @@ class ViewProvider: self.obj = vobj.Object def getIcon(self): - return ":/icons/Path_SetupSheet.svg" + return ":/icons/CAM_SetupSheet.svg" def dumps(self): return None diff --git a/src/Mod/Path/Path/Base/Gui/SetupSheetOpPrototype.py b/src/Mod/CAM/Path/Base/Gui/SetupSheetOpPrototype.py similarity index 100% rename from src/Mod/Path/Path/Base/Gui/SetupSheetOpPrototype.py rename to src/Mod/CAM/Path/Base/Gui/SetupSheetOpPrototype.py diff --git a/src/Mod/Path/Path/Base/Gui/Util.py b/src/Mod/CAM/Path/Base/Gui/Util.py similarity index 99% rename from src/Mod/Path/Path/Base/Gui/Util.py rename to src/Mod/CAM/Path/Base/Gui/Util.py index a958705441..af349a3444 100644 --- a/src/Mod/Path/Path/Base/Gui/Util.py +++ b/src/Mod/CAM/Path/Base/Gui/Util.py @@ -28,10 +28,10 @@ from PySide import QtGui, QtCore from PySide import QtCore, QtGui -__title__ = "Path UI helper and utility functions" +__title__ = "CAM UI helper and utility functions" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "A collection of helper and utility functions for the Path GUI." +__doc__ = "A collection of helper and utility functions for the CAM GUI." if False: diff --git a/src/Mod/Path/Path/Base/Gui/__init__.py b/src/Mod/CAM/Path/Base/Gui/__init__.py similarity index 100% rename from src/Mod/Path/Path/Base/Gui/__init__.py rename to src/Mod/CAM/Path/Base/Gui/__init__.py diff --git a/src/Mod/Path/Path/Base/Language.py b/src/Mod/CAM/Path/Base/Language.py similarity index 100% rename from src/Mod/Path/Path/Base/Language.py rename to src/Mod/CAM/Path/Base/Language.py diff --git a/src/Mod/Path/Path/Base/MachineState.py b/src/Mod/CAM/Path/Base/MachineState.py similarity index 99% rename from src/Mod/Path/Path/Base/MachineState.py rename to src/Mod/CAM/Path/Base/MachineState.py index 1f9ba916f2..70f6689752 100644 --- a/src/Mod/Path/Path/Base/MachineState.py +++ b/src/Mod/CAM/Path/Base/MachineState.py @@ -20,7 +20,7 @@ # * * # *************************************************************************** -__title__ = "Path Machine State" +__title__ = "CAM Machine State" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Dataclass to implement a machinestate tracker" diff --git a/src/Mod/Path/Path/Base/Property.py b/src/Mod/CAM/Path/Base/Property.py similarity index 100% rename from src/Mod/Path/Path/Base/Property.py rename to src/Mod/CAM/Path/Base/Property.py diff --git a/src/Mod/Path/Path/Base/PropertyBag.py b/src/Mod/CAM/Path/Base/PropertyBag.py similarity index 100% rename from src/Mod/Path/Path/Base/PropertyBag.py rename to src/Mod/CAM/Path/Base/PropertyBag.py diff --git a/src/Mod/Path/Path/Base/SetupSheet.py b/src/Mod/CAM/Path/Base/SetupSheet.py similarity index 100% rename from src/Mod/Path/Path/Base/SetupSheet.py rename to src/Mod/CAM/Path/Base/SetupSheet.py diff --git a/src/Mod/Path/Path/Base/SetupSheetOpPrototype.py b/src/Mod/CAM/Path/Base/SetupSheetOpPrototype.py similarity index 100% rename from src/Mod/Path/Path/Base/SetupSheetOpPrototype.py rename to src/Mod/CAM/Path/Base/SetupSheetOpPrototype.py diff --git a/src/Mod/Path/Path/Base/Util.py b/src/Mod/CAM/Path/Base/Util.py similarity index 100% rename from src/Mod/Path/Path/Base/Util.py rename to src/Mod/CAM/Path/Base/Util.py diff --git a/src/Mod/Path/Path/Base/__init__.py b/src/Mod/CAM/Path/Base/__init__.py similarity index 100% rename from src/Mod/Path/Path/Base/__init__.py rename to src/Mod/CAM/Path/Base/__init__.py diff --git a/src/Mod/Path/Path/Dressup/Boundary.py b/src/Mod/CAM/Path/Dressup/Boundary.py similarity index 99% rename from src/Mod/Path/Path/Dressup/Boundary.py rename to src/Mod/CAM/Path/Dressup/Boundary.py index 2305b888a3..58af8071fa 100644 --- a/src/Mod/Path/Path/Dressup/Boundary.py +++ b/src/Mod/CAM/Path/Dressup/Boundary.py @@ -301,7 +301,7 @@ def Create(base, name="DressupPathBoundary"): if not base.isDerivedFrom("Path::Feature"): Path.Log.error( - translate("Path_DressupPathBoundary", "The selected object is not a path") + translate("CAM_DressupPathBoundary", "The selected object is not a path") + "\n" ) return None diff --git a/src/Mod/Path/Path/Dressup/DogboneII.py b/src/Mod/CAM/Path/Dressup/DogboneII.py similarity index 100% rename from src/Mod/Path/Path/Dressup/DogboneII.py rename to src/Mod/CAM/Path/Dressup/DogboneII.py diff --git a/src/Mod/Path/Path/Dressup/Gui/AxisMap.py b/src/Mod/CAM/Path/Dressup/Gui/AxisMap.py similarity index 96% rename from src/Mod/Path/Path/Dressup/Gui/AxisMap.py rename to src/Mod/CAM/Path/Dressup/Gui/AxisMap.py index 2f0e7a786d..d6da52e895 100644 --- a/src/Mod/Path/Path/Dressup/Gui/AxisMap.py +++ b/src/Mod/CAM/Path/Dressup/Gui/AxisMap.py @@ -259,11 +259,11 @@ class ViewProviderDressup: class CommandPathDressup: def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupAxisMap", "Axis Map"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupAxisMap", "Axis Map"), "Accel": "", "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupAxisMap", "Remap one axis to another." + "CAM_DressupAxisMap", "Remap one axis to another." ), } @@ -280,17 +280,17 @@ class CommandPathDressup: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: FreeCAD.Console.PrintError( - translate("Path_Dressup", "Please select one path object\n") + translate("CAM_Dressup", "Please select one toolpath object\n") ) return if not selection[0].isDerivedFrom("Path::Feature"): FreeCAD.Console.PrintError( - translate("Path_Dressup", "The selected object is not a path\n") + translate("CAM_Dressup", "The selected object is not a toolpath\n") ) return if selection[0].isDerivedFrom("Path::FeatureCompoundPython"): FreeCAD.Console.PrintError( - translate("Path_Dressup", "Please select a Path object") + translate("CAM_Dressup", "Please select a toolpath object") ) return @@ -320,6 +320,6 @@ class CommandPathDressup: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_DressupAxisMap", CommandPathDressup()) + FreeCADGui.addCommand("CAM_DressupAxisMap", CommandPathDressup()) FreeCAD.Console.PrintLog("Loading PathDressup... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/Boundary.py b/src/Mod/CAM/Path/Dressup/Gui/Boundary.py similarity index 96% rename from src/Mod/Path/Path/Dressup/Gui/Boundary.py rename to src/Mod/CAM/Path/Dressup/Gui/Boundary.py index e27c0169e8..e20c84f32c 100644 --- a/src/Mod/Path/Path/Dressup/Gui/Boundary.py +++ b/src/Mod/CAM/Path/Dressup/Gui/Boundary.py @@ -259,11 +259,11 @@ def Create(base, name="DressupPathBoundary"): class CommandPathDressupPathBoundary: def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupPathBoundary", "Boundary"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupPathBoundary", "Boundary"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupPathBoundary", - "Creates a Path Boundary Dress-up from a selected path", + "CAM_DressupPathBoundary", + "Creates a Boundary Dress-up from a selected toolpath", ), } @@ -279,7 +279,7 @@ class CommandPathDressupPathBoundary: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: Path.Log.error( - translate("Path_DressupPathBoundary", "Please select one path object") + translate("CAM_DressupPathBoundary", "Please select one toolpath object") + "\n" ) return @@ -297,6 +297,6 @@ class CommandPathDressupPathBoundary: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_DressupPathBoundary", CommandPathDressupPathBoundary()) + FreeCADGui.addCommand("CAM_DressupPathBoundary", CommandPathDressupPathBoundary()) Path.Log.notice("Loading PathDressupPathBoundaryGui... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/Dogbone.py b/src/Mod/CAM/Path/Dressup/Gui/Dogbone.py similarity index 99% rename from src/Mod/Path/Path/Dressup/Gui/Dogbone.py rename to src/Mod/CAM/Path/Dressup/Gui/Dogbone.py index be11dc11fa..f3b4a8d619 100644 --- a/src/Mod/Path/Path/Dressup/Gui/Dogbone.py +++ b/src/Mod/CAM/Path/Dressup/Gui/Dogbone.py @@ -1357,11 +1357,11 @@ def Create(base, name="DogboneDressup"): class CommandDressupDogbone(object): def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupDogbone", "Dogbone"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupDogbone", "Dogbone"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupDogbone", - "Creates a Dogbone Dress-up object from a selected path", + "CAM_DressupDogbone", + "Creates a Dogbone Dress-up object from a selected toolpath", ), } @@ -1378,13 +1378,13 @@ class CommandDressupDogbone(object): selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: FreeCAD.Console.PrintError( - translate("Path_DressupDogbone", "Please select one path object") + "\n" + translate("CAM_DressupDogbone", "Please select one toolpath object") + "\n" ) return baseObject = selection[0] if not baseObject.isDerivedFrom("Path::Feature"): FreeCAD.Console.PrintError( - translate("Path_DressupDogbone", "The selected object is not a path") + translate("CAM_DressupDogbone", "The selected object is not a toolpath") + "\n" ) return @@ -1406,6 +1406,6 @@ class CommandDressupDogbone(object): # from PySide import QtGui # from pivy import coin # -# FreeCADGui.addCommand("Path_DressupDogbone", CommandDressupDogbone()) +# FreeCADGui.addCommand("CAM_DressupDogbone", CommandDressupDogbone()) FreeCAD.Console.PrintLog("Loading DressupDogbone... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/DogboneII.py b/src/Mod/CAM/Path/Dressup/Gui/DogboneII.py similarity index 96% rename from src/Mod/Path/Path/Dressup/Gui/DogboneII.py rename to src/Mod/CAM/Path/Dressup/Gui/DogboneII.py index 5c3ecfea27..198beecf57 100644 --- a/src/Mod/Path/Path/Dressup/Gui/DogboneII.py +++ b/src/Mod/CAM/Path/Dressup/Gui/DogboneII.py @@ -325,11 +325,11 @@ def Create(base, name="DressupDogbone"): class CommandDressupDogboneII(object): def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupDogbone", "Dogbone"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupDogbone", "Dogbone"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupDogbone", - "Creates a Dogbone Dress-up object from a selected path", + "CAM_DressupDogbone", + "Creates a Dogbone Dress-up object from a selected toolpath", ), } @@ -346,13 +346,13 @@ class CommandDressupDogboneII(object): selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: FreeCAD.Console.PrintError( - translate("Path_DressupDogbone", "Please select one path object") + "\n" + translate("CAM_DressupDogbone", "Please select one toolpath object") + "\n" ) return baseObject = selection[0] if not baseObject.isDerivedFrom("Path::Feature"): FreeCAD.Console.PrintError( - translate("Path_DressupDogbone", "The selected object is not a path") + translate("CAM_DressupDogbone", "The selected object is not a toolpath") + "\n" ) return @@ -373,6 +373,6 @@ if FreeCAD.GuiUp: from PySide import QtGui from pivy import coin - FreeCADGui.addCommand("Path_DressupDogbone", CommandDressupDogboneII()) + FreeCADGui.addCommand("CAM_DressupDogbone", CommandDressupDogboneII()) FreeCAD.Console.PrintLog("Loading DressupDogboneII ... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/Dragknife.py b/src/Mod/CAM/Path/Dressup/Gui/Dragknife.py similarity index 97% rename from src/Mod/Path/Path/Dressup/Gui/Dragknife.py rename to src/Mod/CAM/Path/Dressup/Gui/Dragknife.py index 301174b8c7..102fd9ed7f 100644 --- a/src/Mod/Path/Path/Dressup/Gui/Dragknife.py +++ b/src/Mod/CAM/Path/Dressup/Gui/Dragknife.py @@ -55,7 +55,7 @@ class ObjectDressup: "App::PropertyLink", "Base", "Path", - QT_TRANSLATE_NOOP("App::Property", "The base path to modify"), + QT_TRANSLATE_NOOP("App::Property", "The base toolpath to modify"), ) obj.addProperty( "App::PropertyAngle", @@ -597,11 +597,11 @@ class ViewProviderDressup: class CommandDressupDragknife: def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupDragKnife", "DragKnife"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupDragKnife", "DragKnife"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupDragKnife", - "Modifies a path to add dragknife corner actions", + "CAM_DressupDragKnife", + "Modifies a toolpath to add dragknife corner actions", ), } @@ -618,19 +618,19 @@ class CommandDressupDragknife: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: FreeCAD.Console.PrintError( - translate("Path_DressupDragKnife", "Please select one path object") + translate("CAM_DressupDragKnife", "Please select one toolpath object") + "\n" ) return if not selection[0].isDerivedFrom("Path::Feature"): FreeCAD.Console.PrintError( - translate("Path_DressupDragKnife", "The selected object is not a path") + translate("CAM_DressupDragKnife", "The selected object is not a toolpath") + "\n" ) return if selection[0].isDerivedFrom("Path::FeatureCompoundPython"): FreeCAD.Console.PrintError( - translate("Path_DressupDragKnife", "Please select a Path object") + translate("CAM_DressupDragKnife", "Please select a toolpath object") ) return @@ -663,6 +663,6 @@ class CommandDressupDragknife: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_DressupDragKnife", CommandDressupDragknife()) + FreeCADGui.addCommand("CAM_DressupDragKnife", CommandDressupDragknife()) -FreeCAD.Console.PrintLog("Loading Path_DressupDragKnife... done\n") +FreeCAD.Console.PrintLog("Loading CAM_DressupDragKnife... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/LeadInOut.py b/src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py similarity index 94% rename from src/Mod/Path/Path/Dressup/Gui/LeadInOut.py rename to src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py index dbd2ac8620..f44b8b6b1f 100644 --- a/src/Mod/Path/Path/Dressup/Gui/LeadInOut.py +++ b/src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py @@ -49,34 +49,34 @@ else: class ObjectDressup: def __init__(self, obj): lead_styles = [ - QT_TRANSLATE_NOOP("Path_DressupLeadInOut", "Arc"), - QT_TRANSLATE_NOOP("Path_DressupLeadInOut", "Tangent"), - QT_TRANSLATE_NOOP("Path_DressupLeadInOut", "Perpendicular"), + QT_TRANSLATE_NOOP("CAM_DressupLeadInOut", "Arc"), + QT_TRANSLATE_NOOP("CAM_DressupLeadInOut", "Tangent"), + QT_TRANSLATE_NOOP("CAM_DressupLeadInOut", "Perpendicular"), ] self.obj = obj obj.addProperty( "App::PropertyLink", "Base", "Path", - QT_TRANSLATE_NOOP("App::Property", "The base path to modify"), + QT_TRANSLATE_NOOP("App::Property", "The base toolpath to modify"), ) obj.addProperty( "App::PropertyBool", "LeadIn", "Path", - QT_TRANSLATE_NOOP("App::Property", "Calculate roll-on to path"), + QT_TRANSLATE_NOOP("App::Property", "Calculate roll-on to toolpath"), ) obj.addProperty( "App::PropertyBool", "LeadOut", "Path", - QT_TRANSLATE_NOOP("App::Property", "Calculate roll-off from path"), + QT_TRANSLATE_NOOP("App::Property", "Calculate roll-off from toolpath"), ) obj.addProperty( "App::PropertyBool", "KeepToolDown", "Path", - QT_TRANSLATE_NOOP("App::Property", "Keep the Tool Down in Path"), + QT_TRANSLATE_NOOP("App::Property", "Keep the Tool Down in toolpath"), ) obj.addProperty( "App::PropertyDistance", @@ -94,14 +94,14 @@ class ObjectDressup: "App::PropertyEnumeration", "StyleOn", "Path", - QT_TRANSLATE_NOOP("App::Property", "The Style of motion into the Path"), + QT_TRANSLATE_NOOP("App::Property", "The Style of motion into the toolpath"), ) obj.StyleOn = lead_styles obj.addProperty( "App::PropertyEnumeration", "StyleOff", "Path", - QT_TRANSLATE_NOOP("App::Property", "The Style of motion out of the Path"), + QT_TRANSLATE_NOOP("App::Property", "The Style of motion out of the toolpath"), ) obj.StyleOff = lead_styles obj.addProperty( @@ -164,14 +164,14 @@ class ObjectDressup: if obj.Length <= 0: Path.Log.error( - translate("Path_DressupLeadInOut", "Length/Radius positive not Null") + translate("CAM_DressupLeadInOut", "Length/Radius positive not Null") + "\n" ) obj.Length = 0.1 if obj.LengthOut <= 0: Path.Log.error( - translate("Path_DressupLeadInOut", "Length/Radius positive not Null") + translate("CAM_DressupLeadInOut", "Length/Radius positive not Null") + "\n" ) obj.LengthOut = 0.1 @@ -460,10 +460,10 @@ class ViewProviderDressup: class CommandPathDressupLeadInOut: def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupLeadInOut", "LeadInOut"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupLeadInOut", "LeadInOut"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupLeadInOut", + "CAM_DressupLeadInOut", "Creates a Cutter Radius Compensation G41/G42 Entry Dressup object from a selected path", ), } @@ -479,20 +479,20 @@ class CommandPathDressupLeadInOut: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: Path.Log.error( - translate("Path_DressupLeadInOut", "Please select one path object") + translate("CAM_DressupLeadInOut", "Please select one toolpath object") + "\n" ) return baseObject = selection[0] if not baseObject.isDerivedFrom("Path::Feature"): Path.Log.error( - translate("Path_DressupLeadInOut", "The selected object is not a path") + translate("CAM_DressupLeadInOut", "The selected object is not a toolpath") + "\n" ) return if baseObject.isDerivedFrom("Path::FeatureCompoundPython"): Path.Log.error( - translate("Path_DressupLeadInOut", "Please select a Profile object") + translate("CAM_DressupLeadInOut", "Please select a Profile object") ) return @@ -521,6 +521,6 @@ class CommandPathDressupLeadInOut: if App.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_DressupLeadInOut", CommandPathDressupLeadInOut()) + FreeCADGui.addCommand("CAM_DressupLeadInOut", CommandPathDressupLeadInOut()) -Path.Log.notice("Loading Path_DressupLeadInOut... done\n") +Path.Log.notice("Loading CAM_DressupLeadInOut... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/Preferences.py b/src/Mod/CAM/Path/Dressup/Gui/Preferences.py similarity index 96% rename from src/Mod/Path/Path/Dressup/Gui/Preferences.py rename to src/Mod/CAM/Path/Dressup/Gui/Preferences.py index 18fa63336f..563b57ceee 100644 --- a/src/Mod/Path/Path/Dressup/Gui/Preferences.py +++ b/src/Mod/CAM/Path/Dressup/Gui/Preferences.py @@ -36,7 +36,7 @@ def RegisterDressup(dressup): class DressupPreferencesPage: def __init__(self, parent=None): self.form = QtGui.QToolBox() - self.form.setWindowTitle(translate("Path_PreferencesPathDressup", "Dressups")) + self.form.setWindowTitle(translate("CAM_PreferencesPathDressup", "Dressups")) pages = [] for dressup in _dressups: page = dressup.preferencesPage() diff --git a/src/Mod/Path/Path/Dressup/Gui/RampEntry.py b/src/Mod/CAM/Path/Dressup/Gui/RampEntry.py similarity index 96% rename from src/Mod/Path/Path/Dressup/Gui/RampEntry.py rename to src/Mod/CAM/Path/Dressup/Gui/RampEntry.py index ec79e763ce..d8fa6fbdc8 100644 --- a/src/Mod/Path/Path/Dressup/Gui/RampEntry.py +++ b/src/Mod/CAM/Path/Dressup/Gui/RampEntry.py @@ -54,7 +54,7 @@ class ObjectDressup: "App::PropertyLink", "Base", "Path", - QT_TRANSLATE_NOOP("App::Property", "The base path to modify"), + QT_TRANSLATE_NOOP("App::Property", "The base toolpath to modify"), ) obj.addProperty( "App::PropertyAngle", @@ -128,25 +128,25 @@ class ObjectDressup: enums = { "Method": [ - (translate("Path_DressupRampEntry", "RampMethod1"), "RampMethod1"), - (translate("Path_DressupRampEntry", "RampMethod2"), "RampMethod2"), - (translate("Path_DressupRampEntry", "RampMethod3"), "RampMethod3"), - (translate("Path_DressupRampEntry", "Helix"), "Helix"), + (translate("CAM_DressupRampEntry", "RampMethod1"), "RampMethod1"), + (translate("CAM_DressupRampEntry", "RampMethod2"), "RampMethod2"), + (translate("CAM_DressupRampEntry", "RampMethod3"), "RampMethod3"), + (translate("CAM_DressupRampEntry", "Helix"), "Helix"), ], "RampFeedRate": [ ( - translate("Path_DressupRampEntry", "Horizontal Feed Rate"), + translate("CAM_DressupRampEntry", "Horizontal Feed Rate"), "Horizontal Feed Rate", ), ( - translate("Path_DressupRampEntry", "Vertical Feed Rate"), + translate("CAM_DressupRampEntry", "Vertical Feed Rate"), "Vertical Feed Rate", ), ( - translate("Path_DressupRampEntry", "Ramp Feed Rate"), + translate("CAM_DressupRampEntry", "Ramp Feed Rate"), "Ramp Feed Rate", ), - (translate("Path_DressupRampEntry", "Custom"), "Custom"), + (translate("CAM_DressupRampEntry", "Custom"), "Custom"), ], } @@ -894,11 +894,11 @@ class ViewProviderDressup: class CommandPathDressupRampEntry: def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupRampEntry", "RampEntry"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupRampEntry", "RampEntry"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupRampEntry", - "Creates a Ramp Entry Dress-up object from a selected path", + "CAM_DressupRampEntry", + "Creates a Ramp Entry Dress-up object from a selected toolpath", ), } @@ -914,20 +914,20 @@ class CommandPathDressupRampEntry: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: Path.Log.error( - translate("Path_DressupRampEntry", "Please select one path object") + translate("CAM_DressupRampEntry", "Please select one toolpath object") + "\n" ) return baseObject = selection[0] if not baseObject.isDerivedFrom("Path::Feature"): Path.Log.error( - translate("Path_DressupRampEntry", "The selected object is not a path") + translate("CAM_DressupRampEntry", "The selected object is not a toolpath") + "\n" ) return if baseObject.isDerivedFrom("Path::FeatureCompoundPython"): Path.Log.error( - translate("Path_DressupRampEntry", "Please select a Profile object") + translate("CAM_DressupRampEntry", "Please select a Profile object") ) return @@ -956,6 +956,6 @@ class CommandPathDressupRampEntry: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_DressupRampEntry", CommandPathDressupRampEntry()) + FreeCADGui.addCommand("CAM_DressupRampEntry", CommandPathDressupRampEntry()) -Path.Log.notice("Loading Path_DressupRampEntry... done\n") +Path.Log.notice("Loading CAM_DressupRampEntry... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/TagPreferences.py b/src/Mod/CAM/Path/Dressup/Gui/TagPreferences.py similarity index 98% rename from src/Mod/Path/Path/Dressup/Gui/TagPreferences.py rename to src/Mod/CAM/Path/Dressup/Gui/TagPreferences.py index ad48f46dc8..9d30390c55 100644 --- a/src/Mod/Path/Path/Dressup/Gui/TagPreferences.py +++ b/src/Mod/CAM/Path/Dressup/Gui/TagPreferences.py @@ -89,7 +89,7 @@ class HoldingTagPreferences: self.form = FreeCADGui.PySideUic.loadUi( ":/preferences/PathDressupHoldingTags.ui" ) - self.label = translate("Path_DressupTag", "Holding Tag") + self.label = translate("CAM_DressupTag", "Holding Tag") def loadSettings(self): self.form.ifWidth.setText( diff --git a/src/Mod/Path/Path/Dressup/Gui/Tags.py b/src/Mod/CAM/Path/Dressup/Gui/Tags.py similarity index 98% rename from src/Mod/Path/Path/Dressup/Gui/Tags.py rename to src/Mod/CAM/Path/Dressup/Gui/Tags.py index b0c4d2affd..4041ec9cde 100644 --- a/src/Mod/Path/Path/Dressup/Gui/Tags.py +++ b/src/Mod/CAM/Path/Dressup/Gui/Tags.py @@ -378,7 +378,7 @@ class PathDressupTagViewProvider: def debugDisplay(self): # if False and addDebugDisplay(): # if not hasattr(self.vobj, 'Debug'): - # self.vobj.addProperty('App::PropertyLink', 'Debug', 'Debug', QT_TRANSLATE_NOOP('Path_DressupTag', 'Some elements for debugging')) + # self.vobj.addProperty('App::PropertyLink', 'Debug', 'Debug', QT_TRANSLATE_NOOP('CAM_DressupTag', 'Some elements for debugging')) # dbg = self.vobj.Object.Document.addObject('App::DocumentObjectGroup', 'TagDebug') # self.vobj.Debug = dbg # return True @@ -562,10 +562,10 @@ def Create(baseObject, name="DressupTag"): class CommandPathDressupTag: def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupTag", "Tag"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupTag", "Tag"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupTag", "Creates a Tag Dress-up object from a selected path" + "CAM_DressupTag", "Creates a Tag Dress-up object from a selected toolpath" ), } @@ -581,7 +581,7 @@ class CommandPathDressupTag: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: Path.Log.error( - translate("Path_DressupTag", "Please select one path object") + "\n" + translate("CAM_DressupTag", "Please select one toolpath object") + "\n" ) return baseObject = selection[0] @@ -598,6 +598,6 @@ class CommandPathDressupTag: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_DressupTag", CommandPathDressupTag()) + FreeCADGui.addCommand("CAM_DressupTag", CommandPathDressupTag()) Path.Log.notice("Loading PathDressupTagGui... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/ZCorrect.py b/src/Mod/CAM/Path/Dressup/Gui/ZCorrect.py similarity index 95% rename from src/Mod/Path/Path/Dressup/Gui/ZCorrect.py rename to src/Mod/CAM/Path/Dressup/Gui/ZCorrect.py index bee53d9428..d4c038c5b4 100644 --- a/src/Mod/Path/Path/Dressup/Gui/ZCorrect.py +++ b/src/Mod/CAM/Path/Dressup/Gui/ZCorrect.py @@ -59,7 +59,7 @@ class ObjectDressup: "App::PropertyLink", "Base", "Path", - QT_TRANSLATE_NOOP("App::Property", "The base path to modify"), + QT_TRANSLATE_NOOP("App::Property", "The base toolpath to modify"), ) obj.addProperty( "App::PropertyFile", @@ -289,9 +289,9 @@ class TaskPanel: def SetProbePointFileName(self): filename = QtGui.QFileDialog.getOpenFileName( self.form, - translate("Path_Probe", "Select Probe Point File"), + translate("CAM_Probe", "Select Probe Point File"), None, - translate("Path_Probe", "All Files (*.*)"), + translate("CAM_Probe", "All Files (*.*)"), ) if filename and filename[0]: self.obj.probefile = str(filename[0]) @@ -342,11 +342,11 @@ class ViewProviderDressup: class CommandPathDressup: def GetResources(self): return { - "Pixmap": "Path_Dressup", - "MenuText": QT_TRANSLATE_NOOP("Path_DressupZCorrect", "Z Depth Correction"), + "Pixmap": "CAM_Dressup", + "MenuText": QT_TRANSLATE_NOOP("CAM_DressupZCorrect", "Z Depth Correction"), "Accel": "", "ToolTip": QT_TRANSLATE_NOOP( - "Path_DressupZCorrect", "Use Probe Map to correct Z depth" + "CAM_DressupZCorrect", "Use Probe Map to correct Z depth" ), } @@ -362,17 +362,17 @@ class CommandPathDressup: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: FreeCAD.Console.PrintError( - translate("Path_Dressup", "Please select one path object\n") + translate("CAM_Dressup", "Please select one toolpath object\n") ) return if not selection[0].isDerivedFrom("Path::Feature"): FreeCAD.Console.PrintError( - translate("Path_Dressup", "The selected object is not a path\n") + translate("CAM_Dressup", "The selected object is not a toolpath\n") ) return if selection[0].isDerivedFrom("Path::FeatureCompoundPython"): FreeCAD.Console.PrintError( - translate("Path_Dressup", "Please select a Path object") + translate("CAM_Dressup", "Please select a toolpath object") ) return @@ -399,6 +399,6 @@ class CommandPathDressup: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_DressupZCorrect", CommandPathDressup()) + FreeCADGui.addCommand("CAM_DressupZCorrect", CommandPathDressup()) FreeCAD.Console.PrintLog("Loading PathDressup... done\n") diff --git a/src/Mod/Path/Path/Dressup/Gui/__init__.py b/src/Mod/CAM/Path/Dressup/Gui/__init__.py similarity index 100% rename from src/Mod/Path/Path/Dressup/Gui/__init__.py rename to src/Mod/CAM/Path/Dressup/Gui/__init__.py diff --git a/src/Mod/Path/Path/Dressup/Tags.py b/src/Mod/CAM/Path/Dressup/Tags.py similarity index 99% rename from src/Mod/Path/Path/Dressup/Tags.py rename to src/Mod/CAM/Path/Dressup/Tags.py index 0bcb01639f..f9b24ec2d2 100644 --- a/src/Mod/Path/Path/Dressup/Tags.py +++ b/src/Mod/CAM/Path/Dressup/Tags.py @@ -1301,7 +1301,7 @@ class ObjectTagDressup: except ValueError: Path.Log.error( translate( - "Path_DressupTag", + "CAM_DressupTag", "Cannot insert holding tags for this path - please select a Profile path", ) + "\n" @@ -1354,12 +1354,12 @@ def Create(baseObject, name="DressupTag"): """ if not baseObject.isDerivedFrom("Path::Feature"): Path.Log.error( - translate("Path_DressupTag", "The selected object is not a path") + "\n" + translate("CAM_DressupTag", "The selected object is not a path") + "\n" ) return None if baseObject.isDerivedFrom("Path::FeatureCompoundPython"): - Path.Log.error(translate("Path_DressupTag", "Please select a Profile object")) + Path.Log.error(translate("CAM_DressupTag", "Please select a Profile object")) return None obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name) @@ -1370,4 +1370,4 @@ def Create(baseObject, name="DressupTag"): return obj -Path.Log.notice("Loading Path_DressupTag... done\n") +Path.Log.notice("Loading CAM_DressupTag... done\n") diff --git a/src/Mod/Path/Path/Dressup/Utils.py b/src/Mod/CAM/Path/Dressup/Utils.py similarity index 100% rename from src/Mod/Path/Path/Dressup/Utils.py rename to src/Mod/CAM/Path/Dressup/Utils.py diff --git a/src/Mod/Path/Path/Dressup/__init__.py b/src/Mod/CAM/Path/Dressup/__init__.py similarity index 100% rename from src/Mod/Path/Path/Dressup/__init__.py rename to src/Mod/CAM/Path/Dressup/__init__.py diff --git a/src/Mod/Path/Path/Geom.py b/src/Mod/CAM/Path/Geom.py similarity index 99% rename from src/Mod/Path/Path/Geom.py rename to src/Mod/CAM/Path/Geom.py index 615f2cf4ac..1ad92a6f65 100644 --- a/src/Mod/Path/Path/Geom.py +++ b/src/Mod/CAM/Path/Geom.py @@ -33,7 +33,7 @@ from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader("Part", globals(), "Part") -__title__ = "Geom - geometry utilities for Path" +__title__ = "Geom - geometry utilities for CAM" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Functions to extract and convert between Path.Command and Part.Edge and utility functions to reason about them." diff --git a/src/Mod/Path/Path/GuiInit.py b/src/Mod/CAM/Path/GuiInit.py similarity index 99% rename from src/Mod/Path/Path/GuiInit.py rename to src/Mod/CAM/Path/GuiInit.py index 65819c6edb..545bcf8ece 100644 --- a/src/Mod/Path/Path/GuiInit.py +++ b/src/Mod/CAM/Path/GuiInit.py @@ -63,7 +63,6 @@ def Startup(): from Path.Op.Gui import Drilling from Path.Op.Gui import Engrave from Path.Op.Gui import Helix - from Path.Op.Gui import Hop from Path.Op.Gui import MillFace from Path.Op.Gui import Pocket from Path.Op.Gui import PocketShape diff --git a/src/Mod/Path/Path/Log.py b/src/Mod/CAM/Path/Log.py similarity index 100% rename from src/Mod/Path/Path/Log.py rename to src/Mod/CAM/Path/Log.py diff --git a/src/Mod/Path/Path/Main/Gui/Camotics.py b/src/Mod/CAM/Path/Main/Gui/Camotics.py similarity index 97% rename from src/Mod/Path/Path/Main/Gui/Camotics.py rename to src/Mod/CAM/Path/Main/Gui/Camotics.py index fb9e1ecd3e..1e18f6fbff 100644 --- a/src/Mod/Path/Path/Main/Gui/Camotics.py +++ b/src/Mod/CAM/Path/Main/Gui/Camotics.py @@ -310,10 +310,10 @@ class CamoticsSimulation(QtCore.QObject): class CommandCamoticsSimulate: def GetResources(self): return { - "Pixmap": "Path_Camotics", - "MenuText": QT_TRANSLATE_NOOP("Path_Camotics", "Camotics"), + "Pixmap": "CAM_Camotics", + "MenuText": QT_TRANSLATE_NOOP("CAM_Camotics", "Camotics"), "Accel": "P, C", - "ToolTip": QT_TRANSLATE_NOOP("Path_Camotics", "Simulate using Camotics"), + "ToolTip": QT_TRANSLATE_NOOP("CAM_Camotics", "Simulate using Camotics"), "CmdType": "ForEdit", } @@ -332,7 +332,7 @@ class CommandCamoticsSimulate: if FreeCAD.GuiUp: - FreeCADGui.addCommand("Path_Camotics", CommandCamoticsSimulate()) + FreeCADGui.addCommand("CAM_Camotics", CommandCamoticsSimulate()) FreeCAD.Console.PrintLog("Loading PathCamoticsSimulateGui ... done\n") diff --git a/src/Mod/Path/Path/Main/Gui/Fixture.py b/src/Mod/CAM/Path/Main/Gui/Fixture.py similarity index 95% rename from src/Mod/Path/Path/Main/Gui/Fixture.py rename to src/Mod/CAM/Path/Main/Gui/Fixture.py index 605d692192..c4d10e0b5b 100644 --- a/src/Mod/Path/Path/Main/Gui/Fixture.py +++ b/src/Mod/CAM/Path/Main/Gui/Fixture.py @@ -119,7 +119,7 @@ class _ViewProviderFixture: return None def getIcon(self): # optional - return ":/icons/Path_Datums.svg" + return ":/icons/CAM_Datums.svg" def onChanged(self, vobj, prop): # optional mode = 2 @@ -149,10 +149,10 @@ class _ViewProviderFixture: class CommandPathFixture: def GetResources(self): return { - "Pixmap": "Path_Datums", - "MenuText": QT_TRANSLATE_NOOP("Path_Fixture", "Fixture"), + "Pixmap": "CAM_Datums", + "MenuText": QT_TRANSLATE_NOOP("CAM_Fixture", "Fixture"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_Fixture", "Creates a Fixture Offset" + "CAM_Fixture", "Creates a Fixture Offset" ), } @@ -186,7 +186,7 @@ PathUtils.addToJob(obj) if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Fixture", CommandPathFixture()) + FreeCADGui.addCommand("CAM_Fixture", CommandPathFixture()) FreeCAD.Console.PrintLog("Loading PathFixture... done\n") diff --git a/src/Mod/Path/Path/Main/Gui/Inspect.py b/src/Mod/CAM/Path/Main/Gui/Inspect.py similarity index 95% rename from src/Mod/Path/Path/Main/Gui/Inspect.py rename to src/Mod/CAM/Path/Main/Gui/Inspect.py index 3648674744..6adfec5d08 100644 --- a/src/Mod/Path/Path/Main/Gui/Inspect.py +++ b/src/Mod/CAM/Path/Main/Gui/Inspect.py @@ -106,7 +106,7 @@ class GCodeEditorDialog(QtGui.QDialog): QtGui.QDialog.__init__(self, parent) layout = QtGui.QVBoxLayout(self) - p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/CAM") c = p.GetUnsigned("DefaultHighlightPathColor", 4286382335) Q = QtGui.QColor( int((c >> 24) & 0xFF), int((c >> 16) & 0xFF), int((c >> 8) & 0xFF) @@ -139,7 +139,7 @@ class GCodeEditorDialog(QtGui.QDialog): lab = QtGui.QLabel() lab.setText( translate( - "Path_Inspect", + "CAM_Inspect", "Note: This dialog shows Path Commands in FreeCAD base units (mm/s). \n Values will be converted to the desired unit during post processing.", ) ) @@ -158,7 +158,7 @@ class GCodeEditorDialog(QtGui.QDialog): self.editor.selectionChanged.connect(self.highlightpath) self.finished.connect(self.cleanup) - prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/CAM") Xpos = int(prefs.GetString("inspecteditorX", "0")) Ypos = int(prefs.GetString("inspecteditorY", "0")) height = int(prefs.GetString("inspecteditorH", "500")) @@ -167,7 +167,7 @@ class GCodeEditorDialog(QtGui.QDialog): self.resize(width, height) def cleanup(self): - prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/CAM") prefs.SetString("inspecteditorX", str(self.x())) prefs.SetString("inspecteditorY", str(self.y())) prefs.SetString("inspecteditorW", str(self.width())) @@ -225,7 +225,7 @@ class GCodeEditorDialog(QtGui.QDialog): def show(obj): "show(obj): shows the G-code data of the given Path object in a dialog" - prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/CAM") # default Max Highlighter Size = 512 Ko defaultMHS = 512 * 1024 mhs = prefs.GetUnsigned("inspecteditorMaxHighlighterSize", defaultMHS) @@ -264,11 +264,11 @@ def show(obj): class CommandPathInspect: def GetResources(self): return { - "Pixmap": "Path_Inspect", - "MenuText": QT_TRANSLATE_NOOP("Path_Inspect", "Inspect Path Commands"), + "Pixmap": "CAM_Inspect", + "MenuText": QT_TRANSLATE_NOOP("CAM_Inspect", "Inspect toolPath Commands"), "Accel": "P, I", "ToolTip": QT_TRANSLATE_NOOP( - "Path_Inspect", "Inspects the contents of a Path object" + "CAM_Inspect", "Inspects the contents of a toolpath object" ), } @@ -281,13 +281,13 @@ class CommandPathInspect: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: FreeCAD.Console.PrintError( - translate("Path_Inspect", "Please select exactly one path object") + translate("CAM_Inspect", "Please select exactly one path object") + "\n" ) return if not (selection[0].isDerivedFrom("Path::Feature")): FreeCAD.Console.PrintError( - translate("Path_Inspect", "Please select exactly one path object") + translate("CAM_Inspect", "Please select exactly one path object") + "\n" ) return @@ -303,4 +303,4 @@ class CommandPathInspect: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Inspect", CommandPathInspect()) + FreeCADGui.addCommand("CAM_Inspect", CommandPathInspect()) diff --git a/src/Mod/Path/Path/Main/Gui/Job.py b/src/Mod/CAM/Path/Main/Gui/Job.py similarity index 98% rename from src/Mod/Path/Path/Main/Gui/Job.py rename to src/Mod/CAM/Path/Main/Gui/Job.py index faa6b1c2e9..584fd9d222 100644 --- a/src/Mod/Path/Path/Main/Gui/Job.py +++ b/src/Mod/CAM/Path/Main/Gui/Job.py @@ -198,7 +198,7 @@ class ViewProvider: self.unsetEdit(None, None) def getIcon(self): - return ":/icons/Path_Job.svg" + return ":/icons/CAM_Job.svg" def claimChildren(self): children = [] @@ -280,7 +280,7 @@ class ViewProvider: Path.Log.track() for action in menu.actions(): menu.removeAction(action) - action = QtGui.QAction(translate("Path_Job", "Edit"), menu) + action = QtGui.QAction(translate("CAM_Job", "Edit"), menu) action.triggered.connect(self.setEdit) menu.addAction(action) @@ -523,7 +523,7 @@ class StockCreateCylinderEdit(StockEdit): self.form.stockCylinderHeight.text() ) else: - Path.Log.error(translate("Path_Job", "Stock not a cylinder!")) + Path.Log.error(translate("CAM_Job", "Stock not a cylinder!")) except Exception: pass @@ -940,9 +940,9 @@ class TaskPanel: def setPostProcessorOutputFile(self): filename = QtGui.QFileDialog.getSaveFileName( self.form, - translate("Path_Job", "Select Output File"), + translate("CAM_Job", "Select Output File"), None, - translate("Path_Job", "All Files (*.*)"), + translate("CAM_Job", "All Files (*.*)"), ) if filename and filename[0]: self.obj.PostProcessorOutputFile = str(filename[0]) @@ -1322,7 +1322,7 @@ class TaskPanel: setupFromExisting() else: Path.Log.error( - translate("Path_Job", "Unsupported stock object %s") + translate("CAM_Job", "Unsupported stock object %s") % self.obj.Stock.Label ) else: @@ -1338,7 +1338,7 @@ class TaskPanel: index = -1 else: Path.Log.error( - translate("Path_Job", "Unsupported stock type %s (%d)") + translate("CAM_Job", "Unsupported stock type %s (%d)") % (self.form.stock.currentText(), index) ) self.stockEdit.activate(self.obj, index == -1) @@ -1430,7 +1430,7 @@ class TaskPanel: def jobModelEdit(self): dialog = PathJobDlg.JobCreate() - dialog.setupTitle(translate("Path_Job", "Model Selection")) + dialog.setupTitle(translate("CAM_Job", "Model Selection")) dialog.setupModel(self.obj) if dialog.exec_() == 1: models = dialog.getModels() @@ -1617,10 +1617,10 @@ class TaskPanel: def _displayWarningWindow(msg): """Display window with warning message and Add action button. Return action state.""" - txtHeader = translate("Path_Job", "Warning") - txtPleaseAddOne = translate("Path_Job", "Please add one.") - txtOk = translate("Path_Job", "Ok") - txtAdd = translate("Path_Job", "Add") + txtHeader = translate("CAM_Job", "Warning") + txtPleaseAddOne = translate("CAM_Job", "Please add one.") + txtOk = translate("CAM_Job", "Ok") + txtAdd = translate("CAM_Job", "Add") msgbox = QtGui.QMessageBox( QtGui.QMessageBox.Warning, txtHeader, msg + " " + txtPleaseAddOne @@ -1632,14 +1632,14 @@ class TaskPanel: # Check if at least on base model is present if len(self.obj.Model.Group) == 0: self.form.setCurrentIndex(0) # Change tab to General tab - no_model_txt = translate("Path_Job", "This job has no base model.") + no_model_txt = translate("CAM_Job", "This job has no base model.") if _displayWarningWindow(no_model_txt) == 1: self.jobModelEdit() # Check if at least one tool is present if len(self.obj.Tools.Group) == 0: self.form.setCurrentIndex(3) # Change tab to Tools tab - no_tool_txt = translate("Path_Job", "This job has no tool.") + no_tool_txt = translate("CAM_Job", "This job has no tool.") if _displayWarningWindow(no_tool_txt) == 1: self.toolControllerAdd() diff --git a/src/Mod/Path/Path/Main/Gui/JobCmd.py b/src/Mod/CAM/Path/Main/Gui/JobCmd.py similarity index 92% rename from src/Mod/Path/Path/Main/Gui/JobCmd.py rename to src/Mod/CAM/Path/Main/Gui/JobCmd.py index 965f75d077..63669dc6d1 100644 --- a/src/Mod/Path/Path/Main/Gui/JobCmd.py +++ b/src/Mod/CAM/Path/Main/Gui/JobCmd.py @@ -53,10 +53,10 @@ class CommandJobCreate: def GetResources(self): return { - "Pixmap": "Path_Job", - "MenuText": QT_TRANSLATE_NOOP("Path_Job", "Job"), + "Pixmap": "CAM_Job", + "MenuText": QT_TRANSLATE_NOOP("CAM_Job", "Job"), "Accel": "P, J", - "ToolTip": QT_TRANSLATE_NOOP("Path_Job", "Creates a Path Job"), + "ToolTip": QT_TRANSLATE_NOOP("CAM_Job", "Creates a CAM Job"), } def IsActive(self): @@ -97,11 +97,11 @@ class CommandJobTemplateExport: def GetResources(self): return { - "Pixmap": "Path_ExportTemplate", - "MenuText": QT_TRANSLATE_NOOP("Path_ExportTemplate", "Export Template"), + "Pixmap": "CAM_ExportTemplate", + "MenuText": QT_TRANSLATE_NOOP("CAM_ExportTemplate", "Export Template"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_ExportTemplate", - "Exports Path Job as a template to be used for other jobs", + "CAM_ExportTemplate", + "Exports CAM Job as a template to be used for other jobs", ), } @@ -197,7 +197,7 @@ class CommandJobTemplateExport: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Job", CommandJobCreate()) - FreeCADGui.addCommand("Path_ExportTemplate", CommandJobTemplateExport()) + FreeCADGui.addCommand("CAM_Job", CommandJobCreate()) + FreeCADGui.addCommand("CAM_ExportTemplate", CommandJobTemplateExport()) FreeCAD.Console.PrintLog("Loading PathJobCmd... done\n") diff --git a/src/Mod/Path/Path/Main/Gui/JobDlg.py b/src/Mod/CAM/Path/Main/Gui/JobDlg.py similarity index 97% rename from src/Mod/Path/Path/Main/Gui/JobDlg.py rename to src/Mod/CAM/Path/Main/Gui/JobDlg.py index 0a0b5b3bad..464fe34acc 100644 --- a/src/Mod/Path/Path/Main/Gui/JobDlg.py +++ b/src/Mod/CAM/Path/Main/Gui/JobDlg.py @@ -85,9 +85,9 @@ class JobCreate: preferences().SetBool("WarningSuppressVelocity", True) self.dialog = FreeCADGui.PySideUic.loadUi(":/panels/DlgJobCreate.ui") - self.itemsSolid = QtGui.QStandardItem(translate("Path_Job", "Solids")) - self.items2D = QtGui.QStandardItem(translate("Path_Job", "2D")) - self.itemsJob = QtGui.QStandardItem(translate("Path_Job", "Jobs")) + self.itemsSolid = QtGui.QStandardItem(translate("CAM_Job", "Solids")) + self.items2D = QtGui.QStandardItem(translate("CAM_Job", "2D")) + self.itemsJob = QtGui.QStandardItem(translate("CAM_Job", "Jobs")) self.dialog.templateGroup.hide() self.dialog.modelGroup.hide() # debugging support @@ -354,7 +354,7 @@ class JobTemplateExport: stockType = PathStock.StockType.FromStock(job.Stock) if stockType == PathStock.StockType.FromBase: seHint = translate( - "Path_Job", "Base -/+ %.2f/%.2f %.2f/%.2f %.2f/%.2f" + "CAM_Job", "Base -/+ %.2f/%.2f %.2f/%.2f %.2f/%.2f" ) % ( job.Stock.ExtXneg, job.Stock.ExtXpos, @@ -365,13 +365,13 @@ class JobTemplateExport: ) self.dialog.stockPlacement.setChecked(False) elif stockType == PathStock.StockType.CreateBox: - seHint = translate("Path_Job", "Box: %.2f x %.2f x %.2f") % ( + seHint = translate("CAM_Job", "Box: %.2f x %.2f x %.2f") % ( job.Stock.Length, job.Stock.Width, job.Stock.Height, ) elif stockType == PathStock.StockType.CreateCylinder: - seHint = translate("Path_Job:", "Cylinder: %.2f x %.2f") % ( + seHint = translate("CAM_Job:", "Cylinder: %.2f x %.2f") % ( job.Stock.Radius, job.Stock.Height, ) @@ -380,7 +380,7 @@ class JobTemplateExport: else: # Existing Solid seHint = "-" - Path.Log.error(translate("Path_Job", "Unsupported stock type")) + Path.Log.error(translate("CAM_Job", "Unsupported stock type")) self.dialog.stockExtentHint.setText(seHint) spHint = "%s" % job.Stock.Placement self.dialog.stockPlacementHint.setText(spHint) diff --git a/src/Mod/Path/Path/Main/Gui/PreferencesJob.py b/src/Mod/CAM/Path/Main/Gui/PreferencesJob.py similarity index 100% rename from src/Mod/Path/Path/Main/Gui/PreferencesJob.py rename to src/Mod/CAM/Path/Main/Gui/PreferencesJob.py diff --git a/src/Mod/Path/Path/Main/Gui/Sanity.py b/src/Mod/CAM/Path/Main/Gui/Sanity.py similarity index 91% rename from src/Mod/Path/Path/Main/Gui/Sanity.py rename to src/Mod/CAM/Path/Main/Gui/Sanity.py index 98a08dfb3c..8eb9e8e888 100644 --- a/src/Mod/Path/Path/Main/Gui/Sanity.py +++ b/src/Mod/CAM/Path/Main/Gui/Sanity.py @@ -51,7 +51,7 @@ else: Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) -class CommandPathSanity: +class CommandCAMSanity: def resolveOutputFile(self, job): if job.PostProcessorOutputFile != "": filepath = job.PostProcessorOutputFile @@ -120,13 +120,13 @@ class CommandPathSanity: def GetResources(self): return { - "Pixmap": "Path_Sanity", + "Pixmap": "CAM_Sanity", "MenuText": QT_TRANSLATE_NOOP( - "Path_Sanity", "Check the path job for common errors" + "CAM_Sanity", "Check the CAM job for common errors" ), "Accel": "P, S", "ToolTip": QT_TRANSLATE_NOOP( - "Path_Sanity", "Check the path job for common errors" + "CAM_Sanity", "Check the CAM job for common errors" ), } @@ -211,38 +211,38 @@ class CommandPathSanity: """ generates an asciidoc file with the report information """ - Title = translate("Path_Sanity", "Setup Report for FreeCAD Job") - ToC = translate("Path_Sanity", "Table of Contents") - PartInfoHeading = translate("Path_Sanity", "Part Information") - RunSumHeading = translate("Path_Sanity", "Run Summary") - RoughStkHeading = translate("Path_Sanity", "Rough Stock") - ToolDataHeading = translate("Path_Sanity", "Tool Data") - OutputHeading = translate("Path_Sanity", "Output") - FixturesHeading = translate("Path_Sanity", "Fixtures") - SquawksHeading = translate("Path_Sanity", "Squawks") + Title = translate("CAM_Sanity", "Setup Report for FreeCAD Job") + ToC = translate("CAM_Sanity", "Table of Contents") + PartInfoHeading = translate("CAM_Sanity", "Part Information") + RunSumHeading = translate("CAM_Sanity", "Run Summary") + RoughStkHeading = translate("CAM_Sanity", "Rough Stock") + ToolDataHeading = translate("CAM_Sanity", "Tool Data") + OutputHeading = translate("CAM_Sanity", "Output") + FixturesHeading = translate("CAM_Sanity", "Fixtures") + SquawksHeading = translate("CAM_Sanity", "Squawks") - PartLabel = translate("Path_Sanity", "Base Object(s)") - SequenceLabel = translate("Path_Sanity", "Job Sequence") - DescriptionLabel = translate("Path_Sanity", "Job Description") - JobTypeLabel = translate("Path_Sanity", "Job Type") - CADLabel = translate("Path_Sanity", "CAD File Name") - LastSaveLabel = translate("Path_Sanity", "Last Save Date") - CustomerLabel = translate("Path_Sanity", "Customer") - DesignerLabel = translate("Path_Sanity", "Designer") + PartLabel = translate("CAM_Sanity", "Base Object(s)") + SequenceLabel = translate("CAM_Sanity", "Job Sequence") + DescriptionLabel = translate("CAM_Sanity", "Job Description") + JobTypeLabel = translate("CAM_Sanity", "Job Type") + CADLabel = translate("CAM_Sanity", "CAD File Name") + LastSaveLabel = translate("CAM_Sanity", "Last Save Date") + CustomerLabel = translate("CAM_Sanity", "Customer") + DesignerLabel = translate("CAM_Sanity", "Designer") b = data["baseData"] d = data["designData"] jobname = d["JobLabel"] - opLabel = translate("Path_Sanity", "Operation") - zMinLabel = translate("Path_Sanity", "Minimum Z Height") - zMaxLabel = translate("Path_Sanity", "Maximum Z Height") - cycleTimeLabel = translate("Path_Sanity", "Cycle Time") + opLabel = translate("CAM_Sanity", "Operation") + zMinLabel = translate("CAM_Sanity", "Minimum Z Height") + zMaxLabel = translate("CAM_Sanity", "Maximum Z Height") + cycleTimeLabel = translate("CAM_Sanity", "Cycle Time") - coolantLabel = translate("Path_Sanity", "Coolant") - jobTotalLabel = translate("Path_Sanity", "TOTAL JOB") + coolantLabel = translate("CAM_Sanity", "Coolant") + jobTotalLabel = translate("CAM_Sanity", "TOTAL JOB") d = data["toolData"] - toolLabel = translate("Path_Sanity", "Tool Number") + toolLabel = translate("CAM_Sanity", "Tool Number") imageCounter = 1 reportHtmlTemplate = """ @@ -505,40 +505,40 @@ class CommandPathSanity: """ - descriptionLabel = translate("Path_Sanity", "Description") - manufLabel = translate("Path_Sanity", "Manufacturer") - partNumberLabel = translate("Path_Sanity", "Part Number") - urlLabel = translate("Path_Sanity", "URL") - inspectionNotesLabel = translate("Path_Sanity", "Inspection Notes") - opLabel = translate("Path_Sanity", "Operation") - tcLabel = translate("Path_Sanity", "Tool Controller") - feedLabel = translate("Path_Sanity", "Feed Rate") - speedLabel = translate("Path_Sanity", "Spindle Speed") - shapeLabel = translate("Path_Sanity", "Tool Shape") - diameterLabel = translate("Path_Sanity", "Tool Diameter") + descriptionLabel = translate("CAM_Sanity", "Description") + manufLabel = translate("CAM_Sanity", "Manufacturer") + partNumberLabel = translate("CAM_Sanity", "Part Number") + urlLabel = translate("CAM_Sanity", "URL") + inspectionNotesLabel = translate("CAM_Sanity", "Inspection Notes") + opLabel = translate("CAM_Sanity", "Operation") + tcLabel = translate("CAM_Sanity", "Tool Controller") + feedLabel = translate("CAM_Sanity", "Feed Rate") + speedLabel = translate("CAM_Sanity", "Spindle Speed") + shapeLabel = translate("CAM_Sanity", "Tool Shape") + diameterLabel = translate("CAM_Sanity", "Tool Diameter") - xDimLabel = translate("Path_Sanity", "X Size") - yDimLabel = translate("Path_Sanity", "Y Size") - zDimLabel = translate("Path_Sanity", "Z Size") - materialLabel = translate("Path_Sanity", "Material") + xDimLabel = translate("CAM_Sanity", "X Size") + yDimLabel = translate("CAM_Sanity", "Y Size") + zDimLabel = translate("CAM_Sanity", "Z Size") + materialLabel = translate("CAM_Sanity", "Material") - offsetsLabel = translate("Path_Sanity", "Work Offsets") - orderByLabel = translate("Path_Sanity", "Order By") - datumLabel = translate("Path_Sanity", "Part Datum") + offsetsLabel = translate("CAM_Sanity", "Work Offsets") + orderByLabel = translate("CAM_Sanity", "Order By") + datumLabel = translate("CAM_Sanity", "Part Datum") - gcodeFileLabel = translate("Path_Sanity", "G-code File") - lastpostLabel = translate("Path_Sanity", "Last Post Process Date") - stopsLabel = translate("Path_Sanity", "Stops") - programmerLabel = translate("Path_Sanity", "Programmer") - machineLabel = translate("Path_Sanity", "Machine") - postLabel = translate("Path_Sanity", "Postprocessor") - flagsLabel = translate("Path_Sanity", "Post Processor Flags") - fileSizeLabel = translate("Path_Sanity", "File Size (kB)") - lineCountLabel = translate("Path_Sanity", "Line Count") + gcodeFileLabel = translate("CAM_Sanity", "G-code File") + lastpostLabel = translate("CAM_Sanity", "Last Post Process Date") + stopsLabel = translate("CAM_Sanity", "Stops") + programmerLabel = translate("CAM_Sanity", "Programmer") + machineLabel = translate("CAM_Sanity", "Machine") + postLabel = translate("CAM_Sanity", "Postprocessor") + flagsLabel = translate("CAM_Sanity", "Post Processor Flags") + fileSizeLabel = translate("CAM_Sanity", "File Size (kB)") + lineCountLabel = translate("CAM_Sanity", "Line Count") - noteLabel = translate("Path_Sanity", "Note") - operatorLabel = translate("Path_Sanity", "Operator") - dateLabel = translate("Path_Sanity", "Date") + noteLabel = translate("CAM_Sanity", "Note") + operatorLabel = translate("CAM_Sanity", "Operator") + dateLabel = translate("CAM_Sanity", "Date") d = data["runData"] reportHtmlTemplate += """ @@ -648,7 +648,9 @@ class CommandPathSanity: stock" + reportHtmlTemplate += ( + "' alt='stock' align='bottom' width='320' height='320' border='0'/>" + ) imageCounter += 1 reportHtmlTemplate += """

@@ -1053,12 +1055,10 @@ class CommandPathSanity: """ d = data["squawkData"] - TIPIcon = FreeCAD.getHomePath() + "Mod/Path/Path/Main/Gui/Sanity_Bulb.svg" - NOTEIcon = FreeCAD.getHomePath() + "Mod/Path/Path/Main/Gui/Sanity_Note.svg" - WARNINGIcon = ( - FreeCAD.getHomePath() + "Mod/Path/Path/Main/Gui/Sanity_Warning.svg" - ) - CAUTIONIcon = FreeCAD.getHomePath() + "Mod/Path/Path/Main/Gui/Sanity_Stop.svg" + TIPIcon = FreeCAD.getHomePath() + "Mod/CAM/Path/Main/Gui/Sanity_Bulb.svg" + NOTEIcon = FreeCAD.getHomePath() + "Mod/CAM/Path/Main/Gui/Sanity_Note.svg" + WARNINGIcon = FreeCAD.getHomePath() + "Mod/CAM/Path/Main/Gui/Sanity_Warning.svg" + CAUTIONIcon = FreeCAD.getHomePath() + "Mod/CAM/Path/Main/Gui/Sanity_Stop.svg" reportHtmlTemplate += """

@@ -1189,7 +1189,6 @@ class CommandPathSanity: """ - # Save the report subsLookup = os.path.splitext(os.path.basename(obj.PostProcessorOutputFile))[0] foundSub = False @@ -1205,13 +1204,16 @@ class CommandPathSanity: # Make sure the filepath is fully qualified if os.path.basename(filepath) == filepath: - filepath = f"{os.path.dirname(FreeCAD.ActiveDocument.FileName)}/{filepath}" + filepath = ( + f"{os.path.dirname(FreeCAD.ActiveDocument.FileName)}/{filepath}" + ) Path.Log.debug("filepath: {}".format(filepath)) base_name = os.path.splitext(filepath)[0] reporthtml = base_name + ".html" else: - reporthtml = self.outputpath + data["outputData"]["outputfilename"] + ".html" - + reporthtml = ( + self.outputpath + data["outputData"]["outputfilename"] + ".html" + ) # Python 3.11 aware with codecs.open(reporthtml, encoding="utf-8", mode="w") as fd: @@ -1267,7 +1269,7 @@ class CommandPathSanity: except Exception as e: data["errors"] = e - self.squawk("PathSanity(__baseObjectData)", e, squawkType="CAUTION") + self.squawk("CAMSanity(__baseObjectData)", e, squawkType="CAUTION") return data @@ -1308,7 +1310,7 @@ class CommandPathSanity: except Exception as e: data["errors"] = e - self.squawk("PathSanity(__designData)", e, squawkType="CAUTION") + self.squawk("CAMSanity(__designData)", e, squawkType="CAUTION") return data @@ -1324,9 +1326,9 @@ class CommandPathSanity: for TC in obj.Tools.Group: if not hasattr(TC.Tool, "BitBody"): self.squawk( - "PathSanity", + "CAMSanity", translate( - "Path_Sanity", + "CAM_Sanity", "Tool number {} is a legacy tool. Legacy tools not \ supported by Path-Sanity", ).format(TC.ToolNumber), @@ -1337,9 +1339,9 @@ class CommandPathSanity: bitshape = tooldata.setdefault("BitShape", "") if bitshape not in ["", TC.Tool.BitShape]: self.squawk( - "PathSanity", + "CAMSanity", translate( - "Path_Sanity", "Tool number {} used by multiple tools" + "CAM_Sanity", "Tool number {} used by multiple tools" ).format(TC.ToolNumber), squawkType="CAUTION", ) @@ -1352,29 +1354,43 @@ class CommandPathSanity: tooldata["shape"] = TC.Tool.ShapeName tooldata["partNumber"] = "" - imagedata = TC.Tool.Proxy.getBitThumbnail(TC.Tool) + + if os.path.isfile(TC.Tool.BitShape): + imagedata = TC.Tool.Proxy.getBitThumbnail(TC.Tool) + else: + imagedata = None + self.squawk( + "CAMSanity", + translate( + "CAM_Sanity", "Toolbit Shape for TC: {} not found" + ).format(TC.ToolNumber), + squawkType="WARNING", + ) imagepath = "{}T{}.png".format(self.outputpath, TC.ToolNumber) tooldata["feedrate"] = str(TC.HorizFeed) if TC.HorizFeed.Value == 0.0: self.squawk( - "PathSanity", - "Tool Controller '{}' has no feedrate".format(TC.Label), + "CAMSanity", + translate( + "CAM_Sanity", "Tool Controller '{}' has no feedrate" + ).format(TC.Label), squawkType="WARNING", ) tooldata["spindlespeed"] = str(TC.SpindleSpeed) if TC.SpindleSpeed == 0.0: self.squawk( - "PathSanity", + "CAMSanity", translate( - "Path_Sanity", "Tool Controller '{}' has no spindlespeed" + "CAM_Sanity", "Tool Controller '{}' has no spindlespeed" ).format(TC.Label), squawkType="WARNING", ) - with open(imagepath, "wb") as fd: - fd.write(imagedata) - fd.close() + if imagedata is not None: + with open(imagepath, "wb") as fd: + fd.write(imagedata) + fd.close() tooldata["imagepath"] = imagepath used = False @@ -1393,17 +1409,19 @@ class CommandPathSanity: if used is False: tooldata.setdefault("ops", []) self.squawk( - "PathSanity", + "CAMSanity", translate( - "Path_Sanity", "Tool Controller '{}' is not used" + "CAM_Sanity", "Tool Controller '{}' is not used" ).format(TC.Label), squawkType="WARNING", ) except Exception as e: + raise e data["errors"] = e - self.squawk("PathSanity(__toolData)", e, squawkType="CAUTION") + self.squawk("CAMSanity(__toolData)", e, squawkType="CAUTION") + print(data) return data def __runData(self, obj): @@ -1464,7 +1482,7 @@ class CommandPathSanity: except Exception as e: data["errors"] = e - self.squawk("PathSanity(__runData)", e, squawkType="CAUTION") + self.squawk("CAMSanity(__runData)", e, squawkType="CAUTION") return data @@ -1490,15 +1508,15 @@ class CommandPathSanity: if data["material"] == "Not Specified": self.squawk( - "PathSanity", - translate("Path_Sanity", "Consider Specifying the Stock Material"), + "CAMSanity", + translate("CAM_Sanity", "Consider Specifying the Stock Material"), squawkType="TIP", ) data["stockImage"] = self.__makePicture(obj.Stock, "stockImage") except Exception as e: data["errors"] = e - self.squawk("PathSanity(__stockData)", e, squawkType="CAUTION") + self.squawk("CAMSanity(__stockData)", e, squawkType="CAUTION") return data @@ -1544,7 +1562,7 @@ class CommandPathSanity: except Exception as e: data["errors"] = e - self.squawk("PathSanity(__fixtureData)", e, squawkType="CAUTION") + self.squawk("CAMSanity(__fixtureData)", e, squawkType="CAUTION") return data @@ -1581,8 +1599,8 @@ class CommandPathSanity: data["filesize"] = str(0.0) data["linecount"] = str(0) self.squawk( - "PathSanity", - translate("Path_Sanity", "The Job has not been post-processed"), + "CAMSanity", + translate("CAM_Sanity", "The Job has not been post-processed"), ) else: data["filesize"] = str( @@ -1594,11 +1612,11 @@ class CommandPathSanity: except Exception as e: data["errors"] = e - self.squawk("PathSanity(__outputData)", e, squawkType="CAUTION") + self.squawk("CAMSanity(__outputData)", e, squawkType="CAUTION") return data if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Sanity", CommandPathSanity()) + FreeCADGui.addCommand("CAM_Sanity", CommandCAMSanity()) diff --git a/src/Mod/Path/Path/Main/Gui/Sanity_Bulb.svg b/src/Mod/CAM/Path/Main/Gui/Sanity_Bulb.svg similarity index 100% rename from src/Mod/Path/Path/Main/Gui/Sanity_Bulb.svg rename to src/Mod/CAM/Path/Main/Gui/Sanity_Bulb.svg diff --git a/src/Mod/Path/Path/Main/Gui/Sanity_Caution.svg b/src/Mod/CAM/Path/Main/Gui/Sanity_Caution.svg similarity index 95% rename from src/Mod/Path/Path/Main/Gui/Sanity_Caution.svg rename to src/Mod/CAM/Path/Main/Gui/Sanity_Caution.svg index 14d0e452bc..2f3ff12250 100644 --- a/src/Mod/Path/Path/Main/Gui/Sanity_Caution.svg +++ b/src/Mod/CAM/Path/Main/Gui/Sanity_Caution.svg @@ -42,7 +42,7 @@ image/svg+xml - Path_Stop + CAM_Sanity_Caution 2015-07-04 https://www.freecad.org/wiki/index.php?title=Artwork @@ -50,7 +50,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Stop.svg + FreeCAD/src/Mod/CAM/Gui/Resources/icons/CAM_Sanity_Caution.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Path/Main/Gui/Sanity_Note.svg b/src/Mod/CAM/Path/Main/Gui/Sanity_Note.svg similarity index 100% rename from src/Mod/Path/Path/Main/Gui/Sanity_Note.svg rename to src/Mod/CAM/Path/Main/Gui/Sanity_Note.svg diff --git a/src/Mod/Path/Path/Main/Gui/Sanity_Warning.svg b/src/Mod/CAM/Path/Main/Gui/Sanity_Warning.svg similarity index 100% rename from src/Mod/Path/Path/Main/Gui/Sanity_Warning.svg rename to src/Mod/CAM/Path/Main/Gui/Sanity_Warning.svg diff --git a/src/Mod/Path/Path/Main/Gui/Simulator.py b/src/Mod/CAM/Path/Main/Gui/Simulator.py similarity index 98% rename from src/Mod/Path/Path/Main/Gui/Simulator.py rename to src/Mod/CAM/Path/Main/Gui/Simulator.py index 2135ece479..0e4b53cf43 100644 --- a/src/Mod/Path/Path/Main/Gui/Simulator.py +++ b/src/Mod/CAM/Path/Main/Gui/Simulator.py @@ -627,11 +627,11 @@ class PathSimulation: class CommandPathSimulate: def GetResources(self): return { - "Pixmap": "Path_Simulator", - "MenuText": QtCore.QT_TRANSLATE_NOOP("Path_Simulator", "CAM Simulator"), + "Pixmap": "CAM_Simulator", + "MenuText": QtCore.QT_TRANSLATE_NOOP("CAM_Simulator", "CAM Simulator"), "Accel": "P, M", "ToolTip": QtCore.QT_TRANSLATE_NOOP( - "Path_Simulator", "Simulate G-code on stock" + "CAM_Simulator", "Simulate G-code on stock" ), } @@ -649,5 +649,5 @@ class CommandPathSimulate: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Simulator", CommandPathSimulate()) + FreeCADGui.addCommand("CAM_Simulator", CommandPathSimulate()) FreeCAD.Console.PrintLog("Loading PathSimulator Gui... done\n") diff --git a/src/Mod/Path/Path/Main/Gui/__init__.py b/src/Mod/CAM/Path/Main/Gui/__init__.py similarity index 100% rename from src/Mod/Path/Path/Main/Gui/__init__.py rename to src/Mod/CAM/Path/Main/Gui/__init__.py diff --git a/src/Mod/Path/Path/Main/Job.py b/src/Mod/CAM/Path/Main/Job.py similarity index 98% rename from src/Mod/Path/Path/Main/Job.py rename to src/Mod/CAM/Path/Main/Job.py index 816f6494d3..ec8d633367 100644 --- a/src/Mod/Path/Path/Main/Job.py +++ b/src/Mod/CAM/Path/Main/Job.py @@ -252,15 +252,15 @@ class ObjectJob: enums = { "OrderOutputBy": [ - (translate("Path_Job", "Fixture"), "Fixture"), - (translate("Path_Job", "Tool"), "Tool"), - (translate("Path_Job", "Operation"), "Operation"), + (translate("CAM_Job", "Fixture"), "Fixture"), + (translate("CAM_Job", "Tool"), "Tool"), + (translate("CAM_Job", "Operation"), "Operation"), ], "JobType": [ - (translate("Path_Job", "2D"), "2D"), - (translate("Path_Job", "2.5D"), "2.5D"), - (translate("Path_Job", "Lathe"), "Lathe"), - (translate("Path_Job", "Multiaxis"), "Multiaxis"), + (translate("CAM_Job", "2D"), "2D"), + (translate("CAM_Job", "2.5D"), "2.5D"), + (translate("CAM_Job", "Lathe"), "Lathe"), + (translate("CAM_Job", "Multiaxis"), "Multiaxis"), ], } diff --git a/src/Mod/Path/Path/Main/Stock.py b/src/Mod/CAM/Path/Main/Stock.py similarity index 100% rename from src/Mod/Path/Path/Main/Stock.py rename to src/Mod/CAM/Path/Main/Stock.py diff --git a/src/Mod/Path/Path/Main/__init__.py b/src/Mod/CAM/Path/Main/__init__.py similarity index 100% rename from src/Mod/Path/Path/Main/__init__.py rename to src/Mod/CAM/Path/Main/__init__.py diff --git a/src/Mod/Path/Path/Op/Adaptive.py b/src/Mod/CAM/Path/Op/Adaptive.py similarity index 99% rename from src/Mod/Path/Path/Op/Adaptive.py rename to src/Mod/CAM/Path/Op/Adaptive.py index c5069cebbf..6eb2d7f3e0 100644 --- a/src/Mod/Path/Path/Op/Adaptive.py +++ b/src/Mod/CAM/Path/Op/Adaptive.py @@ -36,7 +36,7 @@ if FreeCAD.GuiUp: from pivy import coin import FreeCADGui -__doc__ = "Class and implementation of the Adaptive path operation." +__doc__ = "Class and implementation of the Adaptive CAM operation." # lazily loaded modules from lazy_loader.lazy_loader import LazyLoader @@ -910,12 +910,12 @@ class PathAdaptive(PathOp.ObjectOp): # Enumeration lists for App::PropertyEnumeration properties enums = { "Side": [ - (translate("Path_Adaptive", "Outside"), "Outside"), - (translate("Path_Adaptive", "Inside"), "Inside"), + (translate("CAM_Adaptive", "Outside"), "Outside"), + (translate("CAM_Adaptive", "Inside"), "Inside"), ], # this is the direction that the profile runs "OperationType": [ - (translate("Path_Adaptive", "Clearing"), "Clearing"), - (translate("Path_Adaptive", "Profiling"), "Profiling"), + (translate("CAM_Adaptive", "Clearing"), "Clearing"), + (translate("CAM_Adaptive", "Profiling"), "Profiling"), ], # side of profile that cutter is on in relation to direction of profile } diff --git a/src/Mod/Path/Path/Op/Area.py b/src/Mod/CAM/Path/Op/Area.py similarity index 98% rename from src/Mod/Path/Path/Op/Area.py rename to src/Mod/CAM/Path/Op/Area.py index 5a3756cacd..c887839b64 100644 --- a/src/Mod/Path/Path/Op/Area.py +++ b/src/Mod/CAM/Path/Op/Area.py @@ -272,6 +272,10 @@ class ObjectOp(PathOp.ObjectOp): # Note that emitting preambles between moves breaks some dressups and prevents path optimization on some controllers pathParams["preamble"] = False + # disable path sorting for offset and zigzag-offset paths + if hasattr(obj, "OffsetPattern") and obj.OffsetPattern in ["ZigZagOffset", "Offset"] and hasattr(obj, "MinTravel") and not obj.MinTravel: + pathParams["sort_mode"] = 0 + if not self.areaOpRetractTool(obj): pathParams["threshold"] = 2.001 * self.radius diff --git a/src/Mod/Path/Path/Op/Base.py b/src/Mod/CAM/Path/Op/Base.py similarity index 97% rename from src/Mod/Path/Path/Op/Base.py rename to src/Mod/CAM/Path/Op/Base.py index 8154066ab9..25726db074 100644 --- a/src/Mod/Path/Path/Op/Base.py +++ b/src/Mod/CAM/Path/Op/Base.py @@ -38,7 +38,7 @@ Part = LazyLoader("Part", globals(), "Part") __title__ = "Base class for all operations." __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Base class and properties implementation for all Path operations." +__doc__ = "Base class and properties implementation for all CAM operations." if False: Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) @@ -375,9 +375,9 @@ class ObjectOp(object): enums = { "CoolantMode": [ - (translate("Path_Operation", "None"), "None"), - (translate("Path_Operation", "Flood"), "Flood"), - (translate("Path_Operation", "Mist"), "Mist"), + (translate("CAM_Operation", "None"), "None"), + (translate("CAM_Operation", "Flood"), "Flood"), + (translate("CAM_Operation", "Mist"), "Mist"), ], } @@ -632,12 +632,12 @@ class ObjectOp(object): if not job: if not ignoreErrors: - Path.Log.error(translate("Path", "No parent job found for operation.")) + Path.Log.error(translate("CAM", "No parent job found for operation.")) return False if not job.Model.Group: if not ignoreErrors: Path.Log.error( - translate("Path", "Parent job %s doesn't have a base object") + translate("CAM", "Parent job %s doesn't have a base object") % job.Label ) return False @@ -781,7 +781,7 @@ class ObjectOp(object): if tc is None or tc.ToolNumber == 0: Path.Log.error( translate( - "Path", + "CAM", "No Tool Controller is selected. We need a tool to build a Path.", ) ) @@ -795,7 +795,7 @@ class ObjectOp(object): if not tool or float(tool.Diameter) == 0: Path.Log.error( translate( - "Path", + "CAM", "No Tool found or diameter is zero. We need a tool to build a Path.", ) ) @@ -833,8 +833,8 @@ class ObjectOp(object): tc = obj.ToolController if tc is None or tc.ToolNumber == 0: - Path.Log.error(translate("Path", "No Tool Controller selected.")) - return translate("Path", "Tool Error") + Path.Log.error(translate("CAM", "No Tool Controller selected.")) + return translate("CAM", "Tool Error") hFeedrate = tc.HorizFeed.Value vFeedrate = tc.VertFeed.Value @@ -846,18 +846,18 @@ class ObjectOp(object): ) and not Path.Preferences.suppressAllSpeedsWarning(): Path.Log.warning( translate( - "Path", + "CAM", "Tool Controller feedrates required to calculate the cycle time.", ) ) - return translate("Path", "Feedrate Error") + return translate("CAM", "Feedrate Error") if ( hRapidrate == 0 or vRapidrate == 0 ) and not Path.Preferences.suppressRapidSpeedsWarning(): Path.Log.warning( translate( - "Path", + "CAM", "Add Tool Controller Rapid Speeds on the SetupSheet for more accurate cycle times.", ) ) @@ -866,7 +866,7 @@ class ObjectOp(object): seconds = obj.Path.getCycleTime(hFeedrate, vFeedrate, hRapidrate, vRapidrate) if not seconds or math.isnan(seconds): - return translate("Path", "Cycletime Error") + return translate("CAM", "Cycletime Error") # Convert the cycle time to a HH:MM:SS format cycleTime = time.strftime("%H:%M:%S", time.gmtime(seconds)) @@ -891,7 +891,7 @@ class ObjectOp(object): if p == base and sub in el: Path.Log.notice( ( - translate("Path", "Base object %s.%s already in the list") + translate("CAM", "Base object %s.%s already in the list") + "\n" ) % (base.Label, sub) @@ -904,7 +904,7 @@ class ObjectOp(object): else: Path.Log.notice( ( - translate("Path", "Base object %s.%s rejected by operation") + translate("CAM", "Base object %s.%s rejected by operation") + "\n" ) % (base.Label, sub) diff --git a/src/Mod/Path/Path/Op/CircularHoleBase.py b/src/Mod/CAM/Path/Op/CircularHoleBase.py similarity index 98% rename from src/Mod/Path/Path/Op/CircularHoleBase.py rename to src/Mod/CAM/Path/Op/CircularHoleBase.py index 4957380c6c..d01fa66d7e 100644 --- a/src/Mod/Path/Path/Op/CircularHoleBase.py +++ b/src/Mod/CAM/Path/Op/CircularHoleBase.py @@ -34,7 +34,7 @@ Part = LazyLoader("Part", globals(), "Part") DraftGeomUtils = LazyLoader("DraftGeomUtils", globals(), "DraftGeomUtils") -__title__ = "Path Circular Holes Base Operation" +__title__ = "CAM Circular Holes Base Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Base class an implementation for operations on circular holes." @@ -111,7 +111,7 @@ class ObjectOp(PathOp.ObjectOp): # This may be inaccurate as the BoundBox is calculated on the tessellated geometry Path.Log.warning( translate( - "Path", + "CAM", "Hole diameter may be inaccurate due to tessellation on face. Consider selecting hole edge.", ) ) @@ -145,7 +145,7 @@ class ObjectOp(PathOp.ObjectOp): Path.Log.error( translate( - "Path", + "CAM", "Feature %s.%s cannot be processed as a circular hole - please remove from Base geometry list.", ) % (base.Label, sub) diff --git a/src/Mod/Path/Path/Op/Custom.py b/src/Mod/CAM/Path/Op/Custom.py similarity index 98% rename from src/Mod/Path/Path/Op/Custom.py rename to src/Mod/CAM/Path/Op/Custom.py index d823d3fca6..690b9f7917 100644 --- a/src/Mod/Path/Path/Op/Custom.py +++ b/src/Mod/CAM/Path/Op/Custom.py @@ -28,10 +28,10 @@ import Path.Op.Base as PathOp from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Custom Operation" +__title__ = "CAM Custom Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Path Custom object and FreeCAD command" +__doc__ = "CAM Custom object and FreeCAD command" if False: diff --git a/src/Mod/Path/Path/Op/Deburr.py b/src/Mod/CAM/Path/Op/Deburr.py similarity index 98% rename from src/Mod/Path/Path/Op/Deburr.py rename to src/Mod/CAM/Path/Op/Deburr.py index 8f8ede5e5c..2bc04aed44 100644 --- a/src/Mod/Path/Path/Op/Deburr.py +++ b/src/Mod/CAM/Path/Op/Deburr.py @@ -35,7 +35,7 @@ from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader("Part", globals(), "Part") -__title__ = "Path Deburr Operation" +__title__ = "CAM Deburr Operation" __author__ = "sliptonic (Brad Collette), Schildkroet" __url__ = "https://www.freecad.org" __doc__ = "Deburr operation." @@ -128,7 +128,7 @@ class ObjectDeburr(PathEngraveBase.ObjectOp): "App::PropertyDistance", "ExtraDepth", "Deburr", - QT_TRANSLATE_NOOP("App::Property", "The additional depth of the tool path"), + QT_TRANSLATE_NOOP("App::Property", "The additional depth of the toolpath"), ) obj.addProperty( "App::PropertyEnumeration", @@ -142,14 +142,14 @@ class ObjectDeburr(PathEngraveBase.ObjectOp): "App::PropertyEnumeration", "Direction", "Deburr", - QT_TRANSLATE_NOOP("App::Property", "Direction of operation"), + QT_TRANSLATE_NOOP("App::Property", "Direction of toolpath"), ) # obj.Direction = ["CW", "CCW"] obj.addProperty( "App::PropertyEnumeration", "Side", "Deburr", - QT_TRANSLATE_NOOP("App::Property", "Side of operation"), + QT_TRANSLATE_NOOP("App::Property", "Side of base object"), ) obj.Side = ["Outside", "Inside"] obj.setEditorMode("Side", 2) # Hide property, it's calculated by op @@ -158,7 +158,7 @@ class ObjectDeburr(PathEngraveBase.ObjectOp): "EntryPoint", "Deburr", QT_TRANSLATE_NOOP( - "App::Property", "The segment where the operation starts" + "App::Property", "The segment where the toolpath starts" ), ) diff --git a/src/Mod/Path/Path/Op/Drilling.py b/src/Mod/CAM/Path/Op/Drilling.py similarity index 96% rename from src/Mod/Path/Path/Op/Drilling.py rename to src/Mod/CAM/Path/Op/Drilling.py index 36f5573f13..c0d4499648 100644 --- a/src/Mod/Path/Path/Op/Drilling.py +++ b/src/Mod/CAM/Path/Op/Drilling.py @@ -34,10 +34,10 @@ import Path.Op.CircularHoleBase as PathCircularHoleBase import PathScripts.PathUtils as PathUtils from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Drilling Operation" +__title__ = "CAM Drilling Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Path Drilling operation." +__doc__ = "CAM Drilling operation." __contributors__ = "IMBack!" if False: @@ -66,13 +66,13 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): # Enumeration lists for App::PropertyEnumeration properties enums = { "RetractMode": [ - (translate("Path_Drilling", "G98"), "G98"), - (translate("Path_Drilling", "G99"), "G99"), + (translate("CAM_Drilling", "G98"), "G98"), + (translate("CAM_Drilling", "G99"), "G99"), ], # How high to retract after a drilling move "ExtraOffset": [ - (translate("Path_Drilling", "None"), "None"), - (translate("Path_Drilling", "Drill Tip"), "Drill Tip"), - (translate("Path_Drilling", "2x Drill Tip"), "2x Drill Tip"), + (translate("CAM_Drilling", "None"), "None"), + (translate("CAM_Drilling", "Drill Tip"), "Drill Tip"), + (translate("CAM_Drilling", "2x Drill Tip"), "2x Drill Tip"), ], # extra drilling depth to clear drill taper } diff --git a/src/Mod/Path/Path/Op/Engrave.py b/src/Mod/CAM/Path/Op/Engrave.py similarity index 98% rename from src/Mod/Path/Path/Op/Engrave.py rename to src/Mod/CAM/Path/Op/Engrave.py index 022bea8409..5ae2c571b5 100644 --- a/src/Mod/Path/Path/Op/Engrave.py +++ b/src/Mod/CAM/Path/Op/Engrave.py @@ -28,7 +28,7 @@ import PathScripts.PathUtils as PathUtils from PySide.QtCore import QT_TRANSLATE_NOOP -__doc__ = "Class and implementation of Path Engrave operation" +__doc__ = "Class and implementation of CAM Engrave operation" if False: Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) @@ -89,7 +89,7 @@ class ObjectEngrave(PathEngraveBase.ObjectOp): "StartVertex", "Path", QT_TRANSLATE_NOOP( - "App::Property", "The vertex index to start the path from" + "App::Property", "The vertex index to start the toolpath from" ), ) self.setupAdditionalProperties(obj) diff --git a/src/Mod/Path/Path/Op/EngraveBase.py b/src/Mod/CAM/Path/Op/EngraveBase.py similarity index 100% rename from src/Mod/Path/Path/Op/EngraveBase.py rename to src/Mod/CAM/Path/Op/EngraveBase.py diff --git a/src/Mod/Path/Path/Op/FeatureExtension.py b/src/Mod/CAM/Path/Op/FeatureExtension.py similarity index 99% rename from src/Mod/Path/Path/Op/FeatureExtension.py rename to src/Mod/CAM/Path/Op/FeatureExtension.py index f0298804fa..7664db36ab 100644 --- a/src/Mod/Path/Path/Op/FeatureExtension.py +++ b/src/Mod/CAM/Path/Op/FeatureExtension.py @@ -32,7 +32,7 @@ from lazy_loader.lazy_loader import LazyLoader PathUtils = LazyLoader("PathScripts.PathUtils", globals(), "PathScripts.PathUtils") -__title__ = "Path Features Extensions" +__title__ = "CAM Features Extensions" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of face extensions features." diff --git a/src/Mod/Path/Path/Op/Gui/Adaptive.py b/src/Mod/CAM/Path/Op/Gui/Adaptive.py similarity index 98% rename from src/Mod/Path/Path/Op/Gui/Adaptive.py rename to src/Mod/CAM/Path/Op/Gui/Adaptive.py index a51c80c509..42941b33f7 100644 --- a/src/Mod/Path/Path/Op/Gui/Adaptive.py +++ b/src/Mod/CAM/Path/Op/Gui/Adaptive.py @@ -171,8 +171,8 @@ Command = PathOpGui.SetupOperation( "Adaptive", PathAdaptive.Create, TaskPanelOpPage, - "Path_Adaptive", - QtCore.QT_TRANSLATE_NOOP("Path_Adaptive", "Adaptive"), - QtCore.QT_TRANSLATE_NOOP("Path_Adaptive", "Adaptive clearing and profiling"), + "CAM_Adaptive", + QtCore.QT_TRANSLATE_NOOP("CAM_Adaptive", "Adaptive"), + QtCore.QT_TRANSLATE_NOOP("CAM_Adaptive", "Adaptive clearing and profiling"), PathAdaptive.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Array.py b/src/Mod/CAM/Path/Op/Gui/Array.py similarity index 96% rename from src/Mod/Path/Path/Op/Gui/Array.py rename to src/Mod/CAM/Path/Op/Gui/Array.py index 48537bd750..a4b62f36ab 100644 --- a/src/Mod/Path/Path/Op/Gui/Array.py +++ b/src/Mod/CAM/Path/Op/Gui/Array.py @@ -31,7 +31,7 @@ import math import random from PySide.QtCore import QT_TRANSLATE_NOOP -__doc__ = """Path Array object and FreeCAD command""" +__doc__ = """CAM Array object and FreeCAD command""" translate = FreeCAD.Qt.translate @@ -42,7 +42,7 @@ class ObjectArray: "App::PropertyLinkList", "Base", "Path", - QT_TRANSLATE_NOOP("App::Property", "The path(s) to array"), + QT_TRANSLATE_NOOP("App::Property", "The toolpath(s) to array"), ) obj.addProperty( "App::PropertyEnumeration", @@ -130,7 +130,7 @@ class ObjectArray: "Path", QT_TRANSLATE_NOOP( "App::Property", - "The tool controller that will be used to calculate the path", + "The tool controller that will be used to calculate the toolpath", ), ) obj.addProperty( @@ -329,7 +329,7 @@ class PathArray: Path.Log.warning( translate( "PathArray", - "Arrays of paths having different tool controllers are handled according to the tool controller of the first path.", + "Arrays of toolpaths having different tool controllers are handled according to the tool controller of the first path.", ) ) @@ -448,10 +448,10 @@ class ViewProviderArray: class CommandPathArray: def GetResources(self): return { - "Pixmap": "Path_Array", - "MenuText": QT_TRANSLATE_NOOP("Path_Array", "Array"), + "Pixmap": "CAM_Array", + "MenuText": QT_TRANSLATE_NOOP("CAM_Array", "Array"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_Array", "Creates an array from selected path(s)" + "CAM_Array", "Creates an array from selected toolpath(s)" ), } @@ -471,7 +471,7 @@ class CommandPathArray: if not (sel.isDerivedFrom("Path::Feature")): FreeCAD.Console.PrintError( translate( - "Path_Array", "Arrays can be created only from Path operations." + "CAM_Array", "Arrays can be created only from toolpath operations." ) + "\n" ) @@ -502,4 +502,4 @@ class CommandPathArray: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Array", CommandPathArray()) + FreeCADGui.addCommand("CAM_Array", CommandPathArray()) diff --git a/src/Mod/Path/Path/Op/Gui/Base.py b/src/Mod/CAM/Path/Op/Gui/Base.py similarity index 99% rename from src/Mod/Path/Path/Op/Gui/Base.py rename to src/Mod/CAM/Path/Op/Gui/Base.py index 0de7699b48..589882f7f0 100644 --- a/src/Mod/Path/Path/Op/Gui/Base.py +++ b/src/Mod/CAM/Path/Op/Gui/Base.py @@ -37,10 +37,10 @@ from PySide.QtCore import QT_TRANSLATE_NOOP from PySide import QtCore, QtGui -__title__ = "Path Operation UI base classes" +__title__ = "CAM Operation UI base classes" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Base classes and framework for Path operation's UI" +__doc__ = "Base classes and framework for CAM operation's UI" translate = FreeCAD.Qt.translate @@ -159,7 +159,7 @@ class ViewProvider(object): if self.Object.Active: return self.OpIcon else: - return ":/icons/Path_OpActive.svg" + return ":/icons/CAM_OpActive.svg" def getTaskPanelOpPage(self, obj): """getTaskPanelOpPage(obj) ... use the stored information to instantiate the receiver op's page controller.""" @@ -455,7 +455,7 @@ class TaskPanelBaseGeometryPage(TaskPanelPage): super(TaskPanelBaseGeometryPage, self).__init__(obj, features) self.panelTitle = "Base Geometry" - self.OpIcon = ":/icons/Path_BaseGeometry.svg" + self.OpIcon = ":/icons/CAM_BaseGeometry.svg" self.setIcon(self.OpIcon) def getForm(self): @@ -815,7 +815,7 @@ class TaskPanelHeightsPage(TaskPanelPage): self.clearanceHeight = None self.safeHeight = None self.panelTitle = "Heights" - self.OpIcon = ":/icons/Path_Heights.svg" + self.OpIcon = ":/icons/CAM_Heights.svg" self.setIcon(self.OpIcon) def getForm(self): @@ -863,7 +863,7 @@ class TaskPanelDepthsPage(TaskPanelPage): self.finishDepth = None self.stepDown = None self.panelTitle = "Depths" - self.OpIcon = ":/icons/Path_Depths.svg" + self.OpIcon = ":/icons/CAM_Depths.svg" self.setIcon(self.OpIcon) def getForm(self): @@ -1342,7 +1342,7 @@ class CommandSetStartPoint: def GetResources(self): return { - "Pixmap": "Path_StartPoint", + "Pixmap": "CAM_StartPoint", "MenuText": QT_TRANSLATE_NOOP("PathOp", "Pick Start Point"), "ToolTip": QT_TRANSLATE_NOOP("PathOp", "Pick Start Point"), } @@ -1461,7 +1461,7 @@ def SetupOperation( ) command = CommandPathOp(res) - FreeCADGui.addCommand("Path_%s" % name.replace(" ", "_"), command) + FreeCADGui.addCommand("CAM_%s" % name.replace(" ", "_"), command) if setupProperties is not None: PathSetupSheet.RegisterOperation(name, objFactory, setupProperties) @@ -1469,6 +1469,6 @@ def SetupOperation( return command -FreeCADGui.addCommand("Path_SetStartPoint", CommandSetStartPoint()) +FreeCADGui.addCommand("CAM_SetStartPoint", CommandSetStartPoint()) FreeCAD.Console.PrintLog("Loading PathOpGui... done\n") diff --git a/src/Mod/Path/Path/Op/Gui/CircularHoleBase.py b/src/Mod/CAM/Path/Op/Gui/CircularHoleBase.py similarity index 100% rename from src/Mod/Path/Path/Op/Gui/CircularHoleBase.py rename to src/Mod/CAM/Path/Op/Gui/CircularHoleBase.py diff --git a/src/Mod/Path/Path/Op/Gui/Comment.py b/src/Mod/CAM/Path/Op/Gui/Comment.py similarity index 94% rename from src/Mod/Path/Path/Op/Gui/Comment.py rename to src/Mod/CAM/Path/Op/Gui/Comment.py index ae04273043..2db5b2468c 100644 --- a/src/Mod/Path/Path/Op/Gui/Comment.py +++ b/src/Mod/CAM/Path/Op/Gui/Comment.py @@ -81,7 +81,7 @@ class _ViewProviderComment: return None def getIcon(self): # optional - return ":/icons/Path_Comment.svg" + return ":/icons/CAM_Comment.svg" def onChanged(self, vobj, prop): # optional mode = 2 @@ -99,10 +99,10 @@ class _ViewProviderComment: class CommandPathComment: def GetResources(self): return { - "Pixmap": "Path_Comment", - "MenuText": QT_TRANSLATE_NOOP("Path_Comment", "Comment"), + "Pixmap": "CAM_Comment", + "MenuText": QT_TRANSLATE_NOOP("CAM_Comment", "Comment"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_Comment", "Add a Comment to your CNC program" + "CAM_Comment", "Add a Comment to your CNC program" ), } @@ -133,7 +133,7 @@ PathUtils.addToJob(obj) if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Comment", CommandPathComment()) + FreeCADGui.addCommand("CAM_Comment", CommandPathComment()) FreeCAD.Console.PrintLog("Loading PathComment... done\n") diff --git a/src/Mod/Path/Path/Op/Gui/Copy.py b/src/Mod/CAM/Path/Op/Gui/Copy.py similarity index 88% rename from src/Mod/Path/Path/Op/Gui/Copy.py rename to src/Mod/CAM/Path/Op/Gui/Copy.py index 7e27330778..6d0016d1d8 100644 --- a/src/Mod/Path/Path/Op/Gui/Copy.py +++ b/src/Mod/CAM/Path/Op/Gui/Copy.py @@ -26,7 +26,7 @@ from PySide import QtCore from PySide.QtCore import QT_TRANSLATE_NOOP -__doc__ = """Path Copy object and FreeCAD command""" +__doc__ = """CAM Copy object and FreeCAD command""" translate = FreeCAD.Qt.translate @@ -38,7 +38,7 @@ class ObjectPathCopy: "App::PropertyLink", "Base", "Path", - QT_TRANSLATE_NOOP("App::Property", "The path to be copied"), + QT_TRANSLATE_NOOP("App::Property", "The toolpath to be copied"), ) obj.addProperty( "App::PropertyLink", @@ -46,7 +46,7 @@ class ObjectPathCopy: "Path", QT_TRANSLATE_NOOP( "App::Property", - "The tool controller that will be used to calculate the path", + "The tool controller that will be used to calculate the toolpath", ), ) obj.Proxy = self @@ -77,7 +77,7 @@ class ViewProviderPathCopy: return def getIcon(self): - return ":/icons/Path_Copy.svg" + return ":/icons/CAM_Copy.svg" def dumps(self): return None @@ -89,10 +89,10 @@ class ViewProviderPathCopy: class CommandPathCopy: def GetResources(self): return { - "Pixmap": "Path_Copy", - "MenuText": QT_TRANSLATE_NOOP("Path_Copy", "Copy"), + "Pixmap": "CAM_Copy", + "MenuText": QT_TRANSLATE_NOOP("CAM_Copy", "Copy"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_Copy", "Creates a linked copy of another path" + "CAM_Copy", "Creates a linked copy of another toolpath" ), } @@ -117,11 +117,11 @@ selection = FreeCADGui.Selection.getSelection() proj = selection[0].InList[0] #get the group that the selectied object is inside if len(selection) != 1: - FreeCAD.Console.PrintError(translate("Path_Copy", "Please select one path object")+"\n") + FreeCAD.Console.PrintError(translate("CAM_Copy", "Please select one toolpath object")+"\n") selGood = False if not selection[0].isDerivedFrom("Path::Feature"): - FreeCAD.Console.PrintError(translate("Path_Copy", "The selected object is not a path")+"\n") + FreeCAD.Console.PrintError(translate("CAM_Copy", "The selected object is not a toolpath")+"\n") selGood = False if selGood: @@ -147,6 +147,6 @@ FreeCAD.ActiveDocument.recompute() if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Copy", CommandPathCopy()) + FreeCADGui.addCommand("CAM_Copy", CommandPathCopy()) FreeCAD.Console.PrintLog("Loading PathCopy... done\n") diff --git a/src/Mod/Path/Path/Op/Gui/Custom.py b/src/Mod/CAM/Path/Op/Gui/Custom.py similarity index 94% rename from src/Mod/Path/Path/Op/Gui/Custom.py rename to src/Mod/CAM/Path/Op/Gui/Custom.py index f2b18a9297..fa88d57278 100644 --- a/src/Mod/Path/Path/Op/Gui/Custom.py +++ b/src/Mod/CAM/Path/Op/Gui/Custom.py @@ -28,7 +28,7 @@ import Path.Op.Gui.Base as PathOpGui from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Custom Operation UI" +__title__ = "CAM Custom Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Custom operation page controller and command implementation." @@ -68,9 +68,9 @@ Command = PathOpGui.SetupOperation( "Custom", PathCustom.Create, TaskPanelOpPage, - "Path_Custom", - QT_TRANSLATE_NOOP("Path_Custom", "Custom"), - QT_TRANSLATE_NOOP("Path_Custom", "Create custom G-code snippet"), + "CAM_Custom", + QT_TRANSLATE_NOOP("CAM_Custom", "Custom"), + QT_TRANSLATE_NOOP("CAM_Custom", "Create custom G-code snippet"), PathCustom.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Deburr.py b/src/Mod/CAM/Path/Op/Gui/Deburr.py similarity index 96% rename from src/Mod/Path/Path/Op/Gui/Deburr.py rename to src/Mod/CAM/Path/Op/Gui/Deburr.py index acdf7b3191..35bb6868b0 100644 --- a/src/Mod/Path/Path/Op/Gui/Deburr.py +++ b/src/Mod/CAM/Path/Op/Gui/Deburr.py @@ -29,7 +29,7 @@ import Path.Op.Gui.Base as PathOpGui from PySide import QtCore, QtGui from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Deburr Operation UI" +__title__ = "CAM Deburr Operation UI" __author__ = "sliptonic (Brad Collette), Schildkroet" __url__ = "https://www.freecad.org" __doc__ = "Deburr operation page controller and command implementation." @@ -70,7 +70,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): return form def initPage(self, obj): - self.opImagePath = "{}Mod/Path/Images/Ops/{}".format( + self.opImagePath = "{}Mod/CAM/Images/Ops/{}".format( FreeCAD.getHomePath(), "chamfer.svg" ) self.opImage = QtGui.QPixmap(self.opImagePath) @@ -141,10 +141,10 @@ Command = PathOpGui.SetupOperation( "Deburr", PathDeburr.Create, TaskPanelOpPage, - "Path_Deburr", - QT_TRANSLATE_NOOP("Path_Deburr", "Deburr"), + "CAM_Deburr", + QT_TRANSLATE_NOOP("CAM_Deburr", "Deburr"), QT_TRANSLATE_NOOP( - "Path_Deburr", "Creates a Deburr Path along Edges or around Faces" + "CAM_Deburr", "Creates a Deburr toolpath along Edges or around Faces" ), PathDeburr.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Drilling.py b/src/Mod/CAM/Path/Op/Gui/Drilling.py similarity index 96% rename from src/Mod/Path/Path/Op/Gui/Drilling.py rename to src/Mod/CAM/Path/Op/Gui/Drilling.py index b13b2051a8..64d01c3d67 100644 --- a/src/Mod/Path/Path/Op/Gui/Drilling.py +++ b/src/Mod/CAM/Path/Op/Gui/Drilling.py @@ -31,10 +31,10 @@ import PathGui from PySide import QtCore -__title__ = "Path Drilling Operation UI." +__title__ = "CAM Drilling Operation UI." __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "UI and Command for Path Drilling Operation." +__doc__ = "UI and Command for Drilling Operation." __contributors__ = "IMBack!" if False: @@ -185,11 +185,11 @@ Command = PathOpGui.SetupOperation( "Drilling", PathDrilling.Create, TaskPanelOpPage, - "Path_Drilling", - QtCore.QT_TRANSLATE_NOOP("Path_Drilling", "Drilling"), + "CAM_Drilling", + QtCore.QT_TRANSLATE_NOOP("CAM_Drilling", "Drilling"), QtCore.QT_TRANSLATE_NOOP( - "Path_Drilling", - "Creates a Path Drilling object from the features of a base object", + "CAM_Drilling", + "Creates a Drilling toolpath from the features of a base object", ), PathDrilling.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Engrave.py b/src/Mod/CAM/Path/Op/Gui/Engrave.py similarity index 95% rename from src/Mod/Path/Path/Op/Gui/Engrave.py rename to src/Mod/CAM/Path/Op/Gui/Engrave.py index 0d31305cf1..af779ed604 100644 --- a/src/Mod/Path/Path/Op/Gui/Engrave.py +++ b/src/Mod/CAM/Path/Op/Gui/Engrave.py @@ -31,7 +31,7 @@ import PathScripts.PathUtils as PathUtils from PySide import QtCore, QtGui -__title__ = "Path Engrave Operation UI" +__title__ = "CAM Engrave Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Engrave operation page controller and command implementation." @@ -72,7 +72,7 @@ class TaskPanelBaseGeometryPage(PathOpGui.TaskPanelBaseGeometryPage): if not base: Path.Log.notice( ( - translate("Path", "%s is not a Base Model object of the job %s") + translate("CAM", "%s is not a Base Model object of the job %s") + "\n" ) % (sel.Object.Label, job.Label) @@ -80,7 +80,7 @@ class TaskPanelBaseGeometryPage(PathOpGui.TaskPanelBaseGeometryPage): continue if base in shapes: Path.Log.notice( - (translate("Path", "Base shape %s already in the list") + "\n") + (translate("CAM", "Base shape %s already in the list") + "\n") % (sel.Object.Label) ) continue @@ -168,10 +168,10 @@ Command = PathOpGui.SetupOperation( "Engrave", PathEngrave.Create, TaskPanelOpPage, - "Path_Engrave", - QtCore.QT_TRANSLATE_NOOP("Path_Engrave", "Engrave"), + "CAM_Engrave", + QtCore.QT_TRANSLATE_NOOP("CAM_Engrave", "Engrave"), QtCore.QT_TRANSLATE_NOOP( - "Path_Engrave", "Creates an Engraving Path around a Draft ShapeString" + "CAM_Engrave", "Creates an Engraving toolpath around a Draft ShapeString" ), PathEngrave.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/FeatureExtension.py b/src/Mod/CAM/Path/Op/Gui/FeatureExtension.py similarity index 99% rename from src/Mod/Path/Path/Op/Gui/FeatureExtension.py rename to src/Mod/CAM/Path/Op/Gui/FeatureExtension.py index 3527d9d6f5..4baf79a63e 100644 --- a/src/Mod/Path/Path/Op/Gui/FeatureExtension.py +++ b/src/Mod/CAM/Path/Op/Gui/FeatureExtension.py @@ -34,7 +34,7 @@ from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader("Part", globals(), "Part") -__title__ = "Path Feature Extensions UI" +__title__ = "CAM Feature Extensions UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Extensions feature page controller." diff --git a/src/Mod/Path/Path/Op/Gui/Helix.py b/src/Mod/CAM/Path/Op/Gui/Helix.py similarity index 97% rename from src/Mod/Path/Path/Op/Gui/Helix.py rename to src/Mod/CAM/Path/Op/Gui/Helix.py index 75eedd4e84..55ba808e21 100644 --- a/src/Mod/Path/Path/Op/Gui/Helix.py +++ b/src/Mod/CAM/Path/Op/Gui/Helix.py @@ -108,10 +108,10 @@ Command = PathOpGui.SetupOperation( "Helix", PathHelix.Create, TaskPanelOpPage, - "Path_Helix", - QT_TRANSLATE_NOOP("Path_Helix", "Helix"), + "CAM_Helix", + QT_TRANSLATE_NOOP("CAM_Helix", "Helix"), QT_TRANSLATE_NOOP( - "Path_Helix", "Creates a Path Helix from the features of a base object" + "CAM_Helix", "Creates a Helical toolpath from the features of a base object" ), PathHelix.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/MillFace.py b/src/Mod/CAM/Path/Op/Gui/MillFace.py similarity index 94% rename from src/Mod/Path/Path/Op/Gui/MillFace.py rename to src/Mod/CAM/Path/Op/Gui/MillFace.py index 471596a6e4..011525d8e6 100644 --- a/src/Mod/Path/Path/Op/Gui/MillFace.py +++ b/src/Mod/CAM/Path/Op/Gui/MillFace.py @@ -29,7 +29,7 @@ import Path.Op.MillFace as PathMillFace import Path.Op.PocketShape as PathPocketShape import FreeCADGui -__title__ = "Path Face Mill Operation UI" +__title__ = "CAM Face Mill Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Face Mill operation page controller and command implementation." @@ -72,10 +72,10 @@ Command = PathOpGui.SetupOperation( "MillFace", PathMillFace.Create, TaskPanelOpPage, - "Path_Face", - QT_TRANSLATE_NOOP("Path_MillFace", "Face"), + "CAM_Face", + QT_TRANSLATE_NOOP("CAM_MillFace", "Face"), QT_TRANSLATE_NOOP( - "Path_MillFace", "Create a Facing Operation from a model or face" + "CAM_MillFace", "Create a Facing Operation from a model or face" ), PathMillFace.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Pocket.py b/src/Mod/CAM/Path/Op/Gui/Pocket.py similarity index 93% rename from src/Mod/Path/Path/Op/Gui/Pocket.py rename to src/Mod/CAM/Path/Op/Gui/Pocket.py index 2890dfd41f..18ba4750cc 100644 --- a/src/Mod/Path/Path/Op/Gui/Pocket.py +++ b/src/Mod/CAM/Path/Op/Gui/Pocket.py @@ -35,7 +35,7 @@ else: Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) -__title__ = "Path Pocket Operation UI" +__title__ = "CAM Pocket Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Pocket operation page controller and command implementation." @@ -53,10 +53,10 @@ Command = PathOpGui.SetupOperation( "Pocket3D", PathPocket.Create, TaskPanelOpPage, - "Path_3DPocket", - QT_TRANSLATE_NOOP("Path_Pocket3D", "3D Pocket"), + "CAM_3DPocket", + QT_TRANSLATE_NOOP("CAM_Pocket3D", "3D Pocket"), QT_TRANSLATE_NOOP( - "Path_Pocket3D", "Creates a Path 3D Pocket from a face or faces" + "CAM_Pocket3D", "Creates a 3D Pocket toolpath from a face or faces" ), PathPocket.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/PocketBase.py b/src/Mod/CAM/Path/Op/Gui/PocketBase.py similarity index 95% rename from src/Mod/Path/Path/Op/Gui/PocketBase.py rename to src/Mod/CAM/Path/Op/Gui/PocketBase.py index b45410242f..f83fc8dbc2 100644 --- a/src/Mod/Path/Path/Op/Gui/PocketBase.py +++ b/src/Mod/CAM/Path/Op/Gui/PocketBase.py @@ -28,10 +28,10 @@ import Path.Op.Gui.Base as PathOpGui import Path.Op.Pocket as PathPocket import PathGui -__title__ = "Path Pocket Base Operation UI" +__title__ = "CAM Pocket Base Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Base page controller and command implementation for path pocket operations." +__doc__ = "Base page controller and command implementation for pocket operations." if False: Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) @@ -93,19 +93,10 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): if not (FeatureRestMachining & self.pocketFeatures()): form.useRestMachining.hide() - # if True: - # # currently doesn't have an effect or is experimental - # form.minTravel.hide() return form def updateMinTravel(self, obj, setModel=True): - if obj.UseStartPoint: - self.form.minTravel.setEnabled(True) - else: - self.form.minTravel.setChecked(False) - self.form.minTravel.setEnabled(False) - if setModel and obj.MinTravel != self.form.minTravel.isChecked(): obj.MinTravel = self.form.minTravel.isChecked() diff --git a/src/Mod/Path/Path/Op/Gui/PocketShape.py b/src/Mod/CAM/Path/Op/Gui/PocketShape.py similarity index 94% rename from src/Mod/Path/Path/Op/Gui/PocketShape.py rename to src/Mod/CAM/Path/Op/Gui/PocketShape.py index f7f7ac4e3d..25cdd4327a 100644 --- a/src/Mod/Path/Path/Op/Gui/PocketShape.py +++ b/src/Mod/CAM/Path/Op/Gui/PocketShape.py @@ -33,7 +33,7 @@ from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader("Part", globals(), "Part") -__title__ = "Path Pocket Shape Operation UI" +__title__ = "CAM Pocket Shape Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Pocket Shape operation page controller and command implementation." @@ -66,10 +66,10 @@ Command = PathOpGui.SetupOperation( "Pocket Shape", PathPocketShape.Create, TaskPanelOpPage, - "Path_Pocket", - QT_TRANSLATE_NOOP("Path_Pocket_Shape", "Pocket Shape"), + "CAM_Pocket", + QT_TRANSLATE_NOOP("CAM_Pocket_Shape", "Pocket Shape"), QT_TRANSLATE_NOOP( - "Path_Pocket_Shape", "Creates a Path Pocket object from a face or faces" + "CAM_Pocket_Shape", "Creates a pocket toolpath from a face or faces" ), PathPocketShape.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Probe.py b/src/Mod/CAM/Path/Op/Gui/Probe.py similarity index 93% rename from src/Mod/Path/Path/Op/Gui/Probe.py rename to src/Mod/CAM/Path/Op/Gui/Probe.py index 47cebcfd5c..c7b748fb05 100644 --- a/src/Mod/Path/Path/Op/Gui/Probe.py +++ b/src/Mod/CAM/Path/Op/Gui/Probe.py @@ -31,7 +31,7 @@ import PathGui from PySide.QtCore import QT_TRANSLATE_NOOP from PySide import QtCore, QtGui -__title__ = "Path Probing Operation UI" +__title__ = "CAM Probing Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Probing operation page controller and command implementation." @@ -90,9 +90,9 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): def SetOutputFileName(self): filename = QtGui.QFileDialog.getSaveFileName( self.form, - translate("Path_Probe", "Select Output File"), + translate("CAM_Probe", "Select Output File"), None, - translate("Path_Probe", "All Files (*.*)"), + translate("CAM_Probe", "All Files (*.*)"), ) if filename and filename[0]: self.obj.OutputFileName = str(filename[0]) @@ -103,9 +103,9 @@ Command = PathOpGui.SetupOperation( "Probe", PathProbe.Create, TaskPanelOpPage, - "Path_Probe", - QtCore.QT_TRANSLATE_NOOP("Path_Probe", "Probe"), - QtCore.QT_TRANSLATE_NOOP("Path_Probe", "Create a Probing Grid from a job stock"), + "CAM_Probe", + QtCore.QT_TRANSLATE_NOOP("CAM_Probe", "Probe"), + QtCore.QT_TRANSLATE_NOOP("CAM_Probe", "Create a Probing Grid from a job stock"), PathProbe.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Profile.py b/src/Mod/CAM/Path/Op/Gui/Profile.py similarity index 97% rename from src/Mod/Path/Path/Op/Gui/Profile.py rename to src/Mod/CAM/Path/Op/Gui/Profile.py index 6b652e0811..eb5d2c8e8c 100644 --- a/src/Mod/Path/Path/Op/Gui/Profile.py +++ b/src/Mod/CAM/Path/Op/Gui/Profile.py @@ -29,7 +29,7 @@ import PathGui from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Profile Operation UI" +__title__ = "CAM Profile Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Profile operation page controller and command implementation." @@ -161,10 +161,10 @@ Command = PathOpGui.SetupOperation( "Profile", PathProfile.Create, TaskPanelOpPage, - "Path_Contour", - QT_TRANSLATE_NOOP("Path", "Profile"), + "CAM_Profile", + QT_TRANSLATE_NOOP("CAM", "Profile"), QT_TRANSLATE_NOOP( - "Path", "Profile entire model, selected face(s) or selected edge(s)" + "CAM", "Profile entire model, selected face(s) or selected edge(s)" ), PathProfile.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Selection.py b/src/Mod/CAM/Path/Op/Gui/Selection.py similarity index 100% rename from src/Mod/Path/Path/Op/Gui/Selection.py rename to src/Mod/CAM/Path/Op/Gui/Selection.py diff --git a/src/Mod/Path/Path/Op/Gui/SimpleCopy.py b/src/Mod/CAM/Path/Op/Gui/SimpleCopy.py similarity index 87% rename from src/Mod/Path/Path/Op/Gui/SimpleCopy.py rename to src/Mod/CAM/Path/Op/Gui/SimpleCopy.py index 9edf59a619..52727795be 100644 --- a/src/Mod/Path/Path/Op/Gui/SimpleCopy.py +++ b/src/Mod/CAM/Path/Op/Gui/SimpleCopy.py @@ -26,7 +26,7 @@ import Path import PathScripts from PySide.QtCore import QT_TRANSLATE_NOOP -__doc__ = """Path SimpleCopy command""" +__doc__ = """CAM SimpleCopy command""" translate = FreeCAD.Qt.translate @@ -34,10 +34,10 @@ translate = FreeCAD.Qt.translate class CommandPathSimpleCopy: def GetResources(self): return { - "Pixmap": "Path_SimpleCopy", - "MenuText": QT_TRANSLATE_NOOP("Path_SimpleCopy", "Simple Copy"), + "Pixmap": "CAM_SimpleCopy", + "MenuText": QT_TRANSLATE_NOOP("CAM_SimpleCopy", "Simple Copy"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_SimpleCopy", "Creates a non-parametric copy of another path" + "CAM_SimpleCopy", "Creates a non-parametric copy of another toolpath" ), } @@ -55,13 +55,13 @@ class CommandPathSimpleCopy: selection = FreeCADGui.Selection.getSelection() if len(selection) != 1: FreeCAD.Console.PrintError( - translate("Path_SimpleCopy", "Please select exactly one path object") + translate("CAM_SimpleCopy", "Please select exactly one toolpath object") + "\n" ) return if not (selection[0].isDerivedFrom("Path::Feature")): FreeCAD.Console.PrintError( - translate("Path_SimpleCopy", "Please select exactly one path object") + translate("CAM_SimpleCopy", "Please select exactly one toolpath object") + "\n" ) return @@ -88,4 +88,4 @@ class CommandPathSimpleCopy: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_SimpleCopy", CommandPathSimpleCopy()) + FreeCADGui.addCommand("CAM_SimpleCopy", CommandPathSimpleCopy()) diff --git a/src/Mod/Path/Path/Op/Gui/Slot.py b/src/Mod/CAM/Path/Op/Gui/Slot.py similarity index 98% rename from src/Mod/Path/Path/Op/Gui/Slot.py rename to src/Mod/CAM/Path/Op/Gui/Slot.py index 0dc2a57edb..f5c4a493fe 100644 --- a/src/Mod/Path/Path/Op/Gui/Slot.py +++ b/src/Mod/CAM/Path/Op/Gui/Slot.py @@ -29,7 +29,7 @@ import PathGui from PySide import QtCore -__title__ = "Path Slot Operation UI" +__title__ = "CAM Slot Operation UI" __author__ = "russ4262 (Russell Johnson)" __url__ = "https://www.freecad.org" __doc__ = "Slot operation page controller and command implementation." @@ -277,10 +277,10 @@ Command = PathOpGui.SetupOperation( "Slot", PathSlot.Create, TaskPanelOpPage, - "Path_Slot", - QtCore.QT_TRANSLATE_NOOP("Path_Slot", "Slot"), + "CAM_Slot", + QtCore.QT_TRANSLATE_NOOP("CAM_Slot", "Slot"), QtCore.QT_TRANSLATE_NOOP( - "Path_Slot", "Create a Slot operation from selected geometry or custom points." + "CAM_Slot", "Create a Slot operation from selected geometry or custom points." ), PathSlot.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Stop.py b/src/Mod/CAM/Path/Op/Gui/Stop.py similarity index 94% rename from src/Mod/Path/Path/Op/Gui/Stop.py rename to src/Mod/CAM/Path/Op/Gui/Stop.py index 89d1ac0588..92d4efcc12 100644 --- a/src/Mod/Path/Path/Op/Gui/Stop.py +++ b/src/Mod/CAM/Path/Op/Gui/Stop.py @@ -88,7 +88,7 @@ class _ViewProviderStop: return None def getIcon(self): # optional - return ":/icons/Path_Stop.svg" + return ":/icons/CAM_Stop.svg" def onChanged(self, vobj, prop): # optional mode = 2 @@ -106,10 +106,10 @@ class _ViewProviderStop: class CommandPathStop: def GetResources(self): return { - "Pixmap": "Path_Stop", - "MenuText": QT_TRANSLATE_NOOP("Path_Stop", "Stop"), + "Pixmap": "CAM_Stop", + "MenuText": QT_TRANSLATE_NOOP("CAM_Stop", "Stop"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_Stop", "Add Optional or Mandatory Stop to the program" + "CAM_Stop", "Add Optional or Mandatory Stop to the program" ), } @@ -143,7 +143,7 @@ PathUtils.addToJob(obj) if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Stop", CommandPathStop()) + FreeCADGui.addCommand("CAM_Stop", CommandPathStop()) FreeCAD.Console.PrintLog("Loading PathStop... done\n") diff --git a/src/Mod/Path/Path/Op/Gui/Surface.py b/src/Mod/CAM/Path/Op/Gui/Surface.py similarity index 98% rename from src/Mod/Path/Path/Op/Gui/Surface.py rename to src/Mod/CAM/Path/Op/Gui/Surface.py index bf2988eec5..d7c513c7cc 100644 --- a/src/Mod/Path/Path/Op/Gui/Surface.py +++ b/src/Mod/CAM/Path/Op/Gui/Surface.py @@ -30,7 +30,7 @@ import Path.Op.Surface as PathSurface import PathGui -__title__ = "Path Surface Operation UI" +__title__ = "CAM Surface Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Surface operation page controller and command implementation." @@ -278,10 +278,10 @@ Command = PathOpGui.SetupOperation( "Surface", PathSurface.Create, TaskPanelOpPage, - "Path_3DSurface", - QtCore.QT_TRANSLATE_NOOP("Path_Surface", "3D Surface"), + "CAM_3DSurface", + QtCore.QT_TRANSLATE_NOOP("CAM_Surface", "3D Surface"), QtCore.QT_TRANSLATE_NOOP( - "Path_Surface", "Create a 3D Surface Operation from a model" + "CAM_Surface", "Create a 3D Surface Operation from a model" ), PathSurface.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/ThreadMilling.py b/src/Mod/CAM/Path/Op/Gui/ThreadMilling.py similarity index 96% rename from src/Mod/Path/Path/Op/Gui/ThreadMilling.py rename to src/Mod/CAM/Path/Op/Gui/ThreadMilling.py index a0a57883dc..8acda6cfd2 100644 --- a/src/Mod/Path/Path/Op/Gui/ThreadMilling.py +++ b/src/Mod/CAM/Path/Op/Gui/ThreadMilling.py @@ -35,10 +35,10 @@ from PySide.QtCore import QT_TRANSLATE_NOOP from PySide import QtCore -__title__ = "Path Thread Milling Operation UI." +__title__ = "CAM Thread Milling Operation UI." __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "UI and Command for Path Thread Milling Operation." +__doc__ = "UI and Command for CAM Thread Milling Operation." if False: Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) @@ -55,7 +55,7 @@ def fillThreads(form, dataFile, defaultSelect): Path.Log.debug("select = '{}'".format(select)) form.threadName.clear() with open( - "{}Mod/Path/Data/Threads/{}".format(FreeCAD.getHomePath(), dataFile) + "{}Mod/CAM/Data/Threads/{}".format(FreeCAD.getHomePath(), dataFile) ) as fp: reader = csv.DictReader(fp) for row in reader: @@ -249,11 +249,11 @@ Command = PathOpGui.SetupOperation( "ThreadMilling", PathThreadMilling.Create, TaskPanelOpPage, - "Path_ThreadMilling", - QT_TRANSLATE_NOOP("Path_ThreadMilling", "Thread Milling"), + "CAM_ThreadMilling", + QT_TRANSLATE_NOOP("CAM_ThreadMilling", "Thread Milling"), QT_TRANSLATE_NOOP( - "Path_ThreadMilling", - "Creates a Path Thread Milling operation from features of a base object", + "CAM_ThreadMilling", + "Creates a Thread Milling toolpath from features of a base object", ), PathThreadMilling.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Vcarve.py b/src/Mod/CAM/Path/Op/Gui/Vcarve.py similarity index 96% rename from src/Mod/Path/Path/Op/Gui/Vcarve.py rename to src/Mod/CAM/Path/Op/Gui/Vcarve.py index 4b06bc0145..1c275e533a 100644 --- a/src/Mod/Path/Path/Op/Gui/Vcarve.py +++ b/src/Mod/CAM/Path/Op/Gui/Vcarve.py @@ -30,7 +30,7 @@ import PathScripts.PathUtils as PathUtils from PySide import QtCore, QtGui -__title__ = "Path Vcarve Operation UI" +__title__ = "CAM Vcarve Operation UI" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Vcarve operation page controller and command implementation." @@ -61,7 +61,7 @@ class TaskPanelBaseGeometryPage(PathOpGui.TaskPanelBaseGeometryPage): if not base: Path.Log.notice( ( - translate("Path", "%s is not a Base Model object of the job %s") + translate("CAM", "%s is not a Base Model object of the job %s") + "\n" ) % (sel.Object.Label, job.Label) @@ -162,9 +162,9 @@ Command = PathOpGui.SetupOperation( "Vcarve", PathVcarve.Create, TaskPanelOpPage, - "Path_Vcarve", - QtCore.QT_TRANSLATE_NOOP("Path_Vcarve", "Vcarve"), - QtCore.QT_TRANSLATE_NOOP("Path_Vcarve", "Creates a medial line engraving path"), + "CAM_Vcarve", + QtCore.QT_TRANSLATE_NOOP("CAM_Vcarve", "Vcarve"), + QtCore.QT_TRANSLATE_NOOP("CAM_Vcarve", "Creates a medial line engraving toolpath"), PathVcarve.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/Waterline.py b/src/Mod/CAM/Path/Op/Gui/Waterline.py similarity index 97% rename from src/Mod/Path/Path/Op/Gui/Waterline.py rename to src/Mod/CAM/Path/Op/Gui/Waterline.py index 5845322b46..61526ecbc0 100644 --- a/src/Mod/Path/Path/Op/Gui/Waterline.py +++ b/src/Mod/CAM/Path/Op/Gui/Waterline.py @@ -30,7 +30,7 @@ import Path.Base.Gui.Util as PathGuiUtil import Path.Op.Gui.Base as PathOpGui import Path.Op.Waterline as PathWaterline -__title__ = "Path Waterline Operation UI" +__title__ = "CAM Waterline Operation UI" __author__ = "sliptonic (Brad Collette), russ4262 (Russell Johnson)" __url__ = "https://www.freecad.org" __doc__ = "Waterline operation page controller and command implementation." @@ -173,9 +173,9 @@ Command = PathOpGui.SetupOperation( "Waterline", PathWaterline.Create, TaskPanelOpPage, - "Path_Waterline", - QT_TRANSLATE_NOOP("Path_Waterline", "Waterline"), - QT_TRANSLATE_NOOP("Path_Waterline", "Create a Waterline Operation from a model"), + "CAM_Waterline", + QT_TRANSLATE_NOOP("CAM_Waterline", "Waterline"), + QT_TRANSLATE_NOOP("CAM_Waterline", "Create a Waterline toolpath from a model"), PathWaterline.SetupProperties, ) diff --git a/src/Mod/Path/Path/Op/Gui/__init__.py b/src/Mod/CAM/Path/Op/Gui/__init__.py similarity index 100% rename from src/Mod/Path/Path/Op/Gui/__init__.py rename to src/Mod/CAM/Path/Op/Gui/__init__.py diff --git a/src/Mod/Path/Path/Op/Helix.py b/src/Mod/CAM/Path/Op/Helix.py similarity index 98% rename from src/Mod/Path/Path/Op/Helix.py rename to src/Mod/CAM/Path/Op/Helix.py index 114328a018..60026814f2 100644 --- a/src/Mod/Path/Path/Op/Helix.py +++ b/src/Mod/CAM/Path/Op/Helix.py @@ -32,7 +32,7 @@ import Path.Op.Base as PathOp import Path.Op.CircularHoleBase as PathCircularHoleBase -__title__ = "Path Helix Drill Operation" +__title__ = "CAM Helix Operation" __author__ = "Lorenz Hüdepohl" __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of Helix Drill operation" @@ -68,8 +68,8 @@ class ObjectHelix(PathCircularHoleBase.ObjectOp): # Enumeration lists for App::PropertyEnumeration properties enums = { "Direction": [ - (translate("Path_Helix", "CW"), "CW"), - (translate("Path_Helix", "CCW"), "CCW"), + (translate("CAM_Helix", "CW"), "CW"), + (translate("CAM_Helix", "CCW"), "CCW"), ], # this is the direction that the profile runs "StartSide": [ (translate("PathProfile", "Outside"), "Outside"), diff --git a/src/Mod/Path/Path/Op/MillFace.py b/src/Mod/CAM/Path/Op/MillFace.py similarity index 98% rename from src/Mod/Path/Path/Op/MillFace.py rename to src/Mod/CAM/Path/Op/MillFace.py index 977c54cf0b..5925d1960c 100644 --- a/src/Mod/Path/Path/Op/MillFace.py +++ b/src/Mod/CAM/Path/Op/MillFace.py @@ -33,7 +33,7 @@ from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader("Part", globals(), "Part") -__title__ = "Path Mill Face Operation" +__title__ = "CAM Mill Face Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of Mill Facing operation." @@ -65,10 +65,10 @@ class ObjectFace(PathPocketBase.ObjectPocket): enums = { "BoundaryShape": [ - (translate("Path_Pocket", "Boundbox"), "Boundbox"), - (translate("Path_Pocket", "Face Region"), "Face Region"), - (translate("Path_Pocket", "Perimeter"), "Perimeter"), - (translate("Path_Pocket", "Stock"), "Stock"), + (translate("CAM_Pocket", "Boundbox"), "Boundbox"), + (translate("CAM_Pocket", "Face Region"), "Face Region"), + (translate("CAM_Pocket", "Perimeter"), "Perimeter"), + (translate("CAM_Pocket", "Stock"), "Stock"), ], } diff --git a/src/Mod/Path/Path/Op/Pocket.py b/src/Mod/CAM/Path/Op/Pocket.py similarity index 98% rename from src/Mod/Path/Path/Op/Pocket.py rename to src/Mod/CAM/Path/Op/Pocket.py index 76dd910086..a961f53ffb 100644 --- a/src/Mod/Path/Path/Op/Pocket.py +++ b/src/Mod/CAM/Path/Op/Pocket.py @@ -31,7 +31,7 @@ import PathScripts.PathUtils as PathUtils # lazily loaded modules from lazy_loader.lazy_loader import LazyLoader -__title__ = "Path 3D Pocket Operation" +__title__ = "CAM 3D Pocket Operation" __author__ = "Yorik van Havre " __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of the 3D Pocket operation." @@ -114,8 +114,8 @@ class ObjectPocket(PathPocketBase.ObjectPocket): enums = { "HandleMultipleFeatures": [ - (translate("Path_Pocket", "Collectively"), "Collectively"), - (translate("Path_Pocket", "Individually"), "Individually"), + (translate("CAM_Pocket", "Collectively"), "Collectively"), + (translate("CAM_Pocket", "Individually"), "Individually"), ], } @@ -186,7 +186,7 @@ class ObjectPocket(PathPocketBase.ObjectPocket): if obj.FinalDepth.Value < fzmin: Path.Log.warning( translate( - "PathPocket", + "CAM", "Final depth set below ZMin of face(s) selected.", ) ) @@ -328,7 +328,7 @@ class ObjectPocket(PathPocketBase.ObjectPocket): Path.Log.warning(ee) Path.Log.error( translate( - "Path", + "CAM", "A planar adaptive start is unavailable. The non-planar will be attempted.", ) ) @@ -345,7 +345,7 @@ class ObjectPocket(PathPocketBase.ObjectPocket): Path.Log.warning(eee) Path.Log.error( translate( - "Path", "The non-planar adaptive start is also unavailable." + "CAM", "The non-planar adaptive start is also unavailable." ) + "(1)" ) @@ -375,7 +375,7 @@ class ObjectPocket(PathPocketBase.ObjectPocket): ) Path.Log.error( translate( - "Path", "The non-planar adaptive start is also unavailable." + "CAM", "The non-planar adaptive start is also unavailable." ) + "(2)" ) diff --git a/src/Mod/Path/Path/Op/PocketBase.py b/src/Mod/CAM/Path/Op/PocketBase.py similarity index 93% rename from src/Mod/Path/Path/Op/PocketBase.py rename to src/Mod/CAM/Path/Op/PocketBase.py index 9dc30836de..2c303e731c 100644 --- a/src/Mod/Path/Path/Op/PocketBase.py +++ b/src/Mod/CAM/Path/Op/PocketBase.py @@ -28,10 +28,10 @@ import Path.Op.Base as PathOp from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Base Path Pocket Operation" +__title__ = "Base CAM Pocket Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Base class and implementation for Path pocket operations." +__doc__ = "Base class and implementation for pocket operations." if False: Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) @@ -58,19 +58,19 @@ class ObjectPocket(PathAreaOp.ObjectOp): enums = { "CutMode": [ - (translate("Path_Pocket", "Climb"), "Climb"), - (translate("Path_Pocket", "Conventional"), "Conventional"), + (translate("CAM_Pocket", "Climb"), "Climb"), + (translate("CAM_Pocket", "Conventional"), "Conventional"), ], # this is the direction that the profile runs "StartAt": [ - (translate("Path_Pocket", "Center"), "Center"), - (translate("Path_Pocket", "Edge"), "Edge"), + (translate("CAM_Pocket", "Center"), "Center"), + (translate("CAM_Pocket", "Edge"), "Edge"), ], "OffsetPattern": [ - (translate("Path_Pocket", "ZigZag"), "ZigZag"), - (translate("Path_Pocket", "Offset"), "Offset"), - (translate("Path_Pocket", "ZigZagOffset"), "ZigZagOffset"), - (translate("Path_Pocket", "Line"), "Line"), - (translate("Path_Pocket", "Grid"), "Grid"), + (translate("CAM_Pocket", "ZigZag"), "ZigZag"), + (translate("CAM_Pocket", "Offset"), "Offset"), + (translate("CAM_Pocket", "ZigZagOffset"), "ZigZagOffset"), + (translate("CAM_Pocket", "Line"), "Line"), + (translate("CAM_Pocket", "Grid"), "Grid"), ], # Fill Pattern } diff --git a/src/Mod/Path/Path/Op/PocketShape.py b/src/Mod/CAM/Path/Op/PocketShape.py similarity index 99% rename from src/Mod/Path/Path/Op/PocketShape.py rename to src/Mod/CAM/Path/Op/PocketShape.py index ca23f708f5..d95d521c37 100644 --- a/src/Mod/Path/Path/Op/PocketShape.py +++ b/src/Mod/CAM/Path/Op/PocketShape.py @@ -39,7 +39,7 @@ FeatureExtensions = LazyLoader( ) -__title__ = "Path Pocket Shape Operation" +__title__ = "CAM Pocket Shape Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of shape based Pocket operation." diff --git a/src/Mod/Path/Path/Op/Probe.py b/src/Mod/CAM/Path/Op/Probe.py similarity index 98% rename from src/Mod/Path/Path/Op/Probe.py rename to src/Mod/CAM/Path/Op/Probe.py index 8b089431f0..11d4b44e5f 100644 --- a/src/Mod/Path/Path/Op/Probe.py +++ b/src/Mod/CAM/Path/Op/Probe.py @@ -28,10 +28,10 @@ import PathScripts.PathUtils as PathUtils from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Probing Operation" +__title__ = "CAM Probing Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Path Probing operation." +__doc__ = "CAM Probing operation." if False: Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) diff --git a/src/Mod/Path/Path/Op/Profile.py b/src/Mod/CAM/Path/Op/Profile.py similarity index 99% rename from src/Mod/Path/Path/Op/Profile.py rename to src/Mod/CAM/Path/Op/Profile.py index 7a74d41187..00105ef1f2 100644 --- a/src/Mod/Path/Path/Op/Profile.py +++ b/src/Mod/CAM/Path/Op/Profile.py @@ -40,11 +40,11 @@ DraftGeomUtils = LazyLoader("DraftGeomUtils", globals(), "DraftGeomUtils") translate = FreeCAD.Qt.translate -__title__ = "Path Profile Operation" +__title__ = "CAM Profile Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = ( - "Path Profile operation based on entire model, selected faces or selected edges." + "Create a profile toolpath based on entire model, selected faces or selected edges." ) __contributors__ = "Schildkroet" diff --git a/src/Mod/Path/Path/Op/Slot.py b/src/Mod/CAM/Path/Op/Slot.py similarity index 95% rename from src/Mod/Path/Path/Op/Slot.py rename to src/Mod/CAM/Path/Op/Slot.py index 7792fceca3..b1585c45b2 100644 --- a/src/Mod/Path/Path/Op/Slot.py +++ b/src/Mod/CAM/Path/Op/Slot.py @@ -21,7 +21,7 @@ # *************************************************************************** -__title__ = "Path Slot Operation" +__title__ = "CAM Slot Operation" __author__ = "russ4262 (Russell Johnson)" __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of Slot operation." @@ -101,9 +101,9 @@ class ObjectSlot(PathOp.ObjectOp): setattr(obj, k, [t[1] for t in tupList]) if warn: - newPropMsg = translate("Path_Slot", "New property added to") + newPropMsg = translate("CAM_Slot", "New property added to") newPropMsg += ' "{}": {}'.format(obj.Label, self.addNewProps) + ". " - newPropMsg += translate("Path_Slot", "Check default value(s).") + newPropMsg += translate("CAM_Slot", "Check default value(s).") FreeCAD.Console.PrintWarning(newPropMsg + "\n") self.propertiesReady = True @@ -118,7 +118,7 @@ class ObjectSlot(PathOp.ObjectOp): "Debug", QtCore.QT_TRANSLATE_NOOP( "App::Property", - "Show the temporary path construction objects when module is in DEBUG mode.", + "Show the temporary toolpath construction objects when module is in DEBUG mode.", ), ), ( @@ -126,7 +126,7 @@ class ObjectSlot(PathOp.ObjectOp): "CustomPoint1", "Slot", QtCore.QT_TRANSLATE_NOOP( - "App::Property", "Enter custom start point for slot path." + "App::Property", "Enter custom start point for slot toolpath." ), ), ( @@ -134,7 +134,7 @@ class ObjectSlot(PathOp.ObjectOp): "CustomPoint2", "Slot", QtCore.QT_TRANSLATE_NOOP( - "App::Property", "Enter custom end point for slot path." + "App::Property", "Enter custom end point for slot toolpath." ), ), ( @@ -152,7 +152,7 @@ class ObjectSlot(PathOp.ObjectOp): "Slot", QtCore.QT_TRANSLATE_NOOP( "App::Property", - "Positive extends the beginning of the path, negative shortens.", + "Positive extends the beginning of the toolpath, negative shortens.", ), ), ( @@ -161,7 +161,7 @@ class ObjectSlot(PathOp.ObjectOp): "Slot", QtCore.QT_TRANSLATE_NOOP( "App::Property", - "Positive extends the end of the path, negative shortens.", + "Positive extends the end of the toolpath, negative shortens.", ), ), ( @@ -179,7 +179,7 @@ class ObjectSlot(PathOp.ObjectOp): "Slot", QtCore.QT_TRANSLATE_NOOP( "App::Property", - "Choose the path orientation with regard to the feature(s) selected.", + "Choose the toolpath orientation with regard to the feature(s) selected.", ), ), ( @@ -206,7 +206,7 @@ class ObjectSlot(PathOp.ObjectOp): "Slot", QtCore.QT_TRANSLATE_NOOP( "App::Property", - "For arcs/circlular edges, offset the radius for the path.", + "For arcs/circlular edges, offset the radius for the toolpath.", ), ), ( @@ -215,7 +215,7 @@ class ObjectSlot(PathOp.ObjectOp): "Slot", QtCore.QT_TRANSLATE_NOOP( "App::Property", - "Enable to reverse the cut direction of the slot path.", + "Enable to reverse the cut direction of the slot toolpath.", ), ), ( @@ -224,7 +224,7 @@ class ObjectSlot(PathOp.ObjectOp): "Start Point", QtCore.QT_TRANSLATE_NOOP( "App::Property", - "The custom start point for the path of this operation", + "The custom start point for the toolpath of this operation", ), ), ( @@ -251,38 +251,38 @@ class ObjectSlot(PathOp.ObjectOp): enums = { "CutPattern": [ - (translate("Path_Slot", "Line"), "Line"), - (translate("Path_Slot", "ZigZag"), "ZigZag"), + (translate("CAM_Slot", "Line"), "Line"), + (translate("CAM_Slot", "ZigZag"), "ZigZag"), ], "LayerMode": [ - (translate("Path_Slot", "Single-pass"), "Single-pass"), - (translate("Path_Slot", "Multi-pass"), "Multi-pass"), + (translate("CAM_Slot", "Single-pass"), "Single-pass"), + (translate("CAM_Slot", "Multi-pass"), "Multi-pass"), ], "PathOrientation": [ - (translate("Path_Slot", "Start to End"), "Start to End"), - (translate("Path_Slot", "Perpendicular"), "Perpendicular"), + (translate("CAM_Slot", "Start to End"), "Start to End"), + (translate("CAM_Slot", "Perpendicular"), "Perpendicular"), ], "Reference1": [ - (translate("Path_Slot", "Center of Mass"), "Center of Mass"), + (translate("CAM_Slot", "Center of Mass"), "Center of Mass"), ( - translate("Path_Slot", "Center of Bounding Box"), + translate("CAM_Slot", "Center of Bounding Box"), "Center of BoundBox", ), - (translate("Path_Slot", "Lowest Point"), "Lowest Point"), - (translate("Path_Slot", "Highest Point"), "Highest Point"), - (translate("Path_Slot", "Long Edge"), "Long Edge"), - (translate("Path_Slot", "Short Edge"), "Short Edge"), - (translate("Path_Slot", "Vertex"), "Vertex"), + (translate("CAM_Slot", "Lowest Point"), "Lowest Point"), + (translate("CAM_Slot", "Highest Point"), "Highest Point"), + (translate("CAM_Slot", "Long Edge"), "Long Edge"), + (translate("CAM_Slot", "Short Edge"), "Short Edge"), + (translate("CAM_Slot", "Vertex"), "Vertex"), ], "Reference2": [ - (translate("Path_Slot", "Center of Mass"), "Center of Mass"), + (translate("CAM_Slot", "Center of Mass"), "Center of Mass"), ( - translate("Path_Slot", "Center of Bounding Box"), + translate("CAM_Slot", "Center of Bounding Box"), "Center of BoundBox", ), - (translate("Path_Slot", "Lowest Point"), "Lowest Point"), - (translate("Path_Slot", "Highest Point"), "Highest Point"), - (translate("Path_Slot", "Vertex"), "Vertex"), + (translate("CAM_Slot", "Lowest Point"), "Lowest Point"), + (translate("CAM_Slot", "Highest Point"), "Highest Point"), + (translate("CAM_Slot", "Vertex"), "Vertex"), ], } @@ -600,7 +600,7 @@ class ObjectSlot(PathOp.ObjectOp): featureCount = 0 if not hasattr(obj, "Base"): - msg = translate("Path_Slot", "No Base Geometry object in the operation.") + msg = translate("CAM_Slot", "No Base Geometry object in the operation.") FreeCAD.Console.PrintError(msg + "\n") return False @@ -609,14 +609,14 @@ class ObjectSlot(PathOp.ObjectOp): p1 = obj.CustomPoint1 p2 = obj.CustomPoint2 if p1 == p2: - msg = translate("Path_Slot", "Custom points are identical.") + msg = translate("CAM_Slot", "Custom points are identical.") FreeCAD.Console.PrintError(msg + "\n") return False elif p1.z == p2.z: pnts = (p1, p2) featureCount = 2 else: - msg = translate("Path_Slot", "Custom points not at same Z height.") + msg = translate("CAM_Slot", "Custom points not at same Z height.") FreeCAD.Console.PrintError(msg + "\n") return False else: @@ -672,7 +672,7 @@ class ObjectSlot(PathOp.ObjectOp): ) if newRadius <= 0: msg = translate( - "Path_Slot", + "CAM_Slot", "Current Extend Radius value produces negative arc radius.", ) FreeCAD.Console.PrintError(msg + "\n") @@ -691,7 +691,7 @@ class ObjectSlot(PathOp.ObjectOp): # Complete circle if obj.ExtendPathStart.Value != 0 or obj.ExtendPathEnd.Value != 0: msg = translate( - "Path_Slot", "No path extensions available for full circles." + "CAM_Slot", "No path extensions available for full circles." ) FreeCAD.Console.PrintWarning(msg + "\n") else: @@ -720,7 +720,7 @@ class ObjectSlot(PathOp.ObjectOp): if self._arcCollisionCheck(obj, p1, p2, self.arcCenter, self.newRadius): msg = obj.Label + " " - msg += translate("Path_Slot", "operation collides with model.") + msg += translate("CAM_Slot", "operation collides with model.") FreeCAD.Console.PrintError(msg + "\n") # Path.Log.warning('Unable to create G-code. _makeArcGCode() is incomplete.') @@ -832,7 +832,7 @@ class ObjectSlot(PathOp.ObjectOp): if edg1_len != edg2_len: msg = obj.Label + " " msg += translate( - "Path_Slot", "Verify slot path start and end points." + "CAM_Slot", "Verify slot path start and end points." ) FreeCAD.Console.PrintWarning(msg + "\n") else: @@ -868,7 +868,7 @@ class ObjectSlot(PathOp.ObjectOp): if self._lineCollisionCheck(obj, p1, p2): msg = obj.Label + " " - msg += translate("Path_Slot", "operation collides with model.") + msg += translate("CAM_Slot", "operation collides with model.") FreeCAD.Console.PrintWarning(msg + "\n") cmds = self._makeLineGCode(obj, p1, p2) @@ -965,7 +965,7 @@ class ObjectSlot(PathOp.ObjectOp): pnts = self._processSingleComplexFace(obj, shape_1) if not pnts: - msg = translate("Path_Slot", "The selected face is inaccessible.") + msg = translate("CAM_Slot", "The selected face is inaccessible.") FreeCAD.Console.PrintError(msg + "\n") return False @@ -982,7 +982,7 @@ class ObjectSlot(PathOp.ObjectOp): elif cat1 == "Vert": msg = translate( - "Path_Slot", + "CAM_Slot", "Only a vertex selected. Add another feature to the Base Geometry.", ) FreeCAD.Console.PrintError(msg + "\n") @@ -1009,7 +1009,7 @@ class ObjectSlot(PathOp.ObjectOp): # Reject triangular faces if len(shape.Edges) < 4: msg = translate( - "Path_Slot", "A single selected face must have four edges minimum." + "CAM_Slot", "A single selected face must have four edges minimum." ) FreeCAD.Console.PrintError(msg + "\n") return False @@ -1067,7 +1067,7 @@ class ObjectSlot(PathOp.ObjectOp): Path.Log.debug(" -parallel_edge_flags: {}".format(parallel_edge_flags)) if pairCnt == 0: - msg = translate("Path_Slot", "No parallel edges identified.") + msg = translate("CAM_Slot", "No parallel edges identified.") FreeCAD.Console.PrintError(msg + "\n") return False elif pairCnt == 1: @@ -1091,7 +1091,7 @@ class ObjectSlot(PathOp.ObjectOp): same = parallel_edge_pairs[0] else: msg = "Reference1 " - msg += translate("Path_Slot", "value error.") + msg += translate("CAM_Slot", "value error.") FreeCAD.Console.PrintError(msg + "\n") return False @@ -1138,7 +1138,7 @@ class ObjectSlot(PathOp.ObjectOp): (p1, p2) = self._getCutSidePoints(obj, v0, v1, a1, a2, b1, b2) msg = obj.Label + " " - msg += translate("Path_Slot", "Verify slot path start and end points.") + msg += translate("CAM_Slot", "Verify slot path start and end points.") FreeCAD.Console.PrintWarning(msg + "\n") return (p1, p2) @@ -1153,7 +1153,7 @@ class ObjectSlot(PathOp.ObjectOp): def oversizedTool(holeDiam): # Test if tool larger than opening if self.tool.Diameter > holeDiam: - msg = translate("Path_Slot", "Current tool larger than arc diameter.") + msg = translate("CAM_Slot", "Current tool larger than arc diameter.") FreeCAD.Console.PrintError(msg + "\n") return True return False @@ -1238,7 +1238,7 @@ class ObjectSlot(PathOp.ObjectOp): return (p1, p2) else: msg = translate( - "Path_Slot", + "CAM_Slot", "Failed, slot from edge only accepts lines, arcs and circles.", ) FreeCAD.Console.PrintError(msg + "\n") @@ -1259,7 +1259,7 @@ class ObjectSlot(PathOp.ObjectOp): feature1 = self._processFeature(obj, shape_1, sub1, 1) if not feature1: - msg = translate("Path_Slot", "Failed to determine point 1 from") + msg = translate("CAM_Slot", "Failed to determine point 1 from") FreeCAD.Console.PrintError(msg + " {}.\n".format(sub1)) return False (p1, dYdX1, shpType) = feature1 @@ -1269,7 +1269,7 @@ class ObjectSlot(PathOp.ObjectOp): feature2 = self._processFeature(obj, shape_2, sub2, 2) if not feature2: - msg = translate("Path_Slot", "Failed to determine point 2 from") + msg = translate("CAM_Slot", "Failed to determine point 2 from") FreeCAD.Console.PrintError(msg + " {}.\n".format(sub2)) return False (p2, dYdX2, shpType) = feature2 @@ -1282,7 +1282,7 @@ class ObjectSlot(PathOp.ObjectOp): Path.Log.debug("dYdX1, dYdX2: {}, {}".format(dYdX1, dYdX2)) if not self._isParallel(dYdX1, dYdX2): if self.shapeType1 != "Edge" or self.shapeType2 != "Edge": - msg = translate("Path_Slot", "Selected geometry not parallel.") + msg = translate("CAM_Slot", "Selected geometry not parallel.") FreeCAD.Console.PrintError(msg + "\n") return False @@ -1402,7 +1402,7 @@ class ObjectSlot(PathOp.ObjectOp): # FreeCAD.Console.PrintMessage('{} normal {}.\n'.format(sub, norm)) if norm.z != 0: msg = translate( - "Path_Slot", "The selected face is not oriented vertically:" + "CAM_Slot", "The selected face is not oriented vertically:" ) FreeCAD.Console.PrintError(msg + " {}.\n".format(sub)) return False @@ -1916,7 +1916,7 @@ class ObjectSlot(PathOp.ObjectOp): # Path.Log.debug('arcRadius, newRadius: {}, {}'.format(arcRadius, newRadius)) if newRadius <= 0: msg = translate( - "Path_Slot", "Current offset value produces negative radius." + "CAM_Slot", "Current offset value produces negative radius." ) FreeCAD.Console.PrintError(msg + "\n") return False @@ -1930,7 +1930,7 @@ class ObjectSlot(PathOp.ObjectOp): # Path.Log.debug('arcRadius, newRadius: {}, {}'.format(arcRadius, newRadius)) if newRadius <= 0: msg = translate( - "Path_Slot", "Current offset value produces negative radius." + "CAM_Slot", "Current offset value produces negative radius." ) FreeCAD.Console.PrintError(msg + "\n") return False diff --git a/src/Mod/Path/Path/Op/Surface.py b/src/Mod/CAM/Path/Op/Surface.py similarity index 98% rename from src/Mod/Path/Path/Op/Surface.py rename to src/Mod/CAM/Path/Op/Surface.py index 47cd09ea2d..d61144de54 100644 --- a/src/Mod/Path/Path/Op/Surface.py +++ b/src/Mod/CAM/Path/Op/Surface.py @@ -21,7 +21,7 @@ # *************************************************************************** -__title__ = "Path Surface Operation" +__title__ = "CAM Surface Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of 3D Surface operation." @@ -446,52 +446,52 @@ class ObjectSurface(PathOp.ObjectOp): # Enumeration lists for App::PropertyEnumeration properties enums = { "BoundBox": [ - (translate("Path_Surface", "BaseBoundBox"), "BaseBoundBox"), - (translate("Path_Surface", "Stock"), "Stock"), + (translate("CAM_Surface", "BaseBoundBox"), "BaseBoundBox"), + (translate("CAM_Surface", "Stock"), "Stock"), ], "PatternCenterAt": [ - (translate("Path_Surface", "CenterOfMass"), "CenterOfMass"), - (translate("Path_Surface", "CenterOfBoundBox"), "CenterOfBoundBox"), - (translate("Path_Surface", "XminYmin"), "XminYmin"), - (translate("Path_Surface", "Custom"), "Custom"), + (translate("CAM_Surface", "CenterOfMass"), "CenterOfMass"), + (translate("CAM_Surface", "CenterOfBoundBox"), "CenterOfBoundBox"), + (translate("CAM_Surface", "XminYmin"), "XminYmin"), + (translate("CAM_Surface", "Custom"), "Custom"), ], "CutMode": [ - (translate("Path_Surface", "Conventional"), "Conventional"), - (translate("Path_Surface", "Climb"), "Climb"), + (translate("CAM_Surface", "Conventional"), "Conventional"), + (translate("CAM_Surface", "Climb"), "Climb"), ], "CutPattern": [ - (translate("Path_Surface", "Circular"), "Circular"), - (translate("Path_Surface", "CircularZigZag"), "CircularZigZag"), - (translate("Path_Surface", "Line"), "Line"), - (translate("Path_Surface", "Offset"), "Offset"), - (translate("Path_Surface", "Spiral"), "Spiral"), - (translate("Path_Surface", "ZigZag"), "ZigZag"), + (translate("CAM_Surface", "Circular"), "Circular"), + (translate("CAM_Surface", "CircularZigZag"), "CircularZigZag"), + (translate("CAM_Surface", "Line"), "Line"), + (translate("CAM_Surface", "Offset"), "Offset"), + (translate("CAM_Surface", "Spiral"), "Spiral"), + (translate("CAM_Surface", "ZigZag"), "ZigZag"), ], "DropCutterDir": [ - (translate("Path_Surface", "X"), "X"), - (translate("Path_Surface", "Y"), "Y"), + (translate("CAM_Surface", "X"), "X"), + (translate("CAM_Surface", "Y"), "Y"), ], "HandleMultipleFeatures": [ - (translate("Path_Surface", "Collectively"), "Collectively"), - (translate("Path_Surface", "Individually"), "Individually"), + (translate("CAM_Surface", "Collectively"), "Collectively"), + (translate("CAM_Surface", "Individually"), "Individually"), ], "LayerMode": [ - (translate("Path_Surface", "Single-pass"), "Single-pass"), - (translate("Path_Surface", "Multi-pass"), "Multi-pass"), + (translate("CAM_Surface", "Single-pass"), "Single-pass"), + (translate("CAM_Surface", "Multi-pass"), "Multi-pass"), ], "ProfileEdges": [ - (translate("Path_Surface", "None"), "None"), - (translate("Path_Surface", "Only"), "Only"), - (translate("Path_Surface", "First"), "First"), - (translate("Path_Surface", "Last"), "Last"), + (translate("CAM_Surface", "None"), "None"), + (translate("CAM_Surface", "Only"), "Only"), + (translate("CAM_Surface", "First"), "First"), + (translate("CAM_Surface", "Last"), "Last"), ], "RotationAxis": [ - (translate("Path_Surface", "X"), "X"), - (translate("Path_Surface", "Y"), "Y"), + (translate("CAM_Surface", "X"), "X"), + (translate("CAM_Surface", "Y"), "Y"), ], "ScanType": [ - (translate("Path_Surface", "Planar"), "Planar"), - (translate("Path_Surface", "Rotational"), "Rotational"), + (translate("CAM_Surface", "Planar"), "Planar"), + (translate("CAM_Surface", "Rotational"), "Rotational"), ], } diff --git a/src/Mod/Path/Path/Op/SurfaceSupport.py b/src/Mod/CAM/Path/Op/SurfaceSupport.py similarity index 99% rename from src/Mod/Path/Path/Op/SurfaceSupport.py rename to src/Mod/CAM/Path/Op/SurfaceSupport.py index 6e68f754a0..581d09e2d7 100644 --- a/src/Mod/Path/Path/Op/SurfaceSupport.py +++ b/src/Mod/CAM/Path/Op/SurfaceSupport.py @@ -21,7 +21,7 @@ # *************************************************************************** -__title__ = "Path Surface Support Module" +__title__ = "CAM Surface Support Module" __author__ = "russ4262 (Russell Johnson)" __url__ = "https://www.freecad.org" __doc__ = "Support functions and classes for 3D Surface and Waterline operations." diff --git a/src/Mod/Path/Path/Op/ThreadMilling.py b/src/Mod/CAM/Path/Op/ThreadMilling.py similarity index 94% rename from src/Mod/Path/Path/Op/ThreadMilling.py rename to src/Mod/CAM/Path/Op/ThreadMilling.py index f2305672b2..e8b80da194 100644 --- a/src/Mod/Path/Path/Op/ThreadMilling.py +++ b/src/Mod/CAM/Path/Op/ThreadMilling.py @@ -29,10 +29,10 @@ import Path.Op.CircularHoleBase as PathCircularHoleBase import math from PySide.QtCore import QT_TRANSLATE_NOOP -__title__ = "Path Thread Milling Operation" +__title__ = "CAM Thread Milling Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Path thread milling operation." +__doc__ = "CAM thread milling operation." # math.sqrt(3)/2 ... 60deg triangle height SQRT_3_DIVIDED_BY_2 = 0.8660254037844386 @@ -242,59 +242,59 @@ class ObjectThreadMilling(PathCircularHoleBase.ObjectOp): enums = { "ThreadType": [ ( - translate("Path_ThreadMilling", "Custom External"), + translate("CAM_ThreadMilling", "Custom External"), ThreadTypeCustomExternal, ), ( - translate("Path_ThreadMilling", "Custom Internal"), + translate("CAM_ThreadMilling", "Custom Internal"), ThreadTypeCustomInternal, ), ( - translate("Path_ThreadMilling", "Imperial External (2A)"), + translate("CAM_ThreadMilling", "Imperial External (2A)"), ThreadTypeImperialExternal2A, ), ( - translate("Path_ThreadMilling", "Imperial External (3A)"), + translate("CAM_ThreadMilling", "Imperial External (3A)"), ThreadTypeImperialExternal3A, ), ( - translate("Path_ThreadMilling", "Imperial Internal (2B)"), + translate("CAM_ThreadMilling", "Imperial Internal (2B)"), ThreadTypeImperialInternal2B, ), ( - translate("Path_ThreadMilling", "Imperial Internal (3B)"), + translate("CAM_ThreadMilling", "Imperial Internal (3B)"), ThreadTypeImperialInternal3B, ), ( - translate("Path_ThreadMilling", "Metric External (4G6G)"), + translate("CAM_ThreadMilling", "Metric External (4G6G)"), ThreadTypeMetricExternal4G6G, ), ( - translate("Path_ThreadMilling", "Metric External (6G)"), + translate("CAM_ThreadMilling", "Metric External (6G)"), ThreadTypeMetricExternal6G, ), ( - translate("Path_ThreadMilling", "Metric Internal (6H)"), + translate("CAM_ThreadMilling", "Metric Internal (6H)"), ThreadTypeMetricInternal6H, ), ], "ThreadOrientation": [ ( - translate("Path_ThreadMilling", "LeftHand"), + translate("CAM_ThreadMilling", "LeftHand"), LeftHand, ), ( - translate("Path_ThreadMilling", "RightHand"), + translate("CAM_ThreadMilling", "RightHand"), RightHand, ), ], "Direction": [ ( - translate("Path_ThreadMilling", "Climb"), + translate("CAM_ThreadMilling", "Climb"), DirectionClimb, ), ( - translate("Path_ThreadMilling", "Conventional"), + translate("CAM_ThreadMilling", "Conventional"), DirectionConventional, ), ], diff --git a/src/Mod/Path/Path/Op/Util.py b/src/Mod/CAM/Path/Op/Util.py similarity index 98% rename from src/Mod/Path/Path/Op/Util.py rename to src/Mod/CAM/Path/Op/Util.py index 74eb56c66f..790cbf907a 100644 --- a/src/Mod/Path/Path/Op/Util.py +++ b/src/Mod/CAM/Path/Op/Util.py @@ -31,10 +31,10 @@ from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader("Part", globals(), "Part") -__title__ = "Util - Utility functions for Path operations." +__title__ = "Util - Utility functions for CAM operations." __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" -__doc__ = "Collection of functions used by various Path operations. The functions are specific to Path and the algorithms employed by Path's operations." +__doc__ = "Collection of functions used by various operations. The functions are specific to CAM and the algorithms employed by CAM's operations." PrintWireDebug = False diff --git a/src/Mod/Path/Path/Op/Vcarve.py b/src/Mod/CAM/Path/Op/Vcarve.py similarity index 98% rename from src/Mod/Path/Path/Op/Vcarve.py rename to src/Mod/CAM/Path/Op/Vcarve.py index a40523c9df..5e81e20d18 100644 --- a/src/Mod/Path/Path/Op/Vcarve.py +++ b/src/Mod/CAM/Path/Op/Vcarve.py @@ -32,7 +32,7 @@ from PySide.QtCore import QT_TRANSLATE_NOOP from PySide import QtCore -__doc__ = "Class and implementation of Path Vcarve operation" +__doc__ = "Class and implementation of CAM Vcarve operation" PRIMARY = 0 SECONDARY = 1 @@ -353,7 +353,7 @@ class ObjectVcarve(PathEngraveBase.ObjectOp): if not hasattr(obj.ToolController.Tool, "CuttingEdgeAngle"): Path.Log.error( translate( - "Path_Vcarve", + "CAM_Vcarve", "VCarve requires an engraving cutter with a cutting edge angle", ) ) @@ -361,7 +361,7 @@ class ObjectVcarve(PathEngraveBase.ObjectOp): if obj.ToolController.Tool.CuttingEdgeAngle >= 180.0: Path.Log.error( translate( - "Path_Vcarve", "Engraver cutting edge angle must be < 180 degrees." + "CAM_Vcarve", "Engraver cutting edge angle must be < 180 degrees." ) ) return diff --git a/src/Mod/Path/Path/Op/Waterline.py b/src/Mod/CAM/Path/Op/Waterline.py similarity index 99% rename from src/Mod/Path/Path/Op/Waterline.py rename to src/Mod/CAM/Path/Op/Waterline.py index f4fa23a93f..ff779367e4 100644 --- a/src/Mod/Path/Path/Op/Waterline.py +++ b/src/Mod/CAM/Path/Op/Waterline.py @@ -23,7 +23,7 @@ import FreeCAD -__title__ = "Path Waterline Operation" +__title__ = "CAM Waterline Operation" __author__ = "russ4262 (Russell Johnson), sliptonic (Brad Collette)" __url__ = "https://www.freecad.org" __doc__ = "Class and implementation of Waterline operation." diff --git a/src/Mod/Path/Path/Op/__init__.py b/src/Mod/CAM/Path/Op/__init__.py similarity index 100% rename from src/Mod/Path/Path/Op/__init__.py rename to src/Mod/CAM/Path/Op/__init__.py diff --git a/src/Mod/Path/Path/Post/Command.py b/src/Mod/CAM/Path/Post/Command.py similarity index 98% rename from src/Mod/Path/Path/Post/Command.py rename to src/Mod/CAM/Path/Post/Command.py index 4d6d01574f..042fcd4689 100644 --- a/src/Mod/Path/Path/Post/Command.py +++ b/src/Mod/CAM/Path/Post/Command.py @@ -468,10 +468,10 @@ class CommandPathPost: def GetResources(self): return { - "Pixmap": "Path_Post", - "MenuText": QT_TRANSLATE_NOOP("Path_Post", "Post Process"), + "Pixmap": "CAM_Post", + "MenuText": QT_TRANSLATE_NOOP("CAM_Post", "Post Process"), "Accel": "P, P", - "ToolTip": QT_TRANSLATE_NOOP("Path_Post", "Post Process the selected Job"), + "ToolTip": QT_TRANSLATE_NOOP("CAM_Post", "Post Process the selected Job"), } def IsActive(self): @@ -618,6 +618,6 @@ class CommandPathPost: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_Post", CommandPathPost()) + FreeCADGui.addCommand("CAM_Post", CommandPathPost()) FreeCAD.Console.PrintLog("Loading PathPost... done\n") diff --git a/src/Mod/Path/Path/Post/Processor.py b/src/Mod/CAM/Path/Post/Processor.py similarity index 100% rename from src/Mod/Path/Path/Post/Processor.py rename to src/Mod/CAM/Path/Post/Processor.py diff --git a/src/Mod/Path/Path/Post/Utils.py b/src/Mod/CAM/Path/Post/Utils.py similarity index 98% rename from src/Mod/Path/Path/Post/Utils.py rename to src/Mod/CAM/Path/Post/Utils.py index 388392a962..e61ef4db47 100644 --- a/src/Mod/Path/Path/Post/Utils.py +++ b/src/Mod/CAM/Path/Post/Utils.py @@ -100,7 +100,7 @@ class GCodeEditorDialog(QtGui.QDialog): layout.addWidget(self.buttons) # restore placement and size - self.paramKey = "User parameter:BaseApp/Values/Mod/Path/GCodeEditor/" + self.paramKey = "User parameter:BaseApp/Values/Mod/CAM/GCodeEditor/" params = FreeCAD.ParamGet(self.paramKey) posX = params.GetInt("posX") posY = params.GetInt("posY") @@ -162,7 +162,7 @@ def fmt(num, dec, units): def editor(gcode): """Pops up a handy little editor to look at the code output.""" - prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/CAM") # default Max Highlighter Size = 512 Ko defaultMHS = 512 * 1024 mhs = prefs.GetUnsigned("inspecteditorMaxHighlighterSize", defaultMHS) @@ -208,7 +208,7 @@ def splitArcs(path): Returns a Path object. """ - prefGrp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + prefGrp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/CAM") deflection = prefGrp.GetFloat("LibAreaCurveAccuarcy", 0.01) results = [] diff --git a/src/Mod/Path/Path/Post/UtilsArguments.py b/src/Mod/CAM/Path/Post/UtilsArguments.py similarity index 100% rename from src/Mod/Path/Path/Post/UtilsArguments.py rename to src/Mod/CAM/Path/Post/UtilsArguments.py diff --git a/src/Mod/Path/Path/Post/UtilsExport.py b/src/Mod/CAM/Path/Post/UtilsExport.py similarity index 100% rename from src/Mod/Path/Path/Post/UtilsExport.py rename to src/Mod/CAM/Path/Post/UtilsExport.py diff --git a/src/Mod/Path/Path/Post/UtilsParse.py b/src/Mod/CAM/Path/Post/UtilsParse.py similarity index 100% rename from src/Mod/Path/Path/Post/UtilsParse.py rename to src/Mod/CAM/Path/Post/UtilsParse.py diff --git a/src/Mod/Path/Path/Post/__init__.py b/src/Mod/CAM/Path/Post/__init__.py similarity index 100% rename from src/Mod/Path/Path/Post/__init__.py rename to src/Mod/CAM/Path/Post/__init__.py diff --git a/src/Mod/Path/Path/Post/scripts/KineticNCBeamicon2_post.py b/src/Mod/CAM/Path/Post/scripts/KineticNCBeamicon2_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/KineticNCBeamicon2_post.py rename to src/Mod/CAM/Path/Post/scripts/KineticNCBeamicon2_post.py diff --git a/src/Mod/Path/Path/Post/scripts/__init__.py b/src/Mod/CAM/Path/Post/scripts/__init__.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/__init__.py rename to src/Mod/CAM/Path/Post/scripts/__init__.py diff --git a/src/Mod/Path/Path/Post/scripts/centroid_post.py b/src/Mod/CAM/Path/Post/scripts/centroid_post.py similarity index 97% rename from src/Mod/Path/Path/Post/scripts/centroid_post.py rename to src/Mod/CAM/Path/Post/scripts/centroid_post.py index 5c8b4c7181..6f40f0ecc9 100644 --- a/src/Mod/Path/Path/Post/scripts/centroid_post.py +++ b/src/Mod/CAM/Path/Post/scripts/centroid_post.py @@ -51,6 +51,7 @@ Arguments for centroid: --feed-precision=1 ... number of digits of precision for feed rate. Default=1 --axis-precision=4 ... number of digits of precision for axis moves. Default=4 --inches ... Convert output for US imperial mode (G20) + --no-tlo ... Suppress tool length offset (G43) following tool changes """ # These globals set common customization preferences @@ -62,6 +63,7 @@ if FreeCAD.GuiUp: else: SHOW_EDITOR = False MODAL = False # if true commands are suppressed if the same as previous line. +USE_TLO = True # if true G43 will be output following tool changes COMMAND_SPACE = " " LINENR = 100 # line number starting value @@ -139,6 +141,7 @@ def processArguments(argstring): global UNIT_SPEED_FORMAT global UNIT_FORMAT global UNITS + global USE_TLO for arg in argstring.split(): if arg == "--header": @@ -165,6 +168,8 @@ def processArguments(argstring): UNITS = "G20" UNIT_SPEED_FORMAT = "in/min" UNIT_FORMAT = "in" + elif arg == "--no-tlo": + USE_TLO = False def export(objectslist, filename, argstring): @@ -342,6 +347,8 @@ def parse(pathobj): # out += linenumber() + "(begin toolchange)\n" for line in TOOL_CHANGE.splitlines(True): out += linenumber() + line + if USE_TLO: + out += linenumber() + "G43 H" + str(int(c.Parameters["T"])) + "\n" # if command == "message": # if OUTPUT_COMMENTS is False: diff --git a/src/Mod/Path/Path/Post/scripts/comparams_post.py b/src/Mod/CAM/Path/Post/scripts/comparams_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/comparams_post.py rename to src/Mod/CAM/Path/Post/scripts/comparams_post.py diff --git a/src/Mod/Path/Path/Post/scripts/dumper_post.py b/src/Mod/CAM/Path/Post/scripts/dumper_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/dumper_post.py rename to src/Mod/CAM/Path/Post/scripts/dumper_post.py diff --git a/src/Mod/Path/Path/Post/scripts/dxf_post.py b/src/Mod/CAM/Path/Post/scripts/dxf_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/dxf_post.py rename to src/Mod/CAM/Path/Post/scripts/dxf_post.py diff --git a/src/Mod/Path/Path/Post/scripts/dynapath_4060_post.py b/src/Mod/CAM/Path/Post/scripts/dynapath_4060_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/dynapath_4060_post.py rename to src/Mod/CAM/Path/Post/scripts/dynapath_4060_post.py diff --git a/src/Mod/Path/Path/Post/scripts/dynapath_post.py b/src/Mod/CAM/Path/Post/scripts/dynapath_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/dynapath_post.py rename to src/Mod/CAM/Path/Post/scripts/dynapath_post.py diff --git a/src/Mod/Path/Path/Post/scripts/estlcam_post.py b/src/Mod/CAM/Path/Post/scripts/estlcam_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/estlcam_post.py rename to src/Mod/CAM/Path/Post/scripts/estlcam_post.py diff --git a/src/Mod/Path/Path/Post/scripts/example_post.py b/src/Mod/CAM/Path/Post/scripts/example_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/example_post.py rename to src/Mod/CAM/Path/Post/scripts/example_post.py diff --git a/src/Mod/Path/Path/Post/scripts/example_pre.py b/src/Mod/CAM/Path/Post/scripts/example_pre.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/example_pre.py rename to src/Mod/CAM/Path/Post/scripts/example_pre.py diff --git a/src/Mod/Path/Path/Post/scripts/fablin_post.py b/src/Mod/CAM/Path/Post/scripts/fablin_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/fablin_post.py rename to src/Mod/CAM/Path/Post/scripts/fablin_post.py diff --git a/src/Mod/Path/Path/Post/scripts/fangling_post.py b/src/Mod/CAM/Path/Post/scripts/fangling_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/fangling_post.py rename to src/Mod/CAM/Path/Post/scripts/fangling_post.py diff --git a/src/Mod/Path/Path/Post/scripts/fanuc_post.py b/src/Mod/CAM/Path/Post/scripts/fanuc_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/fanuc_post.py rename to src/Mod/CAM/Path/Post/scripts/fanuc_post.py diff --git a/src/Mod/Path/Path/Post/scripts/gcode_pre.py b/src/Mod/CAM/Path/Post/scripts/gcode_pre.py similarity index 98% rename from src/Mod/Path/Path/Post/scripts/gcode_pre.py rename to src/Mod/CAM/Path/Post/scripts/gcode_pre.py index 8dc43ec50a..f0921273b9 100644 --- a/src/Mod/Path/Path/Post/scripts/gcode_pre.py +++ b/src/Mod/CAM/Path/Post/scripts/gcode_pre.py @@ -223,10 +223,10 @@ def insert(filename, docname=None): if not _isImportEnvironmentReady(): return except PathNoActiveDocumentException: - Path.Log.error(translate("Path_Gcode_pre", "No active document")) + Path.Log.error(translate("CAM_Gcode_pre", "No active document")) return except PathNoJobException: - Path.Log.error(translate("Path_Gcode_pre", "No job object")) + Path.Log.error(translate("CAM_Gcode_pre", "No job object")) return # Create a Custom operation for each gcode-toolNumber pair diff --git a/src/Mod/Path/Path/Post/scripts/grbl_post.py b/src/Mod/CAM/Path/Post/scripts/grbl_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/grbl_post.py rename to src/Mod/CAM/Path/Post/scripts/grbl_post.py diff --git a/src/Mod/Path/Path/Post/scripts/heidenhain_post.py b/src/Mod/CAM/Path/Post/scripts/heidenhain_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/heidenhain_post.py rename to src/Mod/CAM/Path/Post/scripts/heidenhain_post.py diff --git a/src/Mod/Path/Path/Post/scripts/jtech_post.py b/src/Mod/CAM/Path/Post/scripts/jtech_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/jtech_post.py rename to src/Mod/CAM/Path/Post/scripts/jtech_post.py diff --git a/src/Mod/Path/Path/Post/scripts/linuxcnc_post.py b/src/Mod/CAM/Path/Post/scripts/linuxcnc_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/linuxcnc_post.py rename to src/Mod/CAM/Path/Post/scripts/linuxcnc_post.py diff --git a/src/Mod/Path/Path/Post/scripts/mach3_mach4_post.py b/src/Mod/CAM/Path/Post/scripts/mach3_mach4_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/mach3_mach4_post.py rename to src/Mod/CAM/Path/Post/scripts/mach3_mach4_post.py diff --git a/src/Mod/Path/Path/Post/scripts/marlin_post.py b/src/Mod/CAM/Path/Post/scripts/marlin_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/marlin_post.py rename to src/Mod/CAM/Path/Post/scripts/marlin_post.py diff --git a/src/Mod/Path/Path/Post/scripts/nccad_post.py b/src/Mod/CAM/Path/Post/scripts/nccad_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/nccad_post.py rename to src/Mod/CAM/Path/Post/scripts/nccad_post.py diff --git a/src/Mod/Path/Path/Post/scripts/opensbp_post.py b/src/Mod/CAM/Path/Post/scripts/opensbp_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/opensbp_post.py rename to src/Mod/CAM/Path/Post/scripts/opensbp_post.py diff --git a/src/Mod/Path/Path/Post/scripts/opensbp_pre.py b/src/Mod/CAM/Path/Post/scripts/opensbp_pre.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/opensbp_pre.py rename to src/Mod/CAM/Path/Post/scripts/opensbp_pre.py diff --git a/src/Mod/Path/Path/Post/scripts/philips_post.py b/src/Mod/CAM/Path/Post/scripts/philips_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/philips_post.py rename to src/Mod/CAM/Path/Post/scripts/philips_post.py diff --git a/src/Mod/Path/Path/Post/scripts/refactored_centroid_post.py b/src/Mod/CAM/Path/Post/scripts/refactored_centroid_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/refactored_centroid_post.py rename to src/Mod/CAM/Path/Post/scripts/refactored_centroid_post.py diff --git a/src/Mod/Path/Path/Post/scripts/refactored_grbl_post.py b/src/Mod/CAM/Path/Post/scripts/refactored_grbl_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/refactored_grbl_post.py rename to src/Mod/CAM/Path/Post/scripts/refactored_grbl_post.py diff --git a/src/Mod/Path/Path/Post/scripts/refactored_linuxcnc_post.py b/src/Mod/CAM/Path/Post/scripts/refactored_linuxcnc_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/refactored_linuxcnc_post.py rename to src/Mod/CAM/Path/Post/scripts/refactored_linuxcnc_post.py diff --git a/src/Mod/Path/Path/Post/scripts/refactored_mach3_mach4_post.py b/src/Mod/CAM/Path/Post/scripts/refactored_mach3_mach4_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/refactored_mach3_mach4_post.py rename to src/Mod/CAM/Path/Post/scripts/refactored_mach3_mach4_post.py diff --git a/src/Mod/Path/Path/Post/scripts/refactored_test_post.py b/src/Mod/CAM/Path/Post/scripts/refactored_test_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/refactored_test_post.py rename to src/Mod/CAM/Path/Post/scripts/refactored_test_post.py diff --git a/src/Mod/Path/Path/Post/scripts/rml_post.py b/src/Mod/CAM/Path/Post/scripts/rml_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/rml_post.py rename to src/Mod/CAM/Path/Post/scripts/rml_post.py diff --git a/src/Mod/Path/Path/Post/scripts/rrf_post.py b/src/Mod/CAM/Path/Post/scripts/rrf_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/rrf_post.py rename to src/Mod/CAM/Path/Post/scripts/rrf_post.py diff --git a/src/Mod/Path/Path/Post/scripts/slic3r_pre.py b/src/Mod/CAM/Path/Post/scripts/slic3r_pre.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/slic3r_pre.py rename to src/Mod/CAM/Path/Post/scripts/slic3r_pre.py diff --git a/src/Mod/Path/Path/Post/scripts/smoothie_post.py b/src/Mod/CAM/Path/Post/scripts/smoothie_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/smoothie_post.py rename to src/Mod/CAM/Path/Post/scripts/smoothie_post.py diff --git a/src/Mod/Path/Path/Post/scripts/uccnc_post.py b/src/Mod/CAM/Path/Post/scripts/uccnc_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/uccnc_post.py rename to src/Mod/CAM/Path/Post/scripts/uccnc_post.py diff --git a/src/Mod/Path/Path/Post/scripts/wedm_post.py b/src/Mod/CAM/Path/Post/scripts/wedm_post.py similarity index 100% rename from src/Mod/Path/Path/Post/scripts/wedm_post.py rename to src/Mod/CAM/Path/Post/scripts/wedm_post.py diff --git a/src/Mod/Path/Path/Preferences.py b/src/Mod/CAM/Path/Preferences.py similarity index 97% rename from src/Mod/Path/Path/Preferences.py rename to src/Mod/CAM/Path/Preferences.py index 013929e520..ae26412631 100644 --- a/src/Mod/Path/Path/Preferences.py +++ b/src/Mod/CAM/Path/Preferences.py @@ -70,17 +70,17 @@ EnableAdvancedOCLFeatures = "EnableAdvancedOCLFeatures" def preferences(): - return FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + return FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/CAM") def pathPostSourcePath(): - return os.path.join(FreeCAD.getHomePath(), "Mod/Path/Path/Post/") + return os.path.join(FreeCAD.getHomePath(), "Mod/CAM/Path/Post/") def pathDefaultToolsPath(sub=None): if sub: - return os.path.join(FreeCAD.getHomePath(), "Mod/Path/Tools/", sub) - return os.path.join(FreeCAD.getHomePath(), "Mod/Path/Tools/") + return os.path.join(FreeCAD.getHomePath(), "Mod/CAM/Tools/", sub) + return os.path.join(FreeCAD.getHomePath(), "Mod/CAM/Tools/") def allAvailablePostProcessors(): @@ -165,7 +165,7 @@ def searchPathsPost(): def searchPathsTool(sub): paths = [] - paths.append(os.path.join(FreeCAD.getHomePath(), "Mod", "Path", "Tools", sub)) + paths.append(os.path.join(FreeCAD.getHomePath(), "Mod", "CAM", "Tools", sub)) return paths diff --git a/src/Mod/Path/Path/Tool/Bit.py b/src/Mod/CAM/Path/Tool/Bit.py similarity index 100% rename from src/Mod/Path/Path/Tool/Bit.py rename to src/Mod/CAM/Path/Tool/Bit.py diff --git a/src/Mod/Path/Path/Tool/Controller.py b/src/Mod/CAM/Path/Tool/Controller.py similarity index 98% rename from src/Mod/Path/Path/Tool/Controller.py rename to src/Mod/CAM/Path/Tool/Controller.py index e910be6eaa..2b8cc0a3ac 100644 --- a/src/Mod/Path/Path/Tool/Controller.py +++ b/src/Mod/CAM/Path/Tool/Controller.py @@ -20,7 +20,7 @@ # * * # *************************************************************************** -"""Tool Controller defines tool, spindle speed and feed rates for Path Operations""" +"""Tool Controller defines tool, spindle speed and feed rates for CAM Operations""" from PySide.QtCore import QT_TRANSLATE_NOOP import FreeCAD @@ -128,9 +128,9 @@ class ToolController: # Enumeration lists for App::PropertyEnumeration properties enums = { "SpindleDir": [ - (translate("Path_ToolController", "Forward"), "Forward"), - (translate("Path_ToolController", "Reverse"), "Reverse"), - (translate("Path_ToolController", "None"), "None"), + (translate("CAM_ToolController", "Forward"), "Forward"), + (translate("CAM_ToolController", "Reverse"), "Reverse"), + (translate("CAM_ToolController", "None"), "None"), ], # this is the direction that the profile runs } diff --git a/src/Mod/Path/Path/Tool/Gui/Bit.py b/src/Mod/CAM/Path/Tool/Gui/Bit.py similarity index 99% rename from src/Mod/Path/Path/Tool/Gui/Bit.py rename to src/Mod/CAM/Path/Tool/Gui/Bit.py index c50b168579..7fc3bf4cbc 100644 --- a/src/Mod/Path/Path/Tool/Gui/Bit.py +++ b/src/Mod/CAM/Path/Tool/Gui/Bit.py @@ -68,7 +68,7 @@ class ViewProvider(object): pixmap = QtGui.QPixmap() pixmap.loadFromData(png, "PNG") return QtGui.QIcon(pixmap) - return ":/icons/Path_ToolBit.svg" + return ":/icons/CAM_ToolBit.svg" def dumps(self): return None diff --git a/src/Mod/Path/Path/Tool/Gui/BitCmd.py b/src/Mod/CAM/Path/Tool/Gui/BitCmd.py similarity index 82% rename from src/Mod/Path/Path/Tool/Gui/BitCmd.py rename to src/Mod/CAM/Path/Tool/Gui/BitCmd.py index 2cc53ad1c2..2d80a13062 100644 --- a/src/Mod/Path/Path/Tool/Gui/BitCmd.py +++ b/src/Mod/CAM/Path/Tool/Gui/BitCmd.py @@ -45,10 +45,10 @@ class CommandToolBitCreate: def GetResources(self): return { - "Pixmap": "Path_ToolBit", - "MenuText": QT_TRANSLATE_NOOP("Path_ToolBitCreate", "Create Tool"), + "Pixmap": "CAM_ToolBit", + "MenuText": QT_TRANSLATE_NOOP("CAM_ToolBitCreate", "Create Tool"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_ToolBitCreate", "Creates a new ToolBit object" + "CAM_ToolBitCreate", "Creates a new ToolBit object" ), } @@ -70,14 +70,14 @@ class CommandToolBitSave: def GetResources(self): if self.saveAs: - menuTxt = QT_TRANSLATE_NOOP("Path_ToolBitSaveAs", "Save Tool as...") + menuTxt = QT_TRANSLATE_NOOP("CAM_ToolBitSaveAs", "Save Tool as...") else: - menuTxt = QT_TRANSLATE_NOOP("Path_ToolBitSave", "Save Tool") + menuTxt = QT_TRANSLATE_NOOP("CAM_ToolBitSave", "Save Tool") return { - "Pixmap": "Path_ToolBit", + "Pixmap": "CAM_ToolBit", "MenuText": menuTxt, "ToolTip": QT_TRANSLATE_NOOP( - "Path_ToolBitSave", "Save an existing ToolBit object to a file" + "CAM_ToolBitSave", "Save an existing ToolBit object to a file" ), } @@ -134,10 +134,10 @@ class CommandToolBitLoad: def GetResources(self): return { - "Pixmap": "Path_ToolBit", - "MenuText": QT_TRANSLATE_NOOP("Path_ToolBitLoad", "Load Tool"), + "Pixmap": "CAM_ToolBit", + "MenuText": QT_TRANSLATE_NOOP("CAM_ToolBitLoad", "Load Tool"), "ToolTip": QT_TRANSLATE_NOOP( - "Path_ToolBitLoad", "Load an existing ToolBit object from a file" + "CAM_ToolBitLoad", "Load an existing ToolBit object from a file" ), } @@ -156,16 +156,16 @@ class CommandToolBitLoad: if FreeCAD.GuiUp: - FreeCADGui.addCommand("Path_ToolBitCreate", CommandToolBitCreate()) - FreeCADGui.addCommand("Path_ToolBitLoad", CommandToolBitLoad()) - FreeCADGui.addCommand("Path_ToolBitSave", CommandToolBitSave(False)) - FreeCADGui.addCommand("Path_ToolBitSaveAs", CommandToolBitSave(True)) + FreeCADGui.addCommand("CAM_ToolBitCreate", CommandToolBitCreate()) + FreeCADGui.addCommand("CAM_ToolBitLoad", CommandToolBitLoad()) + FreeCADGui.addCommand("CAM_ToolBitSave", CommandToolBitSave(False)) + FreeCADGui.addCommand("CAM_ToolBitSaveAs", CommandToolBitSave(True)) CommandList = [ - "Path_ToolBitCreate", - "Path_ToolBitLoad", - "Path_ToolBitSave", - "Path_ToolBitSaveAs", + "CAM_ToolBitCreate", + "CAM_ToolBitLoad", + "CAM_ToolBitSave", + "CAM_ToolBitSaveAs", ] FreeCAD.Console.PrintLog("Loading PathToolBitCmd... done\n") diff --git a/src/Mod/Path/Path/Tool/Gui/BitEdit.py b/src/Mod/CAM/Path/Tool/Gui/BitEdit.py similarity index 100% rename from src/Mod/Path/Path/Tool/Gui/BitEdit.py rename to src/Mod/CAM/Path/Tool/Gui/BitEdit.py diff --git a/src/Mod/Path/Path/Tool/Gui/BitLibrary.py b/src/Mod/CAM/Path/Tool/Gui/BitLibrary.py similarity index 97% rename from src/Mod/Path/Path/Tool/Gui/BitLibrary.py rename to src/Mod/CAM/Path/Tool/Gui/BitLibrary.py index 25c5f17916..f97f60ba6c 100644 --- a/src/Mod/Path/Path/Tool/Gui/BitLibrary.py +++ b/src/Mod/CAM/Path/Tool/Gui/BitLibrary.py @@ -74,14 +74,14 @@ def checkWorkingDir(): ret = qm.question( None, "", - translate("Path_ToolBit", "Toolbit working directory not set up. Do that now?"), + translate("CAM_ToolBit", "Toolbit working directory not set up. Do that now?"), qm.Yes | qm.No, ) if ret == qm.No: return False - msg = translate("Path_ToolBit", "Choose a writable location for your toolbits") + msg = translate("CAM_ToolBit", "Choose a writable location for your toolbits") while not dirOK(): workingdir = PySide.QtGui.QFileDialog.getExistingDirectory( None, msg, Path.Preferences.filePath() @@ -120,7 +120,7 @@ def checkWorkingDir(): None, "", translate( - "Path_ToolBit", + "CAM_ToolBit", "Toolbit Working directory {} needs these sudirectories:\n {} \n Create them?", ).format(workingdir, needed), qm.Yes | qm.No, @@ -140,7 +140,7 @@ def checkWorkingDir(): None, "", translate( - "Path_ToolBit", "Copy example files to new {} directory?" + "CAM_ToolBit", "Copy example files to new {} directory?" ).format(dir), qm.Yes | qm.No, ) @@ -331,7 +331,7 @@ class ModelFactory(object): libItem = PySide.QtGui.QStandardItem(fn) libItem.setToolTip(loc) libItem.setData(libFile, _PathRole) - libItem.setIcon(PySide.QtGui.QPixmap(":/icons/Path_ToolTable.svg")) + libItem.setIcon(PySide.QtGui.QPixmap(":/icons/CAM_ToolTable.svg")) model.appendRow(libItem) Path.Log.debug("model rows: {}".format(model.rowCount())) @@ -663,11 +663,11 @@ class ToolBitLibrary(object): print("all done") def libraryNew(self): - TooltableTypeJSON = translate("Path_ToolBit", "Tooltable JSON (*.fctl)") + TooltableTypeJSON = translate("CAM_ToolBit", "Tooltable JSON (*.fctl)") filename = PySide.QtGui.QFileDialog.getSaveFileName( self.form, - translate("Path_ToolBit", "Save toolbit library"), + translate("CAM_ToolBit", "Save toolbit library"), Path.Preferences.lastPathToolLibrary(), "{}".format(TooltableTypeJSON), ) @@ -791,13 +791,13 @@ class ToolBitLibrary(object): def librarySaveAs(self, path): - TooltableTypeJSON = translate("Path_ToolBit", "Tooltable JSON (*.fctl)") - TooltableTypeLinuxCNC = translate("Path_ToolBit", "LinuxCNC tooltable (*.tbl)") - TooltableTypeCamotics = translate("Path_ToolBit", "Camotics tooltable (*.json)") + TooltableTypeJSON = translate("CAM_ToolBit", "Tooltable JSON (*.fctl)") + TooltableTypeLinuxCNC = translate("CAM_ToolBit", "LinuxCNC tooltable (*.tbl)") + TooltableTypeCamotics = translate("CAM_ToolBit", "Camotics tooltable (*.json)") filename = PySide.QtGui.QFileDialog.getSaveFileName( self.form, - translate("Path_ToolBit", "Save toolbit library"), + translate("CAM_ToolBit", "Save toolbit library"), Path.Preferences.lastPathToolLibrary(), "{};;{};;{}".format( TooltableTypeJSON, TooltableTypeLinuxCNC, TooltableTypeCamotics diff --git a/src/Mod/Path/Path/Tool/Gui/BitLibraryCmd.py b/src/Mod/CAM/Path/Tool/Gui/BitLibraryCmd.py similarity index 82% rename from src/Mod/Path/Path/Tool/Gui/BitLibraryCmd.py rename to src/Mod/CAM/Path/Tool/Gui/BitLibraryCmd.py index d141894220..53e2a447b7 100644 --- a/src/Mod/Path/Path/Tool/Gui/BitLibraryCmd.py +++ b/src/Mod/CAM/Path/Tool/Gui/BitLibraryCmd.py @@ -44,9 +44,9 @@ class CommandToolBitSelectorOpen: def GetResources(self): return { - "Pixmap": "Path_ToolTable", - "MenuText": QT_TRANSLATE_NOOP("Path_ToolBitDock", "ToolBit Dock"), - "ToolTip": QT_TRANSLATE_NOOP("Path_ToolBitDock", "Toggle the Toolbit Dock"), + "Pixmap": "CAM_ToolTable", + "MenuText": QT_TRANSLATE_NOOP("CAM_ToolBitDock", "ToolBit Dock"), + "ToolTip": QT_TRANSLATE_NOOP("CAM_ToolBitDock", "Toggle the Toolbit Dock"), "Accel": "P, T", "CmdType": "ForEdit", } @@ -71,12 +71,12 @@ class CommandToolBitLibraryOpen: def GetResources(self): return { - "Pixmap": "Path_ToolTable", + "Pixmap": "CAM_ToolTable", "MenuText": QT_TRANSLATE_NOOP( - "Path_ToolBitLibraryOpen", "ToolBit Library editor" + "CAM_ToolBitLibraryOpen", "ToolBit Library editor" ), "ToolTip": QT_TRANSLATE_NOOP( - "Path_ToolBitLibraryOpen", "Open an editor to manage ToolBit libraries" + "CAM_ToolBitLibraryOpen", "Open an editor to manage ToolBit libraries" ), "CmdType": "ForEdit", } @@ -93,10 +93,10 @@ class CommandToolBitLibraryOpen: if FreeCAD.GuiUp: - FreeCADGui.addCommand("Path_ToolBitLibraryOpen", CommandToolBitLibraryOpen()) - FreeCADGui.addCommand("Path_ToolBitDock", CommandToolBitSelectorOpen()) + FreeCADGui.addCommand("CAM_ToolBitLibraryOpen", CommandToolBitLibraryOpen()) + FreeCADGui.addCommand("CAM_ToolBitDock", CommandToolBitSelectorOpen()) -BarList = ["Path_ToolBitDock"] -MenuList = ["Path_ToolBitLibraryOpen", "Path_ToolBitDock"] +BarList = ["CAM_ToolBitDock"] +MenuList = ["CAM_ToolBitLibraryOpen", "CAM_ToolBitDock"] FreeCAD.Console.PrintLog("Loading PathToolBitLibraryCmd... done\n") diff --git a/src/Mod/Path/Path/Tool/Gui/Controller.py b/src/Mod/CAM/Path/Tool/Gui/Controller.py similarity index 96% rename from src/Mod/Path/Path/Tool/Gui/Controller.py rename to src/Mod/CAM/Path/Tool/Gui/Controller.py index df3af5a54f..420f62e171 100644 --- a/src/Mod/Path/Path/Tool/Gui/Controller.py +++ b/src/Mod/CAM/Path/Tool/Gui/Controller.py @@ -71,7 +71,7 @@ class ViewProvider: return None def getIcon(self): - return ":/icons/Path_ToolController.svg" + return ":/icons/CAM_ToolController.svg" def onChanged(self, vobj, prop): mode = 2 @@ -113,7 +113,7 @@ class ViewProvider: Path.Log.track() for action in menu.actions(): menu.removeAction(action) - action = QtGui.QAction(translate("Path", "Edit"), menu) + action = QtGui.QAction(translate("CAM", "Edit"), menu) action.triggered.connect(self.setEdit) menu.addAction(action) @@ -138,11 +138,11 @@ def Create(name="Default Tool", tool=None, toolNumber=1): class CommandPathToolController(object): def GetResources(self): return { - "Pixmap": "Path_LengthOffset", + "Pixmap": "CAM_LengthOffset", "MenuText": QT_TRANSLATE_NOOP( - "Path_ToolController", "Add Tool Controller to the Job" + "CAM_ToolController", "Add Tool Controller to the Job" ), - "ToolTip": QT_TRANSLATE_NOOP("Path_ToolController", "Add Tool Controller"), + "ToolTip": QT_TRANSLATE_NOOP("CAM_ToolController", "Add Tool Controller"), } def selectedJob(self): @@ -360,6 +360,6 @@ class DlgToolControllerEdit: if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand("Path_ToolController", CommandPathToolController()) + FreeCADGui.addCommand("CAM_ToolController", CommandPathToolController()) FreeCAD.Console.PrintLog("Loading PathToolControllerGui... done\n") diff --git a/src/Mod/Path/Path/Tool/Gui/__init__.py b/src/Mod/CAM/Path/Tool/Gui/__init__.py similarity index 100% rename from src/Mod/Path/Path/Tool/Gui/__init__.py rename to src/Mod/CAM/Path/Tool/Gui/__init__.py diff --git a/src/Mod/Path/Path/Tool/__init__.py b/src/Mod/CAM/Path/Tool/__init__.py similarity index 100% rename from src/Mod/Path/Path/Tool/__init__.py rename to src/Mod/CAM/Path/Tool/__init__.py diff --git a/src/Mod/Path/Path/__init__.py b/src/Mod/CAM/Path/__init__.py similarity index 100% rename from src/Mod/Path/Path/__init__.py rename to src/Mod/CAM/Path/__init__.py diff --git a/src/Mod/Path/PathCommands.py b/src/Mod/CAM/PathCommands.py similarity index 89% rename from src/Mod/Path/PathCommands.py rename to src/Mod/CAM/PathCommands.py index f109d299b7..34db4c977a 100644 --- a/src/Mod/Path/PathCommands.py +++ b/src/Mod/CAM/PathCommands.py @@ -55,11 +55,11 @@ class _CommandSelectLoop: def GetResources(self): return { - "Pixmap": "Path_SelectLoop", - "MenuText": QT_TRANSLATE_NOOP("Path_SelectLoop", "Finish Selecting Loop"), + "Pixmap": "CAM_SelectLoop", + "MenuText": QT_TRANSLATE_NOOP("CAM_SelectLoop", "Finish Selecting Loop"), "Accel": "P, L", "ToolTip": QT_TRANSLATE_NOOP( - "Path_SelectLoop", "Complete the selection of edges that form a loop" + "CAM_SelectLoop", "Complete the selection of edges that form a loop" ), "CmdType": "ForEdit", } @@ -117,8 +117,8 @@ class _CommandSelectLoop: elif FreeCAD.GuiUp: QtGui.QMessageBox.information( None, - QT_TRANSLATE_NOOP("Path_SelectLoop", "Feature Completion"), - QT_TRANSLATE_NOOP("Path_SelectLoop", "Closed loop detection failed."), + QT_TRANSLATE_NOOP("CAM_SelectLoop", "Feature Completion"), + QT_TRANSLATE_NOOP("CAM_SelectLoop", "Closed loop detection failed."), ) def formsPartOfALoop(self, obj, sub, names): @@ -137,7 +137,7 @@ class _CommandSelectLoop: if FreeCAD.GuiUp: - FreeCADGui.addCommand("Path_SelectLoop", _CommandSelectLoop()) + FreeCADGui.addCommand("CAM_SelectLoop", _CommandSelectLoop()) class _ToggleOperation: @@ -145,13 +145,13 @@ class _ToggleOperation: def GetResources(self): return { - "Pixmap": "Path_OpActive", + "Pixmap": "CAM_OpActive", "MenuText": QT_TRANSLATE_NOOP( - "Path_OpActiveToggle", "Toggle the Active State of the Operation" + "CAM_OpActiveToggle", "Toggle the Active State of the Operation" ), "Accel": "P, X", "ToolTip": QT_TRANSLATE_NOOP( - "Path_OpActiveToggle", "Toggle the Active State of the Operation" + "CAM_OpActiveToggle", "Toggle the Active State of the Operation" ), "CmdType": "ForEdit", } @@ -180,7 +180,7 @@ class _ToggleOperation: if FreeCAD.GuiUp: - FreeCADGui.addCommand("Path_OpActiveToggle", _ToggleOperation()) + FreeCADGui.addCommand("CAM_OpActiveToggle", _ToggleOperation()) class _CopyOperation: @@ -188,12 +188,12 @@ class _CopyOperation: def GetResources(self): return { - "Pixmap": "Path_OpCopy", + "Pixmap": "CAM_OpCopy", "MenuText": QT_TRANSLATE_NOOP( - "Path_OperationCopy", "Copy the operation in the job" + "CAM_OperationCopy", "Copy the operation in the job" ), "ToolTip": QT_TRANSLATE_NOOP( - "Path_OperationCopy", "Copy the operation in the job" + "CAM_OperationCopy", "Copy the operation in the job" ), "CmdType": "ForEdit", } @@ -216,7 +216,7 @@ class _CopyOperation: if FreeCAD.GuiUp: - FreeCADGui.addCommand("Path_OperationCopy", _CopyOperation()) + FreeCADGui.addCommand("CAM_OperationCopy", _CopyOperation()) # \c findShape() is referenced from Gui/Command.cpp and used by Path.Area commands. diff --git a/src/Mod/Path/PathGlobal.h b/src/Mod/CAM/PathGlobal.h similarity index 100% rename from src/Mod/Path/PathGlobal.h rename to src/Mod/CAM/PathGlobal.h diff --git a/src/Mod/Path/PathPythonGui/__init__.py b/src/Mod/CAM/PathPythonGui/__init__.py similarity index 100% rename from src/Mod/Path/PathPythonGui/__init__.py rename to src/Mod/CAM/PathPythonGui/__init__.py diff --git a/src/Mod/Path/PathPythonGui/simple_edit_panel.py b/src/Mod/CAM/PathPythonGui/simple_edit_panel.py similarity index 100% rename from src/Mod/Path/PathPythonGui/simple_edit_panel.py rename to src/Mod/CAM/PathPythonGui/simple_edit_panel.py diff --git a/src/Mod/Path/PathScripts/PathPropertyBag.py b/src/Mod/CAM/PathScripts/PathPropertyBag.py similarity index 100% rename from src/Mod/Path/PathScripts/PathPropertyBag.py rename to src/Mod/CAM/PathScripts/PathPropertyBag.py diff --git a/src/Mod/Path/PathScripts/PathPropertyBagGui.py b/src/Mod/CAM/PathScripts/PathPropertyBagGui.py similarity index 100% rename from src/Mod/Path/PathScripts/PathPropertyBagGui.py rename to src/Mod/CAM/PathScripts/PathPropertyBagGui.py diff --git a/src/Mod/Path/PathScripts/PathUtils.py b/src/Mod/CAM/PathScripts/PathUtils.py similarity index 100% rename from src/Mod/Path/PathScripts/PathUtils.py rename to src/Mod/CAM/PathScripts/PathUtils.py diff --git a/src/Mod/Path/PathScripts/PathUtilsGui.py b/src/Mod/CAM/PathScripts/PathUtilsGui.py similarity index 100% rename from src/Mod/Path/PathScripts/PathUtilsGui.py rename to src/Mod/CAM/PathScripts/PathUtilsGui.py diff --git a/src/Mod/Path/PathScripts/README.md b/src/Mod/CAM/PathScripts/README.md similarity index 100% rename from src/Mod/Path/PathScripts/README.md rename to src/Mod/CAM/PathScripts/README.md diff --git a/src/Mod/Path/PathScripts/__init__.py b/src/Mod/CAM/PathScripts/__init__.py similarity index 100% rename from src/Mod/Path/PathScripts/__init__.py rename to src/Mod/CAM/PathScripts/__init__.py diff --git a/src/Mod/Path/PathSimulator/App/AppPathSimulator.cpp b/src/Mod/CAM/PathSimulator/App/AppPathSimulator.cpp similarity index 100% rename from src/Mod/Path/PathSimulator/App/AppPathSimulator.cpp rename to src/Mod/CAM/PathSimulator/App/AppPathSimulator.cpp diff --git a/src/Mod/Path/PathSimulator/App/CMakeLists.txt b/src/Mod/CAM/PathSimulator/App/CMakeLists.txt similarity index 94% rename from src/Mod/Path/PathSimulator/App/CMakeLists.txt rename to src/Mod/CAM/PathSimulator/App/CMakeLists.txt index 3f4de55fbc..569a2b89bc 100644 --- a/src/Mod/Path/PathSimulator/App/CMakeLists.txt +++ b/src/Mod/CAM/PathSimulator/App/CMakeLists.txt @@ -44,7 +44,7 @@ SOURCE_GROUP("Python" FILES ${Python_SRCS}) add_library(PathSimulator SHARED ${PathSimulator_SRCS}) target_link_libraries(PathSimulator ${PathSimulator_LIBS}) -SET_BIN_DIR(PathSimulator PathSimulator /Mod/Path) +SET_BIN_DIR(PathSimulator PathSimulator /Mod/CAM) SET_PYTHON_PREFIX_SUFFIX(PathSimulator) install(TARGETS PathSimulator DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/Mod/Path/PathSimulator/App/PathSim.cpp b/src/Mod/CAM/PathSimulator/App/PathSim.cpp similarity index 100% rename from src/Mod/Path/PathSimulator/App/PathSim.cpp rename to src/Mod/CAM/PathSimulator/App/PathSim.cpp diff --git a/src/Mod/Path/PathSimulator/App/PathSim.h b/src/Mod/CAM/PathSimulator/App/PathSim.h similarity index 97% rename from src/Mod/Path/PathSimulator/App/PathSim.h rename to src/Mod/CAM/PathSimulator/App/PathSim.h index 5d056d89db..13ebdb6350 100644 --- a/src/Mod/Path/PathSimulator/App/PathSim.h +++ b/src/Mod/CAM/PathSimulator/App/PathSim.h @@ -26,9 +26,9 @@ #include #include -#include +#include #include -#include +#include #include "VolSim.h" diff --git a/src/Mod/Path/PathSimulator/App/PathSimPy.xml b/src/Mod/CAM/PathSimulator/App/PathSimPy.xml similarity index 97% rename from src/Mod/Path/PathSimulator/App/PathSimPy.xml rename to src/Mod/CAM/PathSimulator/App/PathSimPy.xml index f4ede18033..a6ebbc2cb9 100644 --- a/src/Mod/Path/PathSimulator/App/PathSimPy.xml +++ b/src/Mod/CAM/PathSimulator/App/PathSimPy.xml @@ -5,7 +5,7 @@ Name="PathSimPy" Twin="PathSim" TwinPointer="PathSim" - Include="Mod/Path/PathSimulator/App/PathSim.h" + Include="Mod/CAM/PathSimulator/App/PathSim.h" Namespace="PathSimulator" FatherInclude="Base/BaseClassPy.h" FatherNamespace="Base" diff --git a/src/Mod/Path/PathSimulator/App/PathSimPyImp.cpp b/src/Mod/CAM/PathSimulator/App/PathSimPyImp.cpp similarity index 99% rename from src/Mod/Path/PathSimulator/App/PathSimPyImp.cpp rename to src/Mod/CAM/PathSimulator/App/PathSimPyImp.cpp index ac7f62e0f2..cbbd7a39c1 100644 --- a/src/Mod/Path/PathSimulator/App/PathSimPyImp.cpp +++ b/src/Mod/CAM/PathSimulator/App/PathSimPyImp.cpp @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include "PathSim.h" diff --git a/src/Mod/Path/PathSimulator/App/PreCompiled.cpp b/src/Mod/CAM/PathSimulator/App/PreCompiled.cpp similarity index 100% rename from src/Mod/Path/PathSimulator/App/PreCompiled.cpp rename to src/Mod/CAM/PathSimulator/App/PreCompiled.cpp diff --git a/src/Mod/Path/PathSimulator/App/PreCompiled.h b/src/Mod/CAM/PathSimulator/App/PreCompiled.h similarity index 100% rename from src/Mod/Path/PathSimulator/App/PreCompiled.h rename to src/Mod/CAM/PathSimulator/App/PreCompiled.h diff --git a/src/Mod/Path/PathSimulator/App/VolSim.cpp b/src/Mod/CAM/PathSimulator/App/VolSim.cpp similarity index 100% rename from src/Mod/Path/PathSimulator/App/VolSim.cpp rename to src/Mod/CAM/PathSimulator/App/VolSim.cpp diff --git a/src/Mod/Path/PathSimulator/App/VolSim.h b/src/Mod/CAM/PathSimulator/App/VolSim.h similarity index 99% rename from src/Mod/Path/PathSimulator/App/VolSim.h rename to src/Mod/CAM/PathSimulator/App/VolSim.h index 9fb45c2f74..8b4bf5253d 100644 --- a/src/Mod/Path/PathSimulator/App/VolSim.h +++ b/src/Mod/CAM/PathSimulator/App/VolSim.h @@ -28,7 +28,7 @@ #include #include -#include +#include #define SIM_EPSILON 0.00001 diff --git a/src/Mod/Path/PathSimulator/CMakeLists.txt b/src/Mod/CAM/PathSimulator/CMakeLists.txt similarity index 89% rename from src/Mod/Path/PathSimulator/CMakeLists.txt rename to src/Mod/CAM/PathSimulator/CMakeLists.txt index de72a72c4a..2e75b6a147 100644 --- a/src/Mod/Path/PathSimulator/CMakeLists.txt +++ b/src/Mod/CAM/PathSimulator/CMakeLists.txt @@ -8,5 +8,5 @@ add_subdirectory(App) # FILES # Gui/PathSimulator.py # DESTINATION - # Mod/Path + # Mod/CAM # ) diff --git a/src/Mod/Path/PathSimulator/PathSimulator.dox b/src/Mod/CAM/PathSimulator/PathSimulator.dox similarity index 100% rename from src/Mod/Path/PathSimulator/PathSimulator.dox rename to src/Mod/CAM/PathSimulator/PathSimulator.dox diff --git a/src/Mod/Path/TestPathApp.py b/src/Mod/CAM/TestCAMApp.py similarity index 57% rename from src/Mod/Path/TestPathApp.py rename to src/Mod/CAM/TestCAMApp.py index 8c36066fcb..413d73a076 100644 --- a/src/Mod/Path/TestPathApp.py +++ b/src/Mod/CAM/TestCAMApp.py @@ -22,58 +22,58 @@ import TestApp -from PathTests.TestPathProfile import TestPathProfile +from Tests.TestPathProfile import TestPathProfile -from PathTests.TestPathAdaptive import TestPathAdaptive -from PathTests.TestPathCore import TestPathCore -from PathTests.TestPathDepthParams import depthTestCases -from PathTests.TestPathDressupDogbone import TestDressupDogbone -from PathTests.TestPathDressupDogboneII import TestDressupDogboneII -from PathTests.TestPathDressupHoldingTags import TestHoldingTags -from PathTests.TestPathDrillable import TestPathDrillable -from PathTests.TestPathDrillGenerator import TestPathDrillGenerator -from PathTests.TestPathGeneratorDogboneII import TestGeneratorDogboneII -from PathTests.TestPathGeom import TestPathGeom -from PathTests.TestPathLanguage import TestPathLanguage -from PathTests.TestPathOpDeburr import TestPathOpDeburr +from Tests.TestPathAdaptive import TestPathAdaptive +from Tests.TestPathCore import TestPathCore +from Tests.TestPathDepthParams import depthTestCases +from Tests.TestPathDressupDogbone import TestDressupDogbone +from Tests.TestPathDressupDogboneII import TestDressupDogboneII +from Tests.TestPathDressupHoldingTags import TestHoldingTags +from Tests.TestPathDrillable import TestPathDrillable +from Tests.TestPathDrillGenerator import TestPathDrillGenerator +from Tests.TestPathGeneratorDogboneII import TestGeneratorDogboneII +from Tests.TestPathGeom import TestPathGeom +from Tests.TestPathLanguage import TestPathLanguage +from Tests.TestPathOpDeburr import TestPathOpDeburr -# from PathTests.TestPathHelix import TestPathHelix -from PathTests.TestPathHelpers import TestPathHelpers -from PathTests.TestPathHelixGenerator import TestPathHelixGenerator -from PathTests.TestPathLog import TestPathLog -from PathTests.TestPathOpUtil import TestPathOpUtil +# from Tests.TestPathHelix import TestPathHelix +from Tests.TestPathHelpers import TestPathHelpers +from Tests.TestPathHelixGenerator import TestPathHelixGenerator +from Tests.TestPathLog import TestPathLog +from Tests.TestPathOpUtil import TestPathOpUtil -# from PathTests.TestPathPost import TestPathPost -from PathTests.TestPathPost import TestPathPostUtils -from PathTests.TestPathPost import TestBuildPostList -from PathTests.TestPathPost import TestOutputNameSubstitution +# from Tests.TestPathPost import TestPathPost +from Tests.TestPathPost import TestPathPostUtils +from Tests.TestPathPost import TestBuildPostList +from Tests.TestPathPost import TestOutputNameSubstitution -from PathTests.TestPathPreferences import TestPathPreferences -from PathTests.TestPathProfile import TestPathProfile -from PathTests.TestPathPropertyBag import TestPathPropertyBag -from PathTests.TestPathRotationGenerator import TestPathRotationGenerator -from PathTests.TestPathSetupSheet import TestPathSetupSheet -from PathTests.TestPathStock import TestPathStock -from PathTests.TestPathThreadMilling import TestPathThreadMilling -from PathTests.TestPathThreadMillingGenerator import TestPathThreadMillingGenerator -from PathTests.TestPathToolBit import TestPathToolBit -from PathTests.TestPathToolChangeGenerator import TestPathToolChangeGenerator -from PathTests.TestPathToolController import TestPathToolController -from PathTests.TestPathUtil import TestPathUtil -from PathTests.TestPathVcarve import TestPathVcarve -from PathTests.TestPathVoronoi import TestPathVoronoi +from Tests.TestPathPreferences import TestPathPreferences +from Tests.TestPathProfile import TestPathProfile +from Tests.TestPathPropertyBag import TestPathPropertyBag +from Tests.TestPathRotationGenerator import TestPathRotationGenerator +from Tests.TestPathSetupSheet import TestPathSetupSheet +from Tests.TestPathStock import TestPathStock +from Tests.TestPathThreadMilling import TestPathThreadMilling +from Tests.TestPathThreadMillingGenerator import TestPathThreadMillingGenerator +from Tests.TestPathToolBit import TestPathToolBit +from Tests.TestPathToolChangeGenerator import TestPathToolChangeGenerator +from Tests.TestPathToolController import TestPathToolController +from Tests.TestPathUtil import TestPathUtil +from Tests.TestPathVcarve import TestPathVcarve +from Tests.TestPathVoronoi import TestPathVoronoi -from PathTests.TestCentroidPost import TestCentroidPost -from PathTests.TestGrblPost import TestGrblPost -from PathTests.TestLinuxCNCPost import TestLinuxCNCPost -from PathTests.TestMach3Mach4Post import TestMach3Mach4Post -from PathTests.TestRefactoredCentroidPost import TestRefactoredCentroidPost -from PathTests.TestRefactoredGrblPost import TestRefactoredGrblPost -from PathTests.TestRefactoredLinuxCNCPost import TestRefactoredLinuxCNCPost -from PathTests.TestRefactoredMach3Mach4Post import TestRefactoredMach3Mach4Post -from PathTests.TestRefactoredTestPost import TestRefactoredTestPost -from PathTests.TestRefactoredTestPostGCodes import TestRefactoredTestPostGCodes -from PathTests.TestRefactoredTestPostMCodes import TestRefactoredTestPostMCodes +from Tests.TestCentroidPost import TestCentroidPost +from Tests.TestGrblPost import TestGrblPost +from Tests.TestLinuxCNCPost import TestLinuxCNCPost +from Tests.TestMach3Mach4Post import TestMach3Mach4Post +from Tests.TestRefactoredCentroidPost import TestRefactoredCentroidPost +from Tests.TestRefactoredGrblPost import TestRefactoredGrblPost +from Tests.TestRefactoredLinuxCNCPost import TestRefactoredLinuxCNCPost +from Tests.TestRefactoredMach3Mach4Post import TestRefactoredMach3Mach4Post +from Tests.TestRefactoredTestPost import TestRefactoredTestPost +from Tests.TestRefactoredTestPostGCodes import TestRefactoredTestPostGCodes +from Tests.TestRefactoredTestPostMCodes import TestRefactoredTestPostMCodes # dummy usage to get flake8 and lgtm quiet False if depthTestCases.__name__ else True diff --git a/src/Mod/Path/PathTests/Drilling_1.FCStd b/src/Mod/CAM/Tests/Drilling_1.FCStd similarity index 100% rename from src/Mod/Path/PathTests/Drilling_1.FCStd rename to src/Mod/CAM/Tests/Drilling_1.FCStd diff --git a/src/Mod/Path/PathTests/PathTestUtils.py b/src/Mod/CAM/Tests/PathTestUtils.py similarity index 100% rename from src/Mod/Path/PathTests/PathTestUtils.py rename to src/Mod/CAM/Tests/PathTestUtils.py diff --git a/src/Mod/Path/PathTests/TestCentroidPost.py b/src/Mod/CAM/Tests/TestCentroidPost.py similarity index 97% rename from src/Mod/Path/PathTests/TestCentroidPost.py rename to src/Mod/CAM/Tests/TestCentroidPost.py index c013e7f3fd..f72d0ebffc 100644 --- a/src/Mod/Path/PathTests/TestCentroidPost.py +++ b/src/Mod/CAM/Tests/TestCentroidPost.py @@ -26,7 +26,7 @@ from importlib import reload import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import centroid_post as postprocessor @@ -277,8 +277,9 @@ M99 args = "--no-header --no-show-editor" gcode = postprocessor.export(postables, "-", args) - self.assertEqual(gcode.splitlines()[5], "M6 T2") - self.assertEqual(gcode.splitlines()[6], "M3 S3000") + self.assertEqual(gcode.splitlines()[5], "G43 H2") + self.assertEqual(gcode.splitlines()[6], "M6 T2") + self.assertEqual(gcode.splitlines()[7], "M3 S3000") # suppress TLO # diff --git a/src/Mod/Path/PathTests/TestGrblPost.py b/src/Mod/CAM/Tests/TestGrblPost.py similarity index 99% rename from src/Mod/Path/PathTests/TestGrblPost.py rename to src/Mod/CAM/Tests/TestGrblPost.py index 880b6ada6a..f113c07d6c 100644 --- a/src/Mod/Path/PathTests/TestGrblPost.py +++ b/src/Mod/CAM/Tests/TestGrblPost.py @@ -23,7 +23,7 @@ import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from importlib import reload from Path.Post.scripts import grbl_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestLinuxCNCPost.py b/src/Mod/CAM/Tests/TestLinuxCNCPost.py similarity index 99% rename from src/Mod/Path/PathTests/TestLinuxCNCPost.py rename to src/Mod/CAM/Tests/TestLinuxCNCPost.py index 7eebdeb81f..391db9edee 100644 --- a/src/Mod/Path/PathTests/TestLinuxCNCPost.py +++ b/src/Mod/CAM/Tests/TestLinuxCNCPost.py @@ -23,7 +23,7 @@ import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from importlib import reload from Path.Post.scripts import linuxcnc_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestMach3Mach4Post.py b/src/Mod/CAM/Tests/TestMach3Mach4Post.py similarity index 99% rename from src/Mod/Path/PathTests/TestMach3Mach4Post.py rename to src/Mod/CAM/Tests/TestMach3Mach4Post.py index 1a810c9f37..8af054fa39 100644 --- a/src/Mod/Path/PathTests/TestMach3Mach4Post.py +++ b/src/Mod/CAM/Tests/TestMach3Mach4Post.py @@ -26,7 +26,7 @@ from importlib import reload import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import mach3_mach4_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestPathAdaptive.py b/src/Mod/CAM/Tests/TestPathAdaptive.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathAdaptive.py rename to src/Mod/CAM/Tests/TestPathAdaptive.py index 1b4d21f773..bbc6c042f7 100644 --- a/src/Mod/Path/PathTests/TestPathAdaptive.py +++ b/src/Mod/CAM/Tests/TestPathAdaptive.py @@ -26,7 +26,7 @@ import FreeCAD import Part import Path.Op.Adaptive as PathAdaptive import Path.Main.Job as PathJob -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase if FreeCAD.GuiUp: import Path.Main.Gui.Job as PathJobGui @@ -54,7 +54,7 @@ class TestPathAdaptive(PathTestBase): # Open existing FreeCAD document with test geometry cls.needsInit = False cls.doc = FreeCAD.open( - FreeCAD.getHomePath() + "Mod/Path/PathTests/test_adaptive.fcstd" + FreeCAD.getHomePath() + "Mod/CAM/Tests/test_adaptive.fcstd" ) # Create Job object, adding geometry objects from file opened above diff --git a/src/Mod/Path/PathTests/TestPathCore.py b/src/Mod/CAM/Tests/TestPathCore.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathCore.py rename to src/Mod/CAM/Tests/TestPathCore.py index fdcc5d913e..a3f963e206 100644 --- a/src/Mod/Path/PathTests/TestPathCore.py +++ b/src/Mod/CAM/Tests/TestPathCore.py @@ -22,7 +22,7 @@ import FreeCAD import Path -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class TestPathCore(PathTestBase): diff --git a/src/Mod/Path/PathTests/TestPathDepthParams.py b/src/Mod/CAM/Tests/TestPathDepthParams.py similarity index 100% rename from src/Mod/Path/PathTests/TestPathDepthParams.py rename to src/Mod/CAM/Tests/TestPathDepthParams.py diff --git a/src/Mod/Path/PathTests/TestPathDressupDogbone.py b/src/Mod/CAM/Tests/TestPathDressupDogbone.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathDressupDogbone.py rename to src/Mod/CAM/Tests/TestPathDressupDogbone.py index 2e05aeeb26..8302966902 100644 --- a/src/Mod/Path/PathTests/TestPathDressupDogbone.py +++ b/src/Mod/CAM/Tests/TestPathDressupDogbone.py @@ -26,7 +26,7 @@ import Path.Dressup.Gui.Dogbone as PathDressupDogbone import Path.Main.Job as PathJob import Path.Op.Profile as PathProfile -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class TestProfile: diff --git a/src/Mod/Path/PathTests/TestPathDressupDogboneII.py b/src/Mod/CAM/Tests/TestPathDressupDogboneII.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathDressupDogboneII.py rename to src/Mod/CAM/Tests/TestPathDressupDogboneII.py index 28a2478786..c0b0a0eb21 100644 --- a/src/Mod/Path/PathTests/TestPathDressupDogboneII.py +++ b/src/Mod/CAM/Tests/TestPathDressupDogboneII.py @@ -25,7 +25,7 @@ import Path import Path.Base.Generator.dogboneII as dogboneII import Path.Base.Language as PathLanguage import Path.Dressup.DogboneII -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils import math PI = math.pi diff --git a/src/Mod/Path/PathTests/TestPathDressupHoldingTags.py b/src/Mod/CAM/Tests/TestPathDressupHoldingTags.py similarity index 98% rename from src/Mod/Path/PathTests/TestPathDressupHoldingTags.py rename to src/Mod/CAM/Tests/TestPathDressupHoldingTags.py index 713a516b2e..c7209f4d37 100644 --- a/src/Mod/Path/PathTests/TestPathDressupHoldingTags.py +++ b/src/Mod/CAM/Tests/TestPathDressupHoldingTags.py @@ -20,7 +20,7 @@ # * * # *************************************************************************** -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils import math from FreeCAD import Vector diff --git a/src/Mod/Path/PathTests/TestPathDrillGenerator.py b/src/Mod/CAM/Tests/TestPathDrillGenerator.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathDrillGenerator.py rename to src/Mod/CAM/Tests/TestPathDrillGenerator.py index 15ae13bd8b..5e1c008a8d 100644 --- a/src/Mod/Path/PathTests/TestPathDrillGenerator.py +++ b/src/Mod/CAM/Tests/TestPathDrillGenerator.py @@ -24,7 +24,7 @@ import FreeCAD import Part import Path import Path.Base.Generator.drill as generator -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) Path.Log.trackModule(Path.Log.thisModule()) diff --git a/src/Mod/Path/PathTests/TestPathDrillable.py b/src/Mod/CAM/Tests/TestPathDrillable.py similarity index 98% rename from src/Mod/Path/PathTests/TestPathDrillable.py rename to src/Mod/CAM/Tests/TestPathDrillable.py index f01988dce2..8642183335 100644 --- a/src/Mod/Path/PathTests/TestPathDrillable.py +++ b/src/Mod/CAM/Tests/TestPathDrillable.py @@ -23,7 +23,7 @@ import FreeCAD as App import Path import Path.Base.Drillable as Drillable -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils if False: @@ -35,7 +35,7 @@ else: class TestPathDrillable(PathTestUtils.PathTestBase): def setUp(self): - self.doc = App.open(App.getHomePath() + "/Mod/Path/PathTests/Drilling_1.FCStd") + self.doc = App.open(App.getHomePath() + "/Mod/CAM/Tests/Drilling_1.FCStd") self.obj = self.doc.getObject("Pocket011") def tearDown(self): diff --git a/src/Mod/Path/PathTests/TestPathGeneratorDogboneII.py b/src/Mod/CAM/Tests/TestPathGeneratorDogboneII.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathGeneratorDogboneII.py rename to src/Mod/CAM/Tests/TestPathGeneratorDogboneII.py index a9d71e9097..f295aad816 100644 --- a/src/Mod/Path/PathTests/TestPathGeneratorDogboneII.py +++ b/src/Mod/CAM/Tests/TestPathGeneratorDogboneII.py @@ -24,7 +24,7 @@ import FreeCAD import Path import Path.Base.Generator.dogboneII as dogboneII import Path.Base.Language as PathLanguage -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils import math diff --git a/src/Mod/Path/PathTests/TestPathGeom.py b/src/Mod/CAM/Tests/TestPathGeom.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathGeom.py rename to src/Mod/CAM/Tests/TestPathGeom.py index e2bad2f1ec..93a37353d3 100644 --- a/src/Mod/Path/PathTests/TestPathGeom.py +++ b/src/Mod/CAM/Tests/TestPathGeom.py @@ -25,7 +25,7 @@ import Path import math from FreeCAD import Vector -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class TestPathGeom(PathTestBase): diff --git a/src/Mod/Path/PathTests/TestPathHelix.py b/src/Mod/CAM/Tests/TestPathHelix.py similarity index 94% rename from src/Mod/Path/PathTests/TestPathHelix.py rename to src/Mod/CAM/Tests/TestPathHelix.py index 69ce117a0d..04aaf7b268 100644 --- a/src/Mod/Path/PathTests/TestPathHelix.py +++ b/src/Mod/CAM/Tests/TestPathHelix.py @@ -25,7 +25,7 @@ import FreeCAD import Path import Path.Main.Job as PathJob import Path.Op.Helix as PathHelix -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) # Path.Log.trackModule(Path.Log.thisModule()) @@ -37,7 +37,7 @@ class TestPathHelix(PathTestUtils.PathTestBase): def setUp(self): self.clone = None self.doc = FreeCAD.open( - FreeCAD.getHomePath() + "Mod/Path/PathTests/test_holes00.fcstd" + FreeCAD.getHomePath() + "Mod/CAM/Tests/test_holes00.fcstd" ) self.job = PathJob.Create("Job", [self.doc.Body]) @@ -89,7 +89,7 @@ class TestPathHelix(PathTestUtils.PathTestBase): for deg in range(self.RotateBy, 360, self.RotateBy): self.tearDown() self.doc = FreeCAD.open( - FreeCAD.getHomePath() + "Mod/Path/PathTests/test_holes00.fcstd" + FreeCAD.getHomePath() + "Mod/CAM/Tests/test_holes00.fcstd" ) self.doc.Body.Placement.Rotation = FreeCAD.Rotation(deg, 0, 0) @@ -114,7 +114,7 @@ class TestPathHelix(PathTestUtils.PathTestBase): for deg in range(self.RotateBy, 360, self.RotateBy): self.tearDown() self.doc = FreeCAD.open( - FreeCAD.getHomePath() + "Mod/Path/PathTests/test_holes00.fcstd" + FreeCAD.getHomePath() + "Mod/CAM/Tests/test_holes00.fcstd" ) self.clone = Draft.clone(self.doc.Body) self.clone.Placement.Rotation = FreeCAD.Rotation(deg, 0, 0) diff --git a/src/Mod/Path/PathTests/TestPathHelixGenerator.py b/src/Mod/CAM/Tests/TestPathHelixGenerator.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathHelixGenerator.py rename to src/Mod/CAM/Tests/TestPathHelixGenerator.py index 4444f2a966..e3022ff36f 100644 --- a/src/Mod/Path/PathTests/TestPathHelixGenerator.py +++ b/src/Mod/CAM/Tests/TestPathHelixGenerator.py @@ -24,7 +24,7 @@ import FreeCAD import Part import Path import Path.Base.Generator.helix as generator -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) diff --git a/src/Mod/Path/PathTests/TestPathHelpers.py b/src/Mod/CAM/Tests/TestPathHelpers.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathHelpers.py rename to src/Mod/CAM/Tests/TestPathHelpers.py index 4ada315b97..159931475a 100644 --- a/src/Mod/Path/PathTests/TestPathHelpers.py +++ b/src/Mod/CAM/Tests/TestPathHelpers.py @@ -29,7 +29,7 @@ import Path.Tool.Bit as PathToolBit import Path.Tool.Controller as PathToolController import PathScripts.PathUtils as PathUtils -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase def createTool(name="t1", diameter=1.75): diff --git a/src/Mod/Path/PathTests/TestPathLanguage.py b/src/Mod/CAM/Tests/TestPathLanguage.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathLanguage.py rename to src/Mod/CAM/Tests/TestPathLanguage.py index 16fc76f136..cece1fd609 100644 --- a/src/Mod/Path/PathTests/TestPathLanguage.py +++ b/src/Mod/CAM/Tests/TestPathLanguage.py @@ -21,7 +21,7 @@ # *************************************************************************** import Path.Base.Language as PathLanguage -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils import math PI = math.pi diff --git a/src/Mod/Path/PathTests/TestPathLog.py b/src/Mod/CAM/Tests/TestPathLog.py similarity index 100% rename from src/Mod/Path/PathTests/TestPathLog.py rename to src/Mod/CAM/Tests/TestPathLog.py diff --git a/src/Mod/Path/PathTests/TestPathOpDeburr.py b/src/Mod/CAM/Tests/TestPathOpDeburr.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathOpDeburr.py rename to src/Mod/CAM/Tests/TestPathOpDeburr.py index 7872e3b985..2f1ec44cfa 100644 --- a/src/Mod/Path/PathTests/TestPathOpDeburr.py +++ b/src/Mod/CAM/Tests/TestPathOpDeburr.py @@ -23,7 +23,7 @@ import Path import Path.Op.Deburr as PathDeburr import Path.Tool.Bit as PathToolBit -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) # Path.Log.trackModule(Path.Log.thisModule()) diff --git a/src/Mod/Path/PathTests/TestPathOpUtil.py b/src/Mod/CAM/Tests/TestPathOpUtil.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathOpUtil.py rename to src/Mod/CAM/Tests/TestPathOpUtil.py index e6aeba8cef..fb2326ebee 100644 --- a/src/Mod/Path/PathTests/TestPathOpUtil.py +++ b/src/Mod/CAM/Tests/TestPathOpUtil.py @@ -24,7 +24,7 @@ import FreeCAD import Part import Path import Path.Op.Util as PathOpUtil -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils import math from FreeCAD import Vector @@ -32,7 +32,7 @@ from FreeCAD import Vector Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) # Path.Log.trackModule(Path.Log.thisModule()) -DOC = FreeCAD.getHomePath() + "Mod/Path/PathTests/test_geomop.fcstd" +DOC = FreeCAD.getHomePath() + "Mod/CAM/Tests/test_geomop.fcstd" def getWire(obj, nr=0): return obj.Tip.Profile[0].Shape.Wires[nr] diff --git a/src/Mod/Path/PathTests/TestPathPost.py b/src/Mod/CAM/Tests/TestPathPost.py similarity index 98% rename from src/Mod/Path/PathTests/TestPathPost.py rename to src/Mod/CAM/Tests/TestPathPost.py index d9643577d7..ecbb9adcab 100644 --- a/src/Mod/Path/PathTests/TestPathPost.py +++ b/src/Mod/CAM/Tests/TestPathPost.py @@ -59,7 +59,7 @@ class TestPathPost(unittest.TestCase): # # You can run just this test using: - # ./FreeCAD -c -t PathTests.TestPathPost.TestPathPost.test_postprocessors + # ./FreeCAD -c -t Tests.TestPathPost.TestPathPost.test_postprocessors # def test_postprocessors(self): """Test the postprocessors.""" @@ -115,7 +115,7 @@ class TestPathPost(unittest.TestCase): # Enough of the path to where the tests are stored so that # they can be found by the python interpreter. # - PATHTESTS_LOCATION = "Mod/Path/PathTests" + PATHTESTS_LOCATION = "Mod/CAM/Tests" # # The following code tries to re-use an open FreeCAD document # as much as possible. It compares the current document with @@ -266,7 +266,7 @@ class TestBuildPostList(unittest.TestCase): """ def setUp(self): - self.testfile = FreeCAD.getHomePath() + "Mod/Path/PathTests/test_filenaming.fcstd" + self.testfile = FreeCAD.getHomePath() + "Mod/CAM/Tests/test_filenaming.fcstd" self.doc = FreeCAD.open(self.testfile) self.job = self.doc.getObjectsByLabel("MainJob")[0] @@ -394,7 +394,7 @@ class TestOutputNameSubstitution(unittest.TestCase): """ def setUp(self): - self.testfile = FreeCAD.getHomePath() + "Mod/Path/PathTests/test_filenaming.fcstd" + self.testfile = FreeCAD.getHomePath() + "Mod/CAM/Tests/test_filenaming.fcstd" self.testfilepath, self.testfilename = os.path.split(self.testfile) self.testfilename, self.ext = os.path.splitext(self.testfilename) diff --git a/src/Mod/Path/PathTests/TestPathPreferences.py b/src/Mod/CAM/Tests/TestPathPreferences.py similarity index 93% rename from src/Mod/Path/PathTests/TestPathPreferences.py rename to src/Mod/CAM/Tests/TestPathPreferences.py index 3c1bf9bb7c..dab369098f 100644 --- a/src/Mod/Path/PathTests/TestPathPreferences.py +++ b/src/Mod/CAM/Tests/TestPathPreferences.py @@ -21,7 +21,7 @@ # *************************************************************************** import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils class TestPathPreferences(PathTestUtils.PathTestBase): @@ -54,18 +54,18 @@ class TestPathPreferences(PathTestUtils.PathTestBase): """Default paths for tools are resolved correctly""" self.assertTrue( - Path.Preferences.pathDefaultToolsPath().endswith("/Path/Tools/") + Path.Preferences.pathDefaultToolsPath().endswith("/CAM/Tools/") ) self.assertTrue( - Path.Preferences.pathDefaultToolsPath("Bit").endswith("/Path/Tools/Bit") + Path.Preferences.pathDefaultToolsPath("Bit").endswith("/CAM/Tools/Bit") ) self.assertTrue( Path.Preferences.pathDefaultToolsPath("Library").endswith( - "/Path/Tools/Library" + "/CAM/Tools/Library" ) ) self.assertTrue( Path.Preferences.pathDefaultToolsPath("Template").endswith( - "/Path/Tools/Template" + "/CAM/Tools/Template" ) ) diff --git a/src/Mod/Path/PathTests/TestPathProfile.py b/src/Mod/CAM/Tests/TestPathProfile.py similarity index 98% rename from src/Mod/Path/PathTests/TestPathProfile.py rename to src/Mod/CAM/Tests/TestPathProfile.py index 7de6c68328..8da8f2a9a9 100644 --- a/src/Mod/Path/PathTests/TestPathProfile.py +++ b/src/Mod/CAM/Tests/TestPathProfile.py @@ -27,8 +27,8 @@ import FreeCAD import Part import Path.Op.Profile as PathProfile import Path.Main.Job as PathJob -from PathTests.PathTestUtils import PathTestBase -from PathTests.TestPathAdaptive import getGcodeMoves +from Tests.PathTestUtils import PathTestBase +from Tests.TestPathAdaptive import getGcodeMoves if FreeCAD.GuiUp: import Path.Main.Gui.Job as PathJobGui @@ -55,7 +55,7 @@ class TestPathProfile(PathTestBase): # Open existing FreeCAD document with test geometry cls.needsInit = False cls.doc = FreeCAD.open( - FreeCAD.getHomePath() + "Mod/Path/PathTests/test_profile.fcstd" + FreeCAD.getHomePath() + "Mod/CAM/Tests/test_profile.fcstd" ) # Create Job object, adding geometry objects from file opened above diff --git a/src/Mod/Path/PathTests/TestPathPropertyBag.py b/src/Mod/CAM/Tests/TestPathPropertyBag.py similarity index 98% rename from src/Mod/Path/PathTests/TestPathPropertyBag.py rename to src/Mod/CAM/Tests/TestPathPropertyBag.py index ae675b71ff..43005920be 100644 --- a/src/Mod/Path/PathTests/TestPathPropertyBag.py +++ b/src/Mod/CAM/Tests/TestPathPropertyBag.py @@ -22,7 +22,7 @@ import FreeCAD import Path.Base.PropertyBag as PathPropertyBag -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils class TestPathPropertyBag(PathTestUtils.PathTestBase): diff --git a/src/Mod/Path/PathTests/TestPathRotationGenerator.py b/src/Mod/CAM/Tests/TestPathRotationGenerator.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathRotationGenerator.py rename to src/Mod/CAM/Tests/TestPathRotationGenerator.py index 78f6dbb0ad..bb196899c6 100644 --- a/src/Mod/Path/PathTests/TestPathRotationGenerator.py +++ b/src/Mod/CAM/Tests/TestPathRotationGenerator.py @@ -23,7 +23,7 @@ import FreeCAD import Path import Path.Base.Generator.rotation as generator -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils import numpy as np Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) diff --git a/src/Mod/Path/PathTests/TestPathSetupSheet.py b/src/Mod/CAM/Tests/TestPathSetupSheet.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathSetupSheet.py rename to src/Mod/CAM/Tests/TestPathSetupSheet.py index 40ceda865b..84b313df22 100644 --- a/src/Mod/Path/PathTests/TestPathSetupSheet.py +++ b/src/Mod/CAM/Tests/TestPathSetupSheet.py @@ -28,7 +28,7 @@ import sys # Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase def refstring(string): diff --git a/src/Mod/Path/PathTests/TestPathStock.py b/src/Mod/CAM/Tests/TestPathStock.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathStock.py rename to src/Mod/CAM/Tests/TestPathStock.py index bc2ab0060c..c80bd19808 100644 --- a/src/Mod/Path/PathTests/TestPathStock.py +++ b/src/Mod/CAM/Tests/TestPathStock.py @@ -23,7 +23,7 @@ import FreeCAD import Path.Main.Stock as PathStock -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class FakeJobProxy: diff --git a/src/Mod/Path/PathTests/TestPathThreadMilling.py b/src/Mod/CAM/Tests/TestPathThreadMilling.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathThreadMilling.py rename to src/Mod/CAM/Tests/TestPathThreadMilling.py index 4a9913b000..765340e2f6 100644 --- a/src/Mod/Path/PathTests/TestPathThreadMilling.py +++ b/src/Mod/CAM/Tests/TestPathThreadMilling.py @@ -25,7 +25,7 @@ import Path import Path.Op.ThreadMilling as PathThreadMilling import math -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class TestObject(object): diff --git a/src/Mod/Path/PathTests/TestPathThreadMillingGenerator.py b/src/Mod/CAM/Tests/TestPathThreadMillingGenerator.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathThreadMillingGenerator.py rename to src/Mod/CAM/Tests/TestPathThreadMillingGenerator.py index cfc3ad7ca9..6c606c5591 100644 --- a/src/Mod/Path/PathTests/TestPathThreadMillingGenerator.py +++ b/src/Mod/CAM/Tests/TestPathThreadMillingGenerator.py @@ -24,7 +24,7 @@ import FreeCAD import Path.Base.Generator.threadmilling as threadmilling import math -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase def radii(internal, major, minor, toolDia, toolCrest): diff --git a/src/Mod/Path/PathTests/TestPathToolBit.py b/src/Mod/CAM/Tests/TestPathToolBit.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathToolBit.py rename to src/Mod/CAM/Tests/TestPathToolBit.py index 1b477d3f7e..bc2dd33891 100644 --- a/src/Mod/Path/PathTests/TestPathToolBit.py +++ b/src/Mod/CAM/Tests/TestPathToolBit.py @@ -21,7 +21,7 @@ # *************************************************************************** import Path.Tool.Bit as PathToolBit -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils import glob import os diff --git a/src/Mod/Path/PathTests/TestPathToolChangeGenerator.py b/src/Mod/CAM/Tests/TestPathToolChangeGenerator.py similarity index 98% rename from src/Mod/Path/PathTests/TestPathToolChangeGenerator.py rename to src/Mod/CAM/Tests/TestPathToolChangeGenerator.py index 72b0cf80ee..22b25b795e 100644 --- a/src/Mod/Path/PathTests/TestPathToolChangeGenerator.py +++ b/src/Mod/CAM/Tests/TestPathToolChangeGenerator.py @@ -22,7 +22,7 @@ import Path import Path.Base.Generator.toolchange as generator -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) Path.Log.trackModule(Path.Log.thisModule()) diff --git a/src/Mod/Path/PathTests/TestPathToolController.py b/src/Mod/CAM/Tests/TestPathToolController.py similarity index 98% rename from src/Mod/Path/PathTests/TestPathToolController.py rename to src/Mod/CAM/Tests/TestPathToolController.py index ab7437f351..af4b9717ed 100644 --- a/src/Mod/Path/PathTests/TestPathToolController.py +++ b/src/Mod/CAM/Tests/TestPathToolController.py @@ -25,7 +25,7 @@ import Path import Path.Tool.Bit as PathToolBit import Path.Tool.Controller as PathToolController -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class TestPathToolController(PathTestBase): diff --git a/src/Mod/Path/PathTests/TestPathUtil.py b/src/Mod/CAM/Tests/TestPathUtil.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathUtil.py rename to src/Mod/CAM/Tests/TestPathUtil.py index a22c4f2876..c69eefe27b 100644 --- a/src/Mod/Path/PathTests/TestPathUtil.py +++ b/src/Mod/CAM/Tests/TestPathUtil.py @@ -24,7 +24,7 @@ import FreeCAD import Path.Base.Util as PathUtil import TestSketcherApp -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class TestPathUtil(PathTestBase): diff --git a/src/Mod/Path/PathTests/TestPathVcarve.py b/src/Mod/CAM/Tests/TestPathVcarve.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathVcarve.py rename to src/Mod/CAM/Tests/TestPathVcarve.py index 469742b57f..c91e5ecb95 100644 --- a/src/Mod/Path/PathTests/TestPathVcarve.py +++ b/src/Mod/CAM/Tests/TestPathVcarve.py @@ -25,7 +25,7 @@ import Path.Op.Vcarve as PathVcarve import Path.Tool.Bit as PathToolBit import math -from PathTests.PathTestUtils import PathTestBase +from Tests.PathTestUtils import PathTestBase class VbitTool(object): diff --git a/src/Mod/Path/PathTests/TestPathVoronoi.py b/src/Mod/CAM/Tests/TestPathVoronoi.py similarity index 99% rename from src/Mod/Path/PathTests/TestPathVoronoi.py rename to src/Mod/CAM/Tests/TestPathVoronoi.py index 169ee5e1c1..b94ce2c1f2 100644 --- a/src/Mod/Path/PathTests/TestPathVoronoi.py +++ b/src/Mod/CAM/Tests/TestPathVoronoi.py @@ -23,7 +23,7 @@ import FreeCAD import Part import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils vd = None diff --git a/src/Mod/Path/PathTests/TestRefactoredCentroidPost.py b/src/Mod/CAM/Tests/TestRefactoredCentroidPost.py similarity index 99% rename from src/Mod/Path/PathTests/TestRefactoredCentroidPost.py rename to src/Mod/CAM/Tests/TestRefactoredCentroidPost.py index b28fc86f93..67335d31e3 100644 --- a/src/Mod/Path/PathTests/TestRefactoredCentroidPost.py +++ b/src/Mod/CAM/Tests/TestRefactoredCentroidPost.py @@ -26,7 +26,7 @@ from importlib import reload import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import refactored_centroid_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestRefactoredGrblPost.py b/src/Mod/CAM/Tests/TestRefactoredGrblPost.py similarity index 99% rename from src/Mod/Path/PathTests/TestRefactoredGrblPost.py rename to src/Mod/CAM/Tests/TestRefactoredGrblPost.py index 68ab1c1285..744ebf1585 100644 --- a/src/Mod/Path/PathTests/TestRefactoredGrblPost.py +++ b/src/Mod/CAM/Tests/TestRefactoredGrblPost.py @@ -26,7 +26,7 @@ from importlib import reload import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import refactored_grbl_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestRefactoredLinuxCNCPost.py b/src/Mod/CAM/Tests/TestRefactoredLinuxCNCPost.py similarity index 99% rename from src/Mod/Path/PathTests/TestRefactoredLinuxCNCPost.py rename to src/Mod/CAM/Tests/TestRefactoredLinuxCNCPost.py index f3407a7bc6..7be0228787 100644 --- a/src/Mod/Path/PathTests/TestRefactoredLinuxCNCPost.py +++ b/src/Mod/CAM/Tests/TestRefactoredLinuxCNCPost.py @@ -26,7 +26,7 @@ from importlib import reload import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import refactored_linuxcnc_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestRefactoredMach3Mach4Post.py b/src/Mod/CAM/Tests/TestRefactoredMach3Mach4Post.py similarity index 99% rename from src/Mod/Path/PathTests/TestRefactoredMach3Mach4Post.py rename to src/Mod/CAM/Tests/TestRefactoredMach3Mach4Post.py index e08db7e70f..eaced27070 100644 --- a/src/Mod/Path/PathTests/TestRefactoredMach3Mach4Post.py +++ b/src/Mod/CAM/Tests/TestRefactoredMach3Mach4Post.py @@ -26,7 +26,7 @@ from importlib import reload import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import refactored_mach3_mach4_post as postprocessor Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) diff --git a/src/Mod/Path/PathTests/TestRefactoredTestPost.py b/src/Mod/CAM/Tests/TestRefactoredTestPost.py similarity index 99% rename from src/Mod/Path/PathTests/TestRefactoredTestPost.py rename to src/Mod/CAM/Tests/TestRefactoredTestPost.py index 2c3ee9f26c..ec481394a7 100644 --- a/src/Mod/Path/PathTests/TestRefactoredTestPost.py +++ b/src/Mod/CAM/Tests/TestRefactoredTestPost.py @@ -24,7 +24,7 @@ import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import refactored_test_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestRefactoredTestPostGCodes.py b/src/Mod/CAM/Tests/TestRefactoredTestPostGCodes.py similarity index 99% rename from src/Mod/Path/PathTests/TestRefactoredTestPostGCodes.py rename to src/Mod/CAM/Tests/TestRefactoredTestPostGCodes.py index 30093cf185..d014c01fd5 100644 --- a/src/Mod/Path/PathTests/TestRefactoredTestPostGCodes.py +++ b/src/Mod/CAM/Tests/TestRefactoredTestPostGCodes.py @@ -24,7 +24,7 @@ import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import refactored_test_post as postprocessor diff --git a/src/Mod/Path/PathTests/TestRefactoredTestPostMCodes.py b/src/Mod/CAM/Tests/TestRefactoredTestPostMCodes.py similarity index 99% rename from src/Mod/Path/PathTests/TestRefactoredTestPostMCodes.py rename to src/Mod/CAM/Tests/TestRefactoredTestPostMCodes.py index 13c39acd98..756f41c565 100644 --- a/src/Mod/Path/PathTests/TestRefactoredTestPostMCodes.py +++ b/src/Mod/CAM/Tests/TestRefactoredTestPostMCodes.py @@ -24,7 +24,7 @@ import FreeCAD import Path -import PathTests.PathTestUtils as PathTestUtils +import Tests.PathTestUtils as PathTestUtils from Path.Post.scripts import refactored_test_post as postprocessor diff --git a/src/Mod/Path/PathTests/Tools/Bit/test-path-tool-bit-bit-00.fctb b/src/Mod/CAM/Tests/Tools/Bit/test-path-tool-bit-bit-00.fctb similarity index 100% rename from src/Mod/Path/PathTests/Tools/Bit/test-path-tool-bit-bit-00.fctb rename to src/Mod/CAM/Tests/Tools/Bit/test-path-tool-bit-bit-00.fctb diff --git a/src/Mod/Path/PathTests/Tools/Library/test-path-tool-bit-library-00.fctl b/src/Mod/CAM/Tests/Tools/Library/test-path-tool-bit-library-00.fctl similarity index 100% rename from src/Mod/Path/PathTests/Tools/Library/test-path-tool-bit-library-00.fctl rename to src/Mod/CAM/Tests/Tools/Library/test-path-tool-bit-library-00.fctl diff --git a/src/Mod/Path/PathTests/Tools/Shape/test-path-tool-bit-shape-00.fcstd b/src/Mod/CAM/Tests/Tools/Shape/test-path-tool-bit-shape-00.fcstd similarity index 100% rename from src/Mod/Path/PathTests/Tools/Shape/test-path-tool-bit-shape-00.fcstd rename to src/Mod/CAM/Tests/Tools/Shape/test-path-tool-bit-shape-00.fcstd diff --git a/src/Mod/Path/PathTests/__init__.py b/src/Mod/CAM/Tests/__init__.py similarity index 100% rename from src/Mod/Path/PathTests/__init__.py rename to src/Mod/CAM/Tests/__init__.py diff --git a/src/Mod/Path/PathTests/boxtest.fcstd b/src/Mod/CAM/Tests/boxtest.fcstd similarity index 100% rename from src/Mod/Path/PathTests/boxtest.fcstd rename to src/Mod/CAM/Tests/boxtest.fcstd diff --git a/src/Mod/Path/PathTests/boxtest1.fcstd b/src/Mod/CAM/Tests/boxtest1.fcstd similarity index 100% rename from src/Mod/Path/PathTests/boxtest1.fcstd rename to src/Mod/CAM/Tests/boxtest1.fcstd diff --git a/src/Mod/Path/PathTests/drill_test1.FCStd b/src/Mod/CAM/Tests/drill_test1.FCStd similarity index 100% rename from src/Mod/Path/PathTests/drill_test1.FCStd rename to src/Mod/CAM/Tests/drill_test1.FCStd diff --git a/src/Mod/Path/PathTests/test_adaptive.fcstd b/src/Mod/CAM/Tests/test_adaptive.fcstd similarity index 100% rename from src/Mod/Path/PathTests/test_adaptive.fcstd rename to src/Mod/CAM/Tests/test_adaptive.fcstd diff --git a/src/Mod/Path/PathTests/test_centroid_00.ngc b/src/Mod/CAM/Tests/test_centroid_00.ngc similarity index 100% rename from src/Mod/Path/PathTests/test_centroid_00.ngc rename to src/Mod/CAM/Tests/test_centroid_00.ngc diff --git a/src/Mod/Path/PathTests/test_filenaming.fcstd b/src/Mod/CAM/Tests/test_filenaming.fcstd similarity index 100% rename from src/Mod/Path/PathTests/test_filenaming.fcstd rename to src/Mod/CAM/Tests/test_filenaming.fcstd diff --git a/src/Mod/Path/PathTests/test_geomop.fcstd b/src/Mod/CAM/Tests/test_geomop.fcstd similarity index 100% rename from src/Mod/Path/PathTests/test_geomop.fcstd rename to src/Mod/CAM/Tests/test_geomop.fcstd diff --git a/src/Mod/Path/PathTests/test_holes00.fcstd b/src/Mod/CAM/Tests/test_holes00.fcstd similarity index 100% rename from src/Mod/Path/PathTests/test_holes00.fcstd rename to src/Mod/CAM/Tests/test_holes00.fcstd diff --git a/src/Mod/Path/PathTests/test_profile.fcstd b/src/Mod/CAM/Tests/test_profile.fcstd similarity index 100% rename from src/Mod/Path/PathTests/test_profile.fcstd rename to src/Mod/CAM/Tests/test_profile.fcstd diff --git a/src/Mod/Path/Tools/.gitignore b/src/Mod/CAM/Tools/.gitignore similarity index 100% rename from src/Mod/Path/Tools/.gitignore rename to src/Mod/CAM/Tools/.gitignore diff --git a/src/Mod/Path/Tools/Bit/45degree_chamfer.fctb b/src/Mod/CAM/Tools/Bit/45degree_chamfer.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/45degree_chamfer.fctb rename to src/Mod/CAM/Tools/Bit/45degree_chamfer.fctb diff --git a/src/Mod/Path/Tools/Bit/5mm-thread-cutter.fctb b/src/Mod/CAM/Tools/Bit/5mm-thread-cutter.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/5mm-thread-cutter.fctb rename to src/Mod/CAM/Tools/Bit/5mm-thread-cutter.fctb diff --git a/src/Mod/Path/Tools/Bit/5mm_Drill.fctb b/src/Mod/CAM/Tools/Bit/5mm_Drill.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/5mm_Drill.fctb rename to src/Mod/CAM/Tools/Bit/5mm_Drill.fctb diff --git a/src/Mod/Path/Tools/Bit/5mm_Endmill.fctb b/src/Mod/CAM/Tools/Bit/5mm_Endmill.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/5mm_Endmill.fctb rename to src/Mod/CAM/Tools/Bit/5mm_Endmill.fctb diff --git a/src/Mod/Path/Tools/Bit/60degree_Vbit.fctb b/src/Mod/CAM/Tools/Bit/60degree_Vbit.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/60degree_Vbit.fctb rename to src/Mod/CAM/Tools/Bit/60degree_Vbit.fctb diff --git a/src/Mod/Path/Tools/Bit/6mm_Ball_End.fctb b/src/Mod/CAM/Tools/Bit/6mm_Ball_End.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/6mm_Ball_End.fctb rename to src/Mod/CAM/Tools/Bit/6mm_Ball_End.fctb diff --git a/src/Mod/Path/Tools/Bit/6mm_Bullnose.fctb b/src/Mod/CAM/Tools/Bit/6mm_Bullnose.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/6mm_Bullnose.fctb rename to src/Mod/CAM/Tools/Bit/6mm_Bullnose.fctb diff --git a/src/Mod/Path/Tools/Bit/probe.fctb b/src/Mod/CAM/Tools/Bit/probe.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/probe.fctb rename to src/Mod/CAM/Tools/Bit/probe.fctb diff --git a/src/Mod/Path/Tools/Bit/slittingsaw.fctb b/src/Mod/CAM/Tools/Bit/slittingsaw.fctb similarity index 100% rename from src/Mod/Path/Tools/Bit/slittingsaw.fctb rename to src/Mod/CAM/Tools/Bit/slittingsaw.fctb diff --git a/src/Mod/Path/Tools/Library/Default.fctl b/src/Mod/CAM/Tools/Library/Default.fctl similarity index 100% rename from src/Mod/Path/Tools/Library/Default.fctl rename to src/Mod/CAM/Tools/Library/Default.fctl diff --git a/src/Mod/Path/Tools/README.md b/src/Mod/CAM/Tools/README.md similarity index 100% rename from src/Mod/Path/Tools/README.md rename to src/Mod/CAM/Tools/README.md diff --git a/src/Mod/Path/Tools/Shape/ballend.fcstd b/src/Mod/CAM/Tools/Shape/ballend.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/ballend.fcstd rename to src/Mod/CAM/Tools/Shape/ballend.fcstd diff --git a/src/Mod/Path/Tools/Shape/bullnose.fcstd b/src/Mod/CAM/Tools/Shape/bullnose.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/bullnose.fcstd rename to src/Mod/CAM/Tools/Shape/bullnose.fcstd diff --git a/src/Mod/Path/Tools/Shape/chamfer.fcstd b/src/Mod/CAM/Tools/Shape/chamfer.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/chamfer.fcstd rename to src/Mod/CAM/Tools/Shape/chamfer.fcstd diff --git a/src/Mod/Path/Tools/Shape/dovetail.fcstd b/src/Mod/CAM/Tools/Shape/dovetail.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/dovetail.fcstd rename to src/Mod/CAM/Tools/Shape/dovetail.fcstd diff --git a/src/Mod/Path/Tools/Shape/drill.fcstd b/src/Mod/CAM/Tools/Shape/drill.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/drill.fcstd rename to src/Mod/CAM/Tools/Shape/drill.fcstd diff --git a/src/Mod/Path/Tools/Shape/endmill.fcstd b/src/Mod/CAM/Tools/Shape/endmill.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/endmill.fcstd rename to src/Mod/CAM/Tools/Shape/endmill.fcstd diff --git a/src/Mod/Path/Tools/Shape/probe.fcstd b/src/Mod/CAM/Tools/Shape/probe.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/probe.fcstd rename to src/Mod/CAM/Tools/Shape/probe.fcstd diff --git a/src/Mod/Path/Tools/Shape/slittingsaw.fcstd b/src/Mod/CAM/Tools/Shape/slittingsaw.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/slittingsaw.fcstd rename to src/Mod/CAM/Tools/Shape/slittingsaw.fcstd diff --git a/src/Mod/Path/Tools/Shape/thread-mill.fcstd b/src/Mod/CAM/Tools/Shape/thread-mill.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/thread-mill.fcstd rename to src/Mod/CAM/Tools/Shape/thread-mill.fcstd diff --git a/src/Mod/Path/Tools/Shape/v-bit.fcstd b/src/Mod/CAM/Tools/Shape/v-bit.fcstd similarity index 100% rename from src/Mod/Path/Tools/Shape/v-bit.fcstd rename to src/Mod/CAM/Tools/Shape/v-bit.fcstd diff --git a/src/Mod/Path/Tools/toolbit-attributes.py b/src/Mod/CAM/Tools/toolbit-attributes.py similarity index 97% rename from src/Mod/Path/Tools/toolbit-attributes.py rename to src/Mod/CAM/Tools/toolbit-attributes.py index 326eaa71dd..3545fe55a4 100755 --- a/src/Mod/Path/Tools/toolbit-attributes.py +++ b/src/Mod/CAM/Tools/toolbit-attributes.py @@ -33,15 +33,15 @@ # "Attributes" group. Note that the Attributes group might or might not # already exist. If it does exist the specified group gets merged in. # -# ./toolbit-attributes.py --move 'Extra:Attributes' src/Mod/Path/Tools/Shape/*.fcstd +# ./toolbit-attributes.py --move 'Extra:Attributes' src/Mod/CAM/Tools/Shape/*.fcstd # # This example sets the Flutes value of all Shapes to 0: # -# ./toolbit-attributes.py --set Flutes=0 src/Mod/Path/Tools/Shape/*.fcstd +# ./toolbit-attributes.py --set Flutes=0 src/Mod/CAM/Tools/Shape/*.fcstd # # Finally, this example sets the enumerations of the Material attribute: # -# ./toolbit-attributes.py --set 'Material=[HSS,Carbide,Tool Steel,Titanium]' src/Mod/Path/Tools/Shape/*.fcstd +# ./toolbit-attributes.py --set 'Material=[HSS,Carbide,Tool Steel,Titanium]' src/Mod/CAM/Tools/Shape/*.fcstd # # After running this tool it might be necessary to open the shape files # manually and make sure they are visible and the thumbprint image is diff --git a/src/Mod/Path/libarea/Adaptive.cpp b/src/Mod/CAM/libarea/Adaptive.cpp similarity index 99% rename from src/Mod/Path/libarea/Adaptive.cpp rename to src/Mod/CAM/libarea/Adaptive.cpp index 0986a64d3a..0f96b56465 100644 --- a/src/Mod/Path/libarea/Adaptive.cpp +++ b/src/Mod/CAM/libarea/Adaptive.cpp @@ -147,6 +147,27 @@ inline DoublePoint GetPathDirectionV(const Path &pth, size_t pointIndex) return DirectionV(p1, p2); } +// Returns true if points 'a' and 'b' are coincident or nearly so. +bool isClose(const IntPoint &a, const IntPoint &b) { + return abs(a.X - b.X) <= 1 && abs(a.Y - b.Y) <= 1; +} + +// Remove coincident and almost-coincident points from Paths. +void filterCloseValues(Paths &ppg) { + for (auto& pth : ppg) { + while (true) { + auto i = std::adjacent_find(pth.begin(), pth.end(), isClose); + if (i == pth.end()) + break; + pth.erase(i); + } + // adjacent_find doesn't compare first with last element, so + // do that manually. + while (pth.size() > 1 && isClose(pth.front(), pth.back())) + pth.pop_back(); + } +} + //***************************************** // Utils //***************************************** @@ -1654,9 +1675,11 @@ void Adaptive2d::ApplyStockToLeave(Paths &inputPaths) clipof.Clear(); clipof.AddPaths(inputPaths, JoinType::jtRound, EndType::etClosedPolygon); clipof.Execute(inputPaths, -1); + filterCloseValues(inputPaths); clipof.Clear(); clipof.AddPaths(inputPaths, JoinType::jtRound, EndType::etClosedPolygon); clipof.Execute(inputPaths, 1); + filterCloseValues(inputPaths); } } diff --git a/src/Mod/Path/libarea/Adaptive.hpp b/src/Mod/CAM/libarea/Adaptive.hpp similarity index 100% rename from src/Mod/Path/libarea/Adaptive.hpp rename to src/Mod/CAM/libarea/Adaptive.hpp diff --git a/src/Mod/Path/libarea/Arc.cpp b/src/Mod/CAM/libarea/Arc.cpp similarity index 100% rename from src/Mod/Path/libarea/Arc.cpp rename to src/Mod/CAM/libarea/Arc.cpp diff --git a/src/Mod/Path/libarea/Arc.h b/src/Mod/CAM/libarea/Arc.h similarity index 100% rename from src/Mod/Path/libarea/Arc.h rename to src/Mod/CAM/libarea/Arc.h diff --git a/src/Mod/Path/libarea/Area.cpp b/src/Mod/CAM/libarea/Area.cpp similarity index 87% rename from src/Mod/Path/libarea/Area.cpp rename to src/Mod/CAM/libarea/Area.cpp index 4346eb18a0..3b0f12b8c3 100644 --- a/src/Mod/Path/libarea/Area.cpp +++ b/src/Mod/CAM/libarea/Area.cpp @@ -624,11 +624,108 @@ void CArea::MakePocketToolpath(std::list &curve_list, const CAreaPocketP if(params.mode == SingleOffsetPocketMode || params.mode == ZigZagThenSingleOffsetPocketMode) { + // if there are already curves, attempt to start the offset from the current tool position + bool done = false; + if (!curve_list.empty() && !curve_list.back().m_vertices.empty()) { + // find the closest curve to the start point + const Point start = curve_list.back().m_vertices.back().m_p; + auto curve_itmin = a_offset.m_curves.begin(); + double dmin = Point::tolerance; + for (auto it = a_offset.m_curves.begin(); it != a_offset.m_curves.end(); it++) { + const double dist = it->NearestPoint(start).dist(start); + if (dist < dmin) { + dmin = dist; + curve_itmin = it; + } + } + + // if the start point is on that curve (within Point::tolerance), do the profile starting on that curve + if (dmin < Point::tolerance) { + // split the curve into two parts -- starting with this point, and ending with this point + CCurve startCurve; + CCurve endCurve; + + std::list spans; + curve_itmin->GetSpans(spans); + int imin = -1; + double dmin = std::numeric_limits::max(); + Point nmin; + Span smin; + { + int i = 0; + for (auto it = spans.begin(); it != spans.end(); i++, it++) { + const Point nearest = it->NearestPoint(start); + const double dist = nearest.dist(start); + if (dist < dmin) { + dmin = dist; + imin = i; + nmin = nearest; + smin = *it; + } + } + } + + startCurve.append(CVertex(nmin)); + endCurve.append(curve_itmin->m_vertices.front()); + { + int i =0; + for (auto it = spans.begin(); it != spans.end(); i++, it++) { + if (i < imin) { + endCurve.append(it->m_v); + } else if (i > imin) { + startCurve.append(it->m_v); + } else { + if (nmin != endCurve.m_vertices.back().m_p) { + endCurve.append(CVertex(smin.m_v.m_type, nmin, smin.m_v.m_c, smin.m_v.m_user_data)); + } + if (nmin != it->m_v.m_p) { + startCurve.append(CVertex(smin.m_v.m_type, it->m_v.m_p, smin.m_v.m_c, smin.m_v.m_user_data)); + } + } + } + } + + // append curves to the curve list: start curve, other curves wrapping around, end curve + const auto appendCurve = [&curve_list](const CCurve &curve) { + if (curve_list.size() > 0 && curve_list.back().m_vertices.back().m_p == curve.m_vertices.front().m_p) { + auto it = curve.m_vertices.begin(); + for (it++; it != curve.m_vertices.end(); it++) { + curve_list.back().append(*it); + } + } else { + curve_list.push_back(curve); + } + }; + + if (startCurve.m_vertices.size() > 1) { + appendCurve(startCurve); + } + { + auto it = curve_itmin; + for(it++; it != a_offset.m_curves.end(); it++) { + appendCurve(*it); + } + } + for(auto it = a_offset.m_curves.begin(); it != curve_itmin; it++) { + appendCurve(*it); + } + if (endCurve.m_vertices.size() > 1) { + appendCurve(endCurve); + } + + + done = true; + } + } + // add the single offset too - for(std::list::iterator It = a_offset.m_curves.begin(); It != a_offset.m_curves.end(); It++) + if (!done) { - CCurve& curve = *It; - curve_list.push_back(curve); + for(std::list::iterator It = a_offset.m_curves.begin(); It != a_offset.m_curves.end(); It++) + { + CCurve& curve = *It; + curve_list.push_back(curve); + } } } } diff --git a/src/Mod/Path/libarea/Area.h b/src/Mod/CAM/libarea/Area.h similarity index 100% rename from src/Mod/Path/libarea/Area.h rename to src/Mod/CAM/libarea/Area.h diff --git a/src/Mod/Path/libarea/AreaClipper.cpp b/src/Mod/CAM/libarea/AreaClipper.cpp similarity index 100% rename from src/Mod/Path/libarea/AreaClipper.cpp rename to src/Mod/CAM/libarea/AreaClipper.cpp diff --git a/src/Mod/Path/libarea/AreaDxf.cpp b/src/Mod/CAM/libarea/AreaDxf.cpp similarity index 100% rename from src/Mod/Path/libarea/AreaDxf.cpp rename to src/Mod/CAM/libarea/AreaDxf.cpp diff --git a/src/Mod/Path/libarea/AreaDxf.h b/src/Mod/CAM/libarea/AreaDxf.h similarity index 100% rename from src/Mod/Path/libarea/AreaDxf.h rename to src/Mod/CAM/libarea/AreaDxf.h diff --git a/src/Mod/Path/libarea/AreaOrderer.cpp b/src/Mod/CAM/libarea/AreaOrderer.cpp similarity index 100% rename from src/Mod/Path/libarea/AreaOrderer.cpp rename to src/Mod/CAM/libarea/AreaOrderer.cpp diff --git a/src/Mod/Path/libarea/AreaOrderer.h b/src/Mod/CAM/libarea/AreaOrderer.h similarity index 100% rename from src/Mod/Path/libarea/AreaOrderer.h rename to src/Mod/CAM/libarea/AreaOrderer.h diff --git a/src/Mod/Path/libarea/AreaPocket.cpp b/src/Mod/CAM/libarea/AreaPocket.cpp similarity index 100% rename from src/Mod/Path/libarea/AreaPocket.cpp rename to src/Mod/CAM/libarea/AreaPocket.cpp diff --git a/src/Mod/Path/libarea/Box2D.h b/src/Mod/CAM/libarea/Box2D.h similarity index 100% rename from src/Mod/Path/libarea/Box2D.h rename to src/Mod/CAM/libarea/Box2D.h diff --git a/src/Mod/Path/libarea/CMakeLists.txt b/src/Mod/CAM/libarea/CMakeLists.txt similarity index 98% rename from src/Mod/Path/libarea/CMakeLists.txt rename to src/Mod/CAM/libarea/CMakeLists.txt index 62118bc7a0..d892d72705 100644 --- a/src/Mod/Path/libarea/CMakeLists.txt +++ b/src/Mod/CAM/libarea/CMakeLists.txt @@ -156,7 +156,7 @@ else(MSVC) endif(MSVC) target_link_libraries(area-native ${area_native_LIBS} Import) -SET_BIN_DIR(area-native area-native /Mod/Path) +SET_BIN_DIR(area-native area-native /Mod/CAM) target_link_libraries(area area-native ${area_LIBS} ${area_native_LIBS}) @@ -166,7 +166,7 @@ if(NOT BUILD_DYNAMIC_LINK_PYTHON AND CMAKE_COMPILER_IS_CLANGXX) target_link_libraries(area "-Wl,-undefined,dynamic_lookup") endif() -SET_BIN_DIR(area area /Mod/Path) +SET_BIN_DIR(area area /Mod/CAM) SET_PYTHON_PREFIX_SUFFIX(area) # this figures out where to install the Python modules diff --git a/src/Mod/Path/libarea/Circle.cpp b/src/Mod/CAM/libarea/Circle.cpp similarity index 100% rename from src/Mod/Path/libarea/Circle.cpp rename to src/Mod/CAM/libarea/Circle.cpp diff --git a/src/Mod/Path/libarea/Circle.h b/src/Mod/CAM/libarea/Circle.h similarity index 100% rename from src/Mod/Path/libarea/Circle.h rename to src/Mod/CAM/libarea/Circle.h diff --git a/src/Mod/Path/libarea/Curve.cpp b/src/Mod/CAM/libarea/Curve.cpp similarity index 100% rename from src/Mod/Path/libarea/Curve.cpp rename to src/Mod/CAM/libarea/Curve.cpp diff --git a/src/Mod/Path/libarea/Curve.h b/src/Mod/CAM/libarea/Curve.h similarity index 100% rename from src/Mod/Path/libarea/Curve.h rename to src/Mod/CAM/libarea/Curve.h diff --git a/src/Mod/Path/libarea/Point.h b/src/Mod/CAM/libarea/Point.h similarity index 100% rename from src/Mod/Path/libarea/Point.h rename to src/Mod/CAM/libarea/Point.h diff --git a/src/Mod/Path/libarea/PythonStuff.cpp b/src/Mod/CAM/libarea/PythonStuff.cpp similarity index 100% rename from src/Mod/Path/libarea/PythonStuff.cpp rename to src/Mod/CAM/libarea/PythonStuff.cpp diff --git a/src/Mod/Path/libarea/PythonStuff.h b/src/Mod/CAM/libarea/PythonStuff.h similarity index 100% rename from src/Mod/Path/libarea/PythonStuff.h rename to src/Mod/CAM/libarea/PythonStuff.h diff --git a/src/Mod/Path/libarea/clipper.cpp b/src/Mod/CAM/libarea/clipper.cpp similarity index 100% rename from src/Mod/Path/libarea/clipper.cpp rename to src/Mod/CAM/libarea/clipper.cpp diff --git a/src/Mod/Path/libarea/clipper.hpp b/src/Mod/CAM/libarea/clipper.hpp similarity index 100% rename from src/Mod/Path/libarea/clipper.hpp rename to src/Mod/CAM/libarea/clipper.hpp diff --git a/src/Mod/Path/libarea/kurve/Construction.cpp b/src/Mod/CAM/libarea/kurve/Construction.cpp similarity index 100% rename from src/Mod/Path/libarea/kurve/Construction.cpp rename to src/Mod/CAM/libarea/kurve/Construction.cpp diff --git a/src/Mod/Path/libarea/kurve/Finite.cpp b/src/Mod/CAM/libarea/kurve/Finite.cpp similarity index 100% rename from src/Mod/Path/libarea/kurve/Finite.cpp rename to src/Mod/CAM/libarea/kurve/Finite.cpp diff --git a/src/Mod/Path/libarea/kurve/License.txt b/src/Mod/CAM/libarea/kurve/License.txt similarity index 100% rename from src/Mod/Path/libarea/kurve/License.txt rename to src/Mod/CAM/libarea/kurve/License.txt diff --git a/src/Mod/Path/libarea/kurve/Matrix.cpp b/src/Mod/CAM/libarea/kurve/Matrix.cpp similarity index 100% rename from src/Mod/Path/libarea/kurve/Matrix.cpp rename to src/Mod/CAM/libarea/kurve/Matrix.cpp diff --git a/src/Mod/Path/libarea/kurve/README b/src/Mod/CAM/libarea/kurve/README similarity index 100% rename from src/Mod/Path/libarea/kurve/README rename to src/Mod/CAM/libarea/kurve/README diff --git a/src/Mod/Path/libarea/kurve/geometry.h b/src/Mod/CAM/libarea/kurve/geometry.h similarity index 100% rename from src/Mod/Path/libarea/kurve/geometry.h rename to src/Mod/CAM/libarea/kurve/geometry.h diff --git a/src/Mod/Path/libarea/kurve/kurve.cpp b/src/Mod/CAM/libarea/kurve/kurve.cpp similarity index 100% rename from src/Mod/Path/libarea/kurve/kurve.cpp rename to src/Mod/CAM/libarea/kurve/kurve.cpp diff --git a/src/Mod/Path/libarea/kurve/offset.cpp b/src/Mod/CAM/libarea/kurve/offset.cpp similarity index 100% rename from src/Mod/Path/libarea/kurve/offset.cpp rename to src/Mod/CAM/libarea/kurve/offset.cpp diff --git a/src/Mod/Path/libarea/kurve/test.py b/src/Mod/CAM/libarea/kurve/test.py similarity index 100% rename from src/Mod/Path/libarea/kurve/test.py rename to src/Mod/CAM/libarea/kurve/test.py diff --git a/src/Mod/Path/libarea/pyarea.cpp b/src/Mod/CAM/libarea/pyarea.cpp similarity index 100% rename from src/Mod/Path/libarea/pyarea.cpp rename to src/Mod/CAM/libarea/pyarea.cpp diff --git a/src/Mod/Path/path.dox b/src/Mod/CAM/path.dox similarity index 100% rename from src/Mod/Path/path.dox rename to src/Mod/CAM/path.dox diff --git a/src/Mod/CMakeLists.txt b/src/Mod/CMakeLists.txt index 5ca5e95a80..896402098f 100644 --- a/src/Mod/CMakeLists.txt +++ b/src/Mod/CMakeLists.txt @@ -71,7 +71,7 @@ if(BUILD_PART_DESIGN) endif(BUILD_PART_DESIGN) if(BUILD_PATH) - add_subdirectory(Path) + add_subdirectory(CAM) endif(BUILD_PATH) if(BUILD_PLOT) diff --git a/src/Mod/Cloud/App/AppCloud.cpp b/src/Mod/Cloud/App/AppCloud.cpp index bdbc52485f..122c82a72f 100644 --- a/src/Mod/Cloud/App/AppCloud.cpp +++ b/src/Mod/Cloud/App/AppCloud.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -611,9 +612,7 @@ char* Cloud::SHA256Sum(const char* ptr, long size) std::string local; std::string resultReadable; unsigned char result[SHA256_DIGEST_LENGTH]; - char* Hex; output = (char*)malloc(2 * SHA256_DIGEST_LENGTH * sizeof(char) + 1); - Hex = (char*)malloc(2 * sizeof(char) + 1); SHA256((unsigned char*)ptr, size, result); strcpy(output, getHexValue(result, SHA256_DIGEST_LENGTH).c_str()); @@ -1359,7 +1358,7 @@ bool Cloud::Module::cloudSave(const char* BucketName) doc->TipName.setValue(doc->Tip.getValue()->getNameInDocument()); } - std::string LastModifiedDateString = Base::TimeInfo::currentDateTimeString(); + std::string LastModifiedDateString = Base::Tools::currentDateTimeString(); doc->LastModifiedDate.setValue(LastModifiedDateString.c_str()); // set author if needed bool saveAuthor = App::GetApplication() diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 4748012a98..ab7b827a10 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -160,6 +160,7 @@ class DraftToolBar: def __init__(self): self.tray = None self.sourceCmd = None + self.mouse = True self.cancel = None self.pointcallback = None @@ -1096,6 +1097,8 @@ class DraftToolBar: if txt == "" or txt[0] in "0123456789.,-": self.updateSnapper() + if txt[0] in "0123456789.,-": + self.setMouseMode(False) return txt = txt[0].upper() @@ -1207,6 +1210,20 @@ class DraftToolBar: FreeCAD.Vector(self.x,self.y,self.z)) FreeCADGui.Snapper.trackLine.p2(last.add(delta)) + def setMouseMode(self, mode=True): + """Sets self.mouse True (default) or False and sets a timer + to set it back to True if applicable. self.mouse is then + used by gui_tools_utils.get_point() to know if the mouse can + update field values and point position or not.""" + if mode == True: + self.mouse = True + else: + delay = params.get_param("MouseDelay") + if delay: + if self.mouse is True: + self.mouse = False + QtCore.QTimer.singleShot(delay*1000, self.setMouseMode) + def checkEnterText(self): """this function checks if the entered text ends with two blank lines""" t = self.textValue.toPlainText() @@ -1590,7 +1607,7 @@ class DraftToolBar: "Draft_Scale","Draft_Offset", "Draft_Trimex","Draft_Upgrade", "Draft_Downgrade","Draft_Edit"] - self.title = "Modify objects" + self.title = translate("draft", "Modify objects") def shouldShow(self): return (FreeCAD.ActiveDocument is not None) and (FreeCADGui.Selection.getSelection() != []) diff --git a/src/Mod/Draft/Resources/translations/Draft.ts b/src/Mod/Draft/Resources/translations/Draft.ts index 8eb7ab3326..8aa8c5973a 100644 --- a/src/Mod/Draft/Resources/translations/Draft.ts +++ b/src/Mod/Draft/Resources/translations/Draft.ts @@ -1501,6 +1501,7 @@ pattern definitions to be added to the standard patterns + @@ -1508,7 +1509,6 @@ pattern definitions to be added to the standard patterns - mm @@ -1606,8 +1606,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100. - + px @@ -1918,9 +1918,9 @@ from the Addon Manager. - - + + Import options @@ -2129,8 +2129,8 @@ If it is set to '0' the whole spline is treated as a straight segment. - + Export options @@ -2399,8 +2399,8 @@ These lines are thicker than normal grid lines. - + Automatic @@ -3306,23 +3306,23 @@ To enabled FreeCAD to download these libraries, answer Yes. - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. @@ -3483,9 +3483,9 @@ To enabled FreeCAD to download these libraries, answer Yes. - - + + Pick first point @@ -3506,8 +3506,6 @@ To enabled FreeCAD to download these libraries, answer Yes. - - @@ -3515,6 +3513,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point @@ -3719,6 +3719,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor + + + Create new style + + + + + Style name: + + + + + Style name required + + + + + No style name specified + + + + + + Style exists + + + + + + This style name already exists + + + + + Style in use + + + + + This style is used by some objects in this document. Are you sure? + + + + + Rename style + + + + + New name: + + Open styles file @@ -3923,8 +3975,8 @@ The final angle will be the base angle plus this amount. - + Pick distance @@ -3964,9 +4016,9 @@ The final angle will be the base angle plus this amount. + - Last point has been removed @@ -4352,8 +4404,8 @@ The final angle will be the base angle plus this amount. - + Select an object to upgrade @@ -4408,9 +4460,9 @@ The final angle will be the base angle plus this amount. - - + + Task panel: @@ -4421,26 +4473,26 @@ The final angle will be the base angle plus this amount. - - + + At least one element must be selected. - - + + Selection is not suitable for array. - - - - + + + + Object: @@ -4460,16 +4512,16 @@ The final angle will be the base angle plus this amount. - - + + Fuse: - - + + Create Link array: @@ -4484,8 +4536,8 @@ The final angle will be the base angle plus this amount. - + Center of rotation: @@ -4741,11 +4793,11 @@ The final angle will be the base angle plus this amount. - - + + Wrong input: base_object not in document. @@ -4757,19 +4809,22 @@ The final angle will be the base angle plus this amount. - - - + + + Wrong input: must be a number. - + + + + @@ -4779,10 +4834,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. @@ -4810,8 +4862,8 @@ The final angle will be the base angle plus this amount. - + Wrong input: must be an integer number. @@ -5222,9 +5274,9 @@ The final angle will be the base angle plus this amount. - - + + renamed 'DisplayMode' options to 'World/Screen' @@ -5424,16 +5476,16 @@ from menu Tools -> Addon Manager - - + + True - - + + False @@ -6924,19 +6976,19 @@ set True for fusion or False for compound - + Create a face - - + + The area of this object @@ -6980,8 +7032,8 @@ set True for fusion or False for compound - + The object along which the copies will be distributed. It must contain 'Edges'. @@ -6996,9 +7048,9 @@ set True for fusion or False for compound - - + + Show the individual array elements (only for Link arrays) @@ -7093,8 +7145,8 @@ they will only be editable by changing the style through the 'Annotation st - + The base object that will be duplicated @@ -7837,14 +7889,14 @@ Use 'arch' to force US arch notation - + Arrow size - + Arrow type diff --git a/src/Mod/Draft/Resources/translations/Draft_be.qm b/src/Mod/Draft/Resources/translations/Draft_be.qm index 853c6c084e..ae7aef03a6 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_be.qm and b/src/Mod/Draft/Resources/translations/Draft_be.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_be.ts b/src/Mod/Draft/Resources/translations/Draft_be.ts index 66e67bcac0..f22dbef405 100644 --- a/src/Mod/Draft/Resources/translations/Draft_be.ts +++ b/src/Mod/Draft/Resources/translations/Draft_be.ts @@ -1544,6 +1544,7 @@ pattern definitions to be added to the standard patterns Памер шрыфту + @@ -1551,7 +1552,6 @@ pattern definitions to be added to the standard patterns - mm мм @@ -1655,8 +1655,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.Першапачатковая шырыня лініі - + px пікселяў @@ -1979,9 +1979,9 @@ from the Addon Manager. Дазволіць FreeCAD аўтаматычна спампоўваць і абнаўляць бібліятэкі DXF - - + + Import options Налады імпартавання @@ -2195,8 +2195,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Калі ён усталяваны ў '0', то ўвесь сплайн апрацоўваецца як прамы сегмент. - + Export options Налады экспартавання @@ -2472,8 +2472,8 @@ These lines are thicker than normal grid lines. Абярыце службовую праграму "dwg2dxf", калі ўжываеце LibreDWG, "ODAFileConverter", калі ўжываеце сродак пераўтварэння файлаў ODA, ці службовую праграму "dwg2dwg", калі ўжываеце QCAD pro. - + Automatic Аўтаматычна @@ -3391,23 +3391,23 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Задайце маштаб, які ўжываецца інструментамі заметкі Чарнавіка - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Без бягучага дакументу. Перарываецца. @@ -3568,9 +3568,9 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Выберыце становішча тэксту - - + + Pick first point Выберыце першую кропку @@ -3591,8 +3591,6 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Ломаная лінія - - @@ -3600,6 +3598,8 @@ https://github.com/yorikvanhavre/Draft-dxf-importer + + Pick next point Выберыце наступную кропку @@ -3804,6 +3804,58 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Annotation style editor Рэдактар стылю заметак + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4009,8 +4061,8 @@ The final angle will be the base angle plus this amount. Абярыце аб'ект, каб абрэзаць ці выцягнуць - + Pick distance Выберыце адлегласць @@ -4050,9 +4102,9 @@ The final angle will be the base angle plus this amount. Сплайн быў замкнуты + - Last point has been removed Апошняя кропка была выдаленая @@ -4438,8 +4490,8 @@ The final angle will be the base angle plus this amount. Змяніць ухіл - + Select an object to upgrade Абярыце аб'ект для абнаўлення @@ -4494,9 +4546,9 @@ The final angle will be the base angle plus this amount. Разбіць - - + + Task panel: Панэль задач: @@ -4507,26 +4559,26 @@ The final angle will be the base angle plus this amount. Палярная сетка - - + + At least one element must be selected. Павінна быць абрана, па меншай меры, адзін элемент. - - + + Selection is not suitable for array. Выбар не падыходзіць для масіву. - - - - + + + + Object: Аб'ект: @@ -4546,16 +4598,16 @@ The final angle will be the base angle plus this amount. Вугал ніжэй 360 градусаў. Для працягу зададзена гэтае значэнне. - - + + Fuse: Аб'яднаць: - - + + Create Link array: Стварыць Сетку спасылак: @@ -4570,8 +4622,8 @@ The final angle will be the base angle plus this amount. Палярны вугал: - + Center of rotation: Цэнтр вярчэння: @@ -4827,11 +4879,11 @@ The final angle will be the base angle plus this amount. Не атрымалася зрабіць фігуру: - - + + Wrong input: base_object not in document. Няправільны ўвод: адсутнічае base_object у дакуменце. @@ -4843,19 +4895,22 @@ The final angle will be the base angle plus this amount. Няправільны ўвод: адсутнічае path_object у дакуменце. - - - + + + Wrong input: must be a number. Няправільны ўвод: павінен быць лік. - + + + + @@ -4865,10 +4920,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Няправільны ўвод: павінен быць вектар. @@ -4896,8 +4948,8 @@ The final angle will be the base angle plus this amount. Увод: адно значэнне, які пашыраны ў вектар. - + Wrong input: must be an integer number. Няправільны ўвод: павінен быць цэлы лік. @@ -5308,9 +5360,9 @@ The final angle will be the base angle plus this amount. дададзена ўласцівасць выгляду 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' налада 'DisplayMode' пераназваная ў 'World/Screen' @@ -5511,16 +5563,16 @@ from menu Tools -> Addon Manager Напрамак зрушэння не вызначана. Калі ласка, спачатку навядзіце курсор мышы на любы бок ад аб'екта, каб паказаць напрамак - - + + True Ісціна - - + + False Хлусня @@ -7093,19 +7145,19 @@ set True for fusion or False for compound - + Create a face Стварыць грань - - + + The area of this object Плошча аб'екту @@ -7149,8 +7201,8 @@ set True for fusion or False for compound Асноўны аб'ект, які будзе паўтарацца. - + The object along which the copies will be distributed. It must contain 'Edges'. Аб'ект, па якім будуць распаўсюджвацца копіі. Ён павінен утрымліваць 'Рэбры'. @@ -7165,9 +7217,9 @@ set True for fusion or False for compound Каэфіцыент павароту скручанай сеткі. - - + + Show the individual array elements (only for Link arrays) Паказваць асобныя элементы масіва (толькі для 'Сетак спасылак') @@ -7286,8 +7338,8 @@ they will only be editable by changing the style through the 'Annotation style e Пры ўжыванні захаванага стылю некаторыя ўласцівасці прадстаўлення стануць даступныя толькі для чытання; іх можна будзе мяняць, толькі калі змяніць стыль з дапамогай інструмента 'Рэдактар стыляў заметкі'. - + The base object that will be duplicated Асноўны аб'ект, які будзе паўторацца @@ -8078,14 +8130,14 @@ Use 'arch' to force US arch notation Ужывайце 'arch' для абазначэння архітэктурнай ЗША - + Arrow size Памер стрэлкі - + Arrow type Тып стрэлкі diff --git a/src/Mod/Draft/Resources/translations/Draft_ca.qm b/src/Mod/Draft/Resources/translations/Draft_ca.qm index 8bbc93a5f2..5c4a9060d7 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_ca.qm and b/src/Mod/Draft/Resources/translations/Draft_ca.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_ca.ts b/src/Mod/Draft/Resources/translations/Draft_ca.ts index a63cfda1b7..6401b4633b 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ca.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ca.ts @@ -1539,6 +1539,7 @@ pattern definitions to be added to the standard patterns Mida del tipus de lletra + @@ -1546,7 +1547,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1647,8 +1647,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1967,9 +1967,9 @@ del gestor de complements. Permeten a FreeCAD automàticament descarregar i actualitzar les biblioteques DXF - - + + Import options Opcions d'importació @@ -2179,8 +2179,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Longitud màxima de cadascun dels segments de la polilínia. Si s'estableix en «0», l'spline sencer es tracta com un segment recte. - + Export options Opcions d'exportació @@ -2456,8 +2456,8 @@ These lines are thicker than normal grid lines. Aquest és el mètode que utilitzarà FreeCAD per convertir fitxers DWG a DXF. Si s'escull "Automàtic", FreeCAD intentarà trobar un dels convertidors següents en el mateix ordre que es mostren aquí. Si FreeCAD no en troba cap, és possible que hàgiu de triar un convertidor específic i indicar-ne el camí aquí a continuació. Trieu la utilitat "dwg2dxf" si feu servir LibreDWG, "ODAFileConverter" si feu servir el convertidor de fitxers ODA o la utilitat "dwg2dwg" si feu servir la versió professional de QCAD. - + Automatic Automàtica @@ -3370,23 +3370,23 @@ Per habilitar FreeCAD a descarregar aquestes llibreries, respongui Si.Estableix l'escala utilitzada per les eines d'anotació d'esborranys - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Cap document actiu. Avortant. @@ -3547,9 +3547,9 @@ Per habilitar FreeCAD a descarregar aquestes llibreries, respongui Si.Trieu la posició del text - - + + Pick first point Trieu el primer punt @@ -3570,8 +3570,6 @@ Per habilitar FreeCAD a descarregar aquestes llibreries, respongui Si.Polyline - - @@ -3579,6 +3577,8 @@ Per habilitar FreeCAD a descarregar aquestes llibreries, respongui Si. + + Pick next point Tria el següent punt @@ -3783,6 +3783,58 @@ Per habilitar FreeCAD a descarregar aquestes llibreries, respongui Si.Annotation style editor Editor d'estils d'anotació + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -3988,8 +4040,8 @@ L'angle final serà l'angle de base més aquesta quantitat. Seleccioneu objecte(s) per a retallar o allargar - + Pick distance Tria la distància @@ -4029,9 +4081,9 @@ L'angle final serà l'angle de base més aquesta quantitat. S'ha tancat la Spline + - Last point has been removed S'ha esborrat l'últim punt @@ -4417,8 +4469,8 @@ L'angle final serà l'angle de base més aquesta quantitat. Canvia el pendent - + Select an object to upgrade Select an object to upgrade @@ -4473,9 +4525,9 @@ L'angle final serà l'angle de base més aquesta quantitat. Downgrade - - + + Task panel: Task panel: @@ -4486,26 +4538,26 @@ L'angle final serà l'angle de base més aquesta quantitat. Matriu polar - - + + At least one element must be selected. Com a mínim s'ha de seleccionar un element. - - + + Selection is not suitable for array. La selecció no és apta per a una matriu. - - - - + + + + Object: Objecte: @@ -4525,16 +4577,16 @@ L'angle final serà l'angle de base més aquesta quantitat. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4549,8 +4601,8 @@ L'angle final serà l'angle de base més aquesta quantitat. Angle polar: - + Center of rotation: Centre de rotació: @@ -4806,11 +4858,11 @@ L'angle final serà l'angle de base més aquesta quantitat. No es pot generar la forma: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4822,19 +4874,22 @@ L'angle final serà l'angle de base més aquesta quantitat. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Entrada incorrecta: ha de ser un nombre. - + + + + @@ -4844,10 +4899,7 @@ L'angle final serà l'angle de base més aquesta quantitat. - - - - + Wrong input: must be a vector. Entrada incorrecta: ha de ser un vector. @@ -4875,8 +4927,8 @@ L'angle final serà l'angle de base més aquesta quantitat. Input: single value expanded to vector. - + Wrong input: must be an integer number. Entrada incorrecta: ha de ser un nombre enter. @@ -5287,9 +5339,9 @@ L'angle final serà l'angle de base més aquesta quantitat. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5492,16 +5544,16 @@ from menu Tools -> Addon Manager La direcció d'equidistància no ha sigut definida. Per favor, mou el cursor a un costat o altre de l'objecte per indicar-ne la direcció - - + + True Cert - - + + False Fals @@ -7080,19 +7132,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7136,8 +7188,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7152,9 +7204,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7283,8 +7335,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8087,14 +8139,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Mida de la fletxa - + Arrow type Tipus de fletxa diff --git a/src/Mod/Draft/Resources/translations/Draft_cs.qm b/src/Mod/Draft/Resources/translations/Draft_cs.qm index e1682260c4..ac42b56049 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_cs.qm and b/src/Mod/Draft/Resources/translations/Draft_cs.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_cs.ts b/src/Mod/Draft/Resources/translations/Draft_cs.ts index 1f75576679..c6628b2f44 100644 --- a/src/Mod/Draft/Resources/translations/Draft_cs.ts +++ b/src/Mod/Draft/Resources/translations/Draft_cs.ts @@ -1545,6 +1545,7 @@ pattern definitions to be added to the standard patterns Velikost písma + @@ -1552,7 +1553,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1653,8 +1653,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1976,9 +1976,9 @@ ze Správce doplňků. Povolit FreeCADu automaticky stáhnout a aktualizovat DXF knihovny - - + + Import options Možnosti importu @@ -2196,8 +2196,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Pokud je nastavena na '0', celý spline se považuje za přímý segment. - + Export options Možnosti exportu @@ -2474,8 +2474,8 @@ These lines are thicker than normal grid lines. Toto je metoda, kterou FreeCAD použije k převodu souborů DWG do DXF. Pokud je zvoleno "Automaticky", FreeCAD se pokusí najít jeden z následujících převodníků ve stejném pořadí, v jakém jsou uvedeny zde. Pokud FreeCAD nemůže žádný najít, možná budete muset vybrat konkrétní převodník a uvést jeho cestu zde pod. Vyberte nástroj "dwg2dxf", pokud používáte LibreDWG, "ODAFileConverter", pokud používáte konvertor souborů ODA, nebo nástroj "dwg2dwg", pokud používáte profesionální verzi QCAD. - + Automatic Automaticky @@ -3396,23 +3396,23 @@ Chcete-li povolit FreeCAD stahování těchto knihoven, odpovězte Ano.Nastavte měřítko používané nástroji pro poznámky návrhu - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Žádný aktivní dokument. Přerušení. @@ -3573,9 +3573,9 @@ Chcete-li povolit FreeCAD stahování těchto knihoven, odpovězte Ano.Vyberte polohu textu - - + + Pick first point Vyberte první bod @@ -3596,8 +3596,6 @@ Chcete-li povolit FreeCAD stahování těchto knihoven, odpovězte Ano.Lomená čára - - @@ -3605,6 +3603,8 @@ Chcete-li povolit FreeCAD stahování těchto knihoven, odpovězte Ano. + + Pick next point Vybrat další bod @@ -3809,6 +3809,58 @@ Chcete-li povolit FreeCAD stahování těchto knihoven, odpovězte Ano.Annotation style editor Editor stylu poznámky + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4014,8 +4066,8 @@ Konečný úhel bude základní úhel plus tato hodnota. Vyberte objekty, které chcete oříznout nebo prodloužit - + Pick distance Vyberte vzdálenost @@ -4055,9 +4107,9 @@ Konečný úhel bude základní úhel plus tato hodnota. Spline byl uzavřen + - Last point has been removed Poslední bod byl odstraněn @@ -4443,8 +4495,8 @@ Konečný úhel bude základní úhel plus tato hodnota. Změnit sklon - + Select an object to upgrade Vyberte objekt, který chcete upgradovat @@ -4499,9 +4551,9 @@ Konečný úhel bude základní úhel plus tato hodnota. Přejít na nižší verzi - - + + Task panel: Panel úkolů: @@ -4512,26 +4564,26 @@ Konečný úhel bude základní úhel plus tato hodnota. Polární pole - - + + At least one element must be selected. Musí být vybrán alespoň jeden prvek. - - + + Selection is not suitable for array. Výběr není vhodný pro pole. - - - - + + + + Object: Objekt: @@ -4551,16 +4603,16 @@ Konečný úhel bude základní úhel plus tato hodnota. Úhel je pod -360 stupňů. Pro pokračování je nastavena na tuto hodnotu. - - + + Fuse: Pojistka: - - + + Create Link array: Vytvořit pole odkazů: @@ -4575,8 +4627,8 @@ Konečný úhel bude základní úhel plus tato hodnota. Polární úhel: - + Center of rotation: Střed otáčení: @@ -4832,11 +4884,11 @@ Konečný úhel bude základní úhel plus tato hodnota. Nelze vygenerovat tvar: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4848,19 +4900,22 @@ Konečný úhel bude základní úhel plus tato hodnota. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Chybné zadání: musí to být číslo. - + + + + @@ -4870,10 +4925,7 @@ Konečný úhel bude základní úhel plus tato hodnota. - - - - + Wrong input: must be a vector. Chybný vstup: musí to být vektor. @@ -4901,8 +4953,8 @@ Konečný úhel bude základní úhel plus tato hodnota. Vstup: jedna hodnota rozšířena na vektor. - + Wrong input: must be an integer number. Chybný vstup: musí to být celé číslo. @@ -5313,9 +5365,9 @@ Konečný úhel bude základní úhel plus tato hodnota. přidána vlastnost zobrazení 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' přejmenoval možnosti 'DisplayMode' na 'World/Screen' @@ -5518,16 +5570,16 @@ z nabídky Nástroje -> Správce doplňků Směr odsazení není definován. Nejprve pohybujte myší na obě strany objektu, abyste označili směr - - + + True Pravda - - + + False Nepravda @@ -7107,19 +7159,19 @@ nastavte True pro fúzi nebo False pro sloučeninu - + Create a face Vytvořte obličej - - + + The area of this object Rozloha tohoto objektu @@ -7163,8 +7215,8 @@ nastavte True pro fúzi nebo False pro sloučeninu Základní objekt, který bude duplikován. - + The object along which the copies will be distributed. It must contain 'Edges'. Objekt, podél kterého budou kopie distribuovány. Musí obsahovat 'Edges'. @@ -7179,9 +7231,9 @@ nastavte True pro fúzi nebo False pro sloučeninu Rotační faktor krouceného pole. - - + + Show the individual array elements (only for Link arrays) Zobrazit jednotlivé prvky pole (pouze pro pole Link) @@ -7310,8 +7362,8 @@ Při použití uloženého stylu se některé vlastnosti pohledu stanou pouze pr budou upravitelné pouze změnou stylu pomocí nástroje 'Editor stylu poznámky'. - + The base object that will be duplicated Základní objekt, který bude duplikován @@ -8114,14 +8166,14 @@ Pro výchozí nastavení systému ponechte prázdné. Použijte 'oblouk' k vynucení americké obloukové notace - + Arrow size Velikost šipky - + Arrow type Typ šipky @@ -8186,7 +8238,7 @@ za kótovací čárou Draft - Návrh + Zkosení diff --git a/src/Mod/Draft/Resources/translations/Draft_de.qm b/src/Mod/Draft/Resources/translations/Draft_de.qm index db7ff160f1..82a04a3362 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_de.qm and b/src/Mod/Draft/Resources/translations/Draft_de.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_de.ts b/src/Mod/Draft/Resources/translations/Draft_de.ts index 4af6311262..1c6de6a109 100644 --- a/src/Mod/Draft/Resources/translations/Draft_de.ts +++ b/src/Mod/Draft/Resources/translations/Draft_de.ts @@ -658,7 +658,7 @@ Dies funktioniert nur, wenn "Verknüpfungsanordnung" deaktiviert ist. Fuse - Vereinigung + Vereinigen @@ -765,7 +765,7 @@ Oder eine der folgenden Möglichkeiten auswählen. Top (XY) - Oben (XY) + Draufsicht (XY) @@ -1535,9 +1535,10 @@ pattern definitions to be added to the standard patterns Font size - Schriftgröße + Schrifthöhe + @@ -1545,7 +1546,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1646,8 +1646,8 @@ des Maßstabs im Widget Beschriftungsmaßstab. Ist der Maßstab 1:100, ist der M Die Standard-Linienbreite - + px px @@ -1968,9 +1968,9 @@ im Addon Manager installieren. FreeCAD das automatische Herunterladen und Aktualisieren der DXF-Bibliotheken erlauben - - + + Import options Import Einstellungen @@ -2187,8 +2187,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Wenn sie auf '0' gesetzt ist, wird der gesamte Spline als geradliniger Abschnitt behandelt. - + Export options Export Einstellungen @@ -2465,8 +2465,8 @@ Diese Linien sind dicker als normale Rasterlinien. Dies ist die Methode, die FreeCAD für die Konvertierung von DWG-Dateien in DXF verwendet. Wenn Sie "Automatisch" wählen, wird FreeCAD versuchen, einen der folgenden Konverter in der Reihenfolge zu finden, in der sie hier angezeigt werden. Wenn FreeCAD keinen Konverter findet, müssen Sie einen bestimmten Konverter auswählen und dessen Pfad hier unten angeben. Wählen Sie "dwg2dxf", wenn Sie LibreDWG verwenden, "ODAFileConverter", wenn Sie den ODA-Dateikonverter verwenden, oder "dwg2dwg", wenn Sie die Pro-Version von QCAD verwenden. - + Automatic Automatisch @@ -2856,7 +2856,7 @@ Diese Linien sind dicker als normale Rasterlinien. Top - Oben + Draufsicht @@ -3195,7 +3195,7 @@ Nicht verfügbar, wenn die Option "Part-Grundkörper erstellen, wenn möglich" a Offset - Versatz + Versetzen @@ -3384,23 +3384,23 @@ Um FreeCAD zu erlauben, diese Bibliotheken herunterzuladen, wählen Sie "Ja".Maßstab für Draft-Beschriftungswerkzeuge festlegen - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Kein aktives Dokument. Abbruch. @@ -3561,9 +3561,9 @@ Um FreeCAD zu erlauben, diese Bibliotheken herunterzuladen, wählen Sie "Ja".Textposition auswählen - - + + Pick first point Ersten Punkt auswählen @@ -3584,8 +3584,6 @@ Um FreeCAD zu erlauben, diese Bibliotheken herunterzuladen, wählen Sie "Ja".Polylinie - - @@ -3593,6 +3591,8 @@ Um FreeCAD zu erlauben, diese Bibliotheken herunterzuladen, wählen Sie "Ja". + + Pick next point Nächsten Punkt auswählen @@ -3797,6 +3797,58 @@ Um FreeCAD zu erlauben, diese Bibliotheken herunterzuladen, wählen Sie "Ja".Annotation style editor Editor für Anmkerungsdarstellung + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4002,8 +4054,8 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Wählen Sie Objekt(e) zum verkürzen/verlängern - + Pick distance Abstand auswählen @@ -4043,9 +4095,9 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Spline wurde geschlossen + - Last point has been removed Der letzte Punkt wurde entfernt @@ -4431,8 +4483,8 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Neigung ändern - + Select an object to upgrade Ein Objekt zum Hochstufen auswählen @@ -4487,9 +4539,9 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Zurückstufen - - + + Task panel: Taskleiste: @@ -4497,29 +4549,29 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Polar array - Polare Reihe + Polare Anordnung - - + + At least one element must be selected. Es muss mindestens ein Element ausgewählt werden. - - + + Selection is not suitable for array. Die Auswahl ist für Anordnungen ungeeignet. - - - - + + + + Object: Objekt: @@ -4539,16 +4591,16 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Der Winkel liegt unter -360 Grad. Dieser Wert wird gesetzt, um fortzufahren. - - + + Fuse: Vereinigen: - - + + Create Link array: Verknüpfungsanordnung erstellen: @@ -4563,8 +4615,8 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Polarwinkel: - + Center of rotation: Drehpunkt: @@ -4625,7 +4677,7 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Circular array - Kreisförmige Anordnung + Kreisförmige Reihe @@ -4820,11 +4872,11 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Kann Form nicht erzeugen: - - + + Wrong input: base_object not in document. Falsche Eingabe: base_object nicht im Dokument. @@ -4836,19 +4888,22 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Falsche Eingabe: path_object nicht im Dokument. - - - + + + Wrong input: must be a number. Falsche Eingabe: muss eine Zahl sein. - + + + + @@ -4858,10 +4913,7 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. - - - - + Wrong input: must be a vector. Falsche Eingabe: muss ein Vektor sein. @@ -4889,8 +4941,8 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Eingabe: Einzelwert auf Vektor erweitert. - + Wrong input: must be an integer number. Falsche Eingabe: muss eine Ganzzahl sein. @@ -5301,9 +5353,9 @@ Der endgültige Winkel ist der Basiswinkel plus dieser Betrag. Ansicht-Eigenschaft 'Textfarbe' hinzugefügt - - + + renamed 'DisplayMode' options to 'World/Screen' 'DisplayMode'-Optionen in 'World/Screen' umbenannt @@ -5506,16 +5558,16 @@ aus dem Menü Extras -> Addon Manager Versatz-Richtung ist nicht definiert. Bitte bewegen Sie die Maus zunächst auf eine Seite des Objekts, um die Richtung festzulegen - - + + True Ja - - + + False Nein @@ -5643,7 +5695,7 @@ aus dem Menü Extras -> Addon Manager Label - Beschriftung + Benennung @@ -5785,7 +5837,7 @@ Eine 'Verknüpfungsanordnung' ist effektiver, wenn viele Kopien verarbeitet werd Label - Benennung + Bezeichnung @@ -6209,7 +6261,7 @@ Mit E oder Alt+Linksklick wird das Kontextmenü an unterstützten Knoten und Obj Circular array - Kreisförmige Reihe + Kreisförmige Anordnung @@ -6298,7 +6350,7 @@ Erstellen Sie zuerst eine Gruppe, um dieses Werkzeug zu verwenden. Autogroup - Automatische Gruppe + Autogruppe @@ -6386,7 +6438,7 @@ Wenn andere Objekte ausgewählt sind, werden diese ignoriert. Fillet - Abrundung + Verrundung @@ -6695,7 +6747,7 @@ Dies ist für geschlossene Formen und Volumenkörper vorgesehen und wirkt sich n Dimension - Maß + Abmessung @@ -6819,7 +6871,7 @@ Der resultierende Klon kann in jeder seiner drei Richtungen skaliert werden. Polar array - Polare Anordnung + Polare Reihe @@ -6881,7 +6933,7 @@ und mehrere Flächen zu einer einzigen zusammengefasst werden. Offset - Versetzen + Versatz @@ -7094,19 +7146,19 @@ Wahr für Fusion oder Falsch für Verbund - + Create a face Fläche erzeugen - - + + The area of this object Die Fläche dieses Objekts @@ -7150,8 +7202,8 @@ Wahr für Fusion oder Falsch für Verbund Das Ausgangsobjekt, welches dupliziert wird. - + The object along which the copies will be distributed. It must contain 'Edges'. Das Objekt, an dem entlang die Kopien verteilt werden. Es muss 'Kanten' enthalten. @@ -7166,9 +7218,9 @@ Wahr für Fusion oder Falsch für Verbund Rotationsfaktor für Anordnungen mit Drehung. - - + + Show the individual array elements (only for Link arrays) Die einzelnen Elemente der Anordnung anzeigen (nur für Verknüpfungsanordnungen) @@ -7303,8 +7355,8 @@ Bei Verwendung eines gespeicherten Stils sind einige der Ansichtseigenschaften s Sie können nur bearbeitet werden, indem der Stil über das Tool 'Anmerkungsstil-Editor' geändert wird. - + The base object that will be duplicated Das Ausgangsobjekt, welches dupliziert wird @@ -8107,14 +8159,14 @@ Leer lassen für die Standardeinstellung des Systems. Benutzen Sie 'arch' um die US-Bogen Notation zu erzwingen - + Arrow size Pfeilgröße - + Arrow type Pfeiltyp @@ -8177,7 +8229,7 @@ beyond the dimension line Draft - Draft + Tiefgang diff --git a/src/Mod/Draft/Resources/translations/Draft_el.qm b/src/Mod/Draft/Resources/translations/Draft_el.qm index cea99ab5b6..a15886c510 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_el.qm and b/src/Mod/Draft/Resources/translations/Draft_el.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_el.ts b/src/Mod/Draft/Resources/translations/Draft_el.ts index f0b2d8adce..27a0498e6b 100644 --- a/src/Mod/Draft/Resources/translations/Draft_el.ts +++ b/src/Mod/Draft/Resources/translations/Draft_el.ts @@ -1542,6 +1542,7 @@ pattern definitions to be added to the standard patterns Μέγεθος γραμματοσειράς + @@ -1549,7 +1550,6 @@ pattern definitions to be added to the standard patterns - mm χιλιοστά @@ -1650,8 +1650,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1973,9 +1973,9 @@ from the Addon Manager. Να επιτρέπεται στο FreeCAD να κατεβάζει και ανανεώνει αυτόματα τις βιβλιοθήκες DXF - - + + Import options Επιλογές εισαγωγής @@ -2193,8 +2193,8 @@ If it is set to '0' the whole spline is treated as a straight segment. If it is set to '0' the whole spline is treated as a straight segment. - + Export options Επιλογές εξαγωγής @@ -2471,8 +2471,8 @@ These lines are thicker than normal grid lines. Αυτή είναι η μέθοδος που θα χρησιμοποιήσει το FreeCAD για τη μετατροπή αρχείων DWG σε DXF. Αν επιλεγεί το "Automatic", το FreeCAD θα προσπαθήσει να βρει έναν από τους παρακάτω μετατροπείς με την ίδια σειρά που εμφανίζονται εδώ. Αν το FreeCAD δεν είναι σε θέση να βρει, ίσως χρειαστεί να επιλέξετε ένα συγκεκριμένο μετατροπέα και να υποδείξετε τη διαδρομή του εδώ κάτω. Επιλέξτε το βοηθητικό πρόγραμμα "dwg2dxf" αν χρησιμοποιείτε το LibreDWG, "ODAFileConverter" εάν χρησιμοποιείτε το μετατροπέα αρχείων ODA, ή το βοηθητικό πρόγραμμα "dwg2dwg" εάν χρησιμοποιείτε την pro έκδοση του QCAD. - + Automatic Αυτόματη @@ -3070,7 +3070,7 @@ Not available if Draft preference option 'Use Part Primitives' is enabled Undo - Αναίρεση + Undo @@ -3393,23 +3393,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3570,9 +3570,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3593,8 +3593,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3602,6 +3600,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3806,6 +3806,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4011,8 +4063,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4052,9 +4104,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4440,8 +4492,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4496,9 +4548,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4509,26 +4561,26 @@ The final angle will be the base angle plus this amount. Κυκλική διάταξη - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4548,16 +4600,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4572,8 +4624,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4829,11 +4881,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4845,19 +4897,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4867,10 +4922,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4898,8 +4950,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5310,9 +5362,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' μετονομάστε τις επιλογές 'Λειτουργία εμφάνισης' σε 'World/Screen' @@ -5515,16 +5567,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Αληθές - - + + False Ψευδές @@ -7098,19 +7150,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7154,8 +7206,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7170,9 +7222,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7299,8 +7351,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8103,14 +8155,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Μέγεθος βέλους - + Arrow type Τύπος βέλους diff --git a/src/Mod/Draft/Resources/translations/Draft_es-AR.qm b/src/Mod/Draft/Resources/translations/Draft_es-AR.qm index 58ab520e51..e212732145 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_es-AR.qm and b/src/Mod/Draft/Resources/translations/Draft_es-AR.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_es-AR.ts b/src/Mod/Draft/Resources/translations/Draft_es-AR.ts index 0f94d84b8d..f7152764a6 100644 --- a/src/Mod/Draft/Resources/translations/Draft_es-AR.ts +++ b/src/Mod/Draft/Resources/translations/Draft_es-AR.ts @@ -41,7 +41,7 @@ Layers manager - Gestor de capas + Administrador de capas @@ -1543,6 +1543,7 @@ pattern definitions to be added to the standard patterns Tamaño de fuente + @@ -1550,7 +1551,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1651,8 +1651,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1974,9 +1974,9 @@ desde el Administrador de Complementos. Permitir que FreeCAD descargue y actualize automáticamente las librerías DXF - - + + Import options Opciones de importación @@ -2192,8 +2192,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Si se establece en '0' toda la spline se trata como un segmento recto. - + Export options Opciones de exportación @@ -2470,8 +2470,8 @@ These lines are thicker than normal grid lines. Este es el método que FreeCAD utilizará para convertir archivos DWG a DXF. Si se elige "Automático", FreeCAD tratará de encontrar uno de los siguientes conversores en el mismo orden en que se muestran aquí. Si FreeCAD no puede encontrar ninguno, puede que necesite elegir un convertidor específico e indicar su ruta aquí abajo. Elija la utilidad "dwg2dxf" si utiliza LibreDWG, "ODAFileConverter" si utiliza el convertidor de archivos ODA, o la utilidad "dwg2dwg" si utiliza la versión pro de QCAD. - + Automatic Automático @@ -3389,23 +3389,23 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Establecer la escala utilizada por las herramientas de anotación de "draft" - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No hay documento activo. Abortando. @@ -3566,9 +3566,9 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Seleccionar posición del texto - - + + Pick first point Seleccionar primer punto @@ -3589,8 +3589,6 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Polilínea - - @@ -3598,6 +3596,8 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí. + + Pick next point Seleccionar el siguiente punto @@ -3802,6 +3802,58 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Annotation style editor Editor de estilo de anotación + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4006,8 +4058,8 @@ The final angle will be the base angle plus this amount. Seleccionar objetos para recortar o extender - + Pick distance Seleccionar distancia @@ -4047,9 +4099,9 @@ The final angle will be the base angle plus this amount. Spline ha sido cerrado + - Last point has been removed El último punto ha sido eliminado @@ -4435,8 +4487,8 @@ The final angle will be the base angle plus this amount. Cambiar pendiente - + Select an object to upgrade Seleccione objeto a actualizar @@ -4491,9 +4543,9 @@ The final angle will be the base angle plus this amount. Degradar - - + + Task panel: Panel de tarea: @@ -4504,26 +4556,26 @@ The final angle will be the base angle plus this amount. Matriz polar - - + + At least one element must be selected. Se debe seleccionar al menos un elemento. - - + + Selection is not suitable for array. La selección no es adecuada para la matriz. - - - - + + + + Object: Objeto: @@ -4543,16 +4595,16 @@ The final angle will be the base angle plus this amount. El ángulo está por debajo de -360 grados. Se ajusta a este valor para continuar. - - + + Fuse: Fusión: - - + + Create Link array: Crear matriz de Enlaces: @@ -4567,8 +4619,8 @@ The final angle will be the base angle plus this amount. Ángulo polar: - + Center of rotation: Centro de rotación: @@ -4824,11 +4876,11 @@ The final angle will be the base angle plus this amount. No se puede generar forma: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4840,19 +4892,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Entrada incorrecta: debe ser un número. - + + + + @@ -4862,10 +4917,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Entrada incorrecta: debe ser un vector. @@ -4893,8 +4945,8 @@ The final angle will be the base angle plus this amount. Entrada: valor único expandido a vector. - + Wrong input: must be an integer number. Entrada incorrecta: debe ser un número entero. @@ -5305,9 +5357,9 @@ The final angle will be the base angle plus this amount. añadida la propiedad de vista 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' opciones de 'DisplayMode' renombradas a 'World/Screen' @@ -5439,9 +5491,9 @@ of existing objects in all opened documents? Download of dxf libraries failed. Please install the dxf Library addon manually from menu Tools -> Addon Manager - Ha fallado la descarga de las bibliotecas de dxf. -Instale el complemento de las bibliotecas de dxf manualmente -por medio de la opción Herramientas ▸ Gestor de complementos + Ha fallado la descarga de las bibliotecas dxf. +Instale el complemento de las bibliotecas dxf manualmente +por medio del menú Herramientas ▸ -> Administrador de complementos @@ -5510,16 +5562,16 @@ por medio de la opción Herramientas ▸ Gestor de complementos La dirección del desplazamiento no está definida. Por favor, mueva primero el ratón a cualquier lado del objeto para indicar una dirección - - + + True Verdadero - - + + False Falso @@ -7089,19 +7141,19 @@ establecer verdadero para fusión o falso para compuesto - + Create a face Crear una cara - - + + The area of this object El área de este objeto @@ -7145,8 +7197,8 @@ establecer verdadero para fusión o falso para compuesto El objeto base que será duplicado. - + The object along which the copies will be distributed. It must contain 'Edges'. El objeto a lo largo del cual se distribuirán las copias. Debe contener 'Aristas'. @@ -7161,9 +7213,9 @@ establecer verdadero para fusión o falso para compuesto Factor de rotación de la matriz retorcida. - - + + Show the individual array elements (only for Link arrays) Muestra los elementos individuales de la matriz (sólo para matrices vinculadas) @@ -7292,8 +7344,8 @@ Al usar un estilo guardado, algunas de las propiedades de la vista se convertir sólo serán editables cambiando el estilo a través de la herramienta 'editor de estilo de anotación'. - + The base object that will be duplicated El objeto base que será duplicado @@ -8093,14 +8145,14 @@ Dejar en blanco para el valor predeterminado del sistema. Utilice 'arch' para forzar notación de arco de Estados Unidos - + Arrow size Tamaño de flecha - + Arrow type Tipo de flecha diff --git a/src/Mod/Draft/Resources/translations/Draft_es-ES.qm b/src/Mod/Draft/Resources/translations/Draft_es-ES.qm index 62faf3939d..797cf946d5 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_es-ES.qm and b/src/Mod/Draft/Resources/translations/Draft_es-ES.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_es-ES.ts b/src/Mod/Draft/Resources/translations/Draft_es-ES.ts index e3f6d4175e..0a31c86f97 100644 --- a/src/Mod/Draft/Resources/translations/Draft_es-ES.ts +++ b/src/Mod/Draft/Resources/translations/Draft_es-ES.ts @@ -41,7 +41,7 @@ Layers manager - Gestor de capas + Administrador de capas @@ -1545,6 +1545,7 @@ pattern definitions to be added to the standard patterns Tamaño de la fuente + @@ -1552,7 +1553,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1653,8 +1653,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1976,9 +1976,9 @@ desde el Administrador de Complementos. Permitir que FreeCAD descargue y actualize automáticamente las librerías DXF - - + + Import options Importar opciones @@ -2196,8 +2196,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Si se establece en '0' toda la curva se trata como un segmento recto. - + Export options Opciones de exportación @@ -2473,8 +2473,8 @@ These lines are thicker than normal grid lines. Este es el método que FreeCAD utilizará para convertir archivos DWG a DXF. Si se elige "Automático", FreeCAD tratará de encontrar uno de los siguientes conversores en el mismo orden en que se muestran aquí. Si FreeCAD no puede encontrar ninguno, puede que necesite elegir un convertidor específico e indicar su ruta aquí abajo. Elija la utilidad "dwg2dxf" si utiliza LibreDWG, "ODAFileConverter" si utiliza el convertidor de archivos ODA, o la utilidad "dwg2dwg" si utiliza la versión pro de QCAD. - + Automatic Automatico @@ -3392,23 +3392,23 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Establecer la escala utilizada por las herramientas de anotación de "draft" - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No hay documento activo. Abortando. @@ -3569,9 +3569,9 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Seleccionar posición del texto - - + + Pick first point Seleccionar primer punto @@ -3592,8 +3592,6 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Polilínea - - @@ -3601,6 +3599,8 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí. + + Pick next point Seleccionar el siguiente punto @@ -3805,6 +3805,58 @@ Para permitir que FreeCAD descargue estas librerías, responda Sí.Annotation style editor Editor de estilo de anotación + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4009,8 +4061,8 @@ The final angle will be the base angle plus this amount. Seleccionar objetos para recortar o extender - + Pick distance Seleccionar distancia @@ -4050,9 +4102,9 @@ The final angle will be the base angle plus this amount. Spline ha sido cerrado + - Last point has been removed El último punto ha sido eliminado @@ -4438,8 +4490,8 @@ The final angle will be the base angle plus this amount. Cambiar pendiente - + Select an object to upgrade Seleccione objeto a actualizar @@ -4494,9 +4546,9 @@ The final angle will be the base angle plus this amount. Degradar - - + + Task panel: Panel de tarea: @@ -4507,26 +4559,26 @@ The final angle will be the base angle plus this amount. Matriz polar - - + + At least one element must be selected. Se debe seleccionar al menos un elemento. - - + + Selection is not suitable for array. La selección no es adecuada para la matriz. - - - - + + + + Object: Objeto: @@ -4546,16 +4598,16 @@ The final angle will be the base angle plus this amount. El ángulo está por debajo de -360 grados. Se ajusta a este valor para continuar. - - + + Fuse: Fusión: - - + + Create Link array: Crear matriz de Enlaces: @@ -4570,8 +4622,8 @@ The final angle will be the base angle plus this amount. Ángulo polar: - + Center of rotation: Centro de rotación: @@ -4827,11 +4879,11 @@ The final angle will be the base angle plus this amount. No se puede generar forma: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4843,19 +4895,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Entrada incorrecta: debe ser un número. - + + + + @@ -4865,10 +4920,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Entrada incorrecta: debe ser un vector. @@ -4896,8 +4948,8 @@ The final angle will be the base angle plus this amount. Entrada: valor único expandido a vector. - + Wrong input: must be an integer number. Entrada incorrecta: debe ser un número entero. @@ -5308,9 +5360,9 @@ The final angle will be the base angle plus this amount. añadida la propiedad de vista 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' opciones de 'DisplayMode' renombradas a 'World/Screen' @@ -5442,9 +5494,9 @@ of existing objects in all opened documents? Download of dxf libraries failed. Please install the dxf Library addon manually from menu Tools -> Addon Manager - Ha fallado la descarga de las bibliotecas de dxf. -Instale el complemento de las bibliotecas de dxf manualmente -por medio de la opción Herramientas ▸ Gestor de complementos + Ha fallado la descarga de las bibliotecas dxf. +Instale el complemento de las bibliotecas dxf manualmente +por medio del menú Herramientas ▸ -> Administrador de complementos @@ -5513,16 +5565,16 @@ por medio de la opción Herramientas ▸ Gestor de complementos La dirección del desplazamiento no está definida. Por favor, mueva primero el ratón a cualquier lado del objeto para indicar una dirección - - + + True Verdadero - - + + False Falso @@ -7092,19 +7144,19 @@ establecer verdadero para fusión o falso para compuesto - + Create a face Crear una cara - - + + The area of this object El área de este objeto @@ -7148,8 +7200,8 @@ establecer verdadero para fusión o falso para compuesto El objeto base que será duplicado. - + The object along which the copies will be distributed. It must contain 'Edges'. El objeto a lo largo del cual se distribuirán las copias. Debe contener 'Aristas'. @@ -7164,9 +7216,9 @@ establecer verdadero para fusión o falso para compuesto Factor de rotación de la matriz retorcida. - - + + Show the individual array elements (only for Link arrays) Muestra los elementos individuales de la matriz (sólo para matrices vinculadas) @@ -7295,8 +7347,8 @@ Al usar un estilo guardado, algunas de las propiedades de la vista se convertir sólo serán editables cambiando el estilo a través de la herramienta 'editor de estilo de anotación'. - + The base object that will be duplicated El objeto base que será duplicado @@ -8096,14 +8148,14 @@ Dejar en blanco para el valor predeterminado del sistema. Utilice 'arch' para forzar notación de arco de Estados Unidos - + Arrow size Tamaño de flecha - + Arrow type Tipo de flecha diff --git a/src/Mod/Draft/Resources/translations/Draft_eu.qm b/src/Mod/Draft/Resources/translations/Draft_eu.qm index 28e83e8305..60b795c5fa 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_eu.qm and b/src/Mod/Draft/Resources/translations/Draft_eu.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_eu.ts b/src/Mod/Draft/Resources/translations/Draft_eu.ts index acf731c5ea..095017cb11 100644 --- a/src/Mod/Draft/Resources/translations/Draft_eu.ts +++ b/src/Mod/Draft/Resources/translations/Draft_eu.ts @@ -1128,7 +1128,7 @@ value by using the [ and ] keys while drawing Font size - Letra-tipoaren tamaina + Letra-tamaina @@ -1539,6 +1539,7 @@ pattern definitions to be added to the standard patterns Letra-tamaina + @@ -1546,7 +1547,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1647,8 +1647,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.Lerro-zabalera lehenetsia - + px px @@ -1969,9 +1969,9 @@ Eskuz ere egin daiteke, "dxf_library" lan-mahaia instalatuta gehigarrien kudeatz Onartu FreeCADek automatikoki deskarga eta egunera ditzan DXF liburutegiak - - + + Import options Inportazio-aukerak @@ -2188,8 +2188,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Hemen '0' ezarri bada, spline osoa segmentu zuzen gisa tratatuko da. - + Export options Esportazio-aukerak @@ -2466,8 +2466,8 @@ These lines are thicker than normal grid lines. FreeCADek metodo hau erabiliko du DWG fitxategiak DXF formatura bihurtzeko. "Automatikoa" aukeratu bada, FreeCAD saiatuko da hurrengo bihurtzaileetako bat aurkitzen saiatuko da, hemen ageri diren ordena berean. FreeCADek ez badu horietako bat ere aurkitzen, bihurtzaile zehatz bat aukeratu beharko duzu eta zein bide-izenetan dagoen adierazi. Aukeratu "dwg2dxf" utilitatea LibreDWG erabiliko bada, "ODAFileConverter" utilitatea ODA fitxategi-bihurtzailea erabiliko bada edo "dwg2dwg" utilitatea QCADen bertsio profesionala erabiliko bada. - + Automatic Automatikoa @@ -3388,23 +3388,23 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Ezarri zirriborro-oharpenen tresnek erabilitako eskala - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Ez dago dokumentu aktiborik. Abortatzen. @@ -3565,9 +3565,9 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Aukeratu testuaren posizioa - - + + Pick first point Aukeratu lehen puntua @@ -3588,8 +3588,6 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Polilerroa - - @@ -3597,6 +3595,8 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'. + + Pick next point Aukeratu hurrengo puntua @@ -3801,6 +3801,58 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Annotation style editor Oharpen-estiloen editorea + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4006,8 +4058,8 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Hautatu muxarratuko/luzatuko diren objektuak - + Pick distance Aukeratu distantzia @@ -4047,9 +4099,9 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Spline-a itxi egin da + - Last point has been removed Azken puntua kendu da @@ -4435,8 +4487,8 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Aldatu malda - + Select an object to upgrade Hautatu eguneratuko den objektua @@ -4491,9 +4543,9 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Degradatu - - + + Task panel: Ataza-panela: @@ -4504,26 +4556,26 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Matrize polarra - - + + At least one element must be selected. Gutxienez elementu bat hautatu behar da. - - + + Selection is not suitable for array. Hautapena ez da egokia matrizerako. - - - - + + + + Object: Objektua: @@ -4543,16 +4595,16 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Angeluak -360 gradu baino gutxiago ditu. Balio hau ezarri da jarraitu ahal izateko. - - + + Fuse: Fusionatu: - - + + Create Link array: Sortu esteka-matrizea: @@ -4567,8 +4619,8 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Angelu polarra: - + Center of rotation: Biraketa-zentroa: @@ -4824,11 +4876,11 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Ezin da forma sortu: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4840,19 +4892,22 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Okerreko sarrera: zenbaki bat izan behar du. - + + + + @@ -4862,10 +4917,7 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. - - - - + Wrong input: must be a vector. Okerreko sarrera: bektore bat izan behar du. @@ -4893,8 +4945,8 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. Sarrera: bektorera hedatutako balio bakarra. - + Wrong input: must be an integer number. Okerreko sarrera: osoko zenbakia izan behar du. @@ -5305,9 +5357,9 @@ Amaierako angelua oinarriko angelua gehi kantitate hau izango da. bistaren 'TextColor' propietatea gehitu da - - + + renamed 'DisplayMode' options to 'World/Screen' 'BistaratzeModua' aukeren izena aldatu da 'Mundua/Pantaila' izan dadin @@ -5510,16 +5562,16 @@ Instalatu DXF liburutegiaren gehigarria eskuz Desplazamenduaren norabidea ez dago definituta. Eraman sagua objektuaren aldeetako batera, norabide bat adierazteko - - + + True Egia - - + + False Gezurra @@ -7100,19 +7152,19 @@ ezarri 'Egia' fusiorako edo 'Faltsua' konposaturako - + Create a face Sortu aurpegi bat - - + + The area of this object Objektuaren area @@ -7156,8 +7208,8 @@ ezarri 'Egia' fusiorako edo 'Faltsua' konposaturako Bikoiztuko den oinarri-objektua. - + The object along which the copies will be distributed. It must contain 'Edges'. Kopiak banatzeko erabiliko den objektua. 'Ertzak' eduki behar ditu. @@ -7172,9 +7224,9 @@ ezarri 'Egia' fusiorako edo 'Faltsua' konposaturako Matrize kiribilduaren biraketa-faktorea. - - + + Show the individual array elements (only for Link arrays) Erakutsi banakako matrize-elementuak (esteka-matrizeetarako soilik) @@ -7303,8 +7355,8 @@ Gordetako estilo bat erabiltzen denean, bista-propietate batzuk irakurtzeko soil 'Oharpen-estiloen editorea' erabilita estiloa aldatzen bada soilik editatuko dira. - + The base object that will be duplicated Bikoiztuko den oinarri-objektua @@ -8106,14 +8158,14 @@ Utzi hutsik sistemaren unitate lehenetsia erabiltzeko. Erabili 'arch' US arku-notazioa behartzeko. - + Arrow size Gezi-tamaina - + Arrow type Gezi mota diff --git a/src/Mod/Draft/Resources/translations/Draft_fi.qm b/src/Mod/Draft/Resources/translations/Draft_fi.qm index 3e8eb5f2a8..61512df9b1 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_fi.qm and b/src/Mod/Draft/Resources/translations/Draft_fi.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_fi.ts b/src/Mod/Draft/Resources/translations/Draft_fi.ts index 4c50bf97db..ae5d7b0e4a 100644 --- a/src/Mod/Draft/Resources/translations/Draft_fi.ts +++ b/src/Mod/Draft/Resources/translations/Draft_fi.ts @@ -1547,6 +1547,7 @@ pattern definitions to be added to the standard patterns Fonttikoko + @@ -1554,7 +1555,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1655,8 +1655,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1978,9 +1978,9 @@ from the Addon Manager. Salli FreeCAD:in automaattisesti ladata ja päivittää DXF-kirjastot - - + + Import options Tuontiasetukset @@ -2198,8 +2198,8 @@ If it is set to '0' the whole spline is treated as a straight segment. If it is set to '0' the whole spline is treated as a straight segment. - + Export options Vientiasetukset @@ -2476,8 +2476,8 @@ These lines are thicker than normal grid lines. This is the method FreeCAD will use to convert DWG files to DXF. If "Automatic" is chosen, FreeCAD will try to find one of the following converters in the same order as they are shown here. If FreeCAD is unable to find any, you might need to choose a specific converter and indicate its path here under. Choose the "dwg2dxf" utility if using LibreDWG, "ODAFileConverter" if using the ODA file converter, or the "dwg2dwg" utility if using the pro version of QCAD. - + Automatic Automaattinen @@ -3398,23 +3398,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3575,9 +3575,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3598,8 +3598,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3607,6 +3605,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3811,6 +3811,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4016,8 +4068,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4057,9 +4109,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4445,8 +4497,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4501,9 +4553,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4514,26 +4566,26 @@ The final angle will be the base angle plus this amount. Polar array - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4553,16 +4605,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4577,8 +4629,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4834,11 +4886,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4850,19 +4902,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4872,10 +4927,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4903,8 +4955,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5315,9 +5367,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5520,16 +5572,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Tosi - - + + False Epätosi @@ -7109,19 +7161,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7165,8 +7217,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7181,9 +7233,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7312,8 +7364,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8116,14 +8168,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Nuolen koko - + Arrow type Nuolen tyyppi diff --git a/src/Mod/Draft/Resources/translations/Draft_fr.qm b/src/Mod/Draft/Resources/translations/Draft_fr.qm index d1a25fa09e..f91046ae86 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_fr.qm and b/src/Mod/Draft/Resources/translations/Draft_fr.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_fr.ts b/src/Mod/Draft/Resources/translations/Draft_fr.ts index 79f4a1e0a6..ce3384702b 100644 --- a/src/Mod/Draft/Resources/translations/Draft_fr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_fr.ts @@ -567,7 +567,7 @@ Ceci ne fonctionne que si "Réseau lié" est désactivé. If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - Si cette option est cochée, l'objet résultant sera un "Réseau lié" au lieu d'un réseau normal. + Si cette case est cochée, l'objet résultant sera un "Réseau lié" au lieu d'un réseau normal. Un réseau lié est plus efficace lors de la création de plusieurs copies mais il ne peut pas être fusionné. @@ -664,7 +664,7 @@ Ceci ne fonctionne que si "Réseau lié" est désactivé. If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - Si cette case est cochée, l'objet résultant sera un "Réseau lié" au lieu d'un réseau normal. + Si cette option est cochée, l'objet résultant sera un "Réseau lié" au lieu d'un réseau normal. Un réseau lié est plus efficace lors de la création de plusieurs copies mais il ne peut pas être fusionné. @@ -1544,6 +1544,7 @@ contenant des définitions de motifs à ajouter aux motifs standard.Taille de la police + @@ -1551,7 +1552,6 @@ contenant des définitions de motifs à ajouter aux motifs standard. - mm mm @@ -1653,8 +1653,8 @@ widget d'échelle d'annotation du projet. Si l'échelle est 1:100, le multiplica La largeur des lignes par défaut. - + px px @@ -1977,9 +1977,9 @@ Vous pouvez également le faire manuellement en installant l'atelier "dxf_librar Permettre à FreeCAD de télécharger et mettre à jour automatiquement les librairies DXF - - + + Import options Options d'importation @@ -2096,12 +2096,12 @@ Ex : pour les fichiers en millimètres : 1, en centimètres : 10, en mètres Export 3D objects as polyface meshes (legacy exporter only) - Exporter des objets 3D en tant que des maillages polyfaces (exportateur hisorique seulement) + Exporter des objets 3D en tant que maillages polyfaciques (exportateur historique seulement) Project exported objects along current view direction (legacy exporter only) - Projeter les objets exportés suivant la direction de la vue en cours (exportateur hisorique seulement) + Projeter les objets exportés suivant la direction de la vue en cours (exportateur historique seulement) @@ -2195,8 +2195,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Si c'est défini à "0", la spline entière est traitée comme un segment droit. - + Export options Options d'exportation @@ -2474,8 +2474,8 @@ soit nécessaire d'appuyer sur la touche pour l'aimantation. C'est la méthode que FreeCAD utilisera pour convertir des fichiers DWG en DXF. Si "Automatique" est choisi, FreeCAD essaiera de trouver un des convertisseurs suivants dans le même ordre que celui qui est affiché ici. Si FreeCAD ne parvient pas à en trouver, vous devrez peut-être choisir un convertisseur spécifique et indiquer son chemin ci-dessous. Choisissez l'utilitaire "dwg2dxf" si vous utilisez LibreDWG, "ODAFileConverter" si vous utilisez le convertisseur de fichier ODA, ou l'utilitaire "dwg2dwg" si vous utilisez la version pro de QCAD. - + Automatic Automatique @@ -3206,7 +3206,7 @@ vous n'aurez pas appuyé à nouveau sur le bouton de commande. Offset - Décalage + Décaler @@ -3393,23 +3393,23 @@ Pour permettre à FreeCAD de télécharger ces bibliothèques, choisir "Oui".Définir l'échelle utilisée par les outils d'annotation de Draft - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Aucun document actif. Interruption. @@ -3570,9 +3570,9 @@ Pour permettre à FreeCAD de télécharger ces bibliothèques, choisir "Oui".Sélectionner la position du texte - - + + Pick first point Sélectionner le premier point @@ -3593,8 +3593,6 @@ Pour permettre à FreeCAD de télécharger ces bibliothèques, choisir "Oui".Polyligne - - @@ -3602,6 +3600,8 @@ Pour permettre à FreeCAD de télécharger ces bibliothèques, choisir "Oui". + + Pick next point Sélectionner le point suivant @@ -3806,6 +3806,58 @@ Pour permettre à FreeCAD de télécharger ces bibliothèques, choisir "Oui".Annotation style editor Éditeur de style d'annotation + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4011,8 +4063,8 @@ L'angle final sera l'angle de base plus cette quantité. Sélectionner l'objet à réduire ou agrandir - + Pick distance Choisir la distance @@ -4052,9 +4104,9 @@ L'angle final sera l'angle de base plus cette quantité. La spline a été fermée + - Last point has been removed Le dernier point a été supprimé @@ -4440,8 +4492,8 @@ L'angle final sera l'angle de base plus cette quantité. Changer la pente - + Select an object to upgrade Sélectionner un objet à agréger @@ -4496,9 +4548,9 @@ L'angle final sera l'angle de base plus cette quantité. Désagréger - - + + Task panel: Panneau des tâches : @@ -4509,26 +4561,26 @@ L'angle final sera l'angle de base plus cette quantité. Réseau polaire - - + + At least one element must be selected. Au moins un élément doit être sélectionné. - - + + Selection is not suitable for array. La sélection n'est pas adaptée pour un réseau. - - - - + + + + Object: Objet : @@ -4548,16 +4600,16 @@ L'angle final sera l'angle de base plus cette quantité. L'angle est inférieur à -360 degrés. Il est défini à cette valeur pour continuer. - - + + Fuse: Union : - - + + Create Link array: Créer un réseau lié : @@ -4572,8 +4624,8 @@ L'angle final sera l'angle de base plus cette quantité. Angle polaire : - + Center of rotation: Centre de rotation : @@ -4829,11 +4881,11 @@ L'angle final sera l'angle de base plus cette quantité. Impossible de générer la forme : - - + + Wrong input: base_object not in document. Mauvaise entrée : l'objet de base n'est pas dans le document. @@ -4845,19 +4897,22 @@ L'angle final sera l'angle de base plus cette quantité. Entrée incorrecte : l'objet chemin n'est pas dans le document. - - - + + + Wrong input: must be a number. Mauvaise entrée : doit être un nombre. - + + + + @@ -4867,10 +4922,7 @@ L'angle final sera l'angle de base plus cette quantité. - - - - + Wrong input: must be a vector. Mauvaise entrée : doit être un vecteur. @@ -4898,8 +4950,8 @@ L'angle final sera l'angle de base plus cette quantité. Entrée : valeur unique développée en vecteur. - + Wrong input: must be an integer number. Mauvaise entrée : doit être un nombre entier. @@ -5310,9 +5362,9 @@ L'angle final sera l'angle de base plus cette quantité. ajout de la propriété de vue "TextColor" - - + + renamed 'DisplayMode' options to 'World/Screen' les options "DisplayMode" ont été renommées en "World/Screen" @@ -5514,16 +5566,16 @@ Installer l’extension de la bibliothèque DXF manuellement depuis le menu Outi La direction du décalage n'est pas définie. Déplacer d'abord la souris de chaque côté de l'objet pour indiquer une direction - - + + True Vrai - - + + False Faux @@ -5616,7 +5668,7 @@ Installer l’extension de la bibliothèque DXF manuellement depuis le menu Outi Draw style - Style de trait + Style de représentation @@ -5646,7 +5698,7 @@ Installer l’extension de la bibliothèque DXF manuellement depuis le menu Outi Custom - Personnalisé + Personnalisée @@ -6600,7 +6652,7 @@ Le réseau peut être transformé en réseau polaire ou circulaire en changeant Scale - Mettre à l'échelle + Échelle @@ -6890,7 +6942,7 @@ convertir les bords fermés en faces remplies et en polygones paramétriques, et Offset - Décaler + Décalage @@ -7105,19 +7157,19 @@ régler à Vrai pour la fusion ou Faux pour un composé - + Create a face Créer une face - - + + The area of this object La surface de cet objet @@ -7161,8 +7213,8 @@ régler à Vrai pour la fusion ou Faux pour un composé L'objet de base qui sera dupliqué. - + The object along which the copies will be distributed. It must contain 'Edges'. L'objet le long duquel les copies seront distribuées. Il doit contenir des "Arêtes". @@ -7177,9 +7229,9 @@ régler à Vrai pour la fusion ou Faux pour un composé Facteur de rotation du réseau torsadé. - - + + Show the individual array elements (only for Link arrays) Afficher les éléments isolés du réseau (uniquement pour les réseaux de liens) @@ -7308,8 +7360,8 @@ Lorsque vous utilisez un style enregistré, certaines des propriétés de la vue elles ne seront modifiables qu'en changeant le style à l'aide de l'outil "Éditeur de style d'annotation". - + The base object that will be duplicated L'objet de base qui sera dupliqué @@ -8112,14 +8164,14 @@ Laisser vide pour la valeur par défaut du système. Utiliser "arch" pour forcer la notation architecturale US - + Arrow size Taille des flèches - + Arrow type Type des flèches @@ -8184,7 +8236,7 @@ au-delà de la ligne de la dimension Draft - Draft + Tirant d'eau diff --git a/src/Mod/Draft/Resources/translations/Draft_gl.qm b/src/Mod/Draft/Resources/translations/Draft_gl.qm index c8c717be46..3cfffcbca9 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_gl.qm and b/src/Mod/Draft/Resources/translations/Draft_gl.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_gl.ts b/src/Mod/Draft/Resources/translations/Draft_gl.ts index 93b278f4e8..29d8cc7b12 100644 --- a/src/Mod/Draft/Resources/translations/Draft_gl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_gl.ts @@ -1547,6 +1547,7 @@ pattern definitions to be added to the standard patterns Tamaño da fonte + @@ -1554,7 +1555,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1655,8 +1655,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1978,9 +1978,9 @@ from the Addon Manager. Permitir que o FreeCAD baixe e actualice automaticamente as bibliotecas DXF - - + + Import options Opcións de importación @@ -2198,8 +2198,8 @@ If it is set to '0' the whole spline is treated as a straight segment. If it is set to '0' the whole spline is treated as a straight segment. - + Export options Opcións de exportación @@ -2476,8 +2476,8 @@ These lines are thicker than normal grid lines. This is the method FreeCAD will use to convert DWG files to DXF. If "Automatic" is chosen, FreeCAD will try to find one of the following converters in the same order as they are shown here. If FreeCAD is unable to find any, you might need to choose a specific converter and indicate its path here under. Choose the "dwg2dxf" utility if using LibreDWG, "ODAFileConverter" if using the ODA file converter, or the "dwg2dwg" utility if using the pro version of QCAD. - + Automatic Automática @@ -3398,23 +3398,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3575,9 +3575,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3598,8 +3598,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3607,6 +3605,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3811,6 +3811,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4016,8 +4068,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4057,9 +4109,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4445,8 +4497,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4501,9 +4553,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4514,26 +4566,26 @@ The final angle will be the base angle plus this amount. Polar array - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4553,16 +4605,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4577,8 +4629,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4834,11 +4886,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4850,19 +4902,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4872,10 +4927,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4903,8 +4955,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5315,9 +5367,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5520,16 +5572,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Verdadeiro - - + + False Falso @@ -7109,19 +7161,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7165,8 +7217,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7181,9 +7233,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7312,8 +7364,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8116,14 +8168,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Tamaño das frechas - + Arrow type Tipo de frechas diff --git a/src/Mod/Draft/Resources/translations/Draft_hr.qm b/src/Mod/Draft/Resources/translations/Draft_hr.qm index 047ca6068d..d9e1d29e3d 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_hr.qm and b/src/Mod/Draft/Resources/translations/Draft_hr.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_hr.ts b/src/Mod/Draft/Resources/translations/Draft_hr.ts index 8817bf75f1..be06f446b8 100644 --- a/src/Mod/Draft/Resources/translations/Draft_hr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_hr.ts @@ -575,7 +575,8 @@ Negativne vrijednosti rezultirat će kopijom proizvedenom u negativnom smjeru. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. Ako je označeno, rezultirajući objekti u matrici bit će spojeni ako se dodiruju. -Ovo djeluje samo ako je "Povezana matrica" isključen. +Ovo djeluje samo ako je "Povezana matrica" isključen. + @@ -587,7 +588,8 @@ Ovo djeluje samo ako je "Povezana matrica" isključen. If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. Ako je označeno, rezultirajući objekt bit će "Povezana matrica" umjesto uobičajenog polja. -Povezana matrica efikasnija je pri stvaranju više kopija, ali ne može ih se spojiti zajedno. +Povezana matrica efikasnija je pri stvaranju više kopija, ali ne može ih se spojiti zajedno. + @@ -675,8 +677,7 @@ Promijenite smjer same osi u uređivaču svojstava. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. Ako je označeno, rezultirajući objekti u matrici bit će spojeni ako se dodiruju. -Ovo djeluje samo ako je "Povezana matrica" isključen. - +Ovo djeluje samo ako je "Povezana matrica" isključen. @@ -688,8 +689,7 @@ Ovo djeluje samo ako je "Povezana matrica" isključen. If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. Ako je označeno, rezultirajući objekt bit će "Povezana matrica" umjesto uobičajenog polja. -Povezana matrica efikasnija je pri stvaranju više kopija, ali ne može ih se spojiti zajedno. - +Povezana matrica efikasnija je pri stvaranju više kopija, ali ne može ih se spojiti zajedno. @@ -1569,6 +1569,7 @@ sadrže definicije uzoraka koje će se dodati standardnim uzorcima Veličina Pisma + @@ -1576,7 +1577,6 @@ sadrže definicije uzoraka koje će se dodati standardnim uzorcima - mm mm @@ -1677,8 +1677,8 @@ skalarnoj oznaci . Ako je skala 1:100, množitelj je 100. Zadana širina linije - + px px @@ -2001,9 +2001,9 @@ iz Upravitelja dodataka Omogući FreeCADu da automatski učita i nadogradi DXF biblioteke - - + + Import options Postavke uvoza @@ -2226,8 +2226,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Ako je postavljeno na '0', cijela je krivulja (spline) tretirana kao ravni segment. - + Export options Postavke izvoza @@ -2512,8 +2512,8 @@ Ove linije su deblje od normalnih linija mreže. - + Automatic Automatsko @@ -3437,23 +3437,23 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes). - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Nema aktivnog dokumenta. Prekid. @@ -3614,9 +3614,9 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Odaberite poziciju teksta - - + + Pick first point Odaberite prvu točku @@ -3637,8 +3637,6 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Višestruka (izlomljena) linija - - @@ -3646,6 +3644,8 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes). + + Pick next point Odaberite slijedeću točku @@ -3850,6 +3850,58 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Annotation style editor Uređivač stilova napomena + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4055,8 +4107,8 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Odaberite objekte za skraćivanje ili produživanje - + Pick distance Odaberite udaljenost @@ -4096,9 +4148,9 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Kriva je zatvorena + - Last point has been removed Zadnja točka je uklonjena @@ -4488,8 +4540,8 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Promjeni nagib - + Select an object to upgrade Odaberite objekt za nadogradnju @@ -4544,9 +4596,9 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Vraćanje na niži stupanj - - + + Task panel: Ploča zadataka: @@ -4557,26 +4609,26 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Polarna matrica - - + + At least one element must be selected. Barem jedna stavka mora biti označena. - - + + Selection is not suitable for array. Odabir nije prikladan za matricu. - - - - + + + + Object: Objekt: @@ -4596,16 +4648,16 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Kut je ispod -360 stupnjeva. Postavljen je na ovu vrijednost, za nastavak. - - + + Fuse: Spoji: - - + + Create Link array: Stvori niz poveznica: @@ -4620,8 +4672,8 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Polarni kut: - + Center of rotation: Centar rotacije: @@ -4878,11 +4930,11 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Nije moguće generirati oblik: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4894,19 +4946,22 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Pogrešan unos: mora bit broj. - + + + + @@ -4916,10 +4971,7 @@ Konačni kut bit će osnovni kut plus ovaj iznos. - - - - + Wrong input: must be a vector. Pogrešan unos: mora biti vektor. @@ -4947,8 +4999,8 @@ Konačni kut bit će osnovni kut plus ovaj iznos. Ulaz: jedna vrijednost proširena na vektor. - + Wrong input: must be an integer number. Pogrešan unos: mora biti cijeli broj. @@ -5362,9 +5414,9 @@ Konačni kut bit će osnovni kut plus ovaj iznos. dodano svojstvo pogleda 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' preimenovane opcije 'DisplayMode' u 'World/Screen' @@ -5567,16 +5619,16 @@ iz izbornika Alati-> Upravitelj dodataka Smjer pomaka nije definiran. Prvo pomaknite miš s obje strane objekta kako biste naznačili smjer - - + + True Točno - - + + False Netočno @@ -7165,19 +7217,19 @@ označi Točno za spajanje ili Netočno za složeni spoj - + Create a face Napravite lice - - + + The area of this object Područje ovog objekta @@ -7221,8 +7273,8 @@ označi Točno za spajanje ili Netočno za složeni spoj Osnovni objekt koji će biti dupliciran. - + The object along which the copies will be distributed. It must contain 'Edges'. Objekt po kojem će se primjerci distribuirati. Mora sadržavati 'Rubove'. @@ -7237,9 +7289,9 @@ označi Točno za spajanje ili Netočno za složeni spoj Faktor rotacije prepletene matrice. - - + + Show the individual array elements (only for Link arrays) Prikaži pojedinačne elemente niza (samo za vezane nizove) @@ -7371,8 +7423,8 @@ Kada se koristi spremljeni stil neka od svojstava pregleda će se moći samo či ona će se moći mijenjati samo promjenom stila pomoću 'Urednika za Anotacijske Stilove'. - + The base object that will be duplicated Osnovni objekt koji će biti dupliciran @@ -8180,14 +8232,14 @@ Ostavite prazno za zadane postavke sustava. Upotrijebite 'arch' za prisilno označavanje US luka - + Arrow size Veličina strelice - + Arrow type Vrsta strelice diff --git a/src/Mod/Draft/Resources/translations/Draft_hu.qm b/src/Mod/Draft/Resources/translations/Draft_hu.qm index 72b8d56985..19abbb6a58 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_hu.qm and b/src/Mod/Draft/Resources/translations/Draft_hu.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_hu.ts b/src/Mod/Draft/Resources/translations/Draft_hu.ts index f4fb0b2b4a..cedc2f35b2 100644 --- a/src/Mod/Draft/Resources/translations/Draft_hu.ts +++ b/src/Mod/Draft/Resources/translations/Draft_hu.ts @@ -1174,7 +1174,7 @@ megjegyzések méretarány modulban beállított skálának. Ha a méretarány 1 Arrow size - Nyíl méret + Nyíl mérete @@ -1546,6 +1546,7 @@ a szabványos mintákhoz hozzáadandó mintadefiníciókkal Betűméret + @@ -1553,7 +1554,6 @@ a szabványos mintákhoz hozzáadandó mintadefiníciókkal - mm mm @@ -1654,8 +1654,8 @@ megjegyzések méretarány modulban beállított skálának. Ha a méretarány 1 Alapértelmezett vonalszélesség - + px px @@ -1697,7 +1697,7 @@ megjegyzések méretarány modulban beállított skálának. Ha a méretarány 1 Arrow size - Nyíl mérete + Nyíl méret @@ -1977,9 +1977,9 @@ a Kiegészítők kezelőjéből. Engedélyezze a FreeCAD-hoz az automatikus DXF-könyvtárak letöltését és frissítését - - + + Import options Importálási beállítások @@ -2197,8 +2197,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Ha '0'-ra van állítva, a teljes csíkozást egyenes szakaszként kezeli. - + Export options Exportálási beállítások @@ -2474,8 +2474,8 @@ Ezek a vonalak vastagabbak, mint a normál rácsvonalak. Ez az a módszer, amelyet a FreeCAD a DWG fájlok DXF-re konvertálására fog használni. Ha az "Automatikus" opció van kiválasztva, a FreeCAD megpróbálja megtalálni az alábbi konverterek egyikét ugyanabban a sorrendben, amelyben itt láthatók. Ha a FreeCAD nem találja egyiket sem, előfordulhat, hogy ki kell választania egy adott konvertert, és itt meg kell adnia annak elérési útját. Válassza ki a "dwg2dxf" segédprogramot, ha LibreDWG-t, "ODAFileConverter"-t használ, ha ODA fájlkonvertert használ, vagy a "dwg2dwg" segédprogramot, ha a QCAD Pro verzióját használja. - + Automatic Automatikus @@ -3396,23 +3396,23 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. A jegyzeteszközök által használt méretezés beállítása - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Nincs aktív dokumentum. Megszakítás. @@ -3573,9 +3573,9 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Szöveg helyzet kiválasztása - - + + Pick first point Első pont kiválasztása @@ -3596,8 +3596,6 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Vonallánc - - @@ -3605,6 +3603,8 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. + + Pick next point Következő pont kiválasztása @@ -3809,6 +3809,58 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Annotation style editor Jegyzetstílus szerkesztő + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4014,8 +4066,8 @@ A végső szög lesz az alapszög plusz ennek összege. Válassza ki a tárgyakat a vágáshoz/nyújtáshoz - + Pick distance Távolság kiválasztása @@ -4055,9 +4107,9 @@ A végső szög lesz az alapszög plusz ennek összege. Görbe lezárva + - Last point has been removed Utolsó pont eltávolítva @@ -4443,8 +4495,8 @@ A végső szög lesz az alapszög plusz ennek összege. Lejtés módosítása - + Select an object to upgrade Jelöljön ki egy tárgyat a frissítéshez @@ -4499,9 +4551,9 @@ A végső szög lesz az alapszög plusz ennek összege. Visszaminősít - - + + Task panel: Feladat panel: @@ -4512,26 +4564,26 @@ A végső szög lesz az alapszög plusz ennek összege. Poláris elrendezés - - + + At least one element must be selected. Legalább egy tételt ki kell választani. - - + + Selection is not suitable for array. A kijelölés nem alkalmas elrendezéshez. - - - - + + + + Object: Tárgy: @@ -4551,16 +4603,16 @@ A végső szög lesz az alapszög plusz ennek összege. A szög nem éri el a 360 fokot. Ez az érték a folytatáshoz van beállítva. - - + + Fuse: Egybeolvaszt: - - + + Create Link array: Elrendezés csatolás létrehozása: @@ -4575,8 +4627,8 @@ A végső szög lesz az alapszög plusz ennek összege. Poláris szög: - + Center of rotation: Forgatás középpontja: @@ -4832,11 +4884,11 @@ A végső szög lesz az alapszög plusz ennek összege. Alakzat nem hozható létre: - - + + Wrong input: base_object not in document. Helytelen bemenet: alap_tárgy nincs a dokumentumban. @@ -4848,19 +4900,22 @@ A végső szög lesz az alapszög plusz ennek összege. Helytelen bemenet: útvonal_tárgy nincs a dokumentumban. - - - + + + Wrong input: must be a number. Rossz bemenet: számnak kell lennie. - + + + + @@ -4870,10 +4925,7 @@ A végső szög lesz az alapszög plusz ennek összege. - - - - + Wrong input: must be a vector. Rossz bemenet: vektornak kell lennie. @@ -4901,8 +4953,8 @@ A végső szög lesz az alapszög plusz ennek összege. Bemenet: vektorosra bővített egyetlen érték. - + Wrong input: must be an integer number. Helytelen bemenet: egész számnak kell lennie. @@ -5313,9 +5365,9 @@ A végső szög lesz az alapszög plusz ennek összege. nézet tulajdonság hozzáadva 'SzövegSzín' - - + + renamed 'DisplayMode' options to 'World/Screen' átnevezte a "Megjelenítési mód" opciót "Környezet / Képernyő" opcióra @@ -5517,16 +5569,16 @@ kézzel az Eszközök -> Kiegészítő kezelő menüből Az eltolás iránya nem meghatározott. Először mozgassa az egeret a tárgy egyik oldalára, hogy meghatározza az irányt - - + + True Igaz - - + + False Hamis @@ -5796,7 +5848,7 @@ Az összekapcsolt elrendezés több példány feldolgozásakor hatékonyabb, de Label - Felirat + Címke @@ -6707,7 +6759,7 @@ Ez zárt alakzatokhoz és szilárd testekhez készült, és nem befolyásolja a Dimension - Méret + Dimenzió @@ -7104,19 +7156,19 @@ Igazra állítva egyesíti vagy hamisra az összetételhez - + Create a face Felület létrehozása - - + + The area of this object Ennek a tárgynak a területe @@ -7160,8 +7212,8 @@ Igazra állítva egyesíti vagy hamisra az összetételhez A másolandó alap tárgy. - + The object along which the copies will be distributed. It must contain 'Edges'. A tárgy, ami körül a másolatokat elosztják. Tartalmaznia kell 'Éleket'. @@ -7176,9 +7228,9 @@ Igazra állítva egyesíti vagy hamisra az összetételhez A csavart tömb forgatási tényezője. - - + + Show the individual array elements (only for Link arrays) Az egyes tömbelemek megmutatása (csak csatolási tömbökhöz) @@ -7307,8 +7359,8 @@ Mentett stílus használatakor a nézettulajdonságok némelyike írásvédett. Ezeket csak a stílus módosításával lehet szerkeszteni a 'Jegyzetstílus szerkesztő' eszközzel. - + The base object that will be duplicated Az alap tárgy, melyet kettőzni kell @@ -8109,14 +8161,14 @@ Hagyja üresen a rendszer alapértelmezetthez. Használja az 'arch' kifejezést amerikai US arch jelölésének kikényszerítésére - + Arrow size Nyíl méret - + Arrow type Nyíl típus diff --git a/src/Mod/Draft/Resources/translations/Draft_id.qm b/src/Mod/Draft/Resources/translations/Draft_id.qm index 652dc491b6..edd23487e2 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_id.qm and b/src/Mod/Draft/Resources/translations/Draft_id.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_id.ts b/src/Mod/Draft/Resources/translations/Draft_id.ts index 6d5de53316..651a12f622 100644 --- a/src/Mod/Draft/Resources/translations/Draft_id.ts +++ b/src/Mod/Draft/Resources/translations/Draft_id.ts @@ -943,14 +943,14 @@ value by using the [ and ] keys while drawing Line width - Tebal garis + Lebar garis px - piksel + px @@ -1126,7 +1126,7 @@ value by using the [ and ] keys while drawing Font size - Ukuran fonta + Ukuran huruf @@ -1537,6 +1537,7 @@ pattern definitions to be added to the standard patterns Ukuran huruf + @@ -1544,7 +1545,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1645,8 +1645,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1968,9 +1968,9 @@ from the Addon Manager. Biarkan FreeCAD mendownload dan memperbarui perpustakaan DXF secara otomatis - - + + Import options Pilihan impor @@ -2188,8 +2188,8 @@ If it is set to '0' the whole spline is treated as a straight segment. If it is set to '0' the whole spline is treated as a straight segment. - + Export options Pilihan ekspor @@ -2466,8 +2466,8 @@ These lines are thicker than normal grid lines. This is the method FreeCAD will use to convert DWG files to DXF. If "Automatic" is chosen, FreeCAD will try to find one of the following converters in the same order as they are shown here. If FreeCAD is unable to find any, you might need to choose a specific converter and indicate its path here under. Choose the "dwg2dxf" utility if using LibreDWG, "ODAFileConverter" if using the ODA file converter, or the "dwg2dwg" utility if using the pro version of QCAD. - + Automatic Otomatis @@ -3388,23 +3388,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3565,9 +3565,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3588,8 +3588,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3597,6 +3595,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3801,6 +3801,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4006,8 +4058,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4047,9 +4099,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4435,8 +4487,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4491,9 +4543,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4504,26 +4556,26 @@ The final angle will be the base angle plus this amount. Polar array - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4543,16 +4595,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4567,8 +4619,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4824,11 +4876,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4840,19 +4892,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4862,10 +4917,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4893,8 +4945,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5305,9 +5357,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5510,16 +5562,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Benar - - + + False Salah @@ -7099,19 +7151,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7155,8 +7207,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7171,9 +7223,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7302,8 +7354,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8106,14 +8158,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Panah ukuran - + Arrow type Jenis Panah diff --git a/src/Mod/Draft/Resources/translations/Draft_it.qm b/src/Mod/Draft/Resources/translations/Draft_it.qm index ca1fac068a..243dd3d70e 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_it.qm and b/src/Mod/Draft/Resources/translations/Draft_it.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_it.ts b/src/Mod/Draft/Resources/translations/Draft_it.ts index 9c68fd21be..1a7304e036 100644 --- a/src/Mod/Draft/Resources/translations/Draft_it.ts +++ b/src/Mod/Draft/Resources/translations/Draft_it.ts @@ -1548,6 +1548,7 @@ da aggiungere ai motivi standard Dimensione del carattere + @@ -1555,7 +1556,6 @@ da aggiungere ai motivi standard - mm mm @@ -1656,8 +1656,8 @@ nel widget scala di annotazione. Se la scala è 1:100 il moltiplicatore è 100.< Larghezza predefinita della linea - + px px @@ -1979,9 +1979,9 @@ da Addon Manager. Consenti a FreeCAD di scaricare e aggiornare automaticamente le librerie DXF - - + + Import options Opzioni di importazione @@ -2199,8 +2199,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Se impostato a '0' l'intera spline viene trattata come un segmento retto. - + Export options Opzioni di esportazione @@ -2474,8 +2474,8 @@ These lines are thicker than normal grid lines. Questo è il metodo che FreeCAD utilizzerà per convertire i file DWG in DXF. Se si sceglie "Automatico", FreeCAD cercherà di trovare uno dei seguenti convertitori nello stesso ordine in cui sono mostrati qui. Se FreeCAD non è in grado di trovarne, potrebbe essere necessario scegliere un convertitore specifico e indicare il suo percorso qui sotto. Scegliere l'utilità "dwg2dxf" se si utilizza LibreDWG, "ODAFileConverter" se si utilizza il convertitore di file ODA, o l'utilità "dwg2dwg" se si utilizza la versione pro di QCAD. - + Automatic Automatica @@ -3390,23 +3390,23 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Imposta la scala usata dagli strumenti di annotazione bozza - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Nessun documento attivo, operazione fallita. @@ -3567,9 +3567,9 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Scegliere la posizione del testo - - + + Pick first point Selezionare il primo punto @@ -3590,8 +3590,6 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Polilinea - - @@ -3599,6 +3597,8 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì. + + Pick next point Selezionare il punto successivo @@ -3803,6 +3803,58 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Annotation style editor Editor degli stili di annotazione + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4008,8 +4060,8 @@ L'angolo finale sarà l'angolo base più questa quantità. Seleziona gli oggetti da tagliare o estendere - + Pick distance Scegliere la distanza @@ -4049,9 +4101,9 @@ L'angolo finale sarà l'angolo base più questa quantità. La Spline è stata chiusa + - Last point has been removed L'ultimo punto è stato rimosso @@ -4437,8 +4489,8 @@ L'angolo finale sarà l'angolo base più questa quantità. Cambia pendenza - + Select an object to upgrade Selezionare un oggetto da promuovere @@ -4493,9 +4545,9 @@ L'angolo finale sarà l'angolo base più questa quantità. Declassa - - + + Task panel: Pannello attività: @@ -4506,26 +4558,26 @@ L'angolo finale sarà l'angolo base più questa quantità. Serie polare - - + + At least one element must be selected. Almeno un elemento deve essere selezionato. - - + + Selection is not suitable for array. La selezione non è adatta per la Serie. - - - - + + + + Object: Oggetto: @@ -4545,16 +4597,16 @@ L'angolo finale sarà l'angolo base più questa quantità. L'angolo è inferiore a -360 gradi. È impostato su questo valore per procedere. - - + + Fuse: Combina: - - + + Create Link array: Crea una Serie di Link: @@ -4569,8 +4621,8 @@ L'angolo finale sarà l'angolo base più questa quantità. Angolo polare: - + Center of rotation: Centro di rotazione: @@ -4826,11 +4878,11 @@ L'angolo finale sarà l'angolo base più questa quantità. Impossibile generare la forma: - - + + Wrong input: base_object not in document. Input errato: oggetto base non nel documento. @@ -4842,19 +4894,22 @@ L'angolo finale sarà l'angolo base più questa quantità. Input errato: percorso oggetto non nel documento. - - - + + + Wrong input: must be a number. Input errato: deve essere un numero. - + + + + @@ -4864,10 +4919,7 @@ L'angolo finale sarà l'angolo base più questa quantità. - - - - + Wrong input: must be a vector. Ingresso errato: deve essere un vettore. @@ -4895,8 +4947,8 @@ L'angolo finale sarà l'angolo base più questa quantità. Input: singolo valore espanso al vettore. - + Wrong input: must be an integer number. Input errato: deve essere un numero intero. @@ -5307,9 +5359,9 @@ L'angolo finale sarà l'angolo base più questa quantità. aggiunta la proprietà di visualizzazione 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' rinominate le opzioni 'DisplayMode' in 'World/Screen' @@ -5512,16 +5564,16 @@ dal menu Strumenti -> Addon Manager La direzione di Offset non è definita. Si prega di spostare il mouse su entrambi i lati dell'oggetto prima per indicare una direzione - - + + True Vero - - + + False Falso @@ -6701,7 +6753,7 @@ Questa funzione è utile con forme chiuse e solidi e non influisce su polilinee Dimension - Quota + Dimensione @@ -7098,19 +7150,19 @@ imposta 'Vero' se il risultato è una fusione o 'Falso' se è un composto - + Create a face Crea una faccia - - + + The area of this object L'area di questo oggetto @@ -7154,8 +7206,8 @@ imposta 'Vero' se il risultato è una fusione o 'Falso' se è un compostoL'oggetto di base che sarà duplicato. - + The object along which the copies will be distributed. It must contain 'Edges'. L'oggetto lungo il quale le copie saranno distribuite. Deve contenere 'Bordi'. @@ -7170,9 +7222,9 @@ imposta 'Vero' se il risultato è una fusione o 'Falso' se è un compostoRotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Mostra i singoli elementi della serie (solo per le serie di link) @@ -7299,8 +7351,8 @@ Quando si utilizza uno stile salvato, alcune delle proprietà della vista divent saranno modificabili solo cambiando lo stile attraverso lo strumento 'Modifica stile di annotazione'. - + The base object that will be duplicated L'oggetto base che verrà duplicato @@ -8098,14 +8150,14 @@ Lasciare vuoto per il sistema predefinito. Usare 'arch' per forzare la notazione dell'arco statunitense - + Arrow size Dimensione freccia - + Arrow type Tipo di freccia @@ -8168,7 +8220,7 @@ beyond the dimension line Draft - Draft + Pescaggio diff --git a/src/Mod/Draft/Resources/translations/Draft_ja.qm b/src/Mod/Draft/Resources/translations/Draft_ja.qm index eb82f05ebf..200dcea98c 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_ja.qm and b/src/Mod/Draft/Resources/translations/Draft_ja.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_ja.ts b/src/Mod/Draft/Resources/translations/Draft_ja.ts index 84c6b99b27..4b1390a2f0 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ja.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ja.ts @@ -1542,6 +1542,7 @@ pattern definitions to be added to the standard patterns フォントサイズ + @@ -1549,7 +1550,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1650,8 +1650,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1973,9 +1973,9 @@ from the Addon Manager. DXF ライブラリの自動的なダウンロードと更新を FreeCAD に許可 - - + + Import options インポート・オプション @@ -2189,8 +2189,8 @@ If it is set to '0' the whole spline is treated as a straight segment. '0' に設定すると、スプライン全体が直線セグメントとして扱われます。 - + Export options エクスポート・オプション @@ -2467,8 +2467,8 @@ These lines are thicker than normal grid lines. FreeCAD が DWG ファイルを DXF へ変換するために使う方法です。「自動」が選択された場合、FreeCAD は以下のコンバーターを表示順に従って検索します。FreeCAD がコンバーターを見つけられなかった場合、特定のコンバーターを選んで、以下で指定する必要があります。LibreDWG を使用する場合は「dwg2dxf」、ODA ファイルコンバーターを使用する場合は「ODAFileConverter」、QCAD pro 版を使用する場合は「dwg2dwg」を選択してください。 - + Automatic 自動 @@ -3389,23 +3389,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3566,9 +3566,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3589,8 +3589,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3598,6 +3596,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3802,6 +3802,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4007,8 +4059,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4048,9 +4100,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4436,8 +4488,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4492,9 +4544,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4505,26 +4557,26 @@ The final angle will be the base angle plus this amount. 軸周整列 - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4544,16 +4596,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4568,8 +4620,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4825,11 +4877,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4841,19 +4893,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4863,10 +4918,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4894,8 +4946,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5306,9 +5358,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5511,16 +5563,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True True - - + + False False @@ -7100,19 +7152,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7156,8 +7208,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7172,9 +7224,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7303,8 +7355,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8107,14 +8159,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size 矢印のサイズ - + Arrow type 矢印のタイプ diff --git a/src/Mod/Draft/Resources/translations/Draft_ka.qm b/src/Mod/Draft/Resources/translations/Draft_ka.qm index f154ca018d..e25cdabf2d 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_ka.qm and b/src/Mod/Draft/Resources/translations/Draft_ka.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_ka.ts b/src/Mod/Draft/Resources/translations/Draft_ka.ts index 909db819cd..05d1bb21bc 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ka.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ka.ts @@ -555,8 +555,8 @@ Negative values will result in copies produced in the negative direction. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. - თუ ჩართულია, მიღებული ობიექტები მასივში შეერთდება, თუ ისინი ერთმანეთს ეხებიან. -ეს მხოლოდ მაშინ მუშაობს, თუ "მასივების მიბმა" გამორთულია. + თუ ჩართულია, მოხდება მასივში მიღებული ობიექტების შერწყმა, თუ ისინი ერთმანეთს ეხებიან. +მუშაობს მხოლოდ მაშინ, თუ "ბმულის მასივი" გამორთულია. @@ -573,7 +573,7 @@ A Link array is more efficient when creating multiple copies, but it cannot be f Link array - მასივების მიბმა + ბმულების მასივი @@ -652,13 +652,13 @@ Change the direction of the axis itself in the property editor. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. - თუ ჩართულია, მოხდება მასივში მიღებული ობიექტების შერწყმა, თუ ისინი ერთმანეთს ეხებიან. -მუშაობს მხოლოდ მაშინ, თუ "ბმულის მასივი" გამორთულია. + თუ ჩართულია, მიღებული ობიექტები მასივში შეერთდება, თუ ისინი ერთმანეთს ეხებიან. +ეს მხოლოდ მაშინ მუშაობს, თუ "მასივების მიბმა" გამორთულია. Fuse - შეერთება + შერწყმა @@ -670,7 +670,7 @@ A Link array is more efficient when creating multiple copies, but it cannot be f Link array - ბმულების მასივი + მასივების მიბმა @@ -962,7 +962,7 @@ value by using the [ and ] keys while drawing px - პქს + px @@ -1058,7 +1058,7 @@ value by using the [ and ] keys while drawing Text spacing - ტექსტში დაშორებები + სიმბოლოებს შორის დაშორება @@ -1549,6 +1549,7 @@ pattern definitions to be added to the standard patterns ფონტის ზომა + @@ -1556,7 +1557,6 @@ pattern definitions to be added to the standard patterns - mm მმ @@ -1657,8 +1657,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.ნაგულისხმევი ხაზის სიგანე - + px px @@ -1803,7 +1803,7 @@ used for linear dimensions. Text spacing - სიმბოლოებს შორის დაშორება + ტექსტში დაშორებები @@ -1978,9 +1978,9 @@ from the Addon Manager. FreeCAD-სთვის DXF ბიბლიოთეკების ავტომატური გადმოწერის და განახლების უფლების მიცემა - - + + Import options შემოტანის მორგება @@ -2197,8 +2197,8 @@ If it is set to '0' the whole spline is treated as a straight segment. თუ დაყენებულია '0', მთელი სპლაინი განიხილება, როგორც სწორი სეგმენტი. - + Export options გატანის მორგება @@ -2474,8 +2474,8 @@ These lines are thicker than normal grid lines. მეთოდი, რომელსაც FreeCAD-ი DWG ფაილების DXF-ში გადასაყვანად გამოიყენებს. თუ არჩეულია "ავტომატური", FreeCAD-ი შეეცდება იპოვოს ერთ-ერთი გადამყვანებიდან, იმ თანამიმდევრობით, როგორც ისინი აქაა ჩამოთვლილი. თუ FreeCAD-ი ვერ იპოვის ვერცერთს, მაშინ საჭიროა, რომ თქვენ დააყენოთ გადამყვანი და მიუთითოთ ბილიკი მის გამშვებ ფაილებამდე. აირჩიეთ "dwg2dxf", თუ იყენებთ LibreDWG-ს, "ODAFileConverter", თუ ODA-ის ფაილებს გარდამქმნელს იყენებთ და "dwg2dwg", თუ QCAD-ის პროფესიონალურ ვერსიას. - + Automatic ავტომატური @@ -3072,7 +3072,7 @@ Not available if Draft preference option 'Use Part Primitives' is enabled Undo - დაბრუნება + დაბრუნება (&U) @@ -3392,23 +3392,23 @@ https://github.com/yorikvanhavre/Draft-dxf-importer დააყენეთ მასშტაბი, რომელიც გამოიყენება მონახაზის ანოტაციის ხელსაწყოების მიერ - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. აქტიური დოკუმენტის გარეშე. გაუქმება. @@ -3569,9 +3569,9 @@ https://github.com/yorikvanhavre/Draft-dxf-importer აირჩიეთ ტექსტის პოზიცია - - + + Pick first point აირჩიეთ პირველი წერტილი @@ -3592,8 +3592,6 @@ https://github.com/yorikvanhavre/Draft-dxf-importer პოლიხაზი - - @@ -3601,6 +3599,8 @@ https://github.com/yorikvanhavre/Draft-dxf-importer + + Pick next point აირჩიეთ შემდეგი წერტილი @@ -3805,6 +3805,58 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Annotation style editor ანოტაციის სტილის რედაქტორი + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4010,8 +4062,8 @@ The final angle will be the base angle plus this amount. აირჩიეთ გასაფართოებელი ან შესავიწროებელი ობიექტები - + Pick distance აირჩიეთ დაშორება @@ -4051,9 +4103,9 @@ The final angle will be the base angle plus this amount. სპლაინი დაიხურა + - Last point has been removed ბოლო წერტილი მოცილებულია @@ -4439,8 +4491,8 @@ The final angle will be the base angle plus this amount. დახრილობის შეცვლა - + Select an object to upgrade აირჩიეთ ობიექტი განახლებისთვის @@ -4495,9 +4547,9 @@ The final angle will be the base angle plus this amount. დაქვეითება - - + + Task panel: ამოცანების ზოლი: @@ -4508,26 +4560,26 @@ The final angle will be the base angle plus this amount. პოლარული მასივი - - + + At least one element must be selected. არჩეული უნდა იყოს მინიმუმ ერთი ელემენტი. - - + + Selection is not suitable for array. მონიშნული მასივის მოთხოვნებს არ შეესაბამება. - - - - + + + + Object: ობიექტი: @@ -4547,16 +4599,16 @@ The final angle will be the base angle plus this amount. კუთხე არის -360 გრადუსზე დაბლა. გასაგრძელებლად დაყენებულია ამ მნიშვნელობაზე. - - + + Fuse: შერწყმა: - - + + Create Link array: ბმულების მასივის შექმნა: @@ -4571,8 +4623,8 @@ The final angle will be the base angle plus this amount. პოლარული ბიჯი: - + Center of rotation: შებრუნების ცენტრი: @@ -4828,11 +4880,11 @@ The final angle will be the base angle plus this amount. მოხაზულობის გენერაცია შეუძლებელია: - - + + Wrong input: base_object not in document. არასწორი შეყვანა: საბაზისო ობიექტი დოკუმენტში არაა. @@ -4844,19 +4896,22 @@ The final angle will be the base angle plus this amount. არასწორი შეყვანა: ობიექტის ბილიკი დოკუმენტში არაა. - - - + + + Wrong input: must be a number. არასწორი შეყვანა: უნდა იყოს რიცხვი. - + + + + @@ -4866,10 +4921,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. არასწორი შეყვანა: უნდა იყოს ვექტორი. @@ -4897,8 +4949,8 @@ The final angle will be the base angle plus this amount. შეტანა: ერთი მნიშვნელობა, ვექტორამდე გაზრდილი. - + Wrong input: must be an integer number. არასწორი შეყვანა: უნდა იყოს მთელი რიცხვი. @@ -5309,9 +5361,9 @@ The final angle will be the base angle plus this amount. თვისება 'TextColor' დამატებულია - - + + renamed 'DisplayMode' options to 'World/Screen' სახელი გადაერქვა პარამეტრს 'DisplayMode'-დან 'World/Screen'-ზე @@ -5514,16 +5566,16 @@ from menu Tools -> Addon Manager წანაცვლების მიმართულება აღწერილი არაა. მის მისათითებლად თაგუნა ობიექტის რომელიმე მხარეს, საჭირო მიმართულებით გაამოძრავეთ - - + + True ჭეშმარიტი - - + + False მცდარი @@ -6262,7 +6314,7 @@ The array can be turned into an orthogonal or a polar array by changing its type Rotate - შებრუნება + შემობრუნება @@ -6395,7 +6447,7 @@ If other objects are selected they are ignored. Fillet - მომრგვალებული ნაზოლი + მომრგვალება @@ -6598,7 +6650,7 @@ The array can be turned into a polar or a circular array by changing its type. Scale - მასშტაბი + მასშტაბირება @@ -6703,7 +6755,7 @@ This is intended to be used with closed shapes and solids, and doesn't affect op Dimension - განზომილება + ზომა @@ -6755,7 +6807,7 @@ then draw a line to specify the distance and direction of stretching. Rectangle - მართკუთხედი + ოთხკუთხედი @@ -7100,19 +7152,19 @@ set True for fusion or False for compound - + Create a face ზედაპირის შექმნა - - + + The area of this object ობიექტის ფართობი @@ -7156,8 +7208,8 @@ set True for fusion or False for compound საბაზისო ობიექტი, რომელიც გაორმაგდება. - + The object along which the copies will be distributed. It must contain 'Edges'. ობიექტი, რომლს გასწვრივაც გადანაწილდება ასლები. ის აუცილებლად უნდა შეიცავდეს „წიბოებს“. @@ -7172,9 +7224,9 @@ set True for fusion or False for compound გრეხილი მასივის ბრუნვის ფაქტორი. - - + + Show the individual array elements (only for Link arrays) მასივის ელემენტების ჩვენება (მხოლოდ ბმულების მასივებისთვის) @@ -7301,8 +7353,8 @@ they will only be editable by changing the style through the 'Annotation style e მათი რედაქტირება შესაძლებელია მხოლოდ სტილის შეცვლით "ანოტაციის სტილის რედაქტორის" ხელსაწყოს მეშვეობით. - + The base object that will be duplicated საბაზისო ობიექტი, რომელიც გაორმაგდება @@ -8100,14 +8152,14 @@ Use 'arch' to force US arch notation გამოიყენეთ „არქიტექტურა“ აშშ-ის არქიტექტურული ნოტაციისთვის - + Arrow size ისრის ზომა - + Arrow type ისრის ტიპი @@ -8172,7 +8224,7 @@ beyond the dimension line Draft - მონახაზი + წყალშიგი diff --git a/src/Mod/Draft/Resources/translations/Draft_ko.qm b/src/Mod/Draft/Resources/translations/Draft_ko.qm index 988bf57e2d..812a1f067f 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_ko.qm and b/src/Mod/Draft/Resources/translations/Draft_ko.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_ko.ts b/src/Mod/Draft/Resources/translations/Draft_ko.ts index ad4d593cc4..f86d24c0b4 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ko.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ko.ts @@ -1544,6 +1544,7 @@ pattern definitions to be added to the standard patterns 폰트 크기 + @@ -1551,7 +1552,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1652,8 +1652,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1975,9 +1975,9 @@ from the Addon Manager. Allow FreeCAD to automatically download and update the DXF libraries - - + + Import options 가져오기 옵션 @@ -2195,8 +2195,8 @@ If it is set to '0' the whole spline is treated as a straight segment. '0'으로 설정하면 전체 스플라인이 직선 세그먼트로 처리됩니다. - + Export options 내보내기 옵션 @@ -2473,8 +2473,8 @@ These lines are thicker than normal grid lines. 이것은 FreeCAD가 DWG 파일을 DXF로 변환하는 데 사용하는 방법입니다. "자동"을 선택하면 FreeCAD는 여기에 표시된 것과 동일한 순서로 다음 변환기 중 하나를 찾으려고 시도합니다. FreeCAD가 변환기를 찾을 수 없는 경우, 특정 변환기를 선택하고 아래에 해당 경로를 표시해야 할 수 있습니다. LibreDWG를 사용하는 경우 "dwg2dxf" 유틸리티를, ODA 파일 변환기를 사용하는 경우 "ODAFileConverter"를, QCAD의 프로 버전을 사용하는 경우 "dwg2dwg" 유틸리티를 선택합니다. - + Automatic Automatic @@ -3395,23 +3395,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3572,9 +3572,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3595,8 +3595,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3604,6 +3602,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3808,6 +3808,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4013,8 +4065,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4054,9 +4106,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4442,8 +4494,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4498,9 +4550,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4511,26 +4563,26 @@ The final angle will be the base angle plus this amount. 극 배열 - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4550,16 +4602,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4574,8 +4626,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4831,11 +4883,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4847,19 +4899,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4869,10 +4924,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4900,8 +4952,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5312,9 +5364,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5517,16 +5569,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True - - + + False 거짓 @@ -7106,19 +7158,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7162,8 +7214,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7178,9 +7230,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7309,8 +7361,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8113,14 +8165,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size 화살표 크기 - + Arrow type 화살표 유형 diff --git a/src/Mod/Draft/Resources/translations/Draft_nl.qm b/src/Mod/Draft/Resources/translations/Draft_nl.qm index 2f9b26bead..a99201b84a 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_nl.qm and b/src/Mod/Draft/Resources/translations/Draft_nl.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_nl.ts b/src/Mod/Draft/Resources/translations/Draft_nl.ts index 80a3442c0d..16c1a9e3d4 100644 --- a/src/Mod/Draft/Resources/translations/Draft_nl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_nl.ts @@ -1537,6 +1537,7 @@ pattern definitions to be added to the standard patterns Lettergrootte + @@ -1544,7 +1545,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1645,8 +1645,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1968,9 +1968,9 @@ te installeren vanuit de Uitbreidingsmanager. Sta FreeCAD toe om de DXF-bibliotheken automatisch te downloaden en bij te werken - - + + Import options Importeeropties @@ -2188,8 +2188,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Als het is ingesteld op '0' wordt de hele spline behandeld als een recht segment. - + Export options Exportopties @@ -2466,8 +2466,8 @@ These lines are thicker than normal grid lines. This is the method FreeCAD will use to convert DWG files to DXF. If "Automatic" is chosen, FreeCAD will try to find one of the following converters in the same order as they are shown here. If FreeCAD is unable to find any, you might need to choose a specific converter and indicate its path here under. Choose the "dwg2dxf" utility if using LibreDWG, "ODAFileConverter" if using the ODA file converter, or the "dwg2dwg" utility if using the pro version of QCAD. - + Automatic Automatisch @@ -3386,23 +3386,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3475,7 +3475,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire - Draad + Polygonale lijn @@ -3563,9 +3563,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Kies tekstpositie - - + + Pick first point Kies het eerste punt @@ -3586,8 +3586,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3595,6 +3593,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Kies het volgende punt @@ -3799,6 +3799,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4004,8 +4056,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Kies afstand @@ -4045,9 +4097,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4433,8 +4485,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Selecteer een object om te upgraden @@ -4489,9 +4541,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Taakpaneel: @@ -4502,26 +4554,26 @@ The final angle will be the base angle plus this amount. Polair matrix - - + + At least one element must be selected. Ten minste één element moet worden geselecteerd. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4541,16 +4593,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Samenvoegen: - - + + Create Link array: Create Link array: @@ -4565,8 +4617,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4822,11 +4874,11 @@ The final angle will be the base angle plus this amount. Kan geen vorm genereren: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4838,19 +4890,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Verkeerde invoer: moet een getal zijn. - + + + + @@ -4860,10 +4915,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4891,8 +4943,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5303,9 +5355,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5508,16 +5560,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Waar - - + + False Onwaar @@ -7097,19 +7149,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7153,8 +7205,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7169,9 +7221,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7300,8 +7352,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8104,14 +8156,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Pijl grootte - + Arrow type Pijl type diff --git a/src/Mod/Draft/Resources/translations/Draft_pl.qm b/src/Mod/Draft/Resources/translations/Draft_pl.qm index 28ca431062..3517ff7386 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_pl.qm and b/src/Mod/Draft/Resources/translations/Draft_pl.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_pl.ts b/src/Mod/Draft/Resources/translations/Draft_pl.ts index 0d3a44b5de..32c0a8d785 100644 --- a/src/Mod/Draft/Resources/translations/Draft_pl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_pl.ts @@ -656,7 +656,7 @@ Działa to tylko wtedy, gdy opcja "Szyk łączy" jest nieaktywna. Fuse - Scalenie + Scal @@ -1544,6 +1544,7 @@ definicje wzorów, do dodania do standardowych wzorów Rozmiar czcionki + @@ -1551,7 +1552,6 @@ definicje wzorów, do dodania do standardowych wzorów - mm mm @@ -1652,8 +1652,8 @@ w widżecie Skala adnotacji. Jeśli skala wynosi 1:100, mnożnik wynosi 100.Domyślna szerokość linii - + px px @@ -1975,9 +1975,9 @@ z Menedżera dodatków. Pozwól programowi FreeCAD na automatyczne pobieranie i aktualizację bibliotek DXF - - + + Import options Opcje importu @@ -2195,8 +2195,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Jeśli jest ustawiona na "0", cały splajn jest traktowany jako odcinek prosty. - + Export options Opcje eksportu @@ -2475,10 +2475,10 @@ Linie te są grubsze niż zwykłe linie siatki. Jest to metoda, której FreeCAD użyje do konwersji plików DWG na DXF. Jeśli wybrano opcję "Automatycznie", FreeCAD spróbuje znaleźć jeden z poniższych konwerterów w takiej samej kolejności, w jakiej są one tutaj pokazane. Jeśli FreeCAD nie będzie w stanie znaleźć żadnego z nich, konieczne może być wybranie konkretnego konwertera i wskazanie jego ścieżki w tym miejscu. Wybierz narzędzie "dwg2dxf" jeśli używasz LibreDWG, "ODAFileConverter" jeśli używasz konwertera plików ODA, lub narzędzie "dwg2dwg" jeśli używasz wersji Pro programu QCAD. - + Automatic - Automatyczna + Automatycznie @@ -2754,7 +2754,7 @@ będzie widoczny tylko podczas wykonywania poleceń Global - Globalnie + Globalne @@ -3397,23 +3397,23 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Ustaw skalę używaną przez narzędzia do tworzenia opisów - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Brak aktywnego dokumentu — przerwano. @@ -3574,9 +3574,9 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Wybierz pozycję tekstu - - + + Pick first point Wybierz pierwszy punkt @@ -3597,8 +3597,6 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Polilinia - - @@ -3606,6 +3604,8 @@ https://github.com/yorikvanhavre/Draft-dxf-importer + + Pick next point Wybierz kolejny punkt @@ -3810,6 +3810,58 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Annotation style editor Edytor stylu opisu + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4015,8 +4067,8 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Wybierz obiekty do przycięcia lub wydłużenia - + Pick distance Wybierz odległość @@ -4056,9 +4108,9 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Splajn został zamknięty + - Last point has been removed Usunięto ostatni punkt @@ -4444,8 +4496,8 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Zmień nachylenie - + Select an object to upgrade Wybierz obiekt do ulepszenia @@ -4500,9 +4552,9 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Rozbij kształt - - + + Task panel: Panel zadań: @@ -4513,26 +4565,26 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Szyk biegunowy - - + + At least one element must be selected. Przynajmniej jeden element musi zostać wybrany. - - + + Selection is not suitable for array. Wybór nie jest odpowiedni dla szyku. - - - - + + + + Object: Obiekt: @@ -4552,16 +4604,16 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Kąt jest mniejszy niż -360 stopni. Aby kontynuować, należy ustawić go na tę wartość. - - + + Fuse: Scalenie: - - + + Create Link array: Utwórz szyk odnośników: @@ -4576,8 +4628,8 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Kąt polarny: - + Center of rotation: Środek obrotu: @@ -4833,11 +4885,11 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Nie można wygenerować kształtu: - - + + Wrong input: base_object not in document. Nieprawidłowe dane wejściowe: obiektu base_object nie ma w dokumencie. @@ -4849,19 +4901,22 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Nieprawidłowe dane wejściowe: obiektu "path_object" nie ma w dokumencie. - - - + + + Wrong input: must be a number. Błędne wejście: musi być liczba. - + + + + @@ -4871,10 +4926,7 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość. - - - - + Wrong input: must be a vector. Błędne wejście: musi być wektor. @@ -4902,8 +4954,8 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.Dane wejściowe: pojedyncza wartość rozszerzona do wektora. - + Wrong input: must be an integer number. Nieprawidłowe dane wejściowe: spodziewana liczba całkowita. @@ -5314,9 +5366,9 @@ Kąt końcowy będzie równy kątowi podstawowemu plus ta wartość.dodano właściwość widoku "Kolor tekstu" - - + + renamed 'DisplayMode' options to 'World/Screen' zmieniono nazwę opcji "Tryb wyświetlania" na "Otoczenie / Ekran" @@ -5518,16 +5570,16 @@ Proszę zainstalować dodatek bibliotek dxf ręcznie z narzędzi Menu -> Mene Kierunek odsunięcia nie jest zdefiniowany. Proszę przesuń kursor myszki do wewnątrz lub na zewnątrz obiektu, aby wskazać kierunek - - + + True Prawda - - + + False Fałsz @@ -6206,7 +6258,7 @@ CTRL, aby przyciągnąć, SHIFT, aby utworzyć wiązanie. Edit - Edytuj + Edycja @@ -6313,7 +6365,7 @@ Utwórz najpierw grupę, aby użyć tego narzędzia. Autogroup - Grupuj automatycznie + Grupowanie automatyczne @@ -6427,7 +6479,7 @@ Jeśli wybrane zostaną inne obiekty, zostaną one zignorowane. Polygon - Wielokąt foremny + Wielokąt @@ -6606,7 +6658,7 @@ Szyk można przekształcić w szyk polarny lub kołowy, zmieniając jego typ. Scale - Skaluj + Skala @@ -7113,19 +7165,19 @@ ustaw wartość Prawda dla utworzenia połączenia, lub Fałsz dla kształtu zł - + Create a face Utwórz ścianę - - + + The area of this object Obszar tego obiektu @@ -7169,8 +7221,8 @@ ustaw wartość Prawda dla utworzenia połączenia, lub Fałsz dla kształtu zł Obiekt podstawowy, który będzie zduplikowany. - + The object along which the copies will be distributed. It must contain 'Edges'. Obiekt, wzdłuż którego zostaną rozmieszczone kopie. Musi on zawierać "Krawędzie". @@ -7185,9 +7237,9 @@ ustaw wartość Prawda dla utworzenia połączenia, lub Fałsz dla kształtu zł Współczynnik obrotu krętego szyku. - - + + Show the individual array elements (only for Link arrays) Pokaż poszczególne elementy szyku (tylko dla szyków powiązań) @@ -7316,8 +7368,8 @@ Podczas używania zapisanego stylu niektóre właściwości widoku będą dostę będzie można je edytować tylko przez zmianę stylu za pomocą narzędzia "edytor stylów adnotacji". - + The base object that will be duplicated Obiekt podstawowy, który zostanie zduplikowany @@ -8118,14 +8170,14 @@ Pozostaw puste dla systemowych ustawień domyślnych.. Użyj "arch", aby wymusić notację architektoniczną amerykańską - + Arrow size Rozmiar strzałki - + Arrow type Styl strzałki @@ -8188,7 +8240,7 @@ beyond the dimension line Draft - Rysunek Roboczy + Rysunek roboczy diff --git a/src/Mod/Draft/Resources/translations/Draft_pt-BR.qm b/src/Mod/Draft/Resources/translations/Draft_pt-BR.qm index 853f1a9660..483e45ca6a 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_pt-BR.qm and b/src/Mod/Draft/Resources/translations/Draft_pt-BR.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_pt-BR.ts b/src/Mod/Draft/Resources/translations/Draft_pt-BR.ts index 0fae0c89d2..82b30f8709 100644 --- a/src/Mod/Draft/Resources/translations/Draft_pt-BR.ts +++ b/src/Mod/Draft/Resources/translations/Draft_pt-BR.ts @@ -1543,6 +1543,7 @@ pattern definitions to be added to the standard patterns Tamanho da fonte + @@ -1550,7 +1551,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1651,8 +1651,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1974,9 +1974,9 @@ do Gerenciador de Complementos. Permitir que o FreeCAD baixe e atualize automaticamente as bibliotecas DXF - - + + Import options Opções de importação @@ -2194,8 +2194,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Se definido como '0' toda a spline é tratada como um segmento reto. - + Export options Opções de Exportação @@ -2472,8 +2472,8 @@ These lines are thicker than normal grid lines. Este é o método que o FreeCAD usará para converter arquivos DWG para DXF. Se for escolhido "Automático", o FreeCAD tentará encontrar um dos seguintes conversores na mesma ordem que eles são mostrados aqui. Se o FreeCAD não for capaz de encontrar algum, será necessário escolher um conversor específico e indicar seu caminho aqui abaixo. Escolha o utilitário "dwg2dxf" se estiver usando o LibreDWG, "ODAFileConverter" se estiver usando o conversor de arquivos ODA, ou o utilitário "dwg2dwg" se estiver utilizando a versão pro do QCAD. - + Automatic Automática @@ -3391,23 +3391,23 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Definir a escala usada pelas ferramentas de anotação de rascunho - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Nenhum documento ativo. Abortando. @@ -3568,9 +3568,9 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Selecionar posição do texto - - + + Pick first point Escolha o primeiro ponto @@ -3591,8 +3591,6 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Polilinha - - @@ -3600,6 +3598,8 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. + + Pick next point Escolha o próximo ponto @@ -3804,6 +3804,58 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Annotation style editor Editor de estilos de anotação + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4008,8 +4060,8 @@ The final angle will be the base angle plus this amount. Selecione objetos para aparar ou estender - + Pick distance Indique a distância @@ -4049,9 +4101,9 @@ The final angle will be the base angle plus this amount. A Spline foi fechada + - Last point has been removed O último ponto foi removido @@ -4437,8 +4489,8 @@ The final angle will be the base angle plus this amount. Alterar inclinação - + Select an object to upgrade Selecione um objeto para promover @@ -4493,9 +4545,9 @@ The final angle will be the base angle plus this amount. Rebaixar - - + + Task panel: Painel de tarefas: @@ -4506,26 +4558,26 @@ The final angle will be the base angle plus this amount. Rede polar - - + + At least one element must be selected. Deve ser selecionado ao menos um elemento. - - + + Selection is not suitable for array. A seleção não é adequada para matriz. - - - - + + + + Object: Objeto: @@ -4545,16 +4597,16 @@ The final angle will be the base angle plus this amount. O ângulo está abaixo de -360 graus. Será usado um valor de -360 graus para prosseguir. - - + + Fuse: Fundir: - - + + Create Link array: Rede de trajetória link: @@ -4569,8 +4621,8 @@ The final angle will be the base angle plus this amount. Ângulo polar: - + Center of rotation: Centro de rotação: @@ -4826,11 +4878,11 @@ The final angle will be the base angle plus this amount. Não é possível gerar uma forma: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4842,19 +4894,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Entrada errada: deve ser um número. - + + + + @@ -4864,10 +4919,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Entrada errada: deve ser um vetor. @@ -4895,8 +4947,8 @@ The final angle will be the base angle plus this amount. Entrada: valor único expandido para vetor. - + Wrong input: must be an integer number. Entrada errada: deve ser um número inteiro. @@ -5307,9 +5359,9 @@ The final angle will be the base angle plus this amount. propriedade de visualização 'TextColor' adicionada - - + + renamed 'DisplayMode' options to 'World/Screen' renomeado opção 'DisplayMode' para 'Mundo/Tela' @@ -5512,16 +5564,16 @@ no menu ferramentas -> Gerenciador de Extensões Direção do deslocamento não definida. Por favor, primeiro mova o mouse em ambos os lados do objeto para indicar uma direção - - + + True Verdadeiro - - + + False Falso @@ -7098,19 +7150,19 @@ defina Verdadeiro para fusão ou Falso para o composto - + Create a face Criar uma face - - + + The area of this object A área deste objeto @@ -7154,8 +7206,8 @@ defina Verdadeiro para fusão ou Falso para o composto O objeto base que será duplicado. - + The object along which the copies will be distributed. It must contain 'Edges'. O objeto ao longo do qual as cópias serão distribuídas. Deve conter 'Arestas'. @@ -7170,9 +7222,9 @@ defina Verdadeiro para fusão ou Falso para o composto Fator de rotação da rede torcida. - - + + Show the individual array elements (only for Link arrays) Mostrar os elementos de matriz individuais (somente para redes de vínculos) @@ -7301,8 +7353,8 @@ Ao usar um estilo salvo, algumas das propriedades de exibição se tornarão som eles só serão editáveis mudando o estilo através da ferramenta "Editor de estilo de anotação". - + The base object that will be duplicated O objeto de base que será duplicado @@ -8104,14 +8156,14 @@ Deixe em branco para o padrão do sistema. Use "arco" para forçar a notação de arco dos EUA - + Arrow size Tamanho do ponteiro - + Arrow type Tipo de ponteiro diff --git a/src/Mod/Draft/Resources/translations/Draft_pt-PT.qm b/src/Mod/Draft/Resources/translations/Draft_pt-PT.qm index 505e288f13..d40c3a2f37 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_pt-PT.qm and b/src/Mod/Draft/Resources/translations/Draft_pt-PT.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_pt-PT.ts b/src/Mod/Draft/Resources/translations/Draft_pt-PT.ts index cee0856341..597401b6be 100644 --- a/src/Mod/Draft/Resources/translations/Draft_pt-PT.ts +++ b/src/Mod/Draft/Resources/translations/Draft_pt-PT.ts @@ -1546,6 +1546,7 @@ pattern definitions to be added to the standard patterns Tamanho da fonte + @@ -1553,7 +1554,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1654,8 +1654,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1977,9 +1977,9 @@ from the Addon Manager. Permitir que o FreeCAD baixe e atualize automaticamente as bibliotecas DXF - - + + Import options Opções de importação @@ -2197,8 +2197,8 @@ If it is set to '0' the whole spline is treated as a straight segment. If it is set to '0' the whole spline is treated as a straight segment. - + Export options Opções de Exportação @@ -2475,8 +2475,8 @@ These lines are thicker than normal grid lines. This is the method FreeCAD will use to convert DWG files to DXF. If "Automatic" is chosen, FreeCAD will try to find one of the following converters in the same order as they are shown here. If FreeCAD is unable to find any, you might need to choose a specific converter and indicate its path here under. Choose the "dwg2dxf" utility if using LibreDWG, "ODAFileConverter" if using the ODA file converter, or the "dwg2dwg" utility if using the pro version of QCAD. - + Automatic Automática @@ -3396,23 +3396,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3573,9 +3573,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Escolha a posição do texto - - + + Pick first point Escolher primeiro ponto @@ -3596,8 +3596,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3605,6 +3603,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Escolha o próximo ponto @@ -3809,6 +3809,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4014,8 +4066,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4055,9 +4107,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4443,8 +4495,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4499,9 +4551,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4512,26 +4564,26 @@ The final angle will be the base angle plus this amount. Matriz polar - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4551,16 +4603,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4575,8 +4627,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4832,11 +4884,11 @@ The final angle will be the base angle plus this amount. Não é possível gerar a forma: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4848,19 +4900,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Entrada errada: deve ser um número. - + + + + @@ -4870,10 +4925,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Entrada errada: deve ser um vetor. @@ -4901,8 +4953,8 @@ The final angle will be the base angle plus this amount. Entrada: valor único expandido para vetor. - + Wrong input: must be an integer number. Entrada errada: deve ser um número inteiro. @@ -5313,9 +5365,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5518,16 +5570,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Verdadeiro - - + + False Falso @@ -7107,19 +7159,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7163,8 +7215,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7179,9 +7231,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7310,8 +7362,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8114,14 +8166,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Tamanho da seta - + Arrow type Tipo de seta diff --git a/src/Mod/Draft/Resources/translations/Draft_ro.qm b/src/Mod/Draft/Resources/translations/Draft_ro.qm index 4b13665ac6..d6804669da 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_ro.qm and b/src/Mod/Draft/Resources/translations/Draft_ro.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_ro.ts b/src/Mod/Draft/Resources/translations/Draft_ro.ts index 585dd37559..0aeb27323b 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ro.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ro.ts @@ -1547,6 +1547,7 @@ pattern definitions to be added to the standard patterns Dimensiunea fontului + @@ -1554,7 +1555,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1655,8 +1655,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1978,9 +1978,9 @@ din Managerul de Suplimente. Permite FreeCAD să descarce automat și să actualizeze bibliotecile DXF - - + + Import options Importare opțiuni @@ -2198,8 +2198,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Dacă este setată la '0' întreaga curbă este tratată ca un segment drept. - + Export options Opţiunile de export @@ -2476,8 +2476,8 @@ These lines are thicker than normal grid lines. Aceasta este metoda pe care FreeCAD o va folosi pentru a converti fişierele DWG în DXF. Dacă este ales "Automatic", FreeCAD va încerca să găsească unul dintre următorii convertori în aceeași ordine în care sunt afișați aici. Dacă FreeCAD nu poate găsi unul, ar putea fi necesar să alegeți un anumit convertor și să indicați calea acestuia de aici desubt. Alegeți utilitatea "dwg2dxf" dacă folosiți LibreDWG, "ODAFileConverter" dacă folosiți convertorul de fișiere ODA sau utilitatea "dwg2dwg" dacă folosiți versiunea pro a QCAD. - + Automatic Automat @@ -3075,7 +3075,7 @@ Not available if Draft preference option 'Use Part Primitives' is enabled Undo - Anulează + Undo @@ -3398,23 +3398,23 @@ Pentru a permite FreeCAD să descarce aceste biblioteci, răspunde Da.Setați scara utilizată de instrumentele de adnotare a ciornei - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Niciun document activ. Abandonat. @@ -3575,9 +3575,9 @@ Pentru a permite FreeCAD să descarce aceste biblioteci, răspunde Da.Alege poziţia textului - - + + Pick first point Alege primul punct @@ -3598,8 +3598,6 @@ Pentru a permite FreeCAD să descarce aceste biblioteci, răspunde Da.Polilină - - @@ -3607,6 +3605,8 @@ Pentru a permite FreeCAD să descarce aceste biblioteci, răspunde Da. + + Pick next point Alege următorul punct @@ -3811,6 +3811,58 @@ Pentru a permite FreeCAD să descarce aceste biblioteci, răspunde Da.Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4016,8 +4068,8 @@ The final angle will be the base angle plus this amount. Selectați obiecte de tăiat sau extins - + Pick distance Alege distanța @@ -4057,9 +4109,9 @@ The final angle will be the base angle plus this amount. Linia a fost închisă + - Last point has been removed Ultimul punct a fost eliminat @@ -4445,8 +4497,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4501,9 +4553,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4514,26 +4566,26 @@ The final angle will be the base angle plus this amount. Matrice polară - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4553,16 +4605,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4577,8 +4629,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4834,11 +4886,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4850,19 +4902,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4872,10 +4927,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4903,8 +4955,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5315,9 +5367,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5520,16 +5572,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Adevărat - - + + False Fals @@ -5854,7 +5906,7 @@ will be used to provide information to the label. Hatch - Trapă + Hatch @@ -7109,19 +7161,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7165,8 +7217,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7181,9 +7233,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7312,8 +7364,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8116,14 +8168,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Dimensiunea săgeții - + Arrow type Tipul de săgeată diff --git a/src/Mod/Draft/Resources/translations/Draft_ru.qm b/src/Mod/Draft/Resources/translations/Draft_ru.qm index ccd1e937f7..2f87926f78 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_ru.qm and b/src/Mod/Draft/Resources/translations/Draft_ru.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_ru.ts b/src/Mod/Draft/Resources/translations/Draft_ru.ts index c0f8643631..cbdf1875a7 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ru.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ru.ts @@ -553,8 +553,8 @@ Negative values will result in copies produced in the negative direction. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. - Если флажок установлен, результирующие объекты в массиве будут сливаться, если они соприкасаются друг с другом. -Это работает только в том случае, если «массив ссылок» отключен. + Если отмечено, то результирующие объекты в массиве будут слиты, если касаются друг друга. +Это работает только в том случае, если "Связь массивов" отключена. @@ -565,13 +565,13 @@ This only works if "Link array" is off. If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - Если флажок установлен, результирующий объект будет «массивом ссылок» вместо обычного массива. -Массив Link более эффективен при создании нескольких копий, но его нельзя объединить вместе. + Если отмечено, результирующим объектом будет "Массив ссылок" вместо обычного массива. +Массив ссылок более эффективен при создании нескольких копий, но к нему нельзя применить операцию слияния. Link array - Массив ссылок + Массив из связанных объектов @@ -650,25 +650,25 @@ Change the direction of the axis itself in the property editor. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. - Если отмечено, то результирующие объекты в массиве будут слиты, если касаются друг друга. -Это работает только в том случае, если "Связь массивов" отключена. + Если флажок установлен, результирующие объекты в массиве будут сливаться, если они соприкасаются друг с другом. +Это работает только в том случае, если «массив ссылок» отключен. Fuse - Объединение + Слияние If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - Если отмечено, результирующим объектом будет "Массив ссылок" вместо обычного массива. -Массив ссылок более эффективен при создании нескольких копий, но к нему нельзя применить операцию слияния. + Если флажок установлен, результирующий объект будет «массивом ссылок» вместо обычного массива. +Массив Link более эффективен при создании нескольких копий, но его нельзя объединить вместе. Link array - Массив из связанных объектов + Массив ссылок @@ -1091,7 +1091,7 @@ value by using the [ and ] keys while drawing Tick-2 - Зацепление-2 + Засечка-2 @@ -1541,6 +1541,7 @@ pattern definitions to be added to the standard patterns Размер шрифта + @@ -1548,7 +1549,6 @@ pattern definitions to be added to the standard patterns - mm мм @@ -1649,8 +1649,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.Ширина линии по умолчанию - + px пикс. @@ -1687,7 +1687,7 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100. Tick-2 - Засечка-2 + Зацепление-2 @@ -1972,9 +1972,9 @@ from the Addon Manager. Автоматически загружать и обновлять библиотеки DXF - - + + Import options Параметры импорта @@ -2186,8 +2186,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Если задано значение «0», весь сплайн рассматривается как прямой отрезок. - + Export options Параметры экспорта @@ -2464,8 +2464,8 @@ These lines are thicker than normal grid lines. Это метод FreeCAD будет использовать для преобразования DWG файлов в DXF. Если выбрано "Автоматически", FreeCAD попытается найти один из следующих конвертеров в том порядке, что они показаны здесь. Если FreeCAD не может найти его, вам может потребоваться выбрать конкретный конвертер и указать путь к нему сразу. Выберите утилиту "dwg2dxf" при использовании LibreDWG, "ODAFileConverter" при использовании ODA конвертера файлов или утилиты "dwg2dwg" при использовании версии QCAD. - + Automatic Автоматически @@ -3382,23 +3382,23 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Установите масштаб для аннотаций - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Нет активного документа. Прерывание. @@ -3559,9 +3559,9 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Указать положение текста - - + + Pick first point Указать первую точку @@ -3582,8 +3582,6 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Полилиния - - @@ -3591,6 +3589,8 @@ https://github.com/yorikvanhavre/Draft-dxf-importer + + Pick next point Указать следующую точку @@ -3795,6 +3795,58 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Annotation style editor Редактор стилей надписей + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4000,8 +4052,8 @@ The final angle will be the base angle plus this amount. Выберите объекты для обрезки или удлинения - + Pick distance Выберите расстояние @@ -4041,9 +4093,9 @@ The final angle will be the base angle plus this amount. Сплайн замкнут + - Last point has been removed Последняя точка была удалена @@ -4429,8 +4481,8 @@ The final angle will be the base angle plus this amount. Изменить уклон - + Select an object to upgrade Выберите объект для обновления @@ -4485,9 +4537,9 @@ The final angle will be the base angle plus this amount. Упрощающее Преобразование - - + + Task panel: Панель задач: @@ -4498,26 +4550,26 @@ The final angle will be the base angle plus this amount. Массив вращения - - + + At least one element must be selected. Должен быть выбран хотя бы один элемент. - - + + Selection is not suitable for array. Выбор не подходит для массива. - - - - + + + + Object: Объект: @@ -4537,16 +4589,16 @@ The final angle will be the base angle plus this amount. Угол ниже -360 градусов. Он установлен к этому значению для продолжения. - - + + Fuse: Соединить: - - + + Create Link array: Создать массив ссылок: @@ -4561,8 +4613,8 @@ The final angle will be the base angle plus this amount. Полярный угол: - + Center of rotation: Центр вращения: @@ -4818,11 +4870,11 @@ The final angle will be the base angle plus this amount. Невозможно создать форму: - - + + Wrong input: base_object not in document. "Неверный ввод: объекта нет в документе". @@ -4834,19 +4886,22 @@ The final angle will be the base angle plus this amount. "Неверный ввод: объекта нет в документе". - - - + + + Wrong input: must be a number. Неверный ввод: должно быть число. - + + + + @@ -4856,10 +4911,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Неверный ввод: должен быть вектор. @@ -4887,8 +4939,8 @@ The final angle will be the base angle plus this amount. Вход: одно значение, расширенное до вектора. - + Wrong input: must be an integer number. Неправильный ввод: должно быть целое число. @@ -5299,9 +5351,9 @@ The final angle will be the base angle plus this amount. добавлено свойство 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' опция 'DisplayMode' переименована в 'World/Screen' @@ -5502,16 +5554,16 @@ from menu Tools -> Addon Manager Направление смещения не определено. Пожалуйста, сначала переместите мышку в любую сторону от объекта, чтобы указать направление - - + + True Да - - + + False Нет @@ -5548,7 +5600,7 @@ from menu Tools -> Addon Manager Copy - Скопировать + Копировать @@ -5604,7 +5656,7 @@ from menu Tools -> Addon Manager Draw style - Стиль рисования + Стиль представления @@ -5634,7 +5686,7 @@ from menu Tools -> Addon Manager Custom - Произвольный + Дополнительно @@ -6102,7 +6154,7 @@ However, a single sketch with disconnected traces will be converted into several Move - Переместить + Перемещение @@ -6187,7 +6239,7 @@ CTRL для привязки, SHIFT для ограничения. Edit - Правка + Редактировать @@ -6408,7 +6460,7 @@ If other objects are selected they are ignored. Polygon - Многоугольник + Многоугольник, Полигон @@ -7086,19 +7138,19 @@ set True for fusion or False for compound - + Create a face Создать грань - - + + The area of this object Площадь объекта @@ -7142,8 +7194,8 @@ set True for fusion or False for compound Базовый объект, который будет продублирован. - + The object along which the copies will be distributed. It must contain 'Edges'. Объект вдоль которого будут распространяться копии. Он должен содержать 'Рёбра'. @@ -7158,9 +7210,9 @@ set True for fusion or False for compound Коэффициент поворота закрученного массива. - - + + Show the individual array elements (only for Link arrays) Показать элементы массива (только для массивов ссылок) @@ -7285,8 +7337,8 @@ they will only be editable by changing the style through the 'Annotation style e При использовании стиля некоторые из свойств станут доступны только для чтения. Чтобы их изменить, отредактируйте стиль в 'Редакторе стилей Надписи'. - + The base object that will be duplicated Базовый объект, который будет дублироваться @@ -8087,14 +8139,14 @@ Use 'arch' to force US arch notation Используйте 'arch' для обозначения архитектурной США - + Arrow size Размер стрелки - + Arrow type Тип стрелки @@ -8157,7 +8209,7 @@ beyond the dimension line Draft - Черновик + Осадка diff --git a/src/Mod/Draft/Resources/translations/Draft_sl.qm b/src/Mod/Draft/Resources/translations/Draft_sl.qm index 7af9d461be..4a2e1a7379 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_sl.qm and b/src/Mod/Draft/Resources/translations/Draft_sl.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_sl.ts b/src/Mod/Draft/Resources/translations/Draft_sl.ts index 6bc9a7747b..12c79e293d 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sl.ts @@ -658,7 +658,7 @@ To deluje le, če je "Vezana razpostavitev" izključena. Fuse - Zlij + Združi @@ -959,7 +959,7 @@ risanjem spremenite s tipkama [ in ] px - sl. točk + px @@ -1172,7 +1172,7 @@ v Gradniku velikosti pripisov. Če je merilo 1:100, je množilnik 100. Arrow size - Velikost puščice + Velikost puščic @@ -1544,6 +1544,7 @@ kateri bodo dodani med stalne vzorce Velikost pisave + @@ -1551,7 +1552,6 @@ kateri bodo dodani med stalne vzorce - mm mm @@ -1644,7 +1644,7 @@ v Gradniku velikosti pripisov. Če je merilo 1:100, je množilnik 100. Line width - Debelina črte + Širina črte @@ -1652,8 +1652,8 @@ v Gradniku velikosti pripisov. Če je merilo 1:100, je množilnik 100.Privzeta debelina črt - + px px @@ -1695,7 +1695,7 @@ v Gradniku velikosti pripisov. Če je merilo 1:100, je množilnik 100. Arrow size - Velikost puščic + Velikost puščice @@ -1972,9 +1972,9 @@ iz Upravljalnika dodatkov. Dovoli FreeCADu samodejni prenos in posodobitev knjižnic DXF - - + + Import options Možnosti uvoza @@ -2192,8 +2192,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Če je nastavljena na "0", bo celoten zlepek obravnavan ko raven odsek. - + Export options Možnosti izvoza @@ -2470,8 +2470,8 @@ Te so debelejše od ostalih mrežnih črt. To način, s kakršnim FreeCAD pretvori datoteke dwg v dxf. Če je izbrano "Samodejno", bo FreeCAD skušal poiskati enekga izmed sledečih pretvornikov v enakem vrstnem redu, kot so tukaj prikazani. Če FreeCAD ne more najti nobenega, boste morali izbrati določen pretvornik in določiti njegovo pot. Če uporabljate LibreDWG, izberite "dwg2dxf", "ODAFileConverter", če uporabljate pretvornik datotek ODA ali "dwg2dwg" orodje, če uporabljate profesionalno različico QCADa. - + Automatic Samodejno @@ -2748,7 +2748,7 @@ Te so debelejše od ostalih mrežnih črt. Global - Obče + Splošno @@ -3392,23 +3392,23 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Nastavi merilo pripisnim orodjem izrisa - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Ni dejavnega dokumenta. Prekinjanje. @@ -3569,9 +3569,9 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Nastavi položaj besedila - - + + Pick first point Izberite prvo točko @@ -3592,8 +3592,6 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Črtovje - - @@ -3601,6 +3599,8 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. + + Pick next point Izberite naslednjo točko @@ -3805,6 +3805,58 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Annotation style editor Urejevalnik pripisnih slogov + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4010,8 +4062,8 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Izberite predmete za prirezovanje/podaljšanje - + Pick distance Izberite razdaljo @@ -4051,9 +4103,9 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Zlepek je bil sklenjen + - Last point has been removed Zadnja točka je bila odstranjena @@ -4439,8 +4491,8 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Spremeni naklon - + Select an object to upgrade Izberite predmet, ki ga želite izpopolniti @@ -4495,9 +4547,9 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Popreprosti - - + + Task panel: Podokno nalog: @@ -4508,26 +4560,26 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Krožna razpostavitev - - + + At least one element must be selected. Izbrati morate vsaj eno prvino. - - + + Selection is not suitable for array. Izbor ni primeren za razpostavljanje. - - - - + + + + Object: Predmet: @@ -4547,16 +4599,16 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Kot je pod -360 stopinjami. Za nadaljevanje je nastavljen na to vrednost. - - + + Fuse: Združi: - - + + Create Link array: Ustvari vezano razpostavitev: @@ -4571,8 +4623,8 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Kót razpostavljanja: - + Center of rotation: Središče sukanja: @@ -4828,11 +4880,11 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Ni mogoče ustvariti oblike: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4844,19 +4896,22 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Napačen vnos: biti mora številka. - + + + + @@ -4866,10 +4921,7 @@ Končni kót bo seštevek izhodiščnega in tega kóta. - - - - + Wrong input: must be a vector. Napačen vnos: biti mora vektor. @@ -4897,8 +4949,8 @@ Končni kót bo seštevek izhodiščnega in tega kóta. Vnos: samostojna vrednost razširjena v vektor. - + Wrong input: must be an integer number. Napačen vnos: biti mora celo število. @@ -5309,9 +5361,9 @@ Končni kót bo seštevek izhodiščnega in tega kóta. dodana lastnost pogleda "BarvaBesedila" - - + + renamed 'DisplayMode' options to 'World/Screen' možnosti "Prikaznega načina" preimenovane v "Obče/Zaslon" @@ -5514,23 +5566,23 @@ z menija Orodja -> Upravljalnik vstavkov Smer odmika ni določena. S premikom kazalke na eno stran predmeta najprej nakažite smer - - + + True Je - - + + False Ni Scale - Prevelikostenje + Povečava @@ -6260,7 +6312,7 @@ Razpostavitev lahko pretvorite v pravokotno ali krožno tako, da spremenite njen Rotate - Zavrti + Zasukaj @@ -6305,7 +6357,7 @@ Create a group first to use this tool. Autogroup - Samozdruževanje + Samodejno združevanje @@ -7101,19 +7153,19 @@ vklopite, če želite združevanje oz. izklopite, če želite sestavljanje - + Create a face Ustvari ploskev - - + + The area of this object Površina tega predmeta @@ -7157,8 +7209,8 @@ vklopite, če želite združevanje oz. izklopite, če želite sestavljanjeIzhodiščni predmet, ki bo podvojen. - + The object along which the copies will be distributed. It must contain 'Edges'. Predmet, vzdolž katerega bodo razvrščeni dvojniki. Vsebovati mora "Robove". @@ -7173,9 +7225,9 @@ vklopite, če želite združevanje oz. izklopite, če želite sestavljanjeKoličnik sukanja pri zvijajoči razpostavitvi. - - + + Show the individual array elements (only for Link arrays) Pokaži posamezne predmete razpostavitve (le pri Vezanih razpostavitvah) @@ -7304,8 +7356,8 @@ they will only be editable by changing the style through the 'Annotation style e urediti jih bo mogoče le s spremembo sloga v orodju "Urejevalnik pripisnih slogov". - + The base object that will be duplicated Izhodiščni predmet, ki bo podvojen @@ -8102,14 +8154,14 @@ Use 'arch' to force US arch notation Če želite vsiliti anglosaški arhitekturni zapis, uporabite "arch" - + Arrow size Velikost puščice - + Arrow type Vrsta puščice @@ -8174,7 +8226,7 @@ preko kotnice Draft - Izris + Ugrez diff --git a/src/Mod/Draft/Resources/translations/Draft_sr-CS.qm b/src/Mod/Draft/Resources/translations/Draft_sr-CS.qm index 3c85428e9b..cd8271ccd9 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_sr-CS.qm and b/src/Mod/Draft/Resources/translations/Draft_sr-CS.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_sr-CS.ts b/src/Mod/Draft/Resources/translations/Draft_sr-CS.ts index 517036224d..2b9fcb4ae7 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sr-CS.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sr-CS.ts @@ -554,7 +554,7 @@ Negativne vrednosti će dovesti do kopija proizvedenih u negativnom pravcu. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. - Ako je čekirano, rezultujući objekti posle umnožavanja će biti spojeni ako se dodiruju. + Ako je označeno, rezultujući objekti posle umnožavanja će biti spojeni ako se dodiruju. Ovo radi samo ako je "Umnožavanje veza" isključeno. @@ -566,7 +566,7 @@ Ovo radi samo ako je "Umnožavanje veza" isključeno. If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - Ako je čekirano, rezultujući objekat će biti „Umnožavanje veza“ umesto običnog umnožavanja. + Ako je označeno, rezultujući objekat će biti „Umnožavanje veza“ umesto običnog umnožavanja. Umnožavanje veza je efikasnije kada se napravi više kopija, ali se ne može spojiti zajedno. @@ -651,19 +651,19 @@ Promeni smer ose u uredniku osobina. If checked, the resulting objects in the array will be fused if they touch each other. This only works if "Link array" is off. - Ako je označeno, rezultujući objekti posle umnožavanja će biti spojeni ako se dodiruju. + Ako je čekirano, rezultujući objekti posle umnožavanja će biti spojeni ako se dodiruju. Ovo radi samo ako je "Umnožavanje veza" isključeno. Fuse - Unija + Spajanje If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - Ako je označeno, rezultujući objekat će biti „Umnožavanje veza“ umesto običnog umnožavanja. + Ako je čekirano, rezultujući objekat će biti „Umnožavanje veza“ umesto običnog umnožavanja. Umnožavanje veza je efikasnije kada se napravi više kopija, ali se ne može spojiti zajedno. @@ -959,7 +959,7 @@ promeniti korišćenjem tipki [ i ] tokom crtanja px - PX + px @@ -1085,12 +1085,12 @@ promeniti korišćenjem tipki [ i ] tokom crtanja Arrow - Strelica + Strela Tick - Kosa crta + Otkucaj @@ -1541,6 +1541,7 @@ pattern definitions to be added to the standard patterns Veličina fonta + @@ -1548,7 +1549,6 @@ pattern definitions to be added to the standard patterns - mm milimetar @@ -1650,8 +1650,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.Podrazumevana širina linije - + px px @@ -1678,12 +1678,12 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100. Arrow - Strela + Strelica Tick - Otkucaj + Kosa crta @@ -1973,9 +1973,9 @@ iz Menadžera dodataka. Dozvoli FreeCAD-u da automatski preuzima i ažurira DXF biblioteke - - + + Import options Podešavanja uvoza @@ -2193,8 +2193,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Ako je zadato na '0', ceo splajn se tretira kao ravni segment. - + Export options Podešavanja izvoza @@ -2471,8 +2471,8 @@ These lines are thicker than normal grid lines. Ovo je metod koji će FreeCAD koristiti za pretvaranje DWG datoteka u DXF. Ako se izabere „Automatski“, FreeCAD će pokušati da pronađe jedan od sledećih konvertera u istom redosledu kao što su prikazani ovde. Ako FreeCAD ne može da pronađe nijedan, možda ćeš morati da izabereš određeni konvertor i navedeš njegovu putanju ovde ispod. Izaberi uslužni program „dwg2dxf“ ako koristiš LibreDWG, „ODAFileConverter“ ako koristiš ODA converter datoteka ili „dwg2dwg“ uslužni program ako koristiš pro verziju QCAD-a. - + Automatic Automatski @@ -3069,7 +3069,7 @@ Nije dostupno ako je omogućena Draft opcija podešavanja 'Koristi Part primitiv Undo - Opozovi + Poništi @@ -3390,23 +3390,23 @@ Da bi omogućio FreeCAD-u da preuzme ove biblioteke, odgovori sa Da.Podesi razmeru koju koriste alati za Draft napomenu - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Nema aktivnog dokumenta. Obustavljanje. @@ -3567,9 +3567,9 @@ Da bi omogućio FreeCAD-u da preuzme ove biblioteke, odgovori sa Da.Izaberi položaj teksta - - + + Pick first point Izaberi prvu tačku @@ -3590,8 +3590,6 @@ Da bi omogućio FreeCAD-u da preuzme ove biblioteke, odgovori sa Da.Izlomljena linija - - @@ -3599,6 +3597,8 @@ Da bi omogućio FreeCAD-u da preuzme ove biblioteke, odgovori sa Da. + + Pick next point Izaberi sledeću tačku @@ -3803,6 +3803,58 @@ Da bi omogućio FreeCAD-u da preuzme ove biblioteke, odgovori sa Da.Annotation style editor Urednik izgleda napomena + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4008,8 +4060,8 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Izaberi objekte koje hoćeš opseći ili produžiti - + Pick distance Izaberi rastojanje @@ -4049,9 +4101,9 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. B-Splajn je zatvoren + - Last point has been removed Poslednja tačka je uklonjena @@ -4437,8 +4489,8 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Promeni nagib - + Select an object to upgrade Izaberi objekat koji želiš da sastaviš @@ -4493,9 +4545,9 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Rastavi - - + + Task panel: Panel zadataka: @@ -4506,26 +4558,26 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Polarno umnožavanje - - + + At least one element must be selected. Najmanje jedan elemenat mora biti izabran. - - + + Selection is not suitable for array. Izbor nije pogodan za umnožavanje. - - - - + + + + Object: Objekat: @@ -4545,16 +4597,16 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Ugao je ispod 360 stepeni. Podešeno je na ovu vrednost da bi se moglo nastaviti. - - + + Fuse: Unija: - - + + Create Link array: Napravi umnožavanje veza: @@ -4569,8 +4621,8 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Polarni ugao: - + Center of rotation: Centar rotacije: @@ -4826,11 +4878,11 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Nije moguće generisati oblik: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4842,19 +4894,22 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Pogrešan unos: mora biti broj. - + + + + @@ -4864,10 +4919,7 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. - - - - + Wrong input: must be a vector. Pogrešan unos: mora biti vektor. @@ -4895,8 +4947,8 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. Ulaz: jedna vrednost proširena na vektor. - + Wrong input: must be an integer number. Pogrešan unos: mora biti ceo broj. @@ -5307,9 +5359,9 @@ Krajnji ugao će biti početni ugao plus ovaj iznos. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5512,16 +5564,16 @@ iz menija Alati/Menadžer dodataka Smer odmaka nije definisan. Pomeri miša na jednu ili drugu stranu objekta da bi označio pravac - - + + True Tačno - - + + False Netačno @@ -5674,7 +5726,7 @@ iz menija Alati/Menadžer dodataka Tag - Oznaka + Tag @@ -5791,7 +5843,7 @@ A 'Link array' is more efficient when handling many copies but the 'Fuse' option Label - Oznaka + Ime @@ -7101,19 +7153,19 @@ podesi Tačno za uniju ili Netačno za sastavljeni objekat - + Create a face Napravi stranicu - - + + The area of this object Površina ovog objekta @@ -7157,8 +7209,8 @@ podesi Tačno za uniju ili Netačno za sastavljeni objekat Bazni objekat koji će biti dupliran. - + The object along which the copies will be distributed. It must contain 'Edges'. Objekat duž kojeg će se kopije raspoređivati. Mora da sadrži 'Ivice'. @@ -7173,9 +7225,9 @@ podesi Tačno za uniju ili Netačno za sastavljeni objekat Koeficijent rotacije Umnožavanja po putanji sa uvrtanjem. - - + + Show the individual array elements (only for Link arrays) Prikaži pojedinačne elemente umnožavanja (samo za umnožavanje veza) @@ -7303,8 +7355,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated Bazni objekat koji će biti dupliran @@ -8106,14 +8158,14 @@ Ostavi prazno za podrazumevane merne jedinice. Koristi 'arch' da bi prinudio na Građevinski US - + Arrow size Veličina strelice - + Arrow type Vrsta strelice @@ -8177,7 +8229,7 @@ iznad kotne linije Draft - Draft + Zakošenje diff --git a/src/Mod/Draft/Resources/translations/Draft_sr.qm b/src/Mod/Draft/Resources/translations/Draft_sr.qm index 04fbd9c584..3a9dce8e91 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_sr.qm and b/src/Mod/Draft/Resources/translations/Draft_sr.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_sr.ts b/src/Mod/Draft/Resources/translations/Draft_sr.ts index 32e3437f86..9983113289 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sr.ts @@ -1541,6 +1541,7 @@ pattern definitions to be added to the standard patterns Величина фонта + @@ -1548,7 +1549,6 @@ pattern definitions to be added to the standard patterns - mm мм @@ -1650,8 +1650,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.Подразумевана ширина линије - + px px @@ -1973,9 +1973,9 @@ from the Addon Manager. Дозволите FreeCAD-у да аутоматски преузима и ажурира DXF библиотеке - - + + Import options Поставке увоза @@ -2193,8 +2193,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Ако је задато на '0', цео сплајн се третира као равни сегмент. - + Export options Опције извоза @@ -2471,8 +2471,8 @@ These lines are thicker than normal grid lines. Ово је метод који ће FreeCAD користити за претварање DWG датотека у DXF. Ако се изабере „Аутоматски“, FreeCAD ће покушати да пронађе један од следећих конвертера у истом редоследу као што су приказани овде. Ако FreeCAD не може да пронађе ниједан, можда ћеш морати да изабереш одређени конвертор и наведеш његову путању овде испод. Изабери услужни програм „dwg2dxf“ ако користиш LibreDWG, „ODAFileConverter“ ако користиш ОДА converter датотека или „dwg2dwg“ услужни програм ако користиш про верзију QCAD-а. - + Automatic Аутоматски @@ -3390,23 +3390,23 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Подеси размеру коју користе алати за Draft напомену - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. Нема активног документа. Обустављање. @@ -3567,9 +3567,9 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Изабери положај текста - - + + Pick first point Изабери прву тачку @@ -3590,8 +3590,6 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Изломљена линија - - @@ -3599,6 +3597,8 @@ https://github.com/yorikvanhavre/Draft-dxf-importer + + Pick next point Изабери следећу тачку @@ -3803,6 +3803,58 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Annotation style editor Уредник изгледа Напомене + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4008,8 +4060,8 @@ The final angle will be the base angle plus this amount. Изабери објекте које хоћеш опсећи или продужити - + Pick distance Изабери растојање @@ -4049,9 +4101,9 @@ The final angle will be the base angle plus this amount. Б-Сплајн је затворен + - Last point has been removed Последња тачка је уклоњена @@ -4437,8 +4489,8 @@ The final angle will be the base angle plus this amount. Промени нагиб - + Select an object to upgrade Изабери објекат који желиш да саставиш @@ -4493,9 +4545,9 @@ The final angle will be the base angle plus this amount. Растави - - + + Task panel: Панел задатака: @@ -4506,26 +4558,26 @@ The final angle will be the base angle plus this amount. Поларно умножавање - - + + At least one element must be selected. Најмање један елемент мора бити изабран. - - + + Selection is not suitable for array. Избор није погодан за умножавање. - - - - + + + + Object: Објекат: @@ -4545,16 +4597,16 @@ The final angle will be the base angle plus this amount. Угао је испод -360 степени. Подешено је на ову вредност да би се могло наставити. - - + + Fuse: Унија: - - + + Create Link array: Направи умножавање веза: @@ -4569,8 +4621,8 @@ The final angle will be the base angle plus this amount. Поларни угао: - + Center of rotation: Центар ротације: @@ -4826,11 +4878,11 @@ The final angle will be the base angle plus this amount. Није могуће генерисати облик: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4842,19 +4894,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Погрешан унос: мора бити број. - + + + + @@ -4864,10 +4919,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Погрешан унос: мора бити вектор. @@ -4895,8 +4947,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Погрешан унос: мора бити цео број. @@ -5307,9 +5359,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5512,16 +5564,16 @@ from menu Tools -> Addon Manager Смер одмака није дефинисан. Помери миша на једну или другу страну објекта да би означио правац - - + + True Тачно - - + + False Нетачно @@ -5674,7 +5726,7 @@ from menu Tools -> Addon Manager Tag - Ознака + Таг @@ -5791,7 +5843,7 @@ A 'Link array' is more efficient when handling many copies but the 'Fuse' option Label - Ознака + Име @@ -6198,7 +6250,7 @@ CTRL за хватање, SHIFT за ограничавање. Edit - Измени + Уреди @@ -7101,19 +7153,19 @@ set True for fusion or False for compound - + Create a face Направи страницу - - + + The area of this object Површина овог објекта @@ -7157,8 +7209,8 @@ set True for fusion or False for compound Базни објекат који ће бити дуплиран. - + The object along which the copies will be distributed. It must contain 'Edges'. Објекат дуж којег ће се копије распоређивати. Мора да садржи 'Ивице'. @@ -7173,9 +7225,9 @@ set True for fusion or False for compound Коефицијент ротације Умножавања по путањи са увртањем. - - + + Show the individual array elements (only for Link arrays) Прикажи појединачне елементе умножавања (само за умножавање веза) @@ -7303,8 +7355,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated Базни објекат који ће бити дуплиран @@ -8106,14 +8158,14 @@ Use 'arch' to force US arch notation Користи 'arch' да би принудио на Грађевински US - + Arrow size Величина стрелице - + Arrow type Врста стрелице @@ -8177,7 +8229,7 @@ beyond the dimension line Draft - Draft + Закошење diff --git a/src/Mod/Draft/Resources/translations/Draft_sv-SE.qm b/src/Mod/Draft/Resources/translations/Draft_sv-SE.qm index 72a448b526..17ea72cf47 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_sv-SE.qm and b/src/Mod/Draft/Resources/translations/Draft_sv-SE.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_sv-SE.ts b/src/Mod/Draft/Resources/translations/Draft_sv-SE.ts index 50c909c270..ea7dfae8a9 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sv-SE.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sv-SE.ts @@ -1546,6 +1546,7 @@ pattern definitions to be added to the standard patterns Teckenstorlek + @@ -1553,7 +1554,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1654,8 +1654,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1976,9 +1976,9 @@ från Addon Manager. Tillåt FreeCAD att automatiskt hämta och uppdatera DXF-biblioteken - - + + Import options Importeringsalternativ @@ -2195,8 +2195,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Om den är satt till '0' så behandlas hela splinen som ett rakt segment. - + Export options Alternativ för exportering @@ -2473,8 +2473,8 @@ These lines are thicker than normal grid lines. This is the method FreeCAD will use to convert DWG files to DXF. If "Automatic" is chosen, FreeCAD will try to find one of the following converters in the same order as they are shown here. If FreeCAD is unable to find any, you might need to choose a specific converter and indicate its path here under. Choose the "dwg2dxf" utility if using LibreDWG, "ODAFileConverter" if using the ODA file converter, or the "dwg2dwg" utility if using the pro version of QCAD. - + Automatic Automatisk @@ -3395,23 +3395,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3572,9 +3572,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Välj textplacering - - + + Pick first point Välj första punkt @@ -3595,8 +3595,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polylinje - - @@ -3604,6 +3602,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Välj nästa punkt @@ -3808,6 +3808,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4013,8 +4065,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Välj avstånd @@ -4054,9 +4106,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4442,8 +4494,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Välj ett objekt att uppgradera @@ -4498,9 +4550,9 @@ The final angle will be the base angle plus this amount. Nedgradera - - + + Task panel: Task panel: @@ -4511,26 +4563,26 @@ The final angle will be the base angle plus this amount. Polär matris - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Objekt: @@ -4550,16 +4602,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4574,8 +4626,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4831,11 +4883,11 @@ The final angle will be the base angle plus this amount. Kan inte generera form: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4847,19 +4899,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4869,10 +4924,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4900,8 +4952,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5312,9 +5364,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5517,16 +5569,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Sant - - + + False Falskt @@ -7106,19 +7158,19 @@ set True for fusion or False for compound - + Create a face Skapa en yta - - + + The area of this object The area of this object @@ -7162,8 +7214,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7178,9 +7230,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7309,8 +7361,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8113,14 +8165,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Pilstorlek - + Arrow type Piltyp diff --git a/src/Mod/Draft/Resources/translations/Draft_tr.qm b/src/Mod/Draft/Resources/translations/Draft_tr.qm index 9e5616cab6..c6c05584e4 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_tr.qm and b/src/Mod/Draft/Resources/translations/Draft_tr.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_tr.ts b/src/Mod/Draft/Resources/translations/Draft_tr.ts index d03873fb09..e2ccb14638 100644 --- a/src/Mod/Draft/Resources/translations/Draft_tr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_tr.ts @@ -1547,6 +1547,7 @@ pattern definitions to be added to the standard patterns Yazı Boyutu + @@ -1554,7 +1555,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1655,8 +1655,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px piksel @@ -1977,9 +1977,9 @@ Bu işlemi Eklenti Yöneticisi' nden "dxf_library" tezgahını yükleyerek elle FreeCAD'in DXF kitaplıklarını otomatik olarak indirmesine ve güncellemesine izin ver - - + + Import options İçe aktarım seçenekleri @@ -2196,8 +2196,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Her çoklu çizginin her bir parçasının en büyük uzunluğu, eğer değeri 0 olarak atanır ise her parça düz olur. - + Export options Dışa aktarım seçenekleri @@ -2474,8 +2474,8 @@ These lines are thicker than normal grid lines. Bu yöntem FreeCAD'in, DWG dosyalarını DXF'ye dönüştürmede kullanacağı yöntemdir. "Otomatik" seçiliyse, FreeCAD aşağıdaki dönüştürücülerden birini burada gösterildikleri aynı sırayla bulmayı deneyecektir. Eğer FreeCAD herhangi birini bulamazsa, özel bir dönüştürücü seçmeniz ve yolunu burada altta belirtmeniz gerekecektir. LibreDWG kullanıyorsanız "dwg2dxf" yazılımını, ODA dosya dönüştürücü kullanıyorsanız "ODAFileConverter"ı ya da QCAD'in pro sürümünü kullanıyorsanız "dwg2dwg" yazılımını seçin. - + Automatic Otomatik @@ -3396,23 +3396,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3573,9 +3573,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3596,8 +3596,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3605,6 +3603,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3809,6 +3809,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4014,8 +4066,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4055,9 +4107,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4443,8 +4495,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4499,9 +4551,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4512,26 +4564,26 @@ The final angle will be the base angle plus this amount. Kutupsal dizi - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4551,16 +4603,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4575,8 +4627,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4832,11 +4884,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4848,19 +4900,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4870,10 +4925,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4901,8 +4953,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5313,9 +5365,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5518,16 +5570,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Doğru - - + + False Yanlış @@ -7107,19 +7159,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7163,8 +7215,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7179,9 +7231,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7310,8 +7362,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8114,14 +8166,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Ok boyu - + Arrow type Ok tipi diff --git a/src/Mod/Draft/Resources/translations/Draft_uk.qm b/src/Mod/Draft/Resources/translations/Draft_uk.qm index bb13081392..2fba56716f 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_uk.qm and b/src/Mod/Draft/Resources/translations/Draft_uk.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_uk.ts b/src/Mod/Draft/Resources/translations/Draft_uk.ts index ccb7751485..732b844049 100644 --- a/src/Mod/Draft/Resources/translations/Draft_uk.ts +++ b/src/Mod/Draft/Resources/translations/Draft_uk.ts @@ -1546,6 +1546,7 @@ pattern definitions to be added to the standard patterns Розмір шрифту + @@ -1553,7 +1554,6 @@ pattern definitions to be added to the standard patterns - mm мм @@ -1654,8 +1654,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px пікс. @@ -1976,9 +1976,9 @@ from the Addon Manager. Дозволити FreeCAD автоматично завантажувати та оновлювати DXF-бібліотеки - - + + Import options Налаштування імпорту @@ -2196,8 +2196,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Якщо значення встановлено у «0», весь сплайн розглядається як прямий сегмент. - + Export options Налаштування експорту @@ -2474,8 +2474,8 @@ These lines are thicker than normal grid lines. Цей метод FreeCAD використовуватиме для перетворення DWG файлів у DXF. Якщо вибрано "Автоматично", то FreeCAD буде шукати один з наступних перетворювачів у тому ж порядку, як і показано тут. Якщо FreeCAD не в змозі знайти когось, вам, можливо, потрібно вибрати конкретний перетворювач та вказати його шлях тут нижче. Виберіть утиліту "dwg2dxf", якщо використовуєте LibreDWG, "ODAFileConverter" якщо використовується інструмент перетворення файлів ODA або утиліта "dwg2dwg", якщо використовується пробна версія QCAD. - + Automatic Автоматичний @@ -3396,23 +3396,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3573,9 +3573,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3596,8 +3596,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3605,6 +3603,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3809,6 +3809,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4014,8 +4066,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4055,9 +4107,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4443,8 +4495,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4499,9 +4551,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4512,26 +4564,26 @@ The final angle will be the base angle plus this amount. Полярний масив - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4551,16 +4603,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4575,8 +4627,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4832,11 +4884,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4848,19 +4900,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4870,10 +4925,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4901,8 +4953,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5313,9 +5365,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5518,16 +5570,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Так - - + + False Ні @@ -7107,19 +7159,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7163,8 +7215,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7179,9 +7231,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7310,8 +7362,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8114,14 +8166,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Розмір стрілки - + Arrow type Тип стрілки diff --git a/src/Mod/Draft/Resources/translations/Draft_val-ES.qm b/src/Mod/Draft/Resources/translations/Draft_val-ES.qm index c0b482922c..0b24cc9496 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_val-ES.qm and b/src/Mod/Draft/Resources/translations/Draft_val-ES.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_val-ES.ts b/src/Mod/Draft/Resources/translations/Draft_val-ES.ts index d70daef511..ba278334e6 100644 --- a/src/Mod/Draft/Resources/translations/Draft_val-ES.ts +++ b/src/Mod/Draft/Resources/translations/Draft_val-ES.ts @@ -1539,6 +1539,7 @@ pattern definitions to be added to the standard patterns Mida del tipus de lletra + @@ -1546,7 +1547,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1647,8 +1647,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1967,9 +1967,9 @@ del gestor de complements. Permeten que FreeCAD descarregue i actualitze automàticament les biblioteques DXF - - + + Import options Opcions d'importació @@ -2179,8 +2179,8 @@ If it is set to '0' the whole spline is treated as a straight segment. Longitud màxima de cadascun dels segments de la polilínia. Si s'estableix en «0», l'spline sencer es tracta com un segment recte. - + Export options Opcions d'exportació @@ -2457,8 +2457,8 @@ These lines are thicker than normal grid lines. This is the method FreeCAD will use to convert DWG files to DXF. If "Automatic" is chosen, FreeCAD will try to find one of the following converters in the same order as they are shown here. If FreeCAD is unable to find any, you might need to choose a specific converter and indicate its path here under. Choose the "dwg2dxf" utility if using LibreDWG, "ODAFileConverter" if using the ODA file converter, or the "dwg2dwg" utility if using the pro version of QCAD. - + Automatic Automàtica @@ -3379,23 +3379,23 @@ To enabled FreeCAD to download these libraries, answer Yes. Set the scale used by draft annotation tools - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. No active document. Aborting. @@ -3556,9 +3556,9 @@ To enabled FreeCAD to download these libraries, answer Yes. Pick text position - - + + Pick first point Pick first point @@ -3579,8 +3579,6 @@ To enabled FreeCAD to download these libraries, answer Yes. Polyline - - @@ -3588,6 +3586,8 @@ To enabled FreeCAD to download these libraries, answer Yes. + + Pick next point Pick next point @@ -3792,6 +3792,58 @@ To enabled FreeCAD to download these libraries, answer Yes. Annotation style editor Annotation style editor + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -3997,8 +4049,8 @@ The final angle will be the base angle plus this amount. Select objects to trim or extend - + Pick distance Pick distance @@ -4038,9 +4090,9 @@ The final angle will be the base angle plus this amount. Spline has been closed + - Last point has been removed Last point has been removed @@ -4426,8 +4478,8 @@ The final angle will be the base angle plus this amount. Change slope - + Select an object to upgrade Select an object to upgrade @@ -4482,9 +4534,9 @@ The final angle will be the base angle plus this amount. Downgrade - - + + Task panel: Task panel: @@ -4495,26 +4547,26 @@ The final angle will be the base angle plus this amount. Matriu polar - - + + At least one element must be selected. At least one element must be selected. - - + + Selection is not suitable for array. Selection is not suitable for array. - - - - + + + + Object: Object: @@ -4534,16 +4586,16 @@ The final angle will be the base angle plus this amount. The angle is below -360 degrees. It is set to this value to proceed. - - + + Fuse: Fuse: - - + + Create Link array: Create Link array: @@ -4558,8 +4610,8 @@ The final angle will be the base angle plus this amount. Polar angle: - + Center of rotation: Center of rotation: @@ -4815,11 +4867,11 @@ The final angle will be the base angle plus this amount. Cannot generate shape: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4831,19 +4883,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. Wrong input: must be a number. - + + + + @@ -4853,10 +4908,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. Wrong input: must be a vector. @@ -4884,8 +4936,8 @@ The final angle will be the base angle plus this amount. Input: single value expanded to vector. - + Wrong input: must be an integer number. Wrong input: must be an integer number. @@ -5296,9 +5348,9 @@ The final angle will be the base angle plus this amount. added view property 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' renamed 'DisplayMode' options to 'World/Screen' @@ -5501,16 +5553,16 @@ from menu Tools -> Addon Manager Offset direction is not defined. Please move the mouse on either side of the object first to indicate a direction - - + + True Cert - - + + False Fals @@ -7090,19 +7142,19 @@ set True for fusion or False for compound - + Create a face Create a face - - + + The area of this object The area of this object @@ -7146,8 +7198,8 @@ set True for fusion or False for compound The base object that will be duplicated. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7162,9 +7214,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7293,8 +7345,8 @@ When using a saved style some of the view properties will become read-only; they will only be editable by changing the style through the 'Annotation style editor' tool. - + The base object that will be duplicated The base object that will be duplicated @@ -8097,14 +8149,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size Mida de la fletxa - + Arrow type Tipus de fletxa diff --git a/src/Mod/Draft/Resources/translations/Draft_zh-CN.qm b/src/Mod/Draft/Resources/translations/Draft_zh-CN.qm index 256f46e91a..aabe55961a 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_zh-CN.qm and b/src/Mod/Draft/Resources/translations/Draft_zh-CN.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_zh-CN.ts b/src/Mod/Draft/Resources/translations/Draft_zh-CN.ts index b9b74b8d64..50af9bb74f 100644 --- a/src/Mod/Draft/Resources/translations/Draft_zh-CN.ts +++ b/src/Mod/Draft/Resources/translations/Draft_zh-CN.ts @@ -1539,6 +1539,7 @@ pattern definitions to be added to the standard patterns 字体大小 + @@ -1546,7 +1547,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1647,8 +1647,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1970,9 +1970,9 @@ from the Addon Manager. 允许 FreeCAD 自动下载和更新 DXF 库 - - + + Import options 导入选项 @@ -2189,8 +2189,8 @@ If it is set to '0' the whole spline is treated as a straight segment. 如果设置为“0”,整个样条将被当作直线段。 - + Export options 导出选项 @@ -2467,8 +2467,8 @@ These lines are thicker than normal grid lines. 这个方法 FreeCAD 将用于将 DWG 文件转换为 DXF。 如果选择“自动”,FreeCAD 将尝试按照这里显示的顺序找到以下转换器之一。 如果FreeCAD 找不到任何,您可能需要选择一个特定的转换器并在这里指明其路径。 如果使用 LibreDWG, "ODAFileConverter" 如果使用官方发展援助文件转换器,请选择"dwg2dxf", 如果使用QCAD Pro 版本,请选择"dwg2dwg"。 - + Automatic 自动 @@ -3387,23 +3387,23 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 设置草稿批注工具使用的比例 - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. 没有活动文档。中止。 @@ -3564,9 +3564,9 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 选择文本位置 - - + + Pick first point 选取起点 @@ -3587,8 +3587,6 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 折线 - - @@ -3596,6 +3594,8 @@ https://github.com/yorikvanhavre/Draft-dxf-importer + + Pick next point 选择下一个点 @@ -3800,6 +3800,58 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Annotation style editor 注释样式编辑器 + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -4005,8 +4057,8 @@ The final angle will be the base angle plus this amount. 选择要修剪/延伸的对象 - + Pick distance 选择距离 @@ -4046,9 +4098,9 @@ The final angle will be the base angle plus this amount. 样条线已闭合 + - Last point has been removed 最后一点已被删除 @@ -4434,8 +4486,8 @@ The final angle will be the base angle plus this amount. 改变斜度 - + Select an object to upgrade 选择要升级的对象 @@ -4490,9 +4542,9 @@ The final angle will be the base angle plus this amount. 降级 - - + + Task panel: 任务面板: @@ -4503,26 +4555,26 @@ The final angle will be the base angle plus this amount. 环形阵列 - - + + At least one element must be selected. 必须至少选择一个元素。 - - + + Selection is not suitable for array. 选区不适合阵列。 - - - - + + + + Object: 对象: @@ -4542,16 +4594,16 @@ The final angle will be the base angle plus this amount. 角度低于-360度。它被设置为该值以继续。 - - + + Fuse: 合成 - - + + Create Link array: 建立連結陣列: @@ -4566,8 +4618,8 @@ The final angle will be the base angle plus this amount. 极角: - + Center of rotation: 旋转中心: @@ -4823,11 +4875,11 @@ The final angle will be the base angle plus this amount. 无法生成形状: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4839,19 +4891,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. 输入错误:必须是一个数字。 - + + + + @@ -4861,10 +4916,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. 错误的输入:必须是一个矢量。 @@ -4892,8 +4944,8 @@ The final angle will be the base angle plus this amount. 输入:单个值扩展到矢量。 - + Wrong input: must be an integer number. 错误的输入:必须是整数。 @@ -5304,9 +5356,9 @@ The final angle will be the base angle plus this amount. 添加视图属性 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' 重命名为 'World/Screen' 选项 @@ -5507,16 +5559,16 @@ from menu Tools -> Addon Manager 偏移方向未定义。请将鼠标移动到对象的两侧以显示方向 - - + + True - - + + False @@ -7090,19 +7142,19 @@ set True for fusion or False for compound - + Create a face 创建面 - - + + The area of this object 此对象的面积 @@ -7146,8 +7198,8 @@ set True for fusion or False for compound 将被复制的基对象. - + The object along which the copies will be distributed. It must contain 'Edges'. The object along which the copies will be distributed. It must contain 'Edges'. @@ -7162,9 +7214,9 @@ set True for fusion or False for compound Rotation factor of the twisted array. - - + + Show the individual array elements (only for Link arrays) Show the individual array elements (only for Link arrays) @@ -7291,8 +7343,8 @@ they will only be editable by changing the style through the 'Annotation style e 只能通过通过“注释样式编辑器”改变样式才能编辑。 - + The base object that will be duplicated 将被复制的基对象 @@ -8095,14 +8147,14 @@ Leave blank for system default. Use 'arch' to force US arch notation - + Arrow size 箭头大小 - + Arrow type 箭头类型 diff --git a/src/Mod/Draft/Resources/translations/Draft_zh-TW.qm b/src/Mod/Draft/Resources/translations/Draft_zh-TW.qm index dddc5ce318..7c266b9735 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_zh-TW.qm and b/src/Mod/Draft/Resources/translations/Draft_zh-TW.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_zh-TW.ts b/src/Mod/Draft/Resources/translations/Draft_zh-TW.ts index 9bad008256..d8434f36ef 100644 --- a/src/Mod/Draft/Resources/translations/Draft_zh-TW.ts +++ b/src/Mod/Draft/Resources/translations/Draft_zh-TW.ts @@ -565,7 +565,7 @@ This only works if "Link array" is off. If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - 若被勾選,其結果物件將是一個 “連結陣列 (Link array)”,而不是一個常規陣列 (regular array)。 + 若被勾選,其結果物件將是一個 “連結陣列 (Link array)”,而不是一個常規陣列。 連結陣列在創建多個副本時更有效,但不能融合在一起。 @@ -656,13 +656,13 @@ This only works if "Link array" is off. Fuse - 聯集實體 + 聯集 If checked, the resulting object will be a "Link array" instead of a regular array. A Link array is more efficient when creating multiple copies, but it cannot be fused together. - 若被勾選,其結果物件將是一個 “連結陣列 (Link array)”,而不是一個常規陣列。 + 若被勾選,其結果物件將是一個 “連結陣列 (Link array)”,而不是一個常規陣列 (regular array)。 連結陣列在創建多個副本時更有效,但不能融合在一起。 @@ -949,7 +949,7 @@ value by using the [ and ] keys while drawing px - 像素 + px @@ -1536,6 +1536,7 @@ pattern definitions to be added to the standard patterns 字型尺寸 + @@ -1543,7 +1544,6 @@ pattern definitions to be added to the standard patterns - mm mm @@ -1644,8 +1644,8 @@ in the Annotation scale widget. If the scale is 1:100 the multiplier is 100.The default line width - + px px @@ -1966,9 +1966,9 @@ from the Addon Manager. 允許FreeCAD自動下載並更新DXF函式庫 - - + + Import options 匯入選項 @@ -2183,8 +2183,8 @@ If it is set to '0' the whole spline is treated as a straight segment. 若設為 '0' 則整個 spline 曲線被視為一直線段。 - + Export options 匯出選項 @@ -2460,8 +2460,8 @@ These lines are thicker than normal grid lines. 這是 FreeCAD 將使用的方法將 DWG 文件轉換為 DXF。如果選擇了「自動」,FreeCAD 將嘗試按照以下顯示的順序查找以下轉換器之一。如果 FreeCAD 無法找到任何轉換器,您可能需要選擇特定的轉換器並在這裡指定其路徑。如果使用 LibreDWG,請選擇 "dwg2dxf" 公用程式,如果使用 ODA 檔案轉換器,請選擇 "ODAFileConverter",如果使用 QCAD 的專業版本,請選擇 "dwg2dwg" 公用程式。 - + Automatic 自動 @@ -3377,23 +3377,23 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 設定由草稿標註工具使用的縮放比例 - - + + + + + + + + + - + - - - - - - - - + No active document. Aborting. 無活動中文件。中止。 @@ -3554,9 +3554,9 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 挑選文字位置 - - + + Pick first point 挑選第一個點 @@ -3577,8 +3577,6 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 折線 - - @@ -3586,6 +3584,8 @@ https://github.com/yorikvanhavre/Draft-dxf-importer + + Pick next point 挑選下一個點 @@ -3790,6 +3790,58 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Annotation style editor 註解樣式編輯器 + + + Create new style + Create new style + + + + Style name: + Style name: + + + + Style name required + Style name required + + + + No style name specified + No style name specified + + + + + Style exists + Style exists + + + + + This style name already exists + This style name already exists + + + + Style in use + Style in use + + + + This style is used by some objects in this document. Are you sure? + This style is used by some objects in this document. Are you sure? + + + + Rename style + Rename style + + + + New name: + New name: + Open styles file @@ -3995,8 +4047,8 @@ The final angle will be the base angle plus this amount. 選取要修剪或延伸的物件 - + Pick distance 挑選距離 @@ -4036,9 +4088,9 @@ The final angle will be the base angle plus this amount. Spline 曲線已封閉 + - Last point has been removed 最後一點已被移除 @@ -4424,8 +4476,8 @@ The final angle will be the base angle plus this amount. 改變斜率 - + Select an object to upgrade 選擇一個物件以進行升級 @@ -4480,9 +4532,9 @@ The final angle will be the base angle plus this amount. 降級 - - + + Task panel: 工作面板: @@ -4493,26 +4545,26 @@ The final angle will be the base angle plus this amount. 環形陣列 - - + + At least one element must be selected. 至少必須選擇一個元件。 - - + + Selection is not suitable for array. 選擇不適用在陣列上。 - - - - + + + + Object: 物件: @@ -4532,16 +4584,16 @@ The final angle will be the base angle plus this amount. 角度低於 -360 度。它被設置為這個值以繼續。 - - + + Fuse: 聯集: - - + + Create Link array: 建立連結陣列: @@ -4556,8 +4608,8 @@ The final angle will be the base angle plus this amount. 極角: - + Center of rotation: 旋轉中心點: @@ -4813,11 +4865,11 @@ The final angle will be the base angle plus this amount. 無法產生形狀: - - + + Wrong input: base_object not in document. Wrong input: base_object not in document. @@ -4829,19 +4881,22 @@ The final angle will be the base angle plus this amount. Wrong input: path_object not in document. - - - + + + Wrong input: must be a number. 錯誤輸入: 必須為一數字。 - + + + + @@ -4851,10 +4906,7 @@ The final angle will be the base angle plus this amount. - - - - + Wrong input: must be a vector. 錯誤輸入: 必須為一向量。 @@ -4882,8 +4934,8 @@ The final angle will be the base angle plus this amount. 輸入:將單一值擴展為向量。 - + Wrong input: must be an integer number. 錯誤輸入: 必須為一整數。 @@ -5294,9 +5346,9 @@ The final angle will be the base angle plus this amount. 新增視圖屬性 'TextColor' - - + + renamed 'DisplayMode' options to 'World/Screen' 將 'DisplayMode' 選項更名為 'World/Screen' @@ -5499,16 +5551,16 @@ from menu Tools -> Addon Manager 偏移方向未定義。請首先將滑鼠移動到物件的一側,以指示方向。 - - + + True 真(True) - - + + False 偽(False) @@ -5778,7 +5830,7 @@ A 'Link array' is more efficient when handling many copies but the 'Fuse' option Label - 標籤 + Label @@ -6433,7 +6485,7 @@ It works best when choosing a point on a straight segment and not a corner verte Trimex - 修剪及延伸 + Trimex @@ -7074,19 +7126,19 @@ set True for fusion or False for compound - + Create a face 建立一個面 - - + + The area of this object 此物件的面積 @@ -7130,8 +7182,8 @@ set True for fusion or False for compound 此基礎物件將會被複製。 - + The object along which the copies will be distributed. It must contain 'Edges'. 副本將分佈的物件必須包含 'Edges' (邊緣)。 @@ -7146,9 +7198,9 @@ set True for fusion or False for compound 扭曲陣列的旋轉因數。 - - + + Show the individual array elements (only for Link arrays) 顯示單個陣列元件(僅適用於連結陣列) @@ -7264,8 +7316,8 @@ they will only be editable by changing the style through the 'Annotation style e 只能通過「註解樣式編輯器」工具來修改它們。 - + The base object that will be duplicated 此基礎物件將會被複製 @@ -8059,14 +8111,14 @@ Use 'arch' to force US arch notation 使用 'arch' 以強制使用美式建築表示法 - + Arrow size 箭頭尺寸 - + Arrow type 箭頭樣式 diff --git a/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui b/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui index 9fac2e398a..5182e082f3 100644 --- a/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui +++ b/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui @@ -7,7 +7,7 @@ 0 0 518 - 645 + 719 @@ -162,6 +162,12 @@ These lines are thicker than normal grid lines. Qt::Horizontal + + + 0 + 0 + + @@ -176,24 +182,24 @@ These lines are thicker than normal grid lines. The distance between grid lines - - 4 + + mm 9999.989999999999782 - + 1.000000000000000 - - mm - gridSpacing Mod/Draft + + 4 + @@ -263,7 +269,7 @@ These lines are thicker than normal grid lines. The color of the grid - + 50 50 @@ -287,71 +293,7 @@ These lines are thicker than normal grid lines. Snapping and modifier keys - - - - Snap symbol style - - - - - - - The style for snap symbols - - - snapStyle - - - Mod/Draft - - - - Draft classic style - - - - - Bitsnpieces style - - - - - - - - Qt::Horizontal - - - - - - - Snap symbol color - - - - - - - The color for snap symbols - - - - 255 - 170 - 255 - - - - snapcolor - - - Mod/Draft - - - - + If checked, snapping is activated without the need to press the Snap modifier key @@ -370,99 +312,7 @@ These lines are thicker than normal grid lines. - - - - false - - - Snap modifier - - - - - - - - 140 - 0 - - - - false - - - The Snap modifier key - - - 1 - - - modsnap - - - Mod/Draft - - - - Shift - - - - - Ctrl - - - - - Alt - - - - - - - - Constrain modifier - - - - - - - The Constrain modifier key - - - modconstrain - - - Mod/Draft - - - - Shift - - - - - Ctrl - - - - - Alt - - - - - - - - Alt modifier - - - - + The Alt modifier key. The function of this key depends on the command. @@ -493,6 +343,200 @@ These lines are thicker than normal grid lines. + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + The color for snap symbols + + + + 255 + 170 + 255 + + + + snapcolor + + + Mod/Draft + + + + + + + false + + + Snap modifier + + + + + + + Constrain modifier + + + + + + + Alt modifier + + + + + + + Snap symbol color + + + + + + + The style for snap symbols + + + snapStyle + + + Mod/Draft + + + + Draft classic style + + + + + Bitsnpieces style + + + + + + + + Snap symbol style + + + + + + + false + + + + 140 + 0 + + + + The Snap modifier key + + + 1 + + + modsnap + + + Mod/Draft + + + + Shift + + + + + Ctrl + + + + + Alt + + + + + + + + The Constrain modifier key + + + modconstrain + + + Mod/Draft + + + + Shift + + + + + Ctrl + + + + + Alt + + + + + + + + Mouse delay + + + + + + + This is a delay during which the mouse is inactive, after entering +numbers manually in any of the coordinate fields. Setting this +to 0 disables the delay. If a delay of 1 is set, after entering a numeric +value, the mouse will not update the field anymore during one +second, to avoid moving the mouse accidentally and modifying the +entered value. If you use a very large value, e.g. 3600, the mouse +movement will be disabled until the command finishes. + + + seconds + + + 1 + + + MouseDelay + + + Mod/Draft + + + @@ -501,6 +545,12 @@ These lines are thicker than normal grid lines. Qt::Vertical + + + 0 + 0 + + @@ -508,6 +558,26 @@ These lines are thicker than normal grid lines. qPixmapFromMimeSource + + Gui::QuantitySpinBox + QWidget +
Gui/QuantitySpinBox.h
+
+ + Gui::ColorButton + QPushButton +
Gui/Widgets.h
+
+ + Gui::PrefSpinBox + QSpinBox +
Gui/PrefWidgets.h
+
+ + Gui::PrefColorButton + Gui::ColorButton +
Gui/PrefWidgets.h
+
Gui::PrefCheckBox QCheckBox @@ -518,24 +588,9 @@ These lines are thicker than normal grid lines. QComboBox
Gui/PrefWidgets.h
- - Gui::PrefSpinBox - QSpinBox -
Gui/PrefWidgets.h
-
Gui::PrefQuantitySpinBox - QDoubleSpinBox -
Gui/PrefWidgets.h
-
- - Gui::ColorButton - QPushButton -
Gui/Widgets.h
-
- - Gui::PrefColorButton - Gui::ColorButton + Gui::QuantitySpinBox
Gui/PrefWidgets.h
@@ -546,24 +601,64 @@ These lines are thicker than normal grid lines. toggled(bool) checkBox_grid setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + checkBox_gridBorder toggled(bool) checkBox_gridShowHuman setEnabled(bool) + + + 20 + 20 + + + 20 + 20 + + checkBox_alwaysSnap toggled(bool) label_modsnap setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + checkBox_alwaysSnap toggled(bool) comboBox_modsnap setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + diff --git a/src/Mod/Draft/Resources/ui/preferences-dxf.ui b/src/Mod/Draft/Resources/ui/preferences-dxf.ui index 724586e96e..433b01f99b 100644 --- a/src/Mod/Draft/Resources/ui/preferences-dxf.ui +++ b/src/Mod/Draft/Resources/ui/preferences-dxf.ui @@ -378,7 +378,7 @@ Note that this can take a while! Objects from the same layers will be joined into Draft Blocks, -turning the display faster, but making them less easily editable +turning the display faster, but making them less easily editable. Group layers into blocks diff --git a/src/Mod/Draft/Resources/ui/preferences-svg.ui b/src/Mod/Draft/Resources/ui/preferences-svg.ui index b4b99a9881..09de46b59e 100644 --- a/src/Mod/Draft/Resources/ui/preferences-svg.ui +++ b/src/Mod/Draft/Resources/ui/preferences-svg.ui @@ -80,7 +80,7 @@ If checked, no units conversion will occur. -One unit in the SVG file will translate as one millimeter. +One unit in the SVG file will translate as one millimeter. Disable units scaling @@ -201,9 +201,9 @@ One unit in the SVG file will translate as one millimeter. - Versions of Open CASCADE older than version 6.8 don't support arc projection. + Versions of OpenCASCADE older than version 6.8 don't support arc projection. In this case arcs will be discretized into small line segments. -This value is the maximum segment length. +This value is the maximum segment length. mm diff --git a/src/Mod/Draft/draftguitools/gui_annotationstyleeditor.py b/src/Mod/Draft/draftguitools/gui_annotationstyleeditor.py index 012f12badc..d0545687b7 100644 --- a/src/Mod/Draft/draftguitools/gui_annotationstyleeditor.py +++ b/src/Mod/Draft/draftguitools/gui_annotationstyleeditor.py @@ -212,20 +212,20 @@ class AnnotationStyleEditor(gui_base.GuiCommandSimplest): elif index == 1: # Add new... entry reply = QtWidgets.QInputDialog.getText(None, - "Create new style", - "Style name:") + translate("draft", "Create new style"), + translate("draft", "Style name:")) if reply[1]: # OK or Enter pressed name = reply[0].strip() if name == "": QtWidgets.QMessageBox.information(None, - "Style name required", - "No style name specified") + translate("draft", "Style name required"), + translate("draft", "No style name specified")) self.form.comboBoxStyles.setCurrentIndex(0) elif name in self.styles: QtWidgets.QMessageBox.information(None, - "Style exists", - "This style name already exists") + translate("draft", "Style exists"), + translate("draft", "This style name already exists")) self.form.comboBoxStyles.setCurrentIndex(0) else: # create new style from current editor values @@ -253,10 +253,10 @@ class AnnotationStyleEditor(gui_base.GuiCommandSimplest): if self.get_style_users(style): reply = QtWidgets.QMessageBox.question(None, - "Style in use", - "This style is used by some objects in this document. Are you sure?", - QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, - QtWidgets.QMessageBox.No) + translate("draft", "Style in use"), + translate("draft", "This style is used by some objects in this document. Are you sure?"), + QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, + QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.No: return self.form.comboBoxStyles.removeItem(index) @@ -268,8 +268,8 @@ class AnnotationStyleEditor(gui_base.GuiCommandSimplest): style = self.form.comboBoxStyles.itemText(index) reply = QtWidgets.QInputDialog.getText(None, - "Rename style", - "New name:", + translate("draft", "Rename style"), + translate("draft", "New name:"), QtWidgets.QLineEdit.Normal, style) if reply[1]: @@ -277,8 +277,8 @@ class AnnotationStyleEditor(gui_base.GuiCommandSimplest): newname = reply[0] if newname in self.styles: reply = QtWidgets.QMessageBox.information(None, - "Style exists", - "This style name already exists") + translate("draft", "Style exists"), + translate("draft", "This style name already exists")) else: self.form.comboBoxStyles.setItemText(index, newname) value = self.styles[style] diff --git a/src/Mod/Draft/draftguitools/gui_base_original.py b/src/Mod/Draft/draftguitools/gui_base_original.py index 45777c35d4..ca3c263ada 100644 --- a/src/Mod/Draft/draftguitools/gui_base_original.py +++ b/src/Mod/Draft/draftguitools/gui_base_original.py @@ -128,6 +128,7 @@ class DraftTool: self.pos = [] self.support = None self.ui = Gui.draftToolBar + self.ui.mouse = True # reset mouse movement self.ui.sourceCmd = self self.view = gui_utils.get_3d_view() self.wp = WorkingPlane.get_working_plane() diff --git a/src/Mod/Draft/draftguitools/gui_tool_utils.py b/src/Mod/Draft/draftguitools/gui_tool_utils.py index 4a45b07ff1..b75645606d 100644 --- a/src/Mod/Draft/draftguitools/gui_tool_utils.py +++ b/src/Mod/Draft/draftguitools/gui_tool_utils.py @@ -190,6 +190,8 @@ def get_point(target, args, noTracker=False): returned by the `Snapper` or by the `ActiveView`. """ ui = Gui.draftToolBar + if not ui.mouse: + return None, None, None if target.node: last = target.node[-1] diff --git a/src/Mod/Draft/draftmake/make_bezcurve.py b/src/Mod/Draft/draftmake/make_bezcurve.py index ec617339ec..b6cb58200b 100644 --- a/src/Mod/Draft/draftmake/make_bezcurve.py +++ b/src/Mod/Draft/draftmake/make_bezcurve.py @@ -91,7 +91,7 @@ def make_bezcurve(pointslist, obj.Degree = min((len(pointslist)-(1 * (not closed))), Part.BezierCurve().MaxDegree) obj.Closed = closed - obj.Support = support + obj.AttachmentSupport = support if face is not None: obj.MakeFace = face obj.Proxy.resetcontinuity(obj) diff --git a/src/Mod/Draft/draftmake/make_bspline.py b/src/Mod/Draft/draftmake/make_bspline.py index 1795978020..d5c6b4e4fa 100644 --- a/src/Mod/Draft/draftmake/make_bspline.py +++ b/src/Mod/Draft/draftmake/make_bspline.py @@ -96,7 +96,7 @@ def make_bspline(pointslist, closed=False, placement=None, face=None, support=No BSpline(obj) obj.Closed = closed obj.Points = pointslist - obj.Support = support + obj.AttachmentSupport = support if face is not None: obj.MakeFace = face if placement: obj.Placement = placement diff --git a/src/Mod/Draft/draftmake/make_circle.py b/src/Mod/Draft/draftmake/make_circle.py index 0f912be8ae..de8bacb0af 100644 --- a/src/Mod/Draft/draftmake/make_circle.py +++ b/src/Mod/Draft/draftmake/make_circle.py @@ -119,7 +119,7 @@ def make_circle(radius, placement=None, face=None, startangle=None, endangle=Non obj.FirstAngle = math.copysign(abs(startangle) % 360, startangle) obj.LastAngle = math.copysign(abs(endangle) % 360, endangle) - obj.Support = support + obj.AttachmentSupport = support if placement: obj.Placement = placement diff --git a/src/Mod/Draft/draftmake/make_ellipse.py b/src/Mod/Draft/draftmake/make_ellipse.py index de7206d631..4830a3690f 100644 --- a/src/Mod/Draft/draftmake/make_ellipse.py +++ b/src/Mod/Draft/draftmake/make_ellipse.py @@ -72,7 +72,7 @@ def make_ellipse(majradius, minradius, placement=None, face=None, support=None): majradius, minradius = minradius, majradius obj.MajorRadius = majradius obj.MinorRadius = minradius - obj.Support = support + obj.AttachmentSupport = support if face is not None: obj.MakeFace = face diff --git a/src/Mod/Draft/draftmake/make_label.py b/src/Mod/Draft/draftmake/make_label.py index 1a223b18e4..72aa4ebf69 100644 --- a/src/Mod/Draft/draftmake/make_label.py +++ b/src/Mod/Draft/draftmake/make_label.py @@ -261,7 +261,7 @@ def make_label(target_point=App.Vector(0, 0, 0), types = label.get_label_types() if label_type not in types: - _err(translate("draft", "Wrong input: label_type must be one of the following: ") + str(types).strip("[]")) + _err(translate("draft", "Wrong input: label_type must be one of the following:") + " " + str(types).strip("[]")) return None if not custom_text: diff --git a/src/Mod/Draft/draftmake/make_polygon.py b/src/Mod/Draft/draftmake/make_polygon.py index ce75de6783..4e146e839b 100644 --- a/src/Mod/Draft/draftmake/make_polygon.py +++ b/src/Mod/Draft/draftmake/make_polygon.py @@ -74,7 +74,7 @@ def make_polygon(nfaces, radius=1, inscribed=True, placement=None, face=None, su obj.DrawMode = "inscribed" else: obj.DrawMode = "circumscribed" - obj.Support = support + obj.AttachmentSupport = support if placement: obj.Placement = placement if App.GuiUp: ViewProviderDraft(obj.ViewObject) diff --git a/src/Mod/Draft/draftmake/make_rectangle.py b/src/Mod/Draft/draftmake/make_rectangle.py index 38de5a843c..d4b2c4946a 100644 --- a/src/Mod/Draft/draftmake/make_rectangle.py +++ b/src/Mod/Draft/draftmake/make_rectangle.py @@ -82,7 +82,7 @@ def make_rectangle(length, height=0, placement=None, face=None, support=None): obj.Length = length obj.Height = height - obj.Support = support + obj.AttachmentSupport = support if face is not None: obj.MakeFace = face diff --git a/src/Mod/Draft/draftmake/make_wire.py b/src/Mod/Draft/draftmake/make_wire.py index de77855ab4..bd82bdf04f 100644 --- a/src/Mod/Draft/draftmake/make_wire.py +++ b/src/Mod/Draft/draftmake/make_wire.py @@ -112,7 +112,7 @@ def make_wire(pointslist, closed=False, placement=None, face=None, support=None, Wire(obj) obj.Points = pointslist obj.Closed = closed - obj.Support = support + obj.AttachmentSupport = support if face is not None: obj.MakeFace = face diff --git a/src/Mod/Draft/draftobjects/label.py b/src/Mod/Draft/draftobjects/label.py index a65605a696..72a1cdcc85 100644 --- a/src/Mod/Draft/draftobjects/label.py +++ b/src/Mod/Draft/draftobjects/label.py @@ -300,9 +300,6 @@ class Label(DraftAnnotation): # will be overwritten pass - # Reset the text, only change it depending on the options - obj.Text = "" - if obj.LabelType == "Custom": if obj.CustomText: obj.Text = obj.CustomText @@ -314,9 +311,10 @@ class Label(DraftAnnotation): # The sublist may be empty so we test it first subelement = sub_list[0] if sub_list else None + obj.Text = return_info(target, typ, subelement) - text_list = return_info(target, typ, subelement) - obj.Text = text_list + else: + obj.Text = [translate("draft", "No Target")] # Alias for compatibility with v0.18 and earlier @@ -362,54 +360,43 @@ def return_info(target, typ, subelement=None): if typ == "Name": return _get_name(target) - elif typ == "Label": + if typ == "Label": return _get_label(target) - elif typ == "Tag" and hasattr(target, "Tag"): + if typ == "Tag": return _get_tag(target) - elif (typ == "Material" - and hasattr(target, "Material") - and hasattr(target.Material, "Label")): + if typ == "Material": return _get_material(target) - elif (typ == "Label + Material" - and hasattr(target, "Material") - and hasattr(target.Material, "Label")): + if typ == "Label + Material": return _get_label(target) + _get_material(target) - elif typ == "Position": + if typ == "Position": return _get_position(target, subelement) - elif typ == "Label + Position": + if typ == "Label + Position": return _get_label(target) + _get_position(target, subelement) - elif typ == "Length" and hasattr(target, 'Shape'): + if typ == "Length": return _get_length(target, subelement) - elif typ == "Label + Length" and hasattr(target, 'Shape'): + if typ == "Label + Length": return _get_label(target) + _get_length(target, subelement) - elif typ == "Area" and hasattr(target, 'Shape'): + if typ == "Area": return _get_area(target, subelement) - elif typ == "Label + Area" and hasattr(target, 'Shape'): + if typ == "Label + Area": return _get_label(target) + _get_area(target, subelement) - elif (typ == "Volume" - and hasattr(target, 'Shape') - and hasattr(target.Shape, "Volume")): - return _get_volume(target) + if typ == "Volume": + return _get_volume(target, subelement) - elif (typ == "Label + Volume" - and hasattr(target, 'Shape') - and hasattr(target.Shape, "Volume")): - return _get_label(target) + _get_volume(target) + if typ == "Label + Volume": + return _get_label(target) + _get_volume(target, subelement) - # If the type is not the correct one, or the subelement doesn't have - # the required `Shape` and information underneath, it will return - # an empty list - return [""] + return [translate("draft", "Invalid label type")] def _get_name(target): @@ -421,54 +408,72 @@ def _get_label(target): def _get_tag(target): - return [target.Tag] + if hasattr(target, "Tag"): + return [target.Tag] + else: + return [translate("draft", "Tag not available for object")] def _get_material(target): - return [target.Material.Label] + if (hasattr(target, "Material") and hasattr(target.Material, "Label")): + return [target.Material.Label] + else: + return [translate("draft", "Material not available for object")] def _get_position(target, subelement): - p = target.Placement.Base - - # Position of the vertex if it is given as subelement - if subelement and "Vertex" in subelement: - p = target.Shape.Vertexes[int(subelement[6:]) - 1].Point - - text_list = [U.Quantity(x, U.Length).UserString for x in tuple(p)] - return text_list + point = None + if subelement is not None: + if "Vertex" in subelement: + point = target.Shape.Vertexes[int(subelement[6:]) - 1].Point + else: + point = target.Placement.Base + if point is None: + return [translate("draft", "Position not available for (sub)object")] + return [U.Quantity(x, U.Length).UserString for x in tuple(point)] def _get_length(target, subelement): - text_list = ["No length"] - if hasattr(target.Shape, "Length"): - text_list = [U.Quantity(target.Shape.Length, U.Length).UserString] - - # Length of the edge if it is given as subelement - if subelement and "Edge" in subelement: - edge = target.Shape.Edges[int(subelement[4:]) - 1] - text_list = [U.Quantity(edge.Length, U.Length).UserString] - - return text_list + length = None + if subelement is not None: + if "Edge" in subelement: + length = target.Shape.Edges[int(subelement[4:]) - 1].Length + elif "Face" in subelement: + length = target.Shape.Faces[int(subelement[4:]) - 1].Length + elif hasattr(target, "Length"): + length = target.Length + elif hasattr(target, "Shape") and hasattr(target.Shape, "Length"): + length = target.Shape.Length + if length is None: + return [translate("draft", "Length not available for (sub)object")] + return [U.Quantity(length, U.Length).UserString] def _get_area(target, subelement): - text_list = ["No area"] - if hasattr(target.Shape, "Area"): - area = U.Quantity(target.Shape.Area, U.Area).UserString - text_list = [area.replace("^2", "²")] - - # Area of the face if it is given as subelement - if subelement and "Face" in subelement: - face = target.Shape.Faces[int(subelement[4:]) - 1] - text_list = [U.Quantity(face.Area, U.Area).UserString] - - return text_list + area = None + if subelement is not None: + if "Face" in subelement: + area = target.Shape.Faces[int(subelement[4:]) - 1].Area + elif hasattr(target, "Area"): + area = target.Area + elif hasattr(target, "Shape") and hasattr(target.Shape, "Area"): + area = target.Shape.Area + if area is None: + return [translate("draft", "Area not available for (sub)object")] + return [U.Quantity(area, U.Area).UserString.replace("^2", "²")] -def _get_volume(target): - volume = U.Quantity(target.Shape.Volume, U.Volume).UserString - return [volume.replace("^3", "³")] +def _get_volume(target, subelement): + volume = None + if subelement is not None: + pass + elif hasattr(target, "Volume"): + volume = target.Volume + elif hasattr(target, "Shape") and hasattr(target.Shape, "Volume"): + volume = target.Shape.Volume + if volume is None: + return [translate("draft", "Volume not available for (sub)object")] + return [U.Quantity(volume, U.Volume).UserString.replace("^3", "³")] ## @} diff --git a/src/Mod/Draft/drafttaskpanels/task_shapestring.py b/src/Mod/Draft/drafttaskpanels/task_shapestring.py index af028bdc39..a8121602c4 100644 --- a/src/Mod/Draft/drafttaskpanels/task_shapestring.py +++ b/src/Mod/Draft/drafttaskpanels/task_shapestring.py @@ -168,7 +168,7 @@ class ShapeStringTaskPanelCmd(ShapeStringTaskPanel): 'plm.Base = ' + toString(ssBase), 'plm.Rotation.Q = ' + qr, 'ss.Placement = plm', - 'ss.Support = ' + sup, + 'ss.AttachmentSupport = ' + sup, 'Draft.autogroup(ss)', 'FreeCAD.ActiveDocument.recompute()']) except Exception: diff --git a/src/Mod/Draft/drafttests/test_modification.py b/src/Mod/Draft/drafttests/test_modification.py index cb0b2cfcf5..166d98031b 100644 --- a/src/Mod/Draft/drafttests/test_modification.py +++ b/src/Mod/Draft/drafttests/test_modification.py @@ -588,7 +588,7 @@ class DraftModification(unittest.TestCase): obj = Draft.make_clone(box1) obj.MapMode = "ObjectXY" - obj.Support = [(box2, ("",))] + obj.AttachmentSupport = [(box2, ("",))] App.ActiveDocument.recompute() box1.Length = 1 diff --git a/src/Mod/Draft/draftutils/params.py b/src/Mod/Draft/draftutils/params.py index 8839452c7f..c46dbac31f 100644 --- a/src/Mod/Draft/draftutils/params.py +++ b/src/Mod/Draft/draftutils/params.py @@ -393,6 +393,7 @@ def _get_param_dictionary(): # Arch parameters that are not in the preferences: param_dict["Mod/Arch"] = { + "applyConstructionStyle": ("bool", True), "ClaimHosted": ("bool", True), "CustomIfcSchema": ("string", ""), # importIFClegacy.py "createIfcGroups": ("bool", False), # importIFClegacy.py diff --git a/src/Mod/Draft/draftutils/utils.py b/src/Mod/Draft/draftutils/utils.py index a9a9df98eb..4733d95cd6 100644 --- a/src/Mod/Draft/draftutils/utils.py +++ b/src/Mod/Draft/draftutils/utils.py @@ -426,6 +426,8 @@ def get_type(obj): return None if isinstance(obj, Part.Shape): return "Shape" + if hasattr(obj, "Class") and "Ifc" in str(obj.Class): + return obj.Class if hasattr(obj, 'Proxy') and hasattr(obj.Proxy, "Type"): return obj.Proxy.Type if hasattr(obj, 'TypeId'): @@ -705,8 +707,8 @@ def compare_objects(obj1, obj2): elif p == "Placement": delta = obj1.Placement.Base.sub(obj2.Placement.Base) text = translate("draft", "Objects have different placements. " - "Distance between the two base points: ") - _msg(text + str(delta.Length)) + "Distance between the two base points:") + _msg(text + " " + str(delta.Length)) else: if getattr(obj1, p) != getattr(obj2, p): _msg("'{}' ".format(p) + translate("draft", "has a different value")) @@ -1106,11 +1108,8 @@ def use_instead(function, version=""): then we should not give a version. """ if version: - _wrn(translate("draft", "This function will be deprecated in ") - + "{}. ".format(version) - + translate("draft", "Please use ") + "'{}'.".format(function)) + _wrn(translate("draft", "This function will be deprecated in {}. Please use '{}'.") .format(version, function)) else: - _wrn(translate("draft", "This function will be deprecated. ") - + translate("draft", "Please use ") + "'{}'.".format(function)) + _wrn(translate("draft", "This function will be deprecated. Please use '{}'.") .format(function)) ## @} diff --git a/src/Mod/Draft/draftviewproviders/view_layer.py b/src/Mod/Draft/draftviewproviders/view_layer.py index 2afb223b14..c86eaedf75 100644 --- a/src/Mod/Draft/draftviewproviders/view_layer.py +++ b/src/Mod/Draft/draftviewproviders/view_layer.py @@ -177,6 +177,8 @@ class ViewProviderLayer: These are the elements of the `Group` property of the Proxy object. """ if hasattr(self, "Object") and hasattr(self.Object, "Group"): + if getattr(self.Object.ViewObject, "HideChildren", False): + return [] return self.Object.Group def getDisplayModes(self, vobj): diff --git a/src/Mod/Drawing/Gui/Command.cpp b/src/Mod/Drawing/Gui/Command.cpp index 001fcbeb9f..afc9781d09 100644 --- a/src/Mod/Drawing/Gui/Command.cpp +++ b/src/Mod/Drawing/Gui/Command.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #endif #include @@ -143,12 +143,14 @@ Gui::Action* CmdDrawingNewPage::createAction(void) path += "Mod/Drawing/Templates/"; QDir dir(QString::fromUtf8(path.c_str()), QString::fromLatin1("*.svg")); for (unsigned int i = 0; i < dir.count(); i++) { - QRegExp rx(QString::fromLatin1("(A|B|C|D|E)(\\d)_(Landscape|Portrait)(_.*\\.|\\.)svg$")); - if (rx.indexIn(dir[i]) > -1) { - QString paper = rx.cap(1); - int id = rx.cap(2).toInt(); - QString orientation = rx.cap(3); - QString info = rx.cap(4).mid(1); + QRegularExpression rx( + QString::fromLatin1("(A|B|C|D|E)(\\d)_(Landscape|Portrait)(_.*\\.|\\.)svg$")); + auto match = rx.match(dir[i]); + if (match.hasMatch()) { + QString paper = match.captured(1); + int id = match.captured(2).toInt(); + QString orientation = match.captured(3); + QString info = match.captured(4).mid(1); info.chop(1); if (!info.isEmpty()) { info[0] = info[0].toUpper(); diff --git a/src/Mod/Drawing/Gui/DrawingView.cpp b/src/Mod/Drawing/Gui/DrawingView.cpp index 6efd6a315a..c3a7e043ff 100644 --- a/src/Mod/Drawing/Gui/DrawingView.cpp +++ b/src/Mod/Drawing/Gui/DrawingView.cpp @@ -25,11 +25,11 @@ #include #include +#include #include #include #include #include -#include #include #include #include @@ -37,6 +37,8 @@ #include #include #include +#include +#include #include #include #include @@ -139,7 +141,7 @@ void SvgView::setRenderer(RendererType type) if (m_renderer == OpenGL) { #ifndef QT_NO_OPENGL - setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))); + setViewport(new QOpenGLWidget); #endif } else { diff --git a/src/Mod/Drawing/Gui/PreCompiled.h b/src/Mod/Drawing/Gui/PreCompiled.h index 986834f3eb..c77e140a64 100644 --- a/src/Mod/Drawing/Gui/PreCompiled.h +++ b/src/Mod/Drawing/Gui/PreCompiled.h @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include @@ -55,8 +54,10 @@ #include #include #include +#include #include #include +#include #include #include #include diff --git a/src/Mod/Fem/App/AppFem.cpp b/src/Mod/Fem/App/AppFem.cpp index 8ba869450b..c37cb4f535 100644 --- a/src/Mod/Fem/App/AppFem.cpp +++ b/src/Mod/Fem/App/AppFem.cpp @@ -77,7 +77,6 @@ PyMOD_INIT_FUNC(Fem) // load dependent module try { Base::Interpreter().loadModule("Part"); - // Base::Interpreter().loadModule("Mesh"); } catch (const Base::Exception& e) { PyErr_SetString(PyExc_ImportError, e.what()); @@ -120,9 +119,6 @@ PyMOD_INIT_FUNC(Fem) Fem::StdMeshers_SegmentAroundVertex_0DPy ::init_type(femModule); Fem::StdMeshers_SegmentLengthAroundVertexPy ::init_type(femModule); Fem::StdMeshers_StartEndLengthPy ::init_type(femModule); -#if SMESH_VERSION_MAJOR < 7 - Fem::StdMeshers_TrianglePreferencePy ::init_type(femModule); -#endif Fem::StdMeshers_Hexa_3DPy ::init_type(femModule); // Add Types to module diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index cb7c5f5a59..dd9250a00c 100644 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -51,7 +51,6 @@ endif() generate_from_xml(FemMeshPy) -generate_from_xml(FemPostPipelinePy) SET(Python_SRCS @@ -65,9 +64,13 @@ SET(Python_SRCS if(BUILD_FEM_VTK) SET(Python_SRCS ${Python_SRCS} + FemPostObjectPy.xml + FemPostObjectPyImp.cpp FemPostPipelinePy.xml FemPostPipelinePyImp.cpp ) + generate_from_xml(FemPostObjectPy) + generate_from_xml(FemPostPipelinePy) endif(BUILD_FEM_VTK) SOURCE_GROUP("Python" FILES ${Python_SRCS}) diff --git a/src/Mod/Fem/App/FemMesh.cpp b/src/Mod/Fem/App/FemMesh.cpp index 008412acb3..3d9bc164f5 100644 --- a/src/Mod/Fem/App/FemMesh.cpp +++ b/src/Mod/Fem/App/FemMesh.cpp @@ -565,10 +565,6 @@ void FemMesh::setStandardHypotheses() SMESH_HypothesisPtr reg(new StdMeshers_Regular_1D(hyp++, getGenerator())); hypoth.push_back(reg); - // SMESH_HypothesisPtr sel(new StdMeshers_StartEndLength(hyp++, getGenerator())); - // static_cast(sel.get())->SetLength(1.0, true); - // hypoth.push_back(sel); - SMESH_HypothesisPtr qdp(new StdMeshers_QuadranglePreference(hyp++, getGenerator())); hypoth.push_back(qdp); @@ -599,10 +595,6 @@ void FemMesh::setStandardHypotheses() SMESH_HypothesisPtr reg(new StdMeshers_Regular_1D(hyp++, 1, getGenerator())); hypoth.push_back(reg); - // SMESH_HypothesisPtr sel(new StdMeshers_StartEndLength(hyp++, 1, getGenerator())); - // static_cast(sel.get())->SetLength(1.0, true); - // hypoth.push_back(sel); - SMESH_HypothesisPtr qdp(new StdMeshers_QuadranglePreference(hyp++, 1, getGenerator())); hypoth.push_back(qdp); @@ -624,12 +616,6 @@ void FemMesh::compute() std::set FemMesh::getSurfaceNodes(long /*ElemId*/, short /*FaceId*/, float /*Angle*/) const { std::set result; - // const SMESHDS_Mesh* data = myMesh->GetMeshDS(); - - // const SMDS_MeshElement * element = data->FindElement(ElemId); - // int fNbr = element->NbFaces(); - // element-> - return result; } @@ -640,7 +626,6 @@ std::list> FemMesh::getVolumesByFace(const TopoDS_Face& face std::list> result; std::set nodes_on_face = getNodesByFace(face); -#if SMESH_VERSION_MAJOR >= 7 // SMDS_MeshVolume::facesIterator() is broken with SMESH7 as it is impossible // to iterate volume faces // In SMESH9 this function has been removed @@ -697,36 +682,6 @@ std::list> FemMesh::getVolumesByFace(const TopoDS_Face& face } } } -#else - SMDS_VolumeIteratorPtr vol_iter = myMesh->GetMeshDS()->volumesIterator(); - while (vol_iter->more()) { - const SMDS_MeshVolume* vol = vol_iter->next(); - SMDS_ElemIteratorPtr face_iter = vol->facesIterator(); - - while (face_iter && face_iter->more()) { - const SMDS_MeshFace* face = static_cast(face_iter->next()); - int numNodes = face->NbNodes(); - - std::set face_nodes; - for (int i = 0; i < numNodes; i++) { - face_nodes.insert(face->GetNode(i)->GetID()); - } - - std::vector element_face_nodes; - std::set_intersection(nodes_on_face.begin(), - nodes_on_face.end(), - face_nodes.begin(), - face_nodes.end(), - std::back_insert_iterator>(element_face_nodes)); - - // For curved faces it is possible that a volume contributes more than one face - if (element_face_nodes.size() == static_cast(numNodes)) { - result.emplace_back(vol->GetID(), face->GetID()); - } - } - } -#endif - result.sort(); return result; } @@ -1621,7 +1576,7 @@ class CHEXA2Element: public NastranElement void FemMesh::readNastran(const std::string& Filename) { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: FemMesh::readNastran() =================================\n"); _Mtrx = Base::Matrix4D(); @@ -1699,7 +1654,7 @@ void FemMesh::readNastran(const std::string& Filename) inputfile.close(); Base::Console().Log(" %f: File read, start building mesh\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // Now fill the SMESH datastructure SMESHDS_Mesh* meshds = this->myMesh->GetMeshDS(); @@ -1709,12 +1664,13 @@ void FemMesh::readNastran(const std::string& Filename) it->addToMesh(meshds); } - Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::Console().Log(" %f: Done \n", + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); } void FemMesh::readNastran95(const std::string& Filename) { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: FemMesh::readNastran95() =================================\n"); _Mtrx = Base::Matrix4D(); @@ -1825,7 +1781,7 @@ void FemMesh::readNastran95(const std::string& Filename) inputfile.close(); Base::Console().Log(" %f: File read, start building mesh\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // Now fill the SMESH datastructure SMESHDS_Mesh* meshds = this->myMesh->GetMeshDS(); @@ -1839,12 +1795,13 @@ void FemMesh::readNastran95(const std::string& Filename) it->addToMesh(meshds); } - Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::Console().Log(" %f: Done \n", + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); } void FemMesh::readAbaqus(const std::string& FileName) { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: FemMesh::readAbaqus() =================================\n"); /* @@ -1878,12 +1835,13 @@ void FemMesh::readAbaqus(const std::string& FileName) catch (Py::Exception& e) { e.clear(); } - Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::Console().Log(" %f: Done \n", + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); } void FemMesh::readZ88(const std::string& FileName) { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: FemMesh::readZ88() =================================\n"); /* @@ -1917,7 +1875,8 @@ void FemMesh::readZ88(const std::string& FileName) catch (Py::Exception& e) { e.clear(); } - Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::Console().Log(" %f: Done \n", + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); } void FemMesh::read(const char* FileName) @@ -1951,13 +1910,6 @@ void FemMesh::read(const char* FileName) // read brep-file myMesh->STLToMesh(File.filePath().c_str()); } -#if SMESH_VERSION_MAJOR < 7 - else if (File.hasExtension("dat")) { - // read brep-file - // vejmarie disable - myMesh->DATToMesh(File.filePath().c_str()); - } -#endif else if (File.hasExtension("bdf")) { // read Nastran-file readNastran(File.filePath()); @@ -2416,7 +2368,7 @@ void FemMesh::writeABAQUS(const std::string& Filename, int elemParam, bool group void FemMesh::writeZ88(const std::string& FileName) const { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: FemMesh::writeZ88() =================================\n"); /* diff --git a/src/Mod/Fem/App/FemPostObject.cpp b/src/Mod/Fem/App/FemPostObject.cpp index afb7ff4953..8a30f5755a 100644 --- a/src/Mod/Fem/App/FemPostObject.cpp +++ b/src/Mod/Fem/App/FemPostObject.cpp @@ -24,9 +24,13 @@ #ifndef _PreComp_ #include +#include #endif +#include + #include "FemPostObject.h" +#include "FemPostObjectPy.h" using namespace Fem; @@ -56,3 +60,80 @@ vtkBoundingBox FemPostObject::getBoundingBox() return box; } + +PyObject* FemPostObject::getPyObject() +{ + if (PythonObject.is(Py::_None())) { + // ref counter is set to 1 + PythonObject = Py::Object(new FemPostObjectPy(this), true); + } + + return Py::new_reference_to(PythonObject); +} + +namespace +{ + +template +void vtkWriter(const char* filename, const vtkSmartPointer& dataObject) +{ + if (vtkDataSet::SafeDownCast(dataObject)->GetNumberOfPoints() <= 0) { + throw Base::ValueError("Empty data object"); + } + + vtkSmartPointer writer = vtkSmartPointer::New(); + writer->SetFileName(filename); + writer->SetDataModeToBinary(); + writer->SetInputDataObject(dataObject); + writer->Write(); +} + +std::string vtkWriterExtension(const vtkSmartPointer& dataObject) +{ + std::string extension; + switch (dataObject->GetDataObjectType()) { + case VTK_POLY_DATA: + extension = "vtp"; + break; + case VTK_STRUCTURED_GRID: + extension = "vts"; + break; + case VTK_RECTILINEAR_GRID: + extension = "vtr"; + break; + case VTK_UNSTRUCTURED_GRID: + extension = "vtu"; + break; + case VTK_UNIFORM_GRID: + extension = "vti"; + break; + default: + break; + } + + return extension; +} + +} // namespace + +void FemPostObject::writeVTK(const char* filename) const +{ + const vtkSmartPointer& data = Data.getValue(); + + // set appropriate filename extension + std::string name(filename); + std::string extension = vtkWriterExtension(data); + if (extension.empty()) { + throw Base::TypeError("Unsupported data type"); + } + + std::string::size_type pos = name.find_last_of('.'); + if (pos != std::string::npos) { + name = name.substr(0, pos + 1).append(extension); + } + else { + name = name.append(".").append(extension); + } + + vtkWriter(name.c_str(), data); +} diff --git a/src/Mod/Fem/App/FemPostObject.h b/src/Mod/Fem/App/FemPostObject.h index 4f0c840436..5f70614a7c 100644 --- a/src/Mod/Fem/App/FemPostObject.h +++ b/src/Mod/Fem/App/FemPostObject.h @@ -45,7 +45,10 @@ public: Fem::PropertyPostDataObject Data; + PyObject* getPyObject() override; + vtkBoundingBox getBoundingBox(); + void writeVTK(const char* filename) const; }; } // namespace Fem diff --git a/src/Mod/Fem/App/FemPostObjectPy.xml b/src/Mod/Fem/App/FemPostObjectPy.xml new file mode 100644 index 0000000000..cc4d4dacef --- /dev/null +++ b/src/Mod/Fem/App/FemPostObjectPy.xml @@ -0,0 +1,28 @@ + + + + + + The FemPostObject class. + + + + writeVTK(filename) -> None + +Write data object to VTK file. + +filename: str + File extension is automatically detected from data type. + + + + + diff --git a/src/Mod/Fem/App/FemPostObjectPyImp.cpp b/src/Mod/Fem/App/FemPostObjectPyImp.cpp new file mode 100644 index 0000000000..81ee5119ac --- /dev/null +++ b/src/Mod/Fem/App/FemPostObjectPyImp.cpp @@ -0,0 +1,66 @@ +// 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 * + * . * + * * + **************************************************************************/ + +#include "PreCompiled.h" +#ifndef _PreComp_ +#include +#endif + +#include "FemPostObjectPy.h" +#include "FemPostObjectPy.cpp" + + +using namespace Fem; + +// returns a string which represent the object e.g. when printed in python +std::string FemPostObjectPy::representation() const +{ + std::stringstream str; + str << ""; + + return str.str(); +} + +PyObject* FemPostObjectPy::writeVTK(PyObject* args) +{ + char* filename; + if (!PyArg_ParseTuple(args, "et", "utf-8", &filename)) { + return nullptr; + } + + std::string utf8Name(filename); + PyMem_Free(filename); + getFemPostObjectPtr()->writeVTK(utf8Name.c_str()); + + Py_Return; +} + +PyObject* FemPostObjectPy::getCustomAttributes(const char* /*attr*/) const +{ + return nullptr; +} + +int FemPostObjectPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) +{ + return 0; +} diff --git a/src/Mod/Fem/App/FemPostPipelinePy.xml b/src/Mod/Fem/App/FemPostPipelinePy.xml index 70aa69a4cc..3b84e84d75 100644 --- a/src/Mod/Fem/App/FemPostPipelinePy.xml +++ b/src/Mod/Fem/App/FemPostPipelinePy.xml @@ -1,14 +1,14 @@ + FatherInclude="Mod/Fem/App/FemPostObjectPy.h" + FatherNamespace="Fem"> The FemPostPipeline class. diff --git a/src/Mod/Fem/App/FemVTKTools.cpp b/src/Mod/Fem/App/FemVTKTools.cpp index e3d8432398..fd5df42bc9 100644 --- a/src/Mod/Fem/App/FemVTKTools.cpp +++ b/src/Mod/Fem/App/FemVTKTools.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -96,6 +97,52 @@ void writeVTKFile(const char* filename, vtkSmartPointer dat writer->Write(); } +namespace +{ + +// Helper function to fill vtkCellArray from SMDS_Mesh using vtk cell order +template +void fillVtkArray(vtkSmartPointer& elemArray, std::vector& types, const E* elem) +{ + vtkSmartPointer cell = vtkSmartPointer::New(); + const std::vector& order = SMDS_MeshCell::toVtkOrder(elem->GetEntityType()); + if (!order.empty()) { + for (int i = 0; i < elem->NbNodes(); ++i) { + cell->GetPointIds()->SetId(i, elem->GetNode(order[i])->GetID() - 1); + } + } + else { + for (int i = 0; i < elem->NbNodes(); ++i) { + cell->GetPointIds()->SetId(i, elem->GetNode(i)->GetID() - 1); + } + } + elemArray->InsertNextCell(cell); + types.push_back(SMDS_MeshCell::toVtkType(elem->GetEntityType())); +} + +// Helper function to fill SMDS_Mesh elements ID from vtk cell +void fillMeshElementIds(vtkCell* cell, std::vector& ids) +{ + VTKCellType cellType = static_cast(cell->GetCellType()); + const std::vector& order = SMDS_MeshCell::fromVtkOrder(cellType); + vtkIdType* vtkIds = cell->GetPointIds()->GetPointer(0); + ids.clear(); + int nbPoints = cell->GetNumberOfPoints(); + ids.resize(nbPoints); + if (!order.empty()) { + for (int i = 0; i < nbPoints; ++i) { + ids[i] = vtkIds[order[i]] + 1; + } + } + else { + for (int i = 0; i < nbPoints; ++i) { + ids[i] = vtkIds[i] + 1; + } + } +} + +} // namespace + void FemVTKTools::importVTKMesh(vtkSmartPointer dataset, FemMesh* mesh, float scale) { @@ -104,10 +151,6 @@ void FemVTKTools::importVTKMesh(vtkSmartPointer dataset, FemMesh* me Base::Console().Log("%d nodes/points and %d cells/elements found!\n", nPoints, nCells); Base::Console().Log("Build SMESH mesh out of the vtk mesh data.\n", nPoints, nCells); - // vtkSmartPointer cells = dataset->GetCells(); - // works only for vtkUnstructuredGrid - vtkSmartPointer idlist = vtkSmartPointer::New(); - // Now fill the SMESH datastructure SMESH_Mesh* smesh = mesh->getSMesh(); SMESHDS_Mesh* meshds = smesh->GetMeshDS(); @@ -119,138 +162,120 @@ void FemVTKTools::importVTKMesh(vtkSmartPointer dataset, FemMesh* me } for (vtkIdType iCell = 0; iCell < nCells; iCell++) { - idlist->Reset(); - idlist = dataset->GetCell(iCell)->GetPointIds(); - vtkIdType* ids = idlist->GetPointer(0); - switch (dataset->GetCellType(iCell)) { + vtkCell* cell = dataset->GetCell(iCell); + std::vector ids; + fillMeshElementIds(cell, ids); + switch (cell->GetCellType()) { // 2D faces case VTK_TRIANGLE: // tria3 - meshds->AddFaceWithID(ids[0] + 1, ids[1] + 1, ids[2] + 1, iCell + 1); + meshds->AddFaceWithID(ids[0], ids[1], ids[2], iCell + 1); break; case VTK_QUADRATIC_TRIANGLE: // tria6 - meshds->AddFaceWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - iCell + 1); + meshds->AddFaceWithID(ids[0], ids[1], ids[2], ids[3], ids[4], ids[5], iCell + 1); break; case VTK_QUAD: // quad4 - meshds->AddFaceWithID(ids[0] + 1, ids[1] + 1, ids[2] + 1, ids[3] + 1, iCell + 1); + meshds->AddFaceWithID(ids[0], ids[1], ids[2], ids[3], iCell + 1); break; case VTK_QUADRATIC_QUAD: // quad8 - meshds->AddFaceWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - ids[6] + 1, - ids[7] + 1, + meshds->AddFaceWithID(ids[0], + ids[1], + ids[2], + ids[3], + ids[4], + ids[5], + ids[6], + ids[7], iCell + 1); break; - // 3D volumes case VTK_TETRA: // tetra4 - meshds->AddVolumeWithID(ids[0] + 1, ids[1] + 1, ids[2] + 1, ids[3] + 1, iCell + 1); + meshds->AddVolumeWithID(ids[0], ids[1], ids[2], ids[3], iCell + 1); break; case VTK_QUADRATIC_TETRA: // tetra10 - meshds->AddVolumeWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - ids[6] + 1, - ids[7] + 1, - ids[8] + 1, - ids[9] + 1, + meshds->AddVolumeWithID(ids[0], + ids[1], + ids[2], + ids[3], + ids[4], + ids[5], + ids[6], + ids[7], + ids[8], + ids[9], iCell + 1); break; case VTK_HEXAHEDRON: // hexa8 - meshds->AddVolumeWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - ids[6] + 1, - ids[7] + 1, + meshds->AddVolumeWithID(ids[0], + ids[1], + ids[2], + ids[3], + ids[4], + ids[5], + ids[6], + ids[7], iCell + 1); break; case VTK_QUADRATIC_HEXAHEDRON: // hexa20 - meshds->AddVolumeWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - ids[6] + 1, - ids[7] + 1, - ids[8] + 1, - ids[9] + 1, - ids[10] + 1, - ids[11] + 1, - ids[12] + 1, - ids[13] + 1, - ids[14] + 1, - ids[15] + 1, - ids[16] + 1, - ids[17] + 1, - ids[18] + 1, - ids[19] + 1, + meshds->AddVolumeWithID(ids[0], + ids[1], + ids[2], + ids[3], + ids[4], + ids[5], + ids[6], + ids[7], + ids[8], + ids[9], + ids[10], + ids[11], + ids[12], + ids[13], + ids[14], + ids[15], + ids[16], + ids[17], + ids[18], + ids[19], iCell + 1); break; case VTK_WEDGE: // penta6 - meshds->AddVolumeWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - iCell + 1); + meshds->AddVolumeWithID(ids[0], ids[1], ids[2], ids[3], ids[4], ids[5], iCell + 1); break; case VTK_QUADRATIC_WEDGE: // penta15 - meshds->AddVolumeWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - ids[6] + 1, - ids[7] + 1, - ids[8] + 1, - ids[9] + 1, - ids[10] + 1, - ids[11] + 1, - ids[12] + 1, - ids[13] + 1, - ids[14] + 1, + meshds->AddVolumeWithID(ids[0], + ids[1], + ids[2], + ids[3], + ids[4], + ids[5], + ids[6], + ids[7], + ids[8], + ids[9], + ids[10], + ids[11], + ids[12], + ids[13], + ids[14], iCell + 1); break; case VTK_PYRAMID: // pyra5 - meshds->AddVolumeWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - iCell + 1); + meshds->AddVolumeWithID(ids[0], ids[1], ids[2], ids[3], ids[4], iCell + 1); break; case VTK_QUADRATIC_PYRAMID: // pyra13 - meshds->AddVolumeWithID(ids[0] + 1, - ids[1] + 1, - ids[2] + 1, - ids[3] + 1, - ids[4] + 1, - ids[5] + 1, - ids[6] + 1, - ids[7] + 1, - ids[8] + 1, - ids[9] + 1, - ids[10] + 1, - ids[11] + 1, - ids[12] + 1, + meshds->AddVolumeWithID(ids[0], + ids[1], + ids[2], + ids[3], + ids[4], + ids[5], + ids[6], + ids[7], + ids[8], + ids[9], + ids[10], + ids[11], + ids[12], iCell + 1); break; @@ -266,7 +291,7 @@ void FemVTKTools::importVTKMesh(vtkSmartPointer dataset, FemMesh* me FemMesh* FemVTKTools::readVTKMesh(const char* filename, FemMesh* mesh) { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: read FemMesh from VTK unstructuredGrid ======================\n"); Base::FileInfo f(filename); @@ -300,7 +325,8 @@ FemMesh* FemVTKTools::readVTKMesh(const char* filename, FemMesh* mesh) } // Mesh should link to the part feature, in order to set up FemConstraint - Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::Console().Log(" %f: Done \n", + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); return mesh; } @@ -309,77 +335,34 @@ void exportFemMeshFaces(vtkSmartPointer grid, { Base::Console().Log(" Start: VTK mesh builder faces.\n"); - vtkSmartPointer triangleArray = vtkSmartPointer::New(); - vtkSmartPointer quadTriangleArray = vtkSmartPointer::New(); - vtkSmartPointer quadArray = vtkSmartPointer::New(); - vtkSmartPointer quadQuadArray = vtkSmartPointer::New(); + vtkSmartPointer elemArray = vtkSmartPointer::New(); + std::vector types; - for (; aFaceIter->more();) { + while (aFaceIter->more()) { const SMDS_MeshFace* aFace = aFaceIter->next(); - // triangle - if (aFace->NbNodes() == 3) { - vtkSmartPointer tria = vtkSmartPointer::New(); - tria->GetPointIds()->SetId(0, aFace->GetNode(0)->GetID() - 1); - tria->GetPointIds()->SetId(1, aFace->GetNode(1)->GetID() - 1); - tria->GetPointIds()->SetId(2, aFace->GetNode(2)->GetID() - 1); - - triangleArray->InsertNextCell(tria); + if (aFace->GetEntityType() == SMDSEntity_Triangle) { + fillVtkArray(elemArray, types, aFace); } // quad - else if (aFace->NbNodes() == 4) { - vtkSmartPointer quad = vtkSmartPointer::New(); - quad->GetPointIds()->SetId(0, aFace->GetNode(0)->GetID() - 1); - quad->GetPointIds()->SetId(1, aFace->GetNode(1)->GetID() - 1); - quad->GetPointIds()->SetId(2, aFace->GetNode(2)->GetID() - 1); - quad->GetPointIds()->SetId(3, aFace->GetNode(3)->GetID() - 1); - - quadArray->InsertNextCell(quad); + else if (aFace->GetEntityType() == SMDSEntity_Quadrangle) { + fillVtkArray(elemArray, types, aFace); } // quadratic triangle - else if (aFace->NbNodes() == 6) { - vtkSmartPointer tria = - vtkSmartPointer::New(); - tria->GetPointIds()->SetId(0, aFace->GetNode(0)->GetID() - 1); - tria->GetPointIds()->SetId(1, aFace->GetNode(1)->GetID() - 1); - tria->GetPointIds()->SetId(2, aFace->GetNode(2)->GetID() - 1); - tria->GetPointIds()->SetId(3, aFace->GetNode(3)->GetID() - 1); - tria->GetPointIds()->SetId(4, aFace->GetNode(4)->GetID() - 1); - tria->GetPointIds()->SetId(5, aFace->GetNode(5)->GetID() - 1); - quadTriangleArray->InsertNextCell(tria); + else if (aFace->GetEntityType() == SMDSEntity_Quad_Triangle) { + fillVtkArray(elemArray, types, aFace); } // quadratic quad - else if (aFace->NbNodes() == 8) { - vtkSmartPointer quad = vtkSmartPointer::New(); - quad->GetPointIds()->SetId(0, aFace->GetNode(0)->GetID() - 1); - quad->GetPointIds()->SetId(1, aFace->GetNode(1)->GetID() - 1); - quad->GetPointIds()->SetId(2, aFace->GetNode(2)->GetID() - 1); - quad->GetPointIds()->SetId(3, aFace->GetNode(3)->GetID() - 1); - quad->GetPointIds()->SetId(4, aFace->GetNode(4)->GetID() - 1); - quad->GetPointIds()->SetId(5, aFace->GetNode(5)->GetID() - 1); - quad->GetPointIds()->SetId(6, aFace->GetNode(6)->GetID() - 1); - quad->GetPointIds()->SetId(7, aFace->GetNode(7)->GetID() - 1); - - quadQuadArray->InsertNextCell(quad); + else if (aFace->GetEntityType() == SMDSEntity_Quad_Quadrangle) { + fillVtkArray(elemArray, types, aFace); } else { - throw std::runtime_error("Face not yet supported by FreeCAD's VTK mesh builder\n"); + throw Base::TypeError("Face not yet supported by FreeCAD's VTK mesh builder\n"); } } - if (triangleArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_TRIANGLE, triangleArray); - } - if (quadArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_QUAD, quadArray); - } - - if (quadTriangleArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_QUADRATIC_TRIANGLE, quadTriangleArray); - } - - if (quadQuadArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_QUADRATIC_QUAD, quadQuadArray); + if (elemArray->GetNumberOfCells() > 0) { + grid->SetCells(types.data(), elemArray); } Base::Console().Log(" End: VTK mesh builder faces.\n"); @@ -390,131 +373,43 @@ void exportFemMeshCells(vtkSmartPointer grid, { Base::Console().Log(" Start: VTK mesh builder volumes.\n"); - vtkSmartPointer tetraArray = vtkSmartPointer::New(); - vtkSmartPointer pyramidArray = vtkSmartPointer::New(); - vtkSmartPointer wedgeArray = vtkSmartPointer::New(); - vtkSmartPointer hexaArray = vtkSmartPointer::New(); - vtkSmartPointer quadTetraArray = vtkSmartPointer::New(); - vtkSmartPointer quadPyramidArray = vtkSmartPointer::New(); - vtkSmartPointer quadWedgeArray = vtkSmartPointer::New(); - vtkSmartPointer quadHexaArray = vtkSmartPointer::New(); + vtkSmartPointer elemArray = vtkSmartPointer::New(); + std::vector types; - for (; aVolIter->more();) { + while (aVolIter->more()) { const SMDS_MeshVolume* aVol = aVolIter->next(); - if (aVol->NbNodes() == 4) { // tetra4 - Base::Console().Log(" Volume tetra4\n"); - vtkSmartPointer cell = vtkSmartPointer::New(); - cell->GetPointIds()->SetId(0, aVol->GetNode(0)->GetID() - 1); - cell->GetPointIds()->SetId(1, aVol->GetNode(1)->GetID() - 1); - cell->GetPointIds()->SetId(2, aVol->GetNode(2)->GetID() - 1); - cell->GetPointIds()->SetId(3, aVol->GetNode(3)->GetID() - 1); - tetraArray->InsertNextCell(cell); + if (aVol->GetEntityType() == SMDSEntity_Tetra) { // tetra4 + fillVtkArray(elemArray, types, aVol); } - else if (aVol->NbNodes() == 5) { // pyra5 - Base::Console().Log(" Volume pyra5\n"); - vtkSmartPointer cell = vtkSmartPointer::New(); - cell->GetPointIds()->SetId(0, aVol->GetNode(0)->GetID() - 1); - cell->GetPointIds()->SetId(1, aVol->GetNode(1)->GetID() - 1); - cell->GetPointIds()->SetId(2, aVol->GetNode(2)->GetID() - 1); - cell->GetPointIds()->SetId(3, aVol->GetNode(3)->GetID() - 1); - cell->GetPointIds()->SetId(4, aVol->GetNode(4)->GetID() - 1); - pyramidArray->InsertNextCell(cell); + else if (aVol->GetEntityType() == SMDSEntity_Pyramid) { // pyra5 + fillVtkArray(elemArray, types, aVol); } - else if (aVol->NbNodes() == 6) { // penta6 - Base::Console().Log(" Volume penta6\n"); - vtkSmartPointer cell = vtkSmartPointer::New(); - cell->GetPointIds()->SetId(0, aVol->GetNode(0)->GetID() - 1); - cell->GetPointIds()->SetId(1, aVol->GetNode(1)->GetID() - 1); - cell->GetPointIds()->SetId(2, aVol->GetNode(2)->GetID() - 1); - cell->GetPointIds()->SetId(3, aVol->GetNode(3)->GetID() - 1); - cell->GetPointIds()->SetId(4, aVol->GetNode(4)->GetID() - 1); - cell->GetPointIds()->SetId(5, aVol->GetNode(5)->GetID() - 1); - wedgeArray->InsertNextCell(cell); + else if (aVol->GetEntityType() == SMDSEntity_Penta) { // penta6 + fillVtkArray(elemArray, types, aVol); } - else if (aVol->NbNodes() == 8) { // hexa8 - Base::Console().Log(" Volume hexa8\n"); - vtkSmartPointer cell = vtkSmartPointer::New(); - cell->GetPointIds()->SetId(0, aVol->GetNode(0)->GetID() - 1); - cell->GetPointIds()->SetId(1, aVol->GetNode(1)->GetID() - 1); - cell->GetPointIds()->SetId(2, aVol->GetNode(2)->GetID() - 1); - cell->GetPointIds()->SetId(3, aVol->GetNode(3)->GetID() - 1); - cell->GetPointIds()->SetId(4, aVol->GetNode(4)->GetID() - 1); - cell->GetPointIds()->SetId(5, aVol->GetNode(5)->GetID() - 1); - cell->GetPointIds()->SetId(6, aVol->GetNode(6)->GetID() - 1); - cell->GetPointIds()->SetId(7, aVol->GetNode(7)->GetID() - 1); - hexaArray->InsertNextCell(cell); + else if (aVol->GetEntityType() == SMDSEntity_Hexa) { // hexa8 + fillVtkArray(elemArray, types, aVol); } - else if (aVol->NbNodes() == 10) { // tetra10 - Base::Console().Log(" Volume tetra10\n"); - vtkSmartPointer tetra = vtkSmartPointer::New(); - for (int i = 0; i < 10; i++) { - tetra->GetPointIds()->SetId(i, aVol->GetNode(i)->GetID() - 1); - } - quadTetraArray->InsertNextCell(tetra); + else if (aVol->GetEntityType() == SMDSEntity_Quad_Tetra) { // tetra10 + fillVtkArray(elemArray, types, aVol); } - - else if (aVol->NbNodes() == 13) { // pyra13 - Base::Console().Log(" Volume pyra13\n"); - vtkSmartPointer cell = vtkSmartPointer::New(); - for (int i = 0; i < 13; i++) { - cell->GetPointIds()->SetId(i, aVol->GetNode(i)->GetID() - 1); - // Base::Console().Log("node ids: %i\n", aVol->GetNode(i)->GetID()-1); - } - quadPyramidArray->InsertNextCell(cell); + else if (aVol->GetEntityType() == SMDSEntity_Quad_Pyramid) { // pyra13 + fillVtkArray(elemArray, types, aVol); } - else if (aVol->NbNodes() == 15) { // penta15 - Base::Console().Log(" Volume penta15\n"); - vtkSmartPointer cell = vtkSmartPointer::New(); - for (int i = 0; i < 15; i++) { - cell->GetPointIds()->SetId(i, aVol->GetNode(i)->GetID() - 1); - } - quadWedgeArray->InsertNextCell(cell); + else if (aVol->GetEntityType() == SMDSEntity_Quad_Penta) { // penta15 + fillVtkArray(elemArray, types, aVol); } - else if (aVol->NbNodes() == 20) { // hexa20 - Base::Console().Log(" Volume hexa20\n"); - vtkSmartPointer cell = - vtkSmartPointer::New(); - for (int i = 0; i < 20; i++) { - cell->GetPointIds()->SetId(i, aVol->GetNode(i)->GetID() - 1); - } - quadHexaArray->InsertNextCell(cell); + else if (aVol->GetEntityType() == SMDSEntity_Quad_Hexa) { // hexa20 + fillVtkArray(elemArray, types, aVol); } else { - throw std::runtime_error("Volume not yet supported by FreeCAD's VTK mesh builder\n"); + throw Base::TypeError("Volume not yet supported by FreeCAD's VTK mesh builder\n"); } } - if (tetraArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_TETRA, tetraArray); - } - - if (pyramidArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_PYRAMID, pyramidArray); - } - - if (wedgeArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_WEDGE, wedgeArray); - } - - if (hexaArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_HEXAHEDRON, hexaArray); - } - - if (quadTetraArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_QUADRATIC_TETRA, quadTetraArray); - } - - if (quadPyramidArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_QUADRATIC_PYRAMID, quadPyramidArray); - } - - if (quadWedgeArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_QUADRATIC_WEDGE, quadWedgeArray); - } - - if (quadHexaArray->GetNumberOfCells() > 0) { - grid->SetCells(VTK_QUADRATIC_HEXAHEDRON, quadHexaArray); + if (elemArray->GetNumberOfCells() > 0) { + grid->SetCells(types.data(), elemArray); } Base::Console().Log(" End: VTK mesh builder volumes.\n"); @@ -569,7 +464,7 @@ void FemVTKTools::exportVTKMesh(const FemMesh* mesh, void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh) { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: write FemMesh from VTK unstructuredGrid ======================\n"); Base::FileInfo f(filename); @@ -587,7 +482,8 @@ void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh) Base::Console().Error("file name extension is not supported to write VTK\n"); } - Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::Console().Log(" %f: Done \n", + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); } @@ -637,7 +533,7 @@ App::DocumentObject* createObjectByType(const Base::Type type) App::DocumentObject* FemVTKTools::readResult(const char* filename, App::DocumentObject* res) { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log( "Start: read FemResult with FemMesh from VTK file ======================\n"); Base::FileInfo f(filename); @@ -693,7 +589,8 @@ App::DocumentObject* FemVTKTools::readResult(const char* filename, App::Document } pcDoc->recompute(); - Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::Console().Log(" %f: Done \n", + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); Base::Console().Log("End: read FemResult with FemMesh from VTK file ======================\n"); return result; @@ -715,7 +612,7 @@ void FemVTKTools::writeResult(const char* filename, const App::DocumentObject* r return; } - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log("Start: write FemResult to VTK unstructuredGrid dataset =======\n"); Base::FileInfo f(filename); @@ -728,7 +625,7 @@ void FemVTKTools::writeResult(const char* filename, const App::DocumentObject* r FemVTKTools::exportVTKMesh(&fmesh, grid); Base::Console().Log(" %f: vtk mesh builder finished\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // result FemVTKTools::exportFreeCADResult(res, grid); @@ -745,7 +642,7 @@ void FemVTKTools::writeResult(const char* filename, const App::DocumentObject* r } Base::Console().Log(" %f: writing result object to vtk finished\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); Base::Console().Log("End: write FemResult to VTK unstructuredGrid dataset =======\n"); } diff --git a/src/Mod/Fem/App/HypothesisPy.cpp b/src/Mod/Fem/App/HypothesisPy.cpp index 5dd5c78867..ace521afca 100644 --- a/src/Mod/Fem/App/HypothesisPy.cpp +++ b/src/Mod/Fem/App/HypothesisPy.cpp @@ -63,9 +63,6 @@ #include #include #include -#if SMESH_VERSION_MAJOR < 7 -#include -#endif #endif #include @@ -170,55 +167,6 @@ Py::Object SMESH_HypothesisPy::getLibName(const Py::Tuple& args) } -#if SMESH_VERSION_MAJOR < 7 // ----------------------------------------------- -template -Py::Object SMESH_HypothesisPy::setParameters(const Py::Tuple& args) -{ - std::string paramName = static_cast(Py::String(args[0])); - hypothesis()->SetParameters(paramName.c_str()); - return Py::None(); -} - -template -Py::Object SMESH_HypothesisPy::getParameters(const Py::Tuple& args) -{ - if (!PyArg_ParseTuple(args.ptr(), "")) { - throw Py::Exception(); - } - return Py::String(hypothesis()->GetParameters()); -} - -template -Py::Object SMESH_HypothesisPy::setLastParameters(const Py::Tuple& args) -{ - if (!PyArg_ParseTuple(args.ptr(), "")) { - throw Py::Exception(); - } - std::string paramName = static_cast(Py::String(args[0])); - hypothesis()->SetLastParameters(paramName.c_str()); - return Py::None(); -} - -template -Py::Object SMESH_HypothesisPy::getLastParameters(const Py::Tuple& args) -{ - if (!PyArg_ParseTuple(args.ptr(), "")) { - throw Py::Exception(); - } - return Py::String(hypothesis()->GetLastParameters()); -} - -template -Py::Object SMESH_HypothesisPy::clearParameters(const Py::Tuple& args) -{ - if (!PyArg_ParseTuple(args.ptr(), "")) { - throw Py::Exception(); - } - hypothesis()->ClearParameters(); - return Py::None(); -} -#endif // -------------------------------------------------------------------- - template Py::Object SMESH_HypothesisPy::setParametersByMesh(const Py::Tuple& args) { @@ -764,24 +712,6 @@ StdMeshers_Hexa_3DPy::StdMeshers_Hexa_3DPy(int hypId, int studyId, SMESH_Gen* ge StdMeshers_Hexa_3DPy::~StdMeshers_Hexa_3DPy() = default; -// --------------------------------------------------------------------------- - -#if SMESH_VERSION_MAJOR < 7 // ----------------------------------------------- -void StdMeshers_TrianglePreferencePy::init_type(PyObject* module) -{ - behaviors().name("StdMeshers_TrianglePreference"); - behaviors().doc("StdMeshers_TrianglePreference"); - SMESH_HypothesisPyBase::init_type(module); -} - -StdMeshers_TrianglePreferencePy::StdMeshers_TrianglePreferencePy(int hypId, - int studyId, - SMESH_Gen* gen) - : SMESH_HypothesisPyBase(new StdMeshers_TrianglePreference(hypId, studyId, gen)) -{} - -StdMeshers_TrianglePreferencePy::~StdMeshers_TrianglePreferencePy() = default; -#endif // -------------------------------------------------------------------- // --------------------------------------------------------------------------- diff --git a/src/Mod/Fem/App/HypothesisPy.h b/src/Mod/Fem/App/HypothesisPy.h index 0c16f7f020..379ad7f0bb 100644 --- a/src/Mod/Fem/App/HypothesisPy.h +++ b/src/Mod/Fem/App/HypothesisPy.h @@ -64,13 +64,6 @@ public: Py::Object repr() override; Py::Object getLibName(const Py::Tuple& args); Py::Object setLibName(const Py::Tuple& args); -#if SMESH_VERSION_MAJOR < 7 - Py::Object setParameters(const Py::Tuple& args); - Py::Object getParameters(const Py::Tuple& args); - Py::Object setLastParameters(const Py::Tuple& args); - Py::Object getLastParameters(const Py::Tuple& args); - Py::Object clearParameters(const Py::Tuple& args); -#endif Py::Object isAuxiliary(const Py::Tuple& args); Py::Object setParametersByMesh(const Py::Tuple& args); diff --git a/src/Mod/Fem/App/PreCompiled.h b/src/Mod/Fem/App/PreCompiled.h index 240207ea65..6985462aab 100644 --- a/src/Mod/Fem/App/PreCompiled.h +++ b/src/Mod/Fem/App/PreCompiled.h @@ -102,9 +102,6 @@ #include #include #include -#if SMESH_VERSION_MAJOR < 7 -#include -#endif #include // Opencascade diff --git a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui index ad991d117c..f09608cf7f 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui @@ -655,7 +655,7 @@ - Beam, shell element 3D output format + Beam, shell element 3D output format diff --git a/src/Mod/Fem/Gui/PreCompiled.h b/src/Mod/Fem/Gui/PreCompiled.h index 56e1e86574..cd25be26a4 100644 --- a/src/Mod/Fem/Gui/PreCompiled.h +++ b/src/Mod/Fem/Gui/PreCompiled.h @@ -115,6 +115,7 @@ #include #include #include +#include #include #include #include @@ -144,6 +145,8 @@ #include #include #include +#include + // Salomesh #include diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem.ts b/src/Mod/Fem/Gui/Resources/translations/Fem.ts index a252a61e5d..a1469385ec 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem.ts @@ -2503,15 +2503,15 @@ Specify another file please. FemMaterial - + FEM material - + Material @@ -2536,9 +2536,9 @@ Specify another file please. - + TextLabel @@ -2888,17 +2888,17 @@ Specify another file please. + + + - - - 0 mm @@ -2908,11 +2908,11 @@ Specify another file please. - + - + Parameter @@ -2942,13 +2942,13 @@ Specify another file please. - - + + - - + + Analysis feature properties @@ -2963,12 +2963,9 @@ Specify another file please. - - - - - - + + + @@ -2981,15 +2978,18 @@ Specify another file please. - - - + + + + + + unspecified @@ -3030,16 +3030,16 @@ with a harmonic/oscillating driving force - + Real - + Imaginary @@ -3059,9 +3059,9 @@ with a harmonic/oscillating driving force - + x @@ -3078,9 +3078,9 @@ Note: has no effect if a solid was selected - + y @@ -3097,9 +3097,9 @@ Note: has no effect if a solid was selected - + z @@ -3147,8 +3147,8 @@ Note: has no effect if a solid was selected - + Cross section parameter @@ -3164,10 +3164,14 @@ Note: has no effect if a solid was selected - Diameter: + + + Outer diameter: + + Thickness: @@ -3199,30 +3203,30 @@ Note: has no effect if a solid was selected - - - + + + formula - + Velocity x: - + Velocity y: - + Velocity z: @@ -3342,14 +3346,14 @@ Note: for 2D only setting for x is possible, - + Real part of potential z-component - + Imaginary part of potential z-component @@ -3467,26 +3471,26 @@ Note: for 2D only setting for x is possible, - - - - - + + + + + A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_be.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_be.ts index 8dd42b3b76..7230a48e32 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_be.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_be.ts @@ -911,12 +911,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2537,15 +2537,15 @@ Specify another file please. FemMaterial - + FEM material Матэрыял МКЭ - + Material Матэрыял @@ -2570,9 +2570,9 @@ Specify another file please. Назва матэрыялу - + TextLabel ТэкставыНадпіс @@ -2922,17 +2922,17 @@ Specify another file please. Уключыць рэгуляванне + + + - - - 0 mm 0 мм @@ -2942,11 +2942,11 @@ Specify another file please. Налада цэнтрыфугавання - + - + Parameter Налада @@ -2976,13 +2976,13 @@ Specify another file please. Налада вынікаў падзелу - - + + - - + + Analysis feature properties Уласцівасці элементаў аналізу @@ -2997,12 +2997,9 @@ Specify another file please. Патэнцыял: - - - - - - + + + @@ -3015,15 +3012,18 @@ Specify another file please. - - - + + + + + + unspecified не ўдакладнены @@ -3064,16 +3064,16 @@ with a harmonic/oscillating driving force Калі межавая ўмова для электрастатычнай сілы - + Real Сапраўдная частка - + Imaginary Уяўная частка @@ -3093,9 +3093,9 @@ with a harmonic/oscillating driving force Уяўная частка скалярнага патэнцыялу - + x x @@ -3114,9 +3114,9 @@ Note: has no effect if a solid was selected Заўвага: не мае аніякага эфекту, калі было абрана суцэльнае цела - + y y @@ -3135,9 +3135,9 @@ Note: has no effect if a solid was selected Заўвага: не мае аніякага эфекту, калі было абрана суцэльнае цела - + z z @@ -3187,8 +3187,8 @@ Note: has no effect if a solid was selected Налада перасеку бэлькі - + Cross section parameter Налада папярочнага перасеку @@ -3204,10 +3204,14 @@ Note: has no effect if a solid was selected - Diameter: Дыяметр: + + + Outer diameter: + Вонкавы дыяметр: + Thickness: @@ -3239,30 +3243,30 @@ Note: has no effect if a solid was selected Вярчэнне: - - - + + + formula формула - + Velocity x: Хуткасць па восі x: - + Velocity y: Хуткасць па восі y: - + Velocity z: Хуткасць па восі z: @@ -3390,14 +3394,14 @@ Note: for 2D only setting for x is possible, Уяўная частка кампаненты y комплекснага патэнцыялу - + Real part of potential z-component Сапраўдная частка кампаненты z комплекснага патэнцыялу - + Imaginary part of potential z-component Уяўная частка кампаненты z комплекснага патэнцыялу @@ -3515,26 +3519,26 @@ Note: for 2D only setting for x is possible, Скасаваць - - - - - + + + + + A dialog is already open in the task panel На панэлі задач дыялогавае акно ўжо адчыненае - - - - - + + + + + Do you want to close this dialog? Ці жадаеце вы зачыніць дыялогавае акно? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ca.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_ca.ts index 12cc1e823f..12adf60a51 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_ca.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_ca.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Material @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel Etiqueta de text @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Paràmetre @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3080,16 +3080,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginària @@ -3109,9 +3109,9 @@ with a harmonic/oscillating driving force Part imaginaria del potencial escalar - + x x @@ -3130,9 +3130,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3151,9 +3151,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3203,8 +3203,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3220,10 +3220,14 @@ Note: has no effect if a solid was selected - Diameter: Diàmetre: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3255,30 +3259,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3408,14 +3412,14 @@ Note: for 2D only setting for x is possible, Part imaginaria del component y - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3533,26 +3537,26 @@ Note: for 2D only setting for x is possible, Cancel·la - - - - - + + + + + A dialog is already open in the task panel A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? Do you want to close this dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_cs.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_cs.ts index 5bbc6e7d35..f9bc423a7c 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_cs.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_cs.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material Materiál FEM - + Material Materiál @@ -2586,9 +2586,9 @@ Specify another file please. Název materiálu - + TextLabel Textový popisek @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Parametr Centrif - + - + Parameter Parametr @@ -2992,13 +2992,13 @@ Specify another file please. Parametr SectionPrint - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potenciál: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified nespecifikováno @@ -3081,16 +3081,16 @@ s harmonickou/oscilační hnací silou Whether the boundary condition is for the electric force - + Real Skutečnost - + Imaginary Imaginární @@ -3110,9 +3110,9 @@ s harmonickou/oscilační hnací silou Imaginární část skalárního potenciálu - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Poznámka: nemá žádný účinek, pokud bylo vybráno těleso - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Poznámka: nemá žádný účinek, pokud bylo vybráno těleso - + z z @@ -3204,8 +3204,8 @@ Poznámka: nemá žádný účinek, pokud bylo vybráno těleso Parametr průřezu nosníku - + Cross section parameter Parametr průřezu @@ -3221,10 +3221,14 @@ Poznámka: nemá žádný účinek, pokud bylo vybráno těleso - Diameter: Průměr: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Poznámka: nemá žádný účinek, pokud bylo vybráno těleso Otáčení: - - - + + + formula vzorec - + Velocity x: Rychlost x: - + Velocity y: Rychlost y: - + Velocity z: Rychlost z: @@ -3409,14 +3413,14 @@ Poznámka: pro 2D je možné pouze nastavení pro x, Imaginární část potenciální složky y - + Real part of potential z-component Reálná část potenciální z-složky - + Imaginary part of potential z-component Imaginární část potenciální z-složky @@ -3534,26 +3538,26 @@ Poznámka: pro 2D je možné pouze nastavení pro x, Zrušit - - - - - + + + + + A dialog is already open in the task panel Dialog je opravdu otevřen v panelu úloh - - - - - + + + + + Do you want to close this dialog? Chcete zavřít tento dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_de.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_de.ts index 3b7e8e107e..b95db928e4 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_de.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_de.ts @@ -911,12 +911,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2543,15 +2543,15 @@ Geben Sie bitte eine andere Datei an. FemMaterial - + FEM material FEM-Material - + Material Material @@ -2576,9 +2576,9 @@ Geben Sie bitte eine andere Datei an. Materialname - + TextLabel TextLabel @@ -2928,17 +2928,17 @@ Geben Sie bitte eine andere Datei an. Anpassen aktivieren + + + - - - 0 mm 0 mm @@ -2948,11 +2948,11 @@ Geben Sie bitte eine andere Datei an. Parameter der zentrifugalen Last - + - + Parameter Parameter @@ -2982,13 +2982,13 @@ Geben Sie bitte eine andere Datei an. Parameter Querschnitts-Auszug - - + + - - + + Analysis feature properties Eigenschaften des Analyseelements @@ -3003,12 +3003,9 @@ Geben Sie bitte eine andere Datei an. Potential: - - - - - - + + + @@ -3021,15 +3018,18 @@ Geben Sie bitte eine andere Datei an. - - - + + + + + + unspecified unbestimmt @@ -3071,16 +3071,16 @@ mit harmonischer/oszillierender Antriebskraft verwendet Gibt an, ob die Randbedingung für die elektrostatische Kraft gilt - + Real Reell - + Imaginary Imaginär @@ -3100,9 +3100,9 @@ mit harmonischer/oszillierender Antriebskraft verwendet Imaginärer Teil des Skalarpotentials - + x x @@ -3121,9 +3121,9 @@ Note: has no effect if a solid was selected Hinweis: hat keinen Effekt, wenn ein Volumen ausgewählt wurde - + y y @@ -3142,9 +3142,9 @@ Note: has no effect if a solid was selected Hinweis: hat keinen Effekt, wenn ein Volumen ausgewählt wurde - + z z @@ -3194,8 +3194,8 @@ Hinweis: hat keinen Effekt, wenn ein Volumen ausgewählt wurde Stabquerschnitt-Parameter - + Cross section parameter Querschnittsparameter @@ -3211,10 +3211,14 @@ Hinweis: hat keinen Effekt, wenn ein Volumen ausgewählt wurde - Diameter: Durchmesser: + + + Outer diameter: + Außendurchmesser: + Thickness: @@ -3246,30 +3250,30 @@ Hinweis: hat keinen Effekt, wenn ein Volumen ausgewählt wurde Drehung: - - - + + + formula Formel - + Velocity x: Geschwindigkeit x: - + Velocity y: Geschwindigkeit y: - + Velocity z: Geschwindigkeit z: @@ -3399,14 +3403,14 @@ Hinweis: Für 2D ist nur für x möglich, Imaginärer Teil der potenziellen y-Komponente - + Real part of potential z-component Realer Teil der potentiellen z-Komponente - + Imaginary part of potential z-component Imaginärer Teil der potentiellen z-Komponente @@ -3524,26 +3528,26 @@ Hinweis: Für 2D ist nur für x möglich, Abbrechen - - - - - + + + + + A dialog is already open in the task panel Im Aufgabenbereich ist bereits ein Dialog geöffnet - - - - - + + + + + Do you want to close this dialog? Soll dieser Dialog geschlossen werden? @@ -4196,7 +4200,7 @@ Siehe das nachfolgende Beschreibungsfeld für mögliche Variablen. Location - Lage + Ort @@ -4369,7 +4373,7 @@ zu ermitteln, die durch der Strömung erzeugt wurde Select multiple face(s), click Add or Remove - Fläche(n) auswählen, dann auf Hinzufügen oder Entfernen klicken + Wählen Sie mehrere Flächen, klicken Sie auf Hinzufügen oder Entfernen @@ -4397,7 +4401,7 @@ zu ermitteln, die durch der Strömung erzeugt wurde Select multiple face(s), click Add or Remove - Wählen Sie mehrere Flächen, klicken Sie auf Hinzufügen oder Entfernen + Fläche(n) auswählen, dann auf Hinzufügen oder Entfernen klicken @@ -4544,7 +4548,7 @@ Normalenvektors der Fläche wird als Richtung verwendet Reverse direction - Umgekehrte Richtung + Richtung umkehren @@ -6164,7 +6168,7 @@ Bitte wählen Sie zuerst einen Ergebnistyp. Center - Mitte + Zentrum @@ -6205,7 +6209,7 @@ Bitte wählen Sie zuerst einen Ergebnistyp. Center - Mitte + Mittelpunkt diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_el.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_el.ts index 6c681f9756..2db74b5a1b 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_el.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_el.ts @@ -2549,15 +2549,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Υλικό @@ -2582,9 +2582,9 @@ Specify another file please. Material name - + TextLabel Ετικέτα κειμένου @@ -2934,17 +2934,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2954,11 +2954,11 @@ Specify another file please. Centrif parameter - + - + Parameter Παράμετρος @@ -2988,13 +2988,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3009,12 +3009,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3027,15 +3024,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3077,16 +3077,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3106,9 +3106,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3127,9 +3127,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3148,9 +3148,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3200,8 +3200,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3217,10 +3217,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3252,30 +3256,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3405,14 +3409,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3530,26 +3534,26 @@ Note: for 2D only setting for x is possible, Ακύρωση - - - - - + + + + + A dialog is already open in the task panel A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? Do you want to close this dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_es-AR.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_es-AR.ts index 1ac40fb4ee..98f29151be 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_es-AR.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_es-AR.ts @@ -911,12 +911,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2165,7 +2165,7 @@ Especifique otro archivo, por favor. Only one type of selection (vertex, face or edge) per analysis feature allowed! - ¡Solo un tipo de selección (vértice, cara o arista) por análisis de característica permitida! + Only one type of selection (vertex, face or edge) per analysis feature allowed! @@ -2176,7 +2176,7 @@ Especifique otro archivo, por favor. Select an edge or a face, please. - Seleccione un borde o una cara, por favor. + Seleccione una arista o una cara, por favor. @@ -2552,15 +2552,15 @@ Especifique otro archivo, por favor. FemMaterial - + FEM material Material MEF - + Material Material @@ -2585,9 +2585,9 @@ Especifique otro archivo, por favor. Nombre del Material - + TextLabel EtiquetaTexto @@ -2937,17 +2937,17 @@ Especifique otro archivo, por favor. Enable Adjust + + + - - - 0 mm 0 mm @@ -2957,11 +2957,11 @@ Especifique otro archivo, por favor. Parámetro de Centrífuga - + - + Parameter Parámetro @@ -2991,13 +2991,13 @@ Especifique otro archivo, por favor. Parámetro de Sección de Impresión - - + + - - + + Analysis feature properties Analysis feature properties @@ -3012,12 +3012,9 @@ Especifique otro archivo, por favor. Potential: - - - - - - + + + @@ -3030,15 +3027,18 @@ Especifique otro archivo, por favor. - - - + + + + + + unspecified no especificado @@ -3080,16 +3080,16 @@ con una fuerza de conducción armónica/oscilante Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginario @@ -3109,9 +3109,9 @@ con una fuerza de conducción armónica/oscilante Parte imaginaria del potencial escalar - + x x @@ -3130,9 +3130,9 @@ Note: has no effect if a solid was selected Nota: no tiene efecto si un sólido fue seleccionado - + y y @@ -3151,9 +3151,9 @@ Note: has no effect if a solid was selected Nota: no tiene efecto si un sólido fue seleccionado - + z z @@ -3203,8 +3203,8 @@ Nota: no tiene efecto si un sólido fue seleccionado Parámetro de sección de viga - + Cross section parameter Parámetro de sección cruzada @@ -3220,10 +3220,14 @@ Nota: no tiene efecto si un sólido fue seleccionado - Diameter: Diámetro: + + + Outer diameter: + Diámetro externo: + Thickness: @@ -3255,30 +3259,30 @@ Nota: no tiene efecto si un sólido fue seleccionado Rotación: - - - + + + formula fórmula - + Velocity x: Velocidad x: - + Velocity y: Velocidad y: - + Velocity z: Velocidad z: @@ -3408,14 +3412,14 @@ Nota: para 2D solo la configuración para x es posible, Parte imaginaria del potencial componente y - + Real part of potential z-component Parte real del potencial componente z - + Imaginary part of potential z-component Parte imaginaria del potencial componente z @@ -3533,26 +3537,26 @@ Nota: para 2D solo la configuración para x es posible, Cancelar - - - - - + + + + + A dialog is already open in the task panel Un diálogo ya está abierto en el panel de tareas - - - - - + + + + + Do you want to close this dialog? ¿Desea cerrar este diálogo? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.ts index 527abfc247..e610b69a4a 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.ts @@ -911,12 +911,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2552,15 +2552,15 @@ Especifique otro archivo, por favor. FemMaterial - + FEM material Material MEF - + Material Material @@ -2585,9 +2585,9 @@ Especifique otro archivo, por favor. Nombre del Material - + TextLabel Etiqueta Texto @@ -2937,17 +2937,17 @@ Especifique otro archivo, por favor. Enable Adjust + + + - - - 0 mm 0 mm @@ -2957,11 +2957,11 @@ Especifique otro archivo, por favor. Parámetro de Centrífuga - + - + Parameter Parámetro @@ -2991,13 +2991,13 @@ Especifique otro archivo, por favor. Parámetro de Sección de Impresión - - + + - - + + Analysis feature properties Analysis feature properties @@ -3012,12 +3012,9 @@ Especifique otro archivo, por favor. Potential: - - - - - - + + + @@ -3030,15 +3027,18 @@ Especifique otro archivo, por favor. - - - + + + + + + unspecified no especificado @@ -3080,16 +3080,16 @@ con una fuerza de conducción armónica/oscilante Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginario @@ -3109,9 +3109,9 @@ con una fuerza de conducción armónica/oscilante Parte imaginaria del potencial escalar - + x x @@ -3130,9 +3130,9 @@ Note: has no effect if a solid was selected Nota: no tiene efecto si un sólido fue seleccionado - + y y @@ -3151,9 +3151,9 @@ Note: has no effect if a solid was selected Nota: no tiene efecto si un sólido fue seleccionado - + z z @@ -3203,8 +3203,8 @@ Nota: no tiene efecto si un sólido fue seleccionado Parámetro de sección de viga - + Cross section parameter Parámetro de sección cruzada @@ -3220,10 +3220,14 @@ Nota: no tiene efecto si un sólido fue seleccionado - Diameter: Diámetro: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3255,30 +3259,30 @@ Nota: no tiene efecto si un sólido fue seleccionado Rotación: - - - + + + formula fórmula - + Velocity x: Velocidad x: - + Velocity y: Velocidad y: - + Velocity z: Velocidad z: @@ -3408,14 +3412,14 @@ Nota: para 2D solo la configuración para x es posible, Parte imaginaria del potencial componente y - + Real part of potential z-component Parte real del potencial componente z - + Imaginary part of potential z-component Parte imaginaria del potencial componente z @@ -3533,26 +3537,26 @@ Nota: para 2D solo la configuración para x es posible, Cancelar - - - - - + + + + + A dialog is already open in the task panel Un diálogo ya está abierto en el panel de tareas - - - - - + + + + + Do you want to close this dialog? ¿Desea cerrar este diálogo? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_eu.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_eu.ts index 2bf231c125..f217a3425a 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_eu.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_eu.ts @@ -2554,15 +2554,15 @@ Zehaztu beste fitxategi bat. FemMaterial - + FEM material FEM materiala - + Material Materiala @@ -2587,9 +2587,9 @@ Zehaztu beste fitxategi bat. Materialaren izena - + TextLabel Testu-etiketa @@ -2939,17 +2939,17 @@ Zehaztu beste fitxategi bat. Enable Adjust + + + - - - 0 mm 0 mm @@ -2959,11 +2959,11 @@ Zehaztu beste fitxategi bat. Zentrifugazio-parametroa - + - + Parameter Parametroa @@ -2993,13 +2993,13 @@ Zehaztu beste fitxategi bat. Sekzio-inprimatzearen parametroa - - + + - - + + Analysis feature properties Analisi-elementuaren propietateak @@ -3014,12 +3014,9 @@ Zehaztu beste fitxategi bat. Potentziala: - - - - - - + + + @@ -3032,15 +3029,18 @@ Zehaztu beste fitxategi bat. - - - + + + + + + unspecified zehaztu gabea @@ -3082,16 +3082,16 @@ duten ekuazioetan soilik erabiltzen da Muga-baldintza indar elektrikorako den ala ez - + Real Erreala - + Imaginary Irudikaria @@ -3111,9 +3111,9 @@ duten ekuazioetan soilik erabiltzen da Potentzial eskalar baten zati irudikaria - + x x @@ -3132,9 +3132,9 @@ Note: has no effect if a solid was selected Oharra: ez du eraginik solido bat hautatu bada - + y y @@ -3153,9 +3153,9 @@ Note: has no effect if a solid was selected Oharra: ez du eraginik solido bat hautatu bada - + z z @@ -3205,8 +3205,8 @@ Oharra: ez du eraginik solido bat hautatu bada Habe-sekzioaren parametroa - + Cross section parameter Zeharkako sekzioaren parametroa @@ -3222,10 +3222,14 @@ Oharra: ez du eraginik solido bat hautatu bada - Diameter: Diametroa: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3257,30 +3261,30 @@ Oharra: ez du eraginik solido bat hautatu bada Biraketa: - - - + + + formula formula - + Velocity x: X abiadura: - + Velocity y: Y abiadura: - + Velocity z: Z abiadura: @@ -3410,14 +3414,14 @@ Oharra: 2D kasuetan soilik, X-en ezarpena posible da, Potentzialaren Y osagaiaren zati irudikaria - + Real part of potential z-component Potentzialaren Z osagaiaren zati erreala - + Imaginary part of potential z-component Potentzialaren Z osagaiaren zati irudikaria @@ -3535,26 +3539,26 @@ Oharra: 2D kasuetan soilik, X-en ezarpena posible da, Utzi - - - - - + + + + + A dialog is already open in the task panel Elkarrizketa-koadro bat irekita dago ataza-panelean - - - - - + + + + + Do you want to close this dialog? Koadro hori itxi nahi duzu? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_fi.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_fi.ts index 79294c669c..abc5056304 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_fi.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_fi.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Materiaali @@ -2586,9 +2586,9 @@ Specify another file please. Materiaalin nimi - + TextLabel TekstiSelite @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parametri @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Halkaisija: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Peruuta - - - - - + + + + + A dialog is already open in the task panel Valintaikkuna on jo avoinna tehtäväpaneelissa - - - - - + + + + + Do you want to close this dialog? Haluatko sulkea tämän valintaikkunan? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_fr.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_fr.ts index dd039121cd..1828d9af6f 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_fr.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_fr.ts @@ -911,12 +911,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2542,15 +2542,15 @@ Spécifier un autre fichier. FemMaterial - + FEM material Matériau FEM - + Material Matériau @@ -2575,9 +2575,9 @@ Spécifier un autre fichier. Nom du matériau - + TextLabel Étiquette du texte @@ -2927,17 +2927,17 @@ Spécifier un autre fichier. Activer l'ajustement + + + - - - 0 mm 0 mm @@ -2947,11 +2947,11 @@ Spécifier un autre fichier. Paramètre de centrifugation - + - + Parameter Paramètre @@ -2981,13 +2981,13 @@ Spécifier un autre fichier. Paramètre d'affichage de la section - - + + - - + + Analysis feature properties Propriétés de la fonction d'analyse @@ -3002,12 +3002,9 @@ Spécifier un autre fichier. Potentiel : - - - - - - + + + @@ -3020,15 +3017,18 @@ Spécifier un autre fichier. - - - + + + + + + unspecified non spécifié @@ -3070,16 +3070,16 @@ avec une force motrice harmonique ou oscillante Si la condition aux limites est pour la force électrique - + Real Réel - + Imaginary Imaginaire @@ -3099,9 +3099,9 @@ avec une force motrice harmonique ou oscillante Partie imaginaire du potentiel scalaire - + x X @@ -3120,9 +3120,9 @@ Note: has no effect if a solid was selected Remarque : n'a pas d'effet si un solide a été sélectionné - + y Y @@ -3141,9 +3141,9 @@ Note: has no effect if a solid was selected Remarque : n'a pas d'effet si un solide a été sélectionné - + z Z @@ -3193,8 +3193,8 @@ Remarque : n'a pas d'effet si un solide a été sélectionné Paramètre de la section de l'élément 1D - + Cross section parameter Paramètre de section de passage @@ -3210,10 +3210,14 @@ Remarque : n'a pas d'effet si un solide a été sélectionné - Diameter: Diamètre : + + + Outer diameter: + Diamètre extérieur : + Thickness: @@ -3245,30 +3249,30 @@ Remarque : n'a pas d'effet si un solide a été sélectionné Rotation : - - - + + + formula formule - + Velocity x: Vitesse x : - + Velocity y: Vitesse y: - + Velocity z: Vitesse z: @@ -3395,14 +3399,14 @@ Remarque : pour la 2D, seul le réglage en X est possible, le réglage en Y sera Partie imaginaire de la composante en Y du potentiel - + Real part of potential z-component Partie réelle de la composante en Z du potentiel - + Imaginary part of potential z-component Partie imaginaire de la composante en Z du potentiel @@ -3520,26 +3524,26 @@ Remarque : pour la 2D, seul le réglage en X est possible, le réglage en Y sera Annuler - - - - - + + + + + A dialog is already open in the task panel Une fenêtre de dialogue est déjà ouverte dans le panneau des tâches - - - - - + + + + + Do you want to close this dialog? Voulez-vous fermer cette fenêtre de dialogue? @@ -6153,7 +6157,7 @@ Veuillez d'abord sélectionner un type de résultat. Center - Au centre + Centre diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_gl.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_gl.ts index ab6bd84830..956a0c1ff0 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_gl.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_gl.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material Material FEM - + Material Material @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel TextLabel @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parámetro @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diámetro: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotación: - - - + + + formula formula - + Velocity x: Velocidade x: - + Velocity y: Velocidade y: - + Velocity z: Velocidade z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Cancelar - - - - - + + + + + A dialog is already open in the task panel A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? Do you want to close this dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_hr.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_hr.ts index cac023cbeb..cec2f2d8d3 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_hr.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_hr.ts @@ -2557,15 +2557,15 @@ Navedi drugu datoteku molim. FemMaterial - + FEM material FEM material - + Material Materijal @@ -2590,9 +2590,9 @@ Navedi drugu datoteku molim. Ime materijala - + TextLabel Tekst oznaka @@ -2943,17 +2943,17 @@ Navedi drugu datoteku molim. Enable Adjust + + + - - - 0 mm 0 mm @@ -2963,11 +2963,11 @@ Navedi drugu datoteku molim. Centrifugalni parametar - + - + Parameter Parametar @@ -2997,13 +2997,13 @@ Navedi drugu datoteku molim. Parametri ispisa presjeka - - + + - - + + Analysis feature properties Svojstva obilježja analize @@ -3018,12 +3018,9 @@ Navedi drugu datoteku molim. Potencijal: - - - - - - + + + @@ -3036,15 +3033,18 @@ Navedi drugu datoteku molim. - - - + + + + + + unspecified neodređen @@ -3086,16 +3086,16 @@ s harmoničnim/oscilirajućim pogonskim silom. Pokazuje da li se primjenjuje ograničenje za elektrostatičku silu - + Real Realno - + Imaginary Imaginarno @@ -3115,9 +3115,9 @@ s harmoničnim/oscilirajućim pogonskim silom. Imaginarni dio skalarnog potencijala - + x x @@ -3136,9 +3136,9 @@ Note: has no effect if a solid was selected Napomena: nema utjecaja ako je odabrano volumensko tijelo - + y y @@ -3157,9 +3157,9 @@ Note: has no effect if a solid was selected Napomena: nema utjecaja ako je odabrano volumensko tijelo - + z z @@ -3209,8 +3209,8 @@ Napomena: nema utjecaja ako je odabrano volumensko tijelo Parametri presjeka grede - + Cross section parameter Parametar poprečnog presjeka @@ -3228,10 +3228,14 @@ Napomena: nema utjecaja ako je odabrano volumensko tijelo - Diameter: Promjer: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3263,30 +3267,30 @@ Napomena: nema utjecaja ako je odabrano volumensko tijelo Rotacija: - - - + + + formula formula - + Velocity x: Protok x: - + Velocity y: Protok y: - + Velocity z: Protok z: @@ -3416,14 +3420,14 @@ Napomena: u 2D je moguće samo podešavanje za x Imaginarni dio potencijala y-komponente - + Real part of potential z-component Realni dio potencijala z-komponente - + Imaginary part of potential z-component Imaginarni dio potencijala z-komponente @@ -3541,26 +3545,26 @@ Napomena: u 2D je moguće samo podešavanje za x Otkazati - - - - - + + + + + A dialog is already open in the task panel Dijalog je već otvoren u ploči zadataka - - - - - + + + + + Do you want to close this dialog? Želite li zatvoriti ovaj dijalog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_hu.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_hu.ts index 8ffebd99fb..5750b4e672 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_hu.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_hu.ts @@ -912,12 +912,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2543,15 +2543,15 @@ Kérjük, adjon meg egy másik fájlt. FemMaterial - + FEM material VEM anyag - + Material Anyag @@ -2576,9 +2576,9 @@ Kérjük, adjon meg egy másik fájlt. Anyag neve - + TextLabel Szövegfelirat @@ -2928,17 +2928,17 @@ Kérjük, adjon meg egy másik fájlt. Igazítás engedélyezése + + + - - - 0 mm 0 mm @@ -2948,11 +2948,11 @@ Kérjük, adjon meg egy másik fájlt. Centrifugális paraméter - + - + Parameter Paraméter @@ -2982,13 +2982,13 @@ Kérjük, adjon meg egy másik fájlt. Keresztmetszeti elválasztó paraméter - - + + - - + + Analysis feature properties Elemzési funkció tulajdonságai @@ -3003,12 +3003,9 @@ Kérjük, adjon meg egy másik fájlt. Feszültség: - - - - - - + + + @@ -3021,15 +3018,18 @@ Kérjük, adjon meg egy másik fájlt. - - - + + + + + + unspecified határozatlan @@ -3071,16 +3071,16 @@ harmonikus/rezgő hajtóerővel rendelkező egyenletek esetén A peremfeltétel az elektromos erőre vonatkozik-e - + Real Valós - + Imaginary Elképzelt @@ -3100,9 +3100,9 @@ harmonikus/rezgő hajtóerővel rendelkező egyenletek esetén A skalárpotenciál képzetes része - + x x @@ -3121,9 +3121,9 @@ Note: has no effect if a solid was selected Megjegyzés: nincs hatása, ha szilárdtestet választottunk ki - + y y @@ -3142,9 +3142,9 @@ Note: has no effect if a solid was selected Megjegyzés: nincs hatása, ha szilárdtestet választottunk ki - + z z @@ -3194,8 +3194,8 @@ Megjegyzés: nincs hatása, ha szilárdtestet választottunk ki Gerendaszakasz paraméter - + Cross section parameter Keresztmetszeti paraméter @@ -3211,10 +3211,14 @@ Megjegyzés: nincs hatása, ha szilárdtestet választottunk ki - Diameter: Átmérő: + + + Outer diameter: + Külső átmérő: + Thickness: @@ -3246,30 +3250,30 @@ Megjegyzés: nincs hatása, ha szilárdtestet választottunk ki Forgás: - - - + + + formula képlet - + Velocity x: Sebesség x: - + Velocity y: Sebesség y: - + Velocity z: Sebesség z: @@ -3399,14 +3403,14 @@ Megjegyzés: 2D esetén csak az x beállítása lehetséges, A potenciális y-komponens képzetes része - + Real part of potential z-component A potenciális z-komponens valós része - + Imaginary part of potential z-component A potenciális z-komponens képzetes része @@ -3524,26 +3528,26 @@ Megjegyzés: 2D esetén csak az x beállítása lehetséges, Mégse - - - - - + + + + + A dialog is already open in the task panel Egy párbeszédablak már nyitva van a feladat panelen - - - - - + + + + + Do you want to close this dialog? Szeretné bezárni a párbeszédpanelt? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_id.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_id.ts index b5137dba82..4419615a29 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_id.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_id.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Bahan @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel TextLabel @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parameter @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Membatalkan - - - - - + + + + + A dialog is already open in the task panel A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? Do you want to close this dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_it.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_it.ts index 3c2e68c063..984a887b44 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_it.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_it.ts @@ -2166,7 +2166,7 @@ Specify another file please. Only one type of selection (vertex, face or edge) per analysis feature allowed! - È permesso solo un tipo di selezione (vertice, faccia o bordo) per funzione di analisi! + Only one type of selection (vertex, face or edge) per analysis feature allowed! @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material Materiale FEM - + Material Materiale @@ -2586,9 +2586,9 @@ Specify another file please. Nome del materiale - + TextLabel Etichetta Testo @@ -2938,17 +2938,17 @@ Specify another file please. Abilita aggiustamento + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parametro @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified non specificato @@ -3081,16 +3081,16 @@ con una forza motrice armonica/oscillante Whether the boundary condition is for the electric force - + Real Reale - + Imaginary Immaginario @@ -3110,9 +3110,9 @@ con una forza motrice armonica/oscillante Parte immaginaria del potenziale scalare - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Nota: non ha effetto se è stato selezionato un solido - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Nota: non ha effetto se è stato selezionato un solido - + z z @@ -3204,8 +3204,8 @@ Nota: non ha effetto se è stato selezionato un solido Parametro sezione trave - + Cross section parameter Parametro sezione trasversale @@ -3221,10 +3221,14 @@ Nota: non ha effetto se è stato selezionato un solido - Diameter: Diametro: + + + Outer diameter: + Diametro esterno: + Thickness: @@ -3256,30 +3260,30 @@ Nota: non ha effetto se è stato selezionato un solido Rotazione: - - - + + + formula formula - + Velocity x: Velocità x: - + Velocity y: Velocità y: - + Velocity z: Velocità z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Annulla - - - - - + + + + + A dialog is already open in the task panel Nel pannello azioni c'è già una finestra di dialogo aperta - - - - - + + + + + Do you want to close this dialog? Vuoi chiudere questa finestra di dialogo? @@ -5011,7 +5015,7 @@ used for the Elmer solver Outline - Contorno + Outline @@ -5967,7 +5971,7 @@ used for the Elmer solver Max Principal Stress - Sollecitazione principale massima + Max Principal Stress @@ -5977,7 +5981,7 @@ used for the Elmer solver Mass Flow Rate - Flusso Di Massa + Mass Flow Rate @@ -5987,7 +5991,7 @@ used for the Elmer solver Min Principal Stress - Sollecitazione principale minima + Min Principal Stress @@ -6054,7 +6058,7 @@ Per favore seleziona prima un tipo di risultato. Electromagnetic boundary conditions - Condizioni elettromagnetiche al contorno + Electromagnetic boundary conditions diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ja.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_ja.ts index 9c160e615e..e276b25e18 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_ja.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_ja.ts @@ -2541,15 +2541,15 @@ Specify another file please. FemMaterial - + FEM material FEM 材料 - + Material マテリアル @@ -2574,9 +2574,9 @@ Specify another file please. 材料名 - + TextLabel テキストラベル @@ -2926,17 +2926,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2946,11 +2946,11 @@ Specify another file please. 遠心荷重パラメーター - + - + Parameter パラメーター @@ -2980,13 +2980,13 @@ Specify another file please. 断面表示パラメーター - - + + - - + + Analysis feature properties Analysis feature properties @@ -3001,12 +3001,9 @@ Specify another file please. ポテンシャル: - - - - - - + + + @@ -3019,15 +3016,18 @@ Specify another file please. - - - + + + + + + unspecified 未指定 @@ -3068,16 +3068,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real 実部 - + Imaginary 虚部 @@ -3097,9 +3097,9 @@ with a harmonic/oscillating driving force スカラーポテンシャルの虚部 - + x x @@ -3118,9 +3118,9 @@ Note: has no effect if a solid was selected 注意: ソリッドが選択されている場合は無効 - + y y @@ -3139,9 +3139,9 @@ Note: has no effect if a solid was selected 注意: ソリッドが選択されている場合は無効 - + z z @@ -3191,8 +3191,8 @@ Note: has no effect if a solid was selected ビームセクションパラメーター - + Cross section parameter 断面パラメーター @@ -3208,10 +3208,14 @@ Note: has no effect if a solid was selected - Diameter: 直径: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3243,30 +3247,30 @@ Note: has no effect if a solid was selected 回転: - - - + + + formula - + Velocity x: 速度 x: - + Velocity y: 速度 y: - + Velocity z: 速度 z: @@ -3390,14 +3394,14 @@ Note: for 2D only setting for x is possible, ポテンシャル y 成分の虚部 - + Real part of potential z-component ポテンシャル z 成分の実部 - + Imaginary part of potential z-component ポテンシャル z 成分の虚部 @@ -3515,26 +3519,26 @@ Note: for 2D only setting for x is possible, キャンセル - - - - - + + + + + A dialog is already open in the task panel タスクパネルで既にダイアログが開かれています - - - - - + + + + + Do you want to close this dialog? このダイアログを閉じますか? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ka.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_ka.ts index 73ae7ce1b7..93f14fce6d 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_ka.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_ka.ts @@ -912,12 +912,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2547,15 +2547,15 @@ Specify another file please. FemMaterial - + FEM material სემის მასალა - + Material მასალა @@ -2580,9 +2580,9 @@ Specify another file please. მასალის სახელი - + TextLabel ტექსტური ჭდე @@ -2932,17 +2932,17 @@ Specify another file please. შერჩევის ჩართვა + + + - - - 0 mm 0 მმ @@ -2952,11 +2952,11 @@ Specify another file please. ცენტრიფუგის პარამეტრი - + - + Parameter პარამეტრი @@ -2986,13 +2986,13 @@ Specify another file please. განივი კვეთის პარამეტრი - - + + - - + + Analysis feature properties ანალიზის თვისების მორგება @@ -3007,12 +3007,9 @@ Specify another file please. პოტენციალი: - - - - - - + + + @@ -3025,15 +3022,18 @@ Specify another file please. - - - + + + + + + unspecified არ არის მითითებული @@ -3075,16 +3075,16 @@ with a harmonic/oscillating driving force არის თუ არა სასაზღვრე პირობა ელექტრული ძალისთვის - + Real რეალური - + Imaginary წარმოსახვითი @@ -3104,9 +3104,9 @@ with a harmonic/oscillating driving force სკალარული პოტენციალის წარმოსახვითი ნაწილი - + x x @@ -3125,9 +3125,9 @@ Note: has no effect if a solid was selected შენიშვნა: ეფექტი არ გააჩნია, თუ მონიშნული მყარია - + y y @@ -3146,9 +3146,9 @@ Note: has no effect if a solid was selected შენიშვნა: ეფექტი არ გააჩნია, თუ მონიშნული მყარია - + z z @@ -3198,8 +3198,8 @@ Note: has no effect if a solid was selected კოჭის სექციის პარამეტრი - + Cross section parameter განივი გადანაჭერის პარამეტრი @@ -3215,10 +3215,14 @@ Note: has no effect if a solid was selected - Diameter: დიამეტრი: + + + Outer diameter: + გარე დიამეტრი: + Thickness: @@ -3250,30 +3254,30 @@ Note: has no effect if a solid was selected ბრუნვა: - - - + + + formula ფორმულა - + Velocity x: აჩქარება X: - + Velocity y: აჩქარება Y: - + Velocity z: აჩქარება Z: @@ -3403,14 +3407,14 @@ Note: for 2D only setting for x is possible, Y-კომპონენტის პოტენციალის წარმოდგენითი ნაწილი - + Real part of potential z-component Z-კომპონენტის პოტენციალის რეალური ნაწილი - + Imaginary part of potential z-component Z-კომპონენტის პოტენციალის წარმოდგენითი ნაწილი @@ -3528,26 +3532,26 @@ Note: for 2D only setting for x is possible, გაუქმება - - - - - + + + + + A dialog is already open in the task panel ფანჯარა უკვე ღიაა ამოცანების პანელზე - - - - - + + + + + Do you want to close this dialog? ნამდვილად გსურთ ამ ფანჯრის დახურვა? @@ -4373,7 +4377,7 @@ generated by the flow Select multiple face(s), click Add or Remove - აირჩიეთ ერთზე მეტი ზედაპირი. დააწკაპუნეთ დამატებას ან წაშლას + მონიშნეთ ზედაპირ(ებ)-ი და დააწკაპუნეთ დამატებაზე ან წაშლაზე @@ -4672,7 +4676,7 @@ normal vector of the face is used as direction Select multiple face(s), click Add or Remove - მონიშნეთ ზედაპირ(ებ)-ი და დააწკაპუნეთ დამატებაზე ან წაშლაზე + აირჩიეთ ერთზე მეტი ზედაპირი. დააწკაპუნეთ დამატებას ან წაშლას diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ko.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_ko.ts index 5723fdf8fe..8e10e27018 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_ko.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_ko.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material 재료 @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel 텍스트 라벨 @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter 매개 변수 @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: 직경 + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected 회전: - - - + + + formula 수식 - + Velocity x: X 축 방향 속도 - + Velocity y: Y 축 방향 속도 - + Velocity z: Z 축 방향 속도 @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, 취소하기 - - - - - + + + + + A dialog is already open in the task panel 테스크 패널에 이미 다이얼로그가 열려있습니다. - - - - - + + + + + Do you want to close this dialog? 다이얼로그를 닫으시겠습니까? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_nl.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_nl.ts index 515c80ac1d..0368ce5596 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_nl.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_nl.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM materiaal - + Material Materiaal @@ -2586,9 +2586,9 @@ Specify another file please. Materiaalnaam - + TextLabel Tekstbenaming @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parameter @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potentieel: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified ongespecificeerd @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Echt - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Buitenste diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotatie: - - - + + + formula formule - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Annuleren - - - - - + + + + + A dialog is already open in the task panel Een dialoog is al geopend in het taakvenster - - - - - + + + + + Do you want to close this dialog? Wilt u dit dialoogvenster sluiten? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_pl.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_pl.ts index 6e58d7be30..17933447f2 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_pl.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_pl.ts @@ -911,12 +911,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2546,15 +2546,15 @@ Proszę, wybierz inny. FemMaterial - + FEM material Materiał MES - + Material Materiał @@ -2579,9 +2579,9 @@ Proszę, wybierz inny. Nazwa materiału - + TextLabel Etykieta tekstu @@ -2931,17 +2931,17 @@ Proszę, wybierz inny. Włącz regulację + + + - - - 0 mm 0 mm @@ -2951,11 +2951,11 @@ Proszę, wybierz inny. Parametr obrotu - + - + Parameter Parametr @@ -2985,13 +2985,13 @@ Proszę, wybierz inny. Parametr wyników z przekroju - - + + - - + + Analysis feature properties Właściwości cech analizy @@ -3006,12 +3006,9 @@ Proszę, wybierz inny. Potencjał: - - - - - - + + + @@ -3024,15 +3021,18 @@ Proszę, wybierz inny. - - - + + + + + + unspecified nieokreślony @@ -3074,16 +3074,16 @@ z harmoniczną / oscylującą siłą napędzającą Czy warunek brzegowy dotyczy siły elektrycznej - + Real Rzeczywisty - + Imaginary Urojony @@ -3103,9 +3103,9 @@ z harmoniczną / oscylującą siłą napędzającą Urojona część potencjału skalarnego - + x x @@ -3124,9 +3124,9 @@ Note: has no effect if a solid was selected Uwaga: bez efektu, jeśli wybrano bryłę - + y y @@ -3145,9 +3145,9 @@ Note: has no effect if a solid was selected Uwaga: bez efektu, jeśli wybrano bryłę - + z z @@ -3197,8 +3197,8 @@ Uwaga: bez efektu, jeśli wybrano bryłę Parametr sekcji belki - + Cross section parameter Parametr przekroju poprzecznego @@ -3214,10 +3214,14 @@ Uwaga: bez efektu, jeśli wybrano bryłę - Diameter: Średnica: + + + Outer diameter: + Średnica zewnętrzna: + Thickness: @@ -3249,30 +3253,30 @@ Uwaga: bez efektu, jeśli wybrano bryłę Obrót: - - - + + + formula wzór - + Velocity x: Prędkość x: - + Velocity y: Prędkość y: - + Velocity z: Prędkość z: @@ -3319,7 +3323,7 @@ Uwaga: bez efektu, jeśli wybrano bryłę Mesh refinement - Ulepsz siatkę + Zagęszczenie siatki @@ -3402,14 +3406,14 @@ Uwaga: w 2D tylko ustawienie dla x jest możliwe, Urojona część składowej y potencjału - + Real part of potential z-component Rzeczywista część składowej z potencjału - + Imaginary part of potential z-component Urojona część składowej z potencjału @@ -3527,26 +3531,26 @@ Uwaga: w 2D tylko ustawienie dla x jest możliwe, Anuluj - - - - - + + + + + A dialog is already open in the task panel Okienko dialogowe jest już otwarte w panelu zadań - - - - - + + + + + Do you want to close this dialog? Czy chcesz zamknąć to okno? @@ -4199,7 +4203,7 @@ Aby uzyskać możliwe zmienne, zobacz pole opisu poniżej. Location - Umiejscowienie + Położenie @@ -4372,7 +4376,7 @@ generowanej przez przepływ Select multiple face(s), click Add or Remove - Wybierz kilka ścian, kliknij przycisk Dodaj lub Usuń + Wybierz wiele ścian, kliknij przycisk Dodaj lub Usuń @@ -4671,7 +4675,7 @@ normal vector of the face is used as direction Select multiple face(s), click Add or Remove - Wybierz wiele ścian, kliknij przycisk Dodaj lub Usuń + Wybierz kilka ścian, kliknij przycisk Dodaj lub Usuń @@ -6166,7 +6170,7 @@ deformacji (sprężystość nieliniowa) Center - Wyśrodkowane + Środek @@ -6399,12 +6403,12 @@ deformacji (sprężystość nieliniowa) FEM mesh refinement - Ulepsz siatkę MES + Zagęszczenie siatki MES Creates a FEM mesh refinement - Ulepsza siatkę MES + Dodaje zagęszczenie siatki MES diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.ts index 6593da3379..e1a5f1fd32 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.ts @@ -2551,15 +2551,15 @@ Specify another file please. FemMaterial - + FEM material Material FEM - + Material Material @@ -2584,9 +2584,9 @@ Specify another file please. Nome do material - + TextLabel Rótulo de texto @@ -2936,17 +2936,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2956,11 +2956,11 @@ Specify another file please. Parâmetro de centrífuga - + - + Parameter Parâmetro @@ -2990,13 +2990,13 @@ Specify another file please. Parâmetros de impressão de seções - - + + - - + + Analysis feature properties Analysis feature properties @@ -3011,12 +3011,9 @@ Specify another file please. Potencial: - - - - - - + + + @@ -3029,15 +3026,18 @@ Specify another file please. - - - + + + + + + unspecified não especificado @@ -3079,16 +3079,16 @@ com forças atuantes harmônicas/oscilantes Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginário @@ -3108,9 +3108,9 @@ com forças atuantes harmônicas/oscilantes Parte imaginária de potencial escalar - + x x @@ -3129,9 +3129,9 @@ Note: has no effect if a solid was selected Nota: não surge efeito se um sólido foi selecionado - + y y @@ -3150,9 +3150,9 @@ Note: has no effect if a solid was selected Nota: não surge efeito se um sólido foi selecionado - + z z @@ -3202,8 +3202,8 @@ Nota: não surge efeito se um sólido foi selecionado Parâmetro da seção da viga - + Cross section parameter Cross section parameter @@ -3219,10 +3219,14 @@ Nota: não surge efeito se um sólido foi selecionado - Diameter: Diâmetro: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3254,30 +3258,30 @@ Nota: não surge efeito se um sólido foi selecionado Rotação: - - - + + + formula fórmula - + Velocity x: Velocidade x: - + Velocity y: Velocidade y: - + Velocity z: Velocidade z: @@ -3407,14 +3411,14 @@ Nota: para configuração apenas 2D para x é possível, Parte imaginária de componente-y potencial - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Parte imaginária de componente-z potencial @@ -3532,26 +3536,26 @@ Nota: para configuração apenas 2D para x é possível, Cancelar - - - - - + + + + + A dialog is already open in the task panel Uma caixa de diálogo já está aberta no painel de tarefas - - - - - + + + + + Do you want to close this dialog? Deseja fechar este diálogo? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.ts index e6caf434bd..51b055a655 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Material @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel Rótulo de texto @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parâmetro @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Cancelar - - - - - + + + + + A dialog is already open in the task panel Já está aberta uma janela no painel de tarefas - - - - - + + + + + Do you want to close this dialog? Deseja fechar esta janela? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts index e3787ce29e..82b9a1ae79 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Materialul @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel TextLabel @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parametru @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Renunţă - - - - - + + + + + A dialog is already open in the task panel O fereastră de dialog este deja deschisă în fereastra de sarcini - - - - - + + + + + Do you want to close this dialog? Doriţi să închideţi această fereastră de dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ru.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_ru.ts index 0587dc71e4..8f4bca586f 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_ru.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_ru.ts @@ -911,12 +911,12 @@ PaStiX - PaStiX + PaStiX Pardiso - Pardiso + Pardiso @@ -2544,15 +2544,15 @@ Specify another file please. FemMaterial - + FEM material Материал МКЭ - + Material Материал @@ -2577,9 +2577,9 @@ Specify another file please. Название материала - + TextLabel Текстовая надпись @@ -2929,17 +2929,17 @@ Specify another file please. Включить регулировку + + + - - - 0 mm 0 мм @@ -2949,11 +2949,11 @@ Specify another file please. Параметр Центрифугирования - + - + Parameter Параметр @@ -2983,13 +2983,13 @@ Specify another file please. Параметр SectionPrint - - + + - - + + Analysis feature properties Свойства объекта анализа @@ -3004,12 +3004,9 @@ Specify another file please. Потенциал: - - - - - - + + + @@ -3022,15 +3019,18 @@ Specify another file please. - - - + + + + + + unspecified не указана @@ -3072,16 +3072,16 @@ with a harmonic/oscillating driving force Является ли граничное условие для электрической силы - + Real Действительная часть - + Imaginary Мнимая часть @@ -3101,9 +3101,9 @@ with a harmonic/oscillating driving force Мнимая часть скалярного потенциала - + x x @@ -3122,9 +3122,9 @@ Note: has no effect if a solid was selected Примечание: не влияет если выбрано твердое тело - + y у @@ -3143,9 +3143,9 @@ Note: has no effect if a solid was selected Примечание: не влияет если выбрано твердое тело - + z z @@ -3195,8 +3195,8 @@ Note: has no effect if a solid was selected Параметр секции балки - + Cross section parameter Поперечный параметр сечения @@ -3212,10 +3212,14 @@ Note: has no effect if a solid was selected - Diameter: Диаметр: + + + Outer diameter: + Внешний диаметр: + Thickness: @@ -3247,30 +3251,30 @@ Note: has no effect if a solid was selected Вращение: - - - + + + formula формула - + Velocity x: Скорость по оси x: - + Velocity y: Скорость по оси y: - + Velocity z: Скорость по оси z: @@ -3400,14 +3404,14 @@ Note: for 2D only setting for x is possible, Мнимая часть y-компоненты комплексного потенциала - + Real part of potential z-component Действительная часть z-компоненты комплексного потенциала - + Imaginary part of potential z-component Мнимая часть z-компоненты комплексного потенциала @@ -3525,26 +3529,26 @@ Note: for 2D only setting for x is possible, Отмена - - - - - + + + + + A dialog is already open in the task panel Диалог уже открыт на панели задач - - - - - + + + + + Do you want to close this dialog? Вы хотите закрыть этот диалог? @@ -4545,7 +4549,7 @@ normal vector of the face is used as direction Reverse direction - Развернуть направление + В обратном направлении @@ -5017,7 +5021,7 @@ used for the Elmer solver Wireframe - Каркас + Каркасная сетка @@ -6004,7 +6008,7 @@ Please select a result type first. Nodes - Узлов + Узлы diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sl.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_sl.ts index 9414cc9764..f6b67b7719 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_sl.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_sl.ts @@ -2553,15 +2553,15 @@ Določite drugo datoteko. FemMaterial - + FEM material FEM material - + Material Snov @@ -2586,9 +2586,9 @@ Določite drugo datoteko. Material name - + TextLabel Besedilna oznaka @@ -2938,17 +2938,17 @@ Določite drugo datoteko. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Določite drugo datoteko. Centrif parameter - + - + Parameter Določilka @@ -2992,13 +2992,13 @@ Določite drugo datoteko. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Določite drugo datoteko. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Določite drugo datoteko. - - - + + + + + + unspecified nedoločeno @@ -3081,16 +3081,16 @@ s harminičnim oz. nihajočim gonilom Ali se robni pogoj nanaša na električno silo - + Real Dejanska - + Imaginary Namišljena @@ -3110,9 +3110,9 @@ s harminičnim oz. nihajočim gonilom Namišljeni del skalarnega potenciala - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Opomba: nima učinka, če je izbrano telo - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Opomba: nima učinka, če je izbrano telo - + z z @@ -3204,8 +3204,8 @@ Opomba: nima učinka, če je izbrano telo Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Opomba: nima učinka, če je izbrano telo - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Opomba: nima učinka, če je izbrano telo Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Opomba: pri 2D je mogoče nastavili le x, Namišljeni del y-komponente potenciala - + Real part of potential z-component Dejanski del z-komponente potenciala - + Imaginary part of potential z-component Namišljeni del z-komponente potenciala @@ -3534,26 +3538,26 @@ Opomba: pri 2D je mogoče nastavili le x, Prekliči - - - - - + + + + + A dialog is already open in the task panel A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? Do you want to close this dialog? @@ -5011,7 +5015,7 @@ used for the Elmer solver Outline - Obris + Outline @@ -5021,7 +5025,7 @@ used for the Elmer solver Surface with Edges - Površje z robovi + Surface with Edges diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sr-CS.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_sr-CS.ts index 7abc625037..11341c8d10 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_sr-CS.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_sr-CS.ts @@ -2552,15 +2552,15 @@ Specify another file please. FemMaterial - + FEM material MKE materijal - + Material Materijal @@ -2585,9 +2585,9 @@ Specify another file please. Ime materijala - + TextLabel Tekstualna oznaka @@ -2937,17 +2937,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2957,11 +2957,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parametar @@ -2991,13 +2991,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3012,12 +3012,9 @@ Specify another file please. Potencijal: - - - - - - + + + @@ -3030,15 +3027,18 @@ Specify another file please. - - - + + + + + + unspecified neodređeno @@ -3080,16 +3080,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Realni deo - + Imaginary Imaginarni deo @@ -3109,9 +3109,9 @@ with a harmonic/oscillating driving force Imaginarni deo skalarnog potencijala - + x x @@ -3130,9 +3130,9 @@ Note: has no effect if a solid was selected Napomena: nema efekta ako je izabrano puno telo - + y y @@ -3151,9 +3151,9 @@ Note: has no effect if a solid was selected Napomena: nema efekta ako je izabrano puno telo - + z z @@ -3203,8 +3203,8 @@ Napomena: nema efekta ako je izabrano puno telo Parametri poprečnog preseka grede - + Cross section parameter Parametri poprečnog preseka @@ -3220,10 +3220,14 @@ Napomena: nema efekta ako je izabrano puno telo - Diameter: Prečnik: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3255,30 +3259,30 @@ Napomena: nema efekta ako je izabrano puno telo Rotacija: - - - + + + formula formula - + Velocity x: Brzina x: - + Velocity y: Brzina y: - + Velocity z: Brzina z: @@ -3408,14 +3412,14 @@ Note: for 2D only setting for x is possible, Imaginarni deo y-komponente potencijala - + Real part of potential z-component Realni deo z-komponente potencijala - + Imaginary part of potential z-component Imaginarni deo z-komponente potencijala @@ -3533,26 +3537,26 @@ Note: for 2D only setting for x is possible, Otkaži - - - - - + + + + + A dialog is already open in the task panel A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? Do you want to close this dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sr.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_sr.ts index fcdec3b2bb..5522048e66 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_sr.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_sr.ts @@ -2552,15 +2552,15 @@ Specify another file please. FemMaterial - + FEM material МКЕ материјал - + Material Материјал @@ -2585,9 +2585,9 @@ Specify another file please. Име материјала - + TextLabel Текстуална ознака @@ -2937,17 +2937,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2957,11 +2957,11 @@ Specify another file please. Centrif parameter - + - + Parameter Параметар @@ -2991,13 +2991,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3012,12 +3012,9 @@ Specify another file please. Потенцијал: - - - - - - + + + @@ -3030,15 +3027,18 @@ Specify another file please. - - - + + + + + + unspecified неодређено @@ -3080,16 +3080,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Реални део - + Imaginary Имагинарни део @@ -3109,9 +3109,9 @@ with a harmonic/oscillating driving force Имагинарни део скаларног потенцијала - + x x @@ -3130,9 +3130,9 @@ Note: has no effect if a solid was selected Напомена: нема ефекта ако је изабрано пуно тело - + y y @@ -3151,9 +3151,9 @@ Note: has no effect if a solid was selected Напомена: нема ефекта ако је изабрано пуно тело - + z z @@ -3203,8 +3203,8 @@ Note: has no effect if a solid was selected Параметри попречног пресека греде - + Cross section parameter Параметри попречног пресека @@ -3220,10 +3220,14 @@ Note: has no effect if a solid was selected - Diameter: Пречник: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3255,30 +3259,30 @@ Note: has no effect if a solid was selected Ротација: - - - + + + formula formula - + Velocity x: Брзина x: - + Velocity y: Брзина y: - + Velocity z: Брзина z: @@ -3408,14 +3412,14 @@ Note: for 2D only setting for x is possible, Имагинарни део y-компоненте потенцијала - + Real part of potential z-component Реални део z-компоненте потенцијала - + Imaginary part of potential z-component Имагинарни део z-компоненте потенцијала @@ -3533,26 +3537,26 @@ Note: for 2D only setting for x is possible, Откажи - - - - - + + + + + A dialog is already open in the task panel Дијалог је већ отворен у панелу задатака - - - - - + + + + + Do you want to close this dialog? Да ли желите да затворите овај дијалог? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.ts index 217948d76a..8e39f677cb 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Material @@ -2586,9 +2586,9 @@ Specify another file please. Materialnamn - + TextLabel TextLabel @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Parameter @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified ospecificerad @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginär @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y Y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formel - + Velocity x: Hastighet x: - + Velocity y: Hastighet y: - + Velocity z: Hastighet z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Avbryt - - - - - + + + + + A dialog is already open in the task panel En dialogruta är redan öppen i uppgiftspanelen - - - - - + + + + + Do you want to close this dialog? Vill du stänga denna dialogruta? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts index 29185e410a..31baa90183 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts @@ -2546,15 +2546,15 @@ Specify another file please. FemMaterial - + FEM material FEM malzemesi - + Material Malzeme @@ -2579,9 +2579,9 @@ Specify another file please. Malzeme adı - + TextLabel MetinEtiketi @@ -2931,17 +2931,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2951,11 +2951,11 @@ Specify another file please. Merkezkaç değişkeni - + - + Parameter Parametre @@ -2985,13 +2985,13 @@ Specify another file please. Bölüm baskısı parametresi - - + + - - + + Analysis feature properties Analysis feature properties @@ -3006,12 +3006,9 @@ Specify another file please. Potansiyel: - - - - - - + + + @@ -3024,15 +3021,18 @@ Specify another file please. - - - + + + + + + unspecified belirtilmemiş @@ -3074,16 +3074,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3103,9 +3103,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3124,9 +3124,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3145,9 +3145,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3197,8 +3197,8 @@ Note: has no effect if a solid was selected Işın kesiti değişkeni - + Cross section parameter Kesit değişkeni @@ -3214,10 +3214,14 @@ Note: has no effect if a solid was selected - Diameter: Çap: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3249,30 +3253,30 @@ Note: has no effect if a solid was selected Dönüş: - - - + + + formula formula - + Velocity x: Hız x: - + Velocity y: Hız y: - + Velocity z: Hız z: @@ -3402,14 +3406,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3527,26 +3531,26 @@ Note: for 2D only setting for x is possible, İptal - - - - - + + + + + A dialog is already open in the task panel Araç çubuğunda bir pencere zaten açık - - - - - + + + + + Do you want to close this dialog? Bu pencereyi kapatmak ister misiniz? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_uk.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_uk.ts index aca6517878..8aaad82f7b 100755 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_uk.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_uk.ts @@ -2554,15 +2554,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Матеріал @@ -2587,9 +2587,9 @@ Specify another file please. Material name - + TextLabel ТекстовийНадпис @@ -2939,17 +2939,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 мм @@ -2959,11 +2959,11 @@ Specify another file please. Centrif parameter - + - + Parameter Параметр @@ -2993,13 +2993,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3014,12 +3014,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3032,15 +3029,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3082,16 +3082,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3111,9 +3111,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3132,9 +3132,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3153,9 +3153,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3205,8 +3205,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3222,10 +3222,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3257,30 +3261,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3410,14 +3414,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3535,26 +3539,26 @@ Note: for 2D only setting for x is possible, Скасувати - - - - - + + + + + A dialog is already open in the task panel Діалогове вікно вже відкрито в панелі задач - - - - - + + + + + Do you want to close this dialog? Ви бажаєте закрити це діалогове вікно? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.ts index f820052b06..c2d94dffdb 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material Material @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel EtiquetaText @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter Paràmetre @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, Cancel·la - - - - - + + + + + A dialog is already open in the task panel A dialog is already open in the task panel - - - - - + + + + + Do you want to close this dialog? Do you want to close this dialog? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.ts index bccf7980d9..965e5ec867 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material 材质 @@ -2586,9 +2586,9 @@ Specify another file please. 材料名称 - + TextLabel 文本标签 @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter 参数 @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. 电位: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified 未指定 @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real 实部 - + Imaginary 虚部 @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: 直径: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected 旋转: - - - + + + formula formula - + Velocity x: X方向速度: - + Velocity y: Y方向速度: - + Velocity z: Z方向速度: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, 势能Y轴分量的虚部 - + Real part of potential z-component 势能Z轴分量的实部 - + Imaginary part of potential z-component 势能Z轴分量的虚部 @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, 取消 - - - - - + + + + + A dialog is already open in the task panel 一个对话框已在任务面板打开 - - - - - + + + + + Do you want to close this dialog? 您要关闭此对话框吗? diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.ts index 8292f9d081..606138832f 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.ts @@ -2553,15 +2553,15 @@ Specify another file please. FemMaterial - + FEM material FEM material - + Material 材質 @@ -2586,9 +2586,9 @@ Specify another file please. Material name - + TextLabel 文字標籤 @@ -2938,17 +2938,17 @@ Specify another file please. Enable Adjust + + + - - - 0 mm 0 mm @@ -2958,11 +2958,11 @@ Specify another file please. Centrif parameter - + - + Parameter 參數 @@ -2992,13 +2992,13 @@ Specify another file please. SectionPrint parameter - - + + - - + + Analysis feature properties Analysis feature properties @@ -3013,12 +3013,9 @@ Specify another file please. Potential: - - - - - - + + + @@ -3031,15 +3028,18 @@ Specify another file please. - - - + + + + + + unspecified unspecified @@ -3081,16 +3081,16 @@ with a harmonic/oscillating driving force Whether the boundary condition is for the electric force - + Real Real - + Imaginary Imaginary @@ -3110,9 +3110,9 @@ with a harmonic/oscillating driving force Imaginary part of scalar potential - + x x @@ -3131,9 +3131,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + y y @@ -3152,9 +3152,9 @@ Note: has no effect if a solid was selected Note: has no effect if a solid was selected - + z z @@ -3204,8 +3204,8 @@ Note: has no effect if a solid was selected Beam section parameter - + Cross section parameter Cross section parameter @@ -3221,10 +3221,14 @@ Note: has no effect if a solid was selected - Diameter: Diameter: + + + Outer diameter: + Outer diameter: + Thickness: @@ -3256,30 +3260,30 @@ Note: has no effect if a solid was selected Rotation: - - - + + + formula formula - + Velocity x: Velocity x: - + Velocity y: Velocity y: - + Velocity z: Velocity z: @@ -3409,14 +3413,14 @@ Note: for 2D only setting for x is possible, Imaginary part of potential y-component - + Real part of potential z-component Real part of potential z-component - + Imaginary part of potential z-component Imaginary part of potential z-component @@ -3534,26 +3538,26 @@ Note: for 2D only setting for x is possible, 取消 - - - - - + + + + + A dialog is already open in the task panel 於工作面板已開啟對話窗 - - - - - + + + + + Do you want to close this dialog? 您確定要關閉此對話窗嗎? diff --git a/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui b/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui index de694f8fa3..0e0338008c 100644 --- a/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui +++ b/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui @@ -563,7 +563,7 @@ Note: has no effect if a solid was selected - Capacity Body: + Capacity Body: diff --git a/src/Mod/Fem/Gui/Resources/ui/ElementFluid1D.ui b/src/Mod/Fem/Gui/Resources/ui/ElementFluid1D.ui index d94289652c..8a37e2b999 100644 --- a/src/Mod/Fem/Gui/Resources/ui/ElementFluid1D.ui +++ b/src/Mod/Fem/Gui/Resources/ui/ElementFluid1D.ui @@ -61,7 +61,7 @@ - Pipe Area + Pipe Area diff --git a/src/Mod/Fem/Gui/Resources/ui/ElementGeometry1D.ui b/src/Mod/Fem/Gui/Resources/ui/ElementGeometry1D.ui index 96a63b0010..6c6609dc97 100644 --- a/src/Mod/Fem/Gui/Resources/ui/ElementGeometry1D.ui +++ b/src/Mod/Fem/Gui/Resources/ui/ElementGeometry1D.ui @@ -68,7 +68,7 @@ - Width: + Width: @@ -112,7 +112,7 @@ - Height: + Height: @@ -222,7 +222,7 @@ - Diameter: + Diameter: @@ -240,7 +240,7 @@ - Outer diameter: + Outer diameter: diff --git a/src/Mod/Fem/Gui/Resources/ui/ElementGeometry2D.ui b/src/Mod/Fem/Gui/Resources/ui/ElementGeometry2D.ui index 89c877b3a1..ff1f0ac438 100644 --- a/src/Mod/Fem/Gui/Resources/ui/ElementGeometry2D.ui +++ b/src/Mod/Fem/Gui/Resources/ui/ElementGeometry2D.ui @@ -74,7 +74,7 @@ - Thickness: + Thickness: diff --git a/src/Mod/Fem/Gui/Resources/ui/ElementRotation1D.ui b/src/Mod/Fem/Gui/Resources/ui/ElementRotation1D.ui index e8cb65e876..c01b66b142 100644 --- a/src/Mod/Fem/Gui/Resources/ui/ElementRotation1D.ui +++ b/src/Mod/Fem/Gui/Resources/ui/ElementRotation1D.ui @@ -86,7 +86,7 @@ - Rotation: + Rotation: diff --git a/src/Mod/Fem/Gui/Resources/ui/Material.ui b/src/Mod/Fem/Gui/Resources/ui/Material.ui index 5c68d36e7f..4bb565eb58 100755 --- a/src/Mod/Fem/Gui/Resources/ui/Material.ui +++ b/src/Mod/Fem/Gui/Resources/ui/Material.ui @@ -152,7 +152,7 @@ - Density + Density diff --git a/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.ui b/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.ui index c34a2985cb..d69d2053b0 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.ui +++ b/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.ui @@ -25,7 +25,7 @@ - Boundary + Boundary @@ -239,7 +239,7 @@ Select a planar edge or face, then press this button - Direction + Direction @@ -331,7 +331,7 @@ normal vector of the face is used as direction - Intensity + Intensity @@ -391,7 +391,7 @@ normal vector of the face is used as direction - Type + Type diff --git a/src/Mod/Fem/Gui/TaskPanelConstraintTemperature.ui b/src/Mod/Fem/Gui/TaskPanelConstraintTemperature.ui index 11b065b1d9..dc9187866b 100644 --- a/src/Mod/Fem/Gui/TaskPanelConstraintTemperature.ui +++ b/src/Mod/Fem/Gui/TaskPanelConstraintTemperature.ui @@ -23,7 +23,7 @@ - Select the vertices, lines and surfaces: + Select the vertices, lines and surfaces: diff --git a/src/Mod/Fem/Gui/TaskTetParameter.ui b/src/Mod/Fem/Gui/TaskTetParameter.ui index 6fcc70af60..5fe3b8d3ba 100644 --- a/src/Mod/Fem/Gui/TaskTetParameter.ui +++ b/src/Mod/Fem/Gui/TaskTetParameter.ui @@ -163,7 +163,7 @@ - Node count: + Node count: diff --git a/src/Mod/Fem/Gui/ViewProviderFemConstraintPy.xml b/src/Mod/Fem/Gui/ViewProviderFemConstraintPy.xml index 0c3a40bbf3..9051a61062 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemConstraintPy.xml +++ b/src/Mod/Fem/Gui/ViewProviderFemConstraintPy.xml @@ -10,7 +10,7 @@ FatherInclude="Gui/ViewProviderDocumentObjectPy.h" FatherNamespace="Gui"> - + This is the ViewProviderFemConstraint class diff --git a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp index b7829b9521..97832c4ec5 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp @@ -796,7 +796,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, lines->coordIndex.setNum(0); return; } - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log( "Start: ViewProviderFEMMeshBuilder::createMesh() =================================\n"); @@ -834,7 +834,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, std::vector facesHelper(numTries); Base::Console().Log(" %f: Start build up %i face helper\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()), + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()), facesHelper.size()); Base::BoundBox3d BndBox; @@ -1359,7 +1359,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, if (FaceSize < MaxFacesShowInner) { Base::Console().Log(" %f: Start eliminate internal faces SIMPLE\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // search for double (inside) faces and hide them if (!ShowInner) { @@ -1376,7 +1376,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, } else { Base::Console().Log(" %f: Start eliminate internal faces GRID\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); BndBox.Enlarge(BndBox.CalcDiagonalLength() / 10000.0); // calculate grid properties double edge = pow(FaceSize, 1.0 / 3.0); @@ -1444,7 +1444,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, Base::Console().Log(" %f: Start build up node map\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // sort out double nodes and build up index map std::map mapNodeIndex; @@ -1477,7 +1477,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, } } Base::Console().Log(" %f: Start set point vector\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // set the point coordinates coords->point.setNum(mapNodeIndex.size()); @@ -1495,7 +1495,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, // count triangle size Base::Console().Log(" %f: Start count triangle size\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); int triangleCount = 0; for (int l = 0; l < FaceSize; l++) { if (!facesHelper[l].hide) { @@ -1551,7 +1551,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, } Base::Console().Log(" %f: Start build up triangle vector\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // set the triangle face indices faces->coordIndex.setNum(4 * triangleCount); vFaceElementIdx.resize(triangleCount); @@ -2971,7 +2971,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, faces->coordIndex.finishEditing(); Base::Console().Log(" %f: Start build up edge vector\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // std::map > EdgeMap; // count edges int EdgeSize = 0; @@ -3000,7 +3000,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, Base::Console().Log( " %f: Finish =========================================================\n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); } diff --git a/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp b/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp index 030e262dee..0c1a73660c 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp @@ -186,7 +186,7 @@ void ViewProviderFemMeshPy::setNodeColor(Py::Dict arg) this->getViewProviderFemMeshPtr()->resetColorByNodeId(); } else { - Base::TimeInfo Start; + Base::TimeElapsed Start; Base::Console().Log( "Start: ViewProviderFemMeshPy::setNodeColor() =================================\n"); // std::map NodeColorMap; @@ -209,12 +209,12 @@ void ViewProviderFemMeshPy::setNodeColor(Py::Dict arg) App::Color(Py::Float(color[0]), Py::Float(color[1]), Py::Float(color[2]), 0); } Base::Console().Log(" %f: Start ViewProviderFemMeshPy::setNodeColor() call \n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); // this->getViewProviderFemMeshPtr()->setColorByNodeId(NodeColorMap); this->getViewProviderFemMeshPtr()->setColorByNodeId(NodeIds, NodeColors); Base::Console().Log(" %f: Finish ViewProviderFemMeshPy::setNodeColor() call \n", - Base::TimeInfo::diffTimeF(Start, Base::TimeInfo())); + Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed())); } } diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp index d1e8b0711e..1728d9c9ba 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include #include @@ -159,6 +161,11 @@ ViewProviderFemPostObject::ViewProviderFemPostObject() sPixmap = "fem-femmesh-from-shape"; // create the subnodes which do the visualization work + m_transpType = new SoTransparencyType(); + m_transpType->ref(); + m_transpType->value = SoTransparencyType::BLEND; + m_depthBuffer = new SoDepthBuffer(); + m_depthBuffer->ref(); m_shapeHints = new SoShapeHints(); m_shapeHints->ref(); m_shapeHints->shapeType = SoShapeHints::UNKNOWN_SHAPE_TYPE; @@ -185,6 +192,8 @@ ViewProviderFemPostObject::ViewProviderFemPostObject() m_drawStyle->ref(); m_drawStyle->lineWidth.setValue(2); m_drawStyle->pointSize.setValue(3); + m_sepMarkerLine = new SoSeparator(); + m_sepMarkerLine->ref(); m_separator = new SoSeparator(); m_separator->ref(); @@ -221,6 +230,8 @@ ViewProviderFemPostObject::ViewProviderFemPostObject() ViewProviderFemPostObject::~ViewProviderFemPostObject() { FemPostObjectSelectionObserver::instance().unregisterFemPostObject(this); + m_transpType->unref(); + m_depthBuffer->unref(); m_shapeHints->unref(); m_coordinates->unref(); m_materialBinding->unref(); @@ -231,6 +242,7 @@ ViewProviderFemPostObject::~ViewProviderFemPostObject() m_triangleStrips->unref(); m_markers->unref(); m_lines->unref(); + m_sepMarkerLine->unref(); m_separator->unref(); m_material->unref(); m_colorBar->Detach(this); @@ -243,19 +255,27 @@ void ViewProviderFemPostObject::attach(App::DocumentObject* pcObj) { ViewProviderDocumentObject::attach(pcObj); + // marker and line nodes + m_sepMarkerLine->addChild(m_transpType); + m_sepMarkerLine->addChild(m_depthBuffer); + m_sepMarkerLine->addChild(m_drawStyle); + m_sepMarkerLine->addChild(m_materialBinding); + m_sepMarkerLine->addChild(m_material); + m_sepMarkerLine->addChild(m_coordinates); + m_sepMarkerLine->addChild(m_markers); + m_sepMarkerLine->addChild(m_lines); + // face nodes m_separator->addChild(m_shapeHints); - m_separator->addChild(m_drawStyle); m_separator->addChild(m_materialBinding); m_separator->addChild(m_material); m_separator->addChild(m_coordinates); - m_separator->addChild(m_markers); - m_separator->addChild(m_lines); m_separator->addChild(m_faces); + m_separator->addChild(m_sepMarkerLine); // Check for an already existing color bar Gui::SoFCColorBar* pcBar = - ((Gui::SoFCColorBar*)findFrontRootOfType(Gui::SoFCColorBar::getClassTypeId())); + static_cast(findFrontRootOfType(Gui::SoFCColorBar::getClassTypeId())); if (pcBar) { float fMin = m_colorBar->getMinValue(); float fMax = m_colorBar->getMaxValue(); @@ -318,7 +338,7 @@ std::vector ViewProviderFemPostObject::getDisplayModes() const std::vector StrList; StrList.emplace_back("Outline"); StrList.emplace_back("Nodes"); - // StrList.emplace_back("Nodes (surface only)"); somehow this filter does not work + StrList.emplace_back("Nodes (surface only)"); StrList.emplace_back("Surface"); StrList.emplace_back("Surface with Edges"); StrList.emplace_back("Wireframe"); @@ -441,7 +461,6 @@ void ViewProviderFemPostObject::update3D() // write out point data if any WritePointData(points, normals, tcoords); - WriteTransparency(); bool ResetColorBarRange = false; WriteColorData(ResetColorBarRange); @@ -656,9 +675,19 @@ void ViewProviderFemPostObject::WriteColorData(bool ResetColorBarRange) void ViewProviderFemPostObject::WriteTransparency() { - float trans = float(Transparency.getValue()) / 100.0; - m_material->transparency.setValue(trans); + float trans = static_cast(Transparency.getValue()) / 100.0; + float* value = m_material->transparency.startEditing(); + for (int i = 0; i < m_material->transparency.getNum(); ++i) { + value[i] = trans; + } + m_material->transparency.finishEditing(); + if (Transparency.getValue() > 99) { + m_depthBuffer->test.setValue(false); + } + else { + m_depthBuffer->test.setValue(true); + } // In order to apply the transparency changes the shape nodes must be touched m_faces->touch(); m_triangleStrips->touch(); @@ -817,11 +846,9 @@ void ViewProviderFemPostObject::onChanged(const App::Property* prop) if (prop == &Field && setupPipeline()) { updateProperties(); WriteColorData(ResetColorBarRange); - WriteTransparency(); } else if (prop == &VectorMode && setupPipeline()) { WriteColorData(ResetColorBarRange); - WriteTransparency(); } else if (prop == &Transparency) { WriteTransparency(); @@ -832,17 +859,6 @@ void ViewProviderFemPostObject::onChanged(const App::Property* prop) bool ViewProviderFemPostObject::doubleClicked() { - // work around for a problem in VTK implementation: - // https://forum.freecad.org/viewtopic.php?t=10587&start=130#p125688 - // check if backlight is enabled - ParameterGrp::handle hGrp = - App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); - bool isBackLightEnabled = hGrp->GetBool("EnableBacklight", false); - if (!isBackLightEnabled) { - Base::Console().Error("Backlight is not enabled. Due to a VTK implementation problem you " - "really should consider to enable backlight in FreeCAD display " - "preferences if you work with VTK post processing.\n"); - } // set edit Gui::Application::Instance->activeDocument()->setEdit(this, (int)ViewProvider::Default); return true; diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h index 70b455ae7d..9c1322b4e5 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h @@ -53,6 +53,8 @@ class SoDrawStyle; class SoIndexedFaceSet; class SoIndexedLineSet; class SoIndexedTriangleStripSet; +class SoTransparencyType; +class SoDepthBuffer; namespace Gui { @@ -143,6 +145,9 @@ protected: Gui::SoFCColorBar* m_colorBar; SoSeparator* m_colorRoot; SoDrawStyle* m_colorStyle; + SoTransparencyType* m_transpType; + SoSeparator* m_sepMarkerLine; + SoDepthBuffer* m_depthBuffer; vtkSmartPointer m_currentAlgorithm; vtkSmartPointer m_surface; diff --git a/src/Mod/Fem/Init.py b/src/Mod/Fem/Init.py index e5d9366a04..e2d422c2ca 100644 --- a/src/Mod/Fem/Init.py +++ b/src/Mod/Fem/Init.py @@ -90,4 +90,4 @@ FreeCAD.addImportType("FEM result Z88 displacements (*o2.txt *O2.TXT)", "feminou if "BUILD_FEM_VTK" in FreeCAD.__cmake__: FreeCAD.addImportType("FEM result VTK (*.vtk *.VTK *.vtu *.VTU *.pvtu *.PVTU)", "feminout.importVTKResults") - FreeCAD.addExportType("FEM result VTK (*.vtk *.vtu)", "feminout.importVTKResults") + FreeCAD.addExportType("FEM result VTK (*.vtu *.vtp *.vts *.vtr *.vti)", "feminout.importVTKResults") diff --git a/src/Mod/Fem/femcommands/commands.py b/src/Mod/Fem/femcommands/commands.py index 721dc1defe..d35c82970c 100644 --- a/src/Mod/Fem/femcommands/commands.py +++ b/src/Mod/Fem/femcommands/commands.py @@ -696,8 +696,6 @@ class _MaterialMechanicalNonlinear(CommandManager): # set some property of the solver to nonlinear # (only if one solver is available and if this solver is a CalculiX solver): # nonlinear material - # nonlinear geometry --> it is triggered anyway - # https://forum.freecad.org/viewtopic.php?f=18&t=23101&p=180489#p180489 solver_object = None for m in self.active_analysis.Group: if m.isDerivedFrom("Fem::FemSolverObjectPython"): @@ -715,11 +713,10 @@ class _MaterialMechanicalNonlinear(CommandManager): or is_of_type(solver_object, "Fem::SolverCalculix") ): FreeCAD.Console.PrintMessage( - "Set MaterialNonlinearity and GeometricalNonlinearity to nonlinear for {}\n" + "Set MaterialNonlinearity to nonlinear for {}\n" .format(solver_object.Label) ) solver_object.MaterialNonlinearity = "nonlinear" - solver_object.GeometricalNonlinearity = "nonlinear" FreeCAD.ActiveDocument.commitTransaction() FreeCADGui.Selection.clearSelection() FreeCAD.ActiveDocument.recompute() diff --git a/src/Mod/Fem/femexamples/equation_deformation_spring_elmer.py b/src/Mod/Fem/femexamples/equation_deformation_spring_elmer.py index 070f11555a..a049126d6f 100644 --- a/src/Mod/Fem/femexamples/equation_deformation_spring_elmer.py +++ b/src/Mod/Fem/femexamples/equation_deformation_spring_elmer.py @@ -73,7 +73,7 @@ def setup(doc=None, solvertype="elmer"): # sketch defining the spring form body = doc.addObject("PartDesign::Body", "Body") SketchPath = body.newObject("Sketcher::SketchObject", "Spring_Path") - SketchPath.Support = (doc.getObject("XY_Plane"), [""]) + SketchPath.AttachmentSupport = (doc.getObject("XY_Plane"), [""]) SketchPath.MapMode = "FlatFace" SketchPath.addGeometry(Part.LineSegment(Vector( -20.0, 30.0, 0.0), Vector(-20.0, 0.0, 0.0)), False) @@ -91,7 +91,7 @@ def setup(doc=None, solvertype="elmer"): # sketch defining the spring cross section SketchCircle = body.newObject("Sketcher::SketchObject", "Spring_Circle") - SketchCircle.Support = (doc.getObject("XZ_Plane"), [""]) + SketchCircle.AttachmentSupport = (doc.getObject("XZ_Plane"), [""]) SketchCircle.MapMode = "FlatFace" SketchCircle.addGeometry(Part.Circle(Vector(-20.0, 0.0, 0.0), Vector(0, 0, 1), 7.5), False) SketchCircle.addConstraint(Sketcher.Constraint('PointOnObject', 0, 3, -1)) diff --git a/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py b/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py index 633871ee38..a59ab04d96 100644 --- a/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py +++ b/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py @@ -80,7 +80,7 @@ def setup(doc=None, solvertype="elmer"): # name is important because the other method in this module use obj name geom_obj = doc.addObject("PartDesign::Body", "Body") base_sketch = geom_obj.newObject("Sketcher::SketchObject", "Base_Sketch") - base_sketch.Support = (doc.getObject("XY_Plane"), [""]) + base_sketch.AttachmentSupport = (doc.getObject("XY_Plane"), [""]) base_sketch.MapMode = "FlatFace" base_geoList = [ Part.LineSegment(Vector(0.000000, 0.000000, 0), Vector(57.407921, 0.000000, 0)), @@ -111,7 +111,7 @@ def setup(doc=None, solvertype="elmer"): pad.Length2 = 1000.0 upper_sketch = geom_obj.newObject("Sketcher::SketchObject", "Upper_Sketch") - upper_sketch.Support = None + upper_sketch.AttachmentSupport = None upper_sketch.MapMode = "Deactivated" upper_sketch.Placement = FreeCAD.Placement(Vector(0, 0, 1000), Rotation(Vector(0, 0, 1), 0)) upper_geoList = [ diff --git a/src/Mod/Fem/femexamples/equation_flow_elmer_2D.py b/src/Mod/Fem/femexamples/equation_flow_elmer_2D.py index 2585c1ab0b..561878799b 100644 --- a/src/Mod/Fem/femexamples/equation_flow_elmer_2D.py +++ b/src/Mod/Fem/femexamples/equation_flow_elmer_2D.py @@ -81,6 +81,7 @@ def setup(doc=None, solvertype="elmer"): p5 = Vector(0, 50.000, 0) p6 = Vector(0, -50.000, 0) wire = Draft.make_wire([p1, p2, p3, p4, p5, p6], closed=True) + wire.MakeFace = True wire.Label = "Wire" # the circle defining the heating rod @@ -88,6 +89,7 @@ def setup(doc=None, solvertype="elmer"): axisCirc = Vector(1, 0, 0) placementCircle = Placement(pCirc, Rotation(axisCirc, 0)) circle = Draft.make_circle(10, placement=placementCircle) + circle.MakeFace = True circle.Label = "HeatingRod" circle.ViewObject.Visibility = False diff --git a/src/Mod/Fem/femexamples/equation_flow_initial_elmer_2D.py b/src/Mod/Fem/femexamples/equation_flow_initial_elmer_2D.py index 941d89b5f7..42f2b95ab9 100644 --- a/src/Mod/Fem/femexamples/equation_flow_initial_elmer_2D.py +++ b/src/Mod/Fem/femexamples/equation_flow_initial_elmer_2D.py @@ -81,6 +81,7 @@ def setup(doc=None, solvertype="elmer"): p5 = Vector(0, 50.000, 0) p6 = Vector(0, -50.000, 0) wire = Draft.make_wire([p1, p2, p3, p4, p5, p6], closed=True) + wire.MakeFace = True wire.Label = "Wire" # the circle defining the heating rod @@ -88,6 +89,7 @@ def setup(doc=None, solvertype="elmer"): axisCirc = Vector(1, 0, 0) placementCircle = Placement(pCirc, Rotation(axisCirc, 0)) circle = Draft.make_circle(10, placement=placementCircle) + circle.MakeFace = True circle.Label = "HeatingRod" circle.ViewObject.Visibility = False diff --git a/src/Mod/Fem/femexamples/equation_flow_turbulent_elmer_2D.py b/src/Mod/Fem/femexamples/equation_flow_turbulent_elmer_2D.py index 0010d42db1..53905004e7 100644 --- a/src/Mod/Fem/femexamples/equation_flow_turbulent_elmer_2D.py +++ b/src/Mod/Fem/femexamples/equation_flow_turbulent_elmer_2D.py @@ -81,6 +81,7 @@ def setup(doc=None, solvertype="elmer"): p5 = Vector(0, 50.000, 0) p6 = Vector(0, -50.000, 0) wire = Draft.make_wire([p1, p2, p3, p4, p5, p6], closed=True) + wire.MakeFace = True wire.Label = "Wire" # the circle defining the heating rod @@ -88,6 +89,7 @@ def setup(doc=None, solvertype="elmer"): axisCirc = Vector(1, 0, 0) placementCircle = Placement(pCirc, Rotation(axisCirc, 0)) circle = Draft.make_circle(10, placement=placementCircle) + circle.MakeFace = True circle.Label = "HeatingRod" circle.ViewObject.Visibility = False diff --git a/src/Mod/Fem/femexamples/equation_magnetodynamics_2D_elmer.py b/src/Mod/Fem/femexamples/equation_magnetodynamics_2D_elmer.py index 3e15c8d396..3a8fcc84da 100644 --- a/src/Mod/Fem/femexamples/equation_magnetodynamics_2D_elmer.py +++ b/src/Mod/Fem/femexamples/equation_magnetodynamics_2D_elmer.py @@ -81,6 +81,7 @@ def setup(doc=None, solvertype="elmer"): p7 = Vector(25.0, 20.0, 0.0) p8 = Vector(0.0, 20.0, 0.0) Insulation = Draft.make_wire([p1, p2, p3, p4, p5, p6, p7, p8], closed=True) + Insulation.MakeFace = True Insulation.Label = "Insulation" Insulation.ViewObject.Visibility = False @@ -90,6 +91,7 @@ def setup(doc=None, solvertype="elmer"): p3 = Vector(55.0, 110.0, 0.0) p4 = Vector(50.0, 110.0, 0.0) Coil = Draft.make_wire([p1, p2, p3, p4], closed=True) + Coil.MakeFace = True Coil.Label = "Coil" Coil.ViewObject.Visibility = False @@ -103,6 +105,7 @@ def setup(doc=None, solvertype="elmer"): p7 = Vector(20.0, 30.0, 0.0) p8 = Vector(0.0, 30.0, 0.0) Crucible = Draft.make_wire([p1, p2, p3, p4, p5, p6, p7, p8], closed=True) + Crucible.MakeFace = True Crucible.Label = "Crucible" Crucible.ViewObject.Visibility = False @@ -112,6 +115,7 @@ def setup(doc=None, solvertype="elmer"): p3 = Vector(20.0, 40.0, 0.0) p4 = Vector(0.0, 40.0, 0.0) Powder = Draft.make_wire([p1, p2, p3, p4], closed=True) + Powder.MakeFace = True Powder.Label = "Powder" Powder.ViewObject.Visibility = False diff --git a/src/Mod/Fem/femexamples/equation_magnetostatics_2D_elmer.py b/src/Mod/Fem/femexamples/equation_magnetostatics_2D_elmer.py index d8e839f638..73497db68d 100644 --- a/src/Mod/Fem/femexamples/equation_magnetostatics_2D_elmer.py +++ b/src/Mod/Fem/femexamples/equation_magnetostatics_2D_elmer.py @@ -77,6 +77,7 @@ def setup(doc=None, solvertype="elmer"): p3 = Vector(200.0, -100.0, 0.0) p4 = Vector(0.0, -100.0, 0.0) Horseshoe_lower = Draft.make_wire([p1, p2, p3, p4], closed=True) + Horseshoe_lower.MakeFace = True Horseshoe_lower.Label = "Lower_End" Horseshoe_lower.ViewObject.Visibility = False @@ -86,6 +87,7 @@ def setup(doc=None, solvertype="elmer"): p3 = Vector(200.0, 200.0, 0.0) p4 = Vector(0.0, 200.0, 0.0) Horseshoe_upper = Draft.make_wire([p1, p2, p3, p4], closed=True) + Horseshoe_upper.MakeFace = True Horseshoe_upper.Label = "Upper_End" Horseshoe_upper.ViewObject.Visibility = False diff --git a/src/Mod/Fem/feminout/importVTKResults.py b/src/Mod/Fem/feminout/importVTKResults.py index 73709d9a7e..7b1ca8be34 100644 --- a/src/Mod/Fem/feminout/importVTKResults.py +++ b/src/Mod/Fem/feminout/importVTKResults.py @@ -75,10 +75,8 @@ def export( return obj = objectslist[0] - if obj.isDerivedFrom("Fem::FemPostPipeline"): - Console.PrintError( - "Export of a VTK post object to vtk is not yet implemented!\n" - ) + if obj.isDerivedFrom("Fem::FemPostObject"): + obj.writeVTK(filename) return elif obj.isDerivedFrom("Fem::FemMeshObject"): Console.PrintError( diff --git a/src/Mod/Fem/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py index b29114ada9..0bcfc6597b 100644 --- a/src/Mod/Fem/femmesh/gmshtools.py +++ b/src/Mod/Fem/femmesh/gmshtools.py @@ -151,6 +151,17 @@ class GmshTools(): else: self.HighOrderOptimize = "0" + # SubdivisionAlgorithm + algoSubdiv = self.mesh_obj.SubdivisionAlgorithm + if algoSubdiv == "All Quadrangles": + self.SubdivisionAlgorithm = "1" + elif algoSubdiv == "All Hexahedra": + self.SubdivisionAlgorithm = "2" + elif algoSubdiv == "Barycentric": + self.SubdivisionAlgorithm = "3" + else: + self.SubdivisionAlgorithm = "0" + # mesh groups if self.mesh_obj.GroupsOfNodes is True: self.group_nodes_export = True @@ -858,6 +869,20 @@ class GmshTools(): geo.write("Mesh.Algorithm3D = " + self.algorithm3D + ";\n") geo.write("\n") + geo.write("// subdivision algorithm\n") + geo.write("Mesh.SubdivisionAlgorithm = " + self.SubdivisionAlgorithm + ";\n") + geo.write("\n") + + geo.write("// incomplete second order elements\n") + if (self.SubdivisionAlgorithm == "1" + or self.SubdivisionAlgorithm == "2" + or self.mesh_obj.RecombineAll): + sec_order_inc = "1" + else: + sec_order_inc = "0" + geo.write("Mesh.SecondOrderIncomplete = " + sec_order_inc + ";\n") + geo.write("\n") + geo.write("// meshing\n") # remove duplicate vertices # see https://forum.freecad.org/viewtopic.php?f=18&t=21571&start=20#p179443 diff --git a/src/Mod/Fem/femmesh/meshtools.py b/src/Mod/Fem/femmesh/meshtools.py index 7fc8bd26f0..35af3b8c93 100644 --- a/src/Mod/Fem/femmesh/meshtools.py +++ b/src/Mod/Fem/femmesh/meshtools.py @@ -573,7 +573,7 @@ def get_femelement_direction1D_set( # since ccx needs to split them in sets anyway we need to take care of this too rotations_ids = get_femelement_directions_theshape(femmesh, femelement_table, theshape) # add normals for each direction - rotation_angle = beamrotation_objects[0]["Object"].Rotation + rotation_angle = beamrotation_objects[0]["Object"].Rotation.getValueAs("deg").Value for rot in rotations_ids: rot["beam_axis_m"] = get_beam_main_axis_m(rot["direction"], rotation_angle) beamrotation_objects[0]["FEMRotations1D"] = rotations_ids @@ -619,87 +619,91 @@ def get_femelement_directions_theshape(femmesh, femelement_table, theshape): # ************************************************************************************************ -def get_beam_main_axis_m(beam_direction, defined_angle): +def get_beam_main_axis_m(beam_direction: FreeCAD.Vector, defined_angle: int) -> FreeCAD.Vector: # former name was get_beam_normal # see forum topic https://forum.freecad.org/viewtopic.php?f=18&t=24878 # beam_direction ... FreeCAD vector # defined_angle ... degree # base for the rotation: - # a beam_direction = (1, 0, 0) and angle = 0, returns (-0, 1, 0) - # https://forum.freecad.org/viewtopic.php?f=18&t=24878&start=30#p195567 - # https://forum.freecad.org/viewtopic.php?f=13&t=59239&start=140#p521999 - # changing the angle, changes the normal accordingly, 360 would again return (0,1,0) - - # CalxuliX uses negative z axis as base, if nothing is given in input file + # a beam_direction = (1, 0, 0) and angle = 0, returns (0, -1, 0) + # changing the angle, changes the normal accordingly, 360 would again return (0, -1, 0) + # + # original thread discussing this (kept for history): + # https://forum.freecad.org/viewtopic.php?f=18&t=24878&start=30#p195567 + # https://forum.freecad.org/viewtopic.php?f=13&t=59239&start=140#p521999 + # thread with updated analysis, that fixes a found bug: + # https://forum.freecad.org/viewtopic.php?t=85951 + # + # CalculiX uses negative z axis as base, if nothing is given in input file # see the standard direction of 1-direction in CalxuliX manual - # here the local main axis is called beam_axis_m the minor axis will be beam_axis_n - # eventually a better name might be get_beam_rotation - # FIXME: since we fix the base ange we would get this information out of the mesh edge too + # FIXME: since we fix the base angle we would get this information out of the mesh edge too + # upd: angle is not fixed anymore (?) (except for the vertical beam) print("beam_axis_m is retrieved from the geometry but we could get if from mesh edge too") # print("beam_direction: {}".format(beam_direction)) # print("defined_angle: {}".format(defined_angle)) import math - vector_a = beam_direction - angle_rad = (math.pi / 180) * defined_angle - nx = abs(math.cos(angle_rad)) - ny = abs(math.sin(angle_rad)) - if nx < 0.0000001: - nx = 0 - if ny < 0.0000001: - ny = 0 - # vector_n = [nx, ny] # not used ATM - if vector_a[0] != 0: - temp_valx = -(vector_a[1] + vector_a[2]) / vector_a[0] - else: - temp_valx = 0 - if vector_a[1] != 0: - temp_valy = -(vector_a[0] + vector_a[2]) / vector_a[1] - else: - temp_valy = 0 - if vector_a[2] != 0: - temp_valz = -(vector_a[0] + vector_a[1]) / vector_a[2] - else: - temp_valz = 0 + def normalize(vec: FreeCAD.Vector) -> FreeCAD.Vector: + return vec / vec.Length - # Dot_product_check - dot_x = None - dot_y = None - dot_z = None - dot_nt = None - if vector_a[0] != 0 and vector_a[1] == 0 and vector_a[2] == 0: - normal_n = [temp_valx, nx, ny] - dot_x = vector_a[0] * normal_n[0] + vector_a[1] * normal_n[1] + vector_a[2] * normal_n[2] - elif vector_a[0] == 0 and vector_a[1] != 0 and vector_a[2] == 0: - normal_n = [nx, temp_valy, ny] - dot_y = vector_a[0] * normal_n[0] + vector_a[1] * normal_n[1] + vector_a[2] * normal_n[2] - elif vector_a[0] == 0 and vector_a[1] == 0 and vector_a[2] != 0: - normal_n = [nx, ny, temp_valz] - dot_z = vector_a[0] * normal_n[0] + vector_a[1] * normal_n[1] + vector_a[2] * normal_n[2] - elif vector_a[0] == 0 and vector_a[1] != 0 and vector_a[2] != 0: - normal_n = [nx, temp_valy, ny] - dot_y = vector_a[0] * normal_n[0] + vector_a[1] * normal_n[1] + vector_a[2] * normal_n[2] - elif vector_a[0] != 0 and vector_a[1] == 0 and vector_a[2] != 0: - normal_n = [nx, ny, temp_valz] - dot_z = vector_a[0] * normal_n[0] + vector_a[1] * normal_n[1] + vector_a[2] * normal_n[2] - else: - normal_n = [temp_valx, nx, ny] - dot_nt = vector_a[0] * normal_n[0] + vector_a[1] * normal_n[1] + vector_a[2] * normal_n[2] + def get_normal(vec: FreeCAD.Vector) -> FreeCAD.Vector: + x, y, z = vec - dot = vector_a[0] * normal_n[0] + vector_a[1] * normal_n[1] + vector_a[2] * normal_n[2] - FreeCAD.Console.PrintLog("{}\n".format(dot)) - FreeCAD.Console.PrintLog("{}\n".format(normal_n)) + if z == 0: # in xy plane + n = (0, 0, -1) # default in CalculiX + elif z != 0 and x == y == 0: # vertical beam + n = (-1, 0, 0) # or (0, -1, 0) + else: + # . (x, y, z) + # / \ + # vec / \ n + # / \ + # (0,0,0) .-------. (x, y, ?) + # + # since `n` should be perpendicular to `vec` + # calculate the dot product to find `?` + n = (x, y, -(x**2 + y**2) / z) + # we want the normal to point downwards for `vec` with + # z < 0 as well + n = normalize((1 | -(z > 0)) * FreeCAD.Vector(n)) - # dummy usage of the axis dot to get flake8 quiet - del dot_x, dot_y, dot_z, dot, dot_nt + # sanity check + dot = vec.dot(n) + if not math.isclose(dot, 0, abs_tol=1e-13): + FreeCAD.Console.PrintError( + f"Wrong calculation of normal vector for {vec = }! {n = }, {dot = }\n" + "Please consider submitting an issue\n" + ) - # print("normal_n: {}".format(normal_n)) - return normal_n + return n + + def rotate_around_vector(axis: FreeCAD.Vector, angle: int) -> FreeCAD.Vector: + """ + * - is the axis vector, which is looking at us + the rotation is done counter-clockwise around this vector + + More info is available at: + https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula + """ + angle = math.radians(angle) + axis = normalize(axis) + n = get_normal(axis) + # the mentioned formula rotates both the perpendicular and not parts of the vector + # but since we're rotating a normal (which is already perpendicular), one can + # simplify the formula a bit + rot = n * math.cos(angle) + axis.cross(n) * math.sin(angle) + # replace all the close-to-zero elements with 0 itself + # I was getting values of 1e-17 order, hence the threshold is of 1e-15 order + return FreeCAD.Vector([coord * (abs(coord) > 1e-15) for coord in rot]) + + # `+90` here is because the normal is calculated towards -z axis + # and we use 1,2-directions, that are rotated by `+90` degrees + return rotate_around_vector(beam_direction, defined_angle + 90) # ************************************************************************************************ @@ -2519,6 +2523,67 @@ def beam_reduced_integration( f.truncate() f.close() +def plane_stress( + fileName +): + # replace shell elements with plane stress elements + f = open(fileName, "r+") + lines = f.readlines() + f.seek(0) + for line in lines: + if line.find("S3") != -1: + line = line.replace("S3", "CPS3") + if line.find("S6") != -1: + line = line.replace("S6", "CPS6") + if line.find("S4") != -1: + line = line.replace("S4", "CPS4") + if line.find("S8") != -1: + line = line.replace("S8", "CPS8") + f.write(line) + + f.truncate() + f.close() +def plane_strain( + fileName +): + # replace shell elements with plane strain elements + f = open(fileName, "r+") + lines = f.readlines() + f.seek(0) + for line in lines: + if line.find("S3") != -1: + line = line.replace("S3", "CPE3") + if line.find("S6") != -1: + line = line.replace("S6", "CPE6") + if line.find("S4") != -1: + line = line.replace("S4", "CPE4") + if line.find("S8") != -1: + line = line.replace("S8", "CPE8") + f.write(line) + + f.truncate() + f.close() +def axisymmetric( + fileName +): + # replace shell elements with axisymmetric elements + f = open(fileName, "r+") + lines = f.readlines() + f.seek(0) + for line in lines: + if line.find("S3") != -1: + line = line.replace("S3", "CAX3") + if line.find("S6") != -1: + line = line.replace("S6", "CAX6") + if line.find("S4") != -1: + line = line.replace("S4", "CAX4") + if line.find("S8") != -1: + line = line.replace("S8", "CAX8") + f.write(line) + + f.truncate() + f.close() + # ************************************************************************************************ def sub_shape_at_global_placement(obj, sub_name): sub_sh = obj.getSubObject(sub_name) diff --git a/src/Mod/Fem/femobjects/constraint_tie.py b/src/Mod/Fem/femobjects/constraint_tie.py index d6a5878c6d..9301d9fddf 100644 --- a/src/Mod/Fem/femobjects/constraint_tie.py +++ b/src/Mod/Fem/femobjects/constraint_tie.py @@ -105,7 +105,7 @@ class ConstraintTie(base_fempythonobject.BaseFemPythonObject): def onDocumentRestored(self, obj): - # update old proyect with new properties + # update old project with new properties for prop in self._get_properties(): try: obj.getPropertyByName(prop.name) diff --git a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py index e0339aa881..a616b3410d 100644 --- a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py +++ b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py @@ -81,7 +81,7 @@ class MaterialMechanicalNonlinear(base_fempythonobject.BaseFemPythonObject): ) if not hasattr(obj, "MaterialModelNonlinearity"): - choices_nonlinear_material_models = ["simple hardening"] + choices_nonlinear_material_models = ["isotropic hardening","kinematic hardening"] obj.addProperty( "App::PropertyEnumeration", "MaterialModelNonlinearity", @@ -91,6 +91,11 @@ class MaterialMechanicalNonlinear(base_fempythonobject.BaseFemPythonObject): obj.MaterialModelNonlinearity = choices_nonlinear_material_models obj.MaterialModelNonlinearity = choices_nonlinear_material_models[0] + if hasattr(obj, "MaterialModelNonlinearity") and obj.MaterialModelNonlinearity == "simple hardening": + updated_choices_nonlinear_material_models = ["isotropic hardening", "kinematic hardening"] + obj.MaterialModelNonlinearity = updated_choices_nonlinear_material_models + obj.MaterialModelNonlinearity = updated_choices_nonlinear_material_models[0] + if not hasattr(obj, "YieldPoints"): obj.addProperty( "App::PropertyStringList", diff --git a/src/Mod/Fem/femobjects/mesh_gmsh.py b/src/Mod/Fem/femobjects/mesh_gmsh.py index 386a7ae638..0c8a9e13b0 100644 --- a/src/Mod/Fem/femobjects/mesh_gmsh.py +++ b/src/Mod/Fem/femobjects/mesh_gmsh.py @@ -73,6 +73,12 @@ class MeshGmsh(base_fempythonobject.BaseFemPythonObject): "Elastic", "Fast curving" ] + known_mesh_SubdivisionAlgorithms = [ + "None", + "All Quadrangles", + "All Hexahedra", + "Barycentric" + ] def __init__(self, obj): super(MeshGmsh, self).__init__(obj) @@ -305,3 +311,13 @@ class MeshGmsh(base_fempythonobject.BaseFemPythonObject): "For each group create not only the elements but the nodes too." ) obj.GroupsOfNodes = False + + if not hasattr(obj, "SubdivisionAlgorithm"): + obj.addProperty( + "App::PropertyEnumeration", + "SubdivisionAlgorithm", + "FEM Gmsh Mesh Params", + "Mesh subdivision algorithm" + ) + obj.SubdivisionAlgorithm = MeshGmsh.known_mesh_SubdivisionAlgorithms + obj.SubdivisionAlgorithm = "None" diff --git a/src/Mod/Fem/femsolver/calculix/solver.py b/src/Mod/Fem/femsolver/calculix/solver.py index b22099ab28..8d60061ed8 100644 --- a/src/Mod/Fem/femsolver/calculix/solver.py +++ b/src/Mod/Fem/femsolver/calculix/solver.py @@ -163,7 +163,7 @@ def add_attributes(obj, ccx_prefs): "App::PropertyEnumeration", "MaterialNonlinearity", "Fem", - "Set material nonlinearity (needs geometrical nonlinearity)" + "Set material nonlinearity" ) obj.MaterialNonlinearity = choices_material_nonlinear obj.MaterialNonlinearity = choices_material_nonlinear[0] @@ -405,6 +405,30 @@ def add_attributes(obj, ccx_prefs): ) obj.BeamReducedIntegration = True + if not hasattr(obj, "OutputFrequency"): + obj.addProperty( + "App::PropertyIntegerConstraint", + "OutputFrequency", + "Fem", + "Set the output frequency in increments" + ) + obj.OutputFrequency = 1 + + if not hasattr(obj, "ModelSpace"): + model_space_types = [ + "3D", + "plane stress", + "plane strain", + "axisymmetric" + ] + obj.addProperty( + "App::PropertyEnumeration", + "ModelSpace", + "Fem", + "Type of model space" + ) + obj.ModelSpace = model_space_types + """ Should there be some equation object for Calculix too? diff --git a/src/Mod/Fem/femsolver/calculix/write_constraint_force.py b/src/Mod/Fem/femsolver/calculix/write_constraint_force.py index a5a08b7945..785fbade16 100644 --- a/src/Mod/Fem/femsolver/calculix/write_constraint_force.py +++ b/src/Mod/Fem/femsolver/calculix/write_constraint_force.py @@ -56,13 +56,13 @@ def write_meshdata_constraint(f, femobj, force_obj, ccxwriter): node_load = ref_shape[1][n] # the loads in ref_shape[1][n] are without unit if abs(direction_vec.x) > dir_zero_tol: - v1 = "{}".format(direction_vec.x * node_load) + v1 = "{:.13G}".format((direction_vec.x * node_load).Value) f.write("{},1,{}\n".format(n, v1)) if abs(direction_vec.y) > dir_zero_tol: - v2 = "{}".format(direction_vec.y * node_load) + v2 = "{:.13G}".format((direction_vec.y * node_load).Value) f.write("{},2,{}\n".format(n, v2)) if abs(direction_vec.z) > dir_zero_tol: - v3 = "{}".format(direction_vec.z * node_load) + v3 = "{:.13G}".format((direction_vec.z * node_load).Value) f.write("{},3,{}\n".format(n, v3)) f.write("\n") f.write("\n") diff --git a/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py b/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py index 19489c7d00..e2c0176317 100644 --- a/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py +++ b/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py @@ -51,11 +51,15 @@ def write_femelement_geometry(f, ccxwriter): if beamsec_obj.SectionType == "Rectangular": # see meshtools.get_beam_main_axis_m(beam_direction, defined_angle) # the method get_beam_main_axis_m() which calculates the beam_axis_m vector - # returns for a line in x direction and angle 0 degree - # the y-axis as local main direction (beam_axis_m vector) - # in users head and in beam section object this is the Width - len_beam_axis_m = beamsec_obj.RectWidth.getValueAs("mm").Value + # unless rotated, this vector points towards +y axis + # doesn't follow 1,2-direction order of CalculiX + # ^ (n, 2-direction) + # | + # | + # .----> (m, 1-direction) + # len_beam_axis_n = beamsec_obj.RectHeight.getValueAs("mm").Value + len_beam_axis_m = beamsec_obj.RectWidth.getValueAs("mm").Value section_type = ", SECTION=RECT" section_geo = "{:.13G},{:.13G}\n".format(len_beam_axis_m, len_beam_axis_n) section_def = "*BEAM SECTION, {}{}{}\n".format( @@ -109,11 +113,14 @@ def write_femelement_geometry(f, ccxwriter): f.write(section_geo) elif "shellthickness_obj" in matgeoset: # shell mesh shellth_obj = matgeoset["shellthickness_obj"] - section_def = "*SHELL SECTION, {}{}\n".format(elsetdef, material) + if ccxwriter.solver_obj.ModelSpace == "3D": + section_def = "*SHELL SECTION, {}{}\n".format(elsetdef, material) + else: + section_def = "*SOLID SECTION, {}{}\n".format(elsetdef, material) thickness = shellth_obj.Thickness.getValueAs("mm").Value section_geo = "{:.13G}\n".format(thickness) f.write(section_def) - f.write(section_geo) + f.write(section_geo) else: # solid mesh section_def = "*SOLID SECTION, {}{}\n".format(elsetdef, material) f.write(section_def) diff --git a/src/Mod/Fem/femsolver/calculix/write_femelement_material.py b/src/Mod/Fem/femsolver/calculix/write_femelement_material.py index 6c538e15be..7f35954fd1 100644 --- a/src/Mod/Fem/femsolver/calculix/write_femelement_material.py +++ b/src/Mod/Fem/femsolver/calculix/write_femelement_material.py @@ -111,8 +111,10 @@ def write_femelement_material(f, ccxwriter): # femobj --> dict, FreeCAD document object is nlfemobj["Object"] nl_mat_obj = nlfemobj["Object"] if nl_mat_obj.LinearBaseMaterial == mat_obj: - if nl_mat_obj.MaterialModelNonlinearity == "simple hardening": + if nl_mat_obj.MaterialModelNonlinearity == "isotropic hardening": f.write("*PLASTIC\n") - for yield_point in nl_mat_obj.YieldPoints: - f.write("{}\n".format(yield_point)) + else: + f.write("*PLASTIC, HARDENING=KINEMATIC\n") + for yield_point in nl_mat_obj.YieldPoints: + f.write("{}\n".format(yield_point)) f.write("\n") diff --git a/src/Mod/Fem/femsolver/calculix/write_mesh.py b/src/Mod/Fem/femsolver/calculix/write_mesh.py index acab0ce1c1..aa17bd4533 100644 --- a/src/Mod/Fem/femsolver/calculix/write_mesh.py +++ b/src/Mod/Fem/femsolver/calculix/write_mesh.py @@ -54,7 +54,15 @@ def write_mesh(ccxwriter): # Use reduced integration beam elements if this option is enabled in ccx solver settings if ccxwriter.solver_obj.BeamReducedIntegration: meshtools.beam_reduced_integration(ccxwriter.femmesh_file) - + + # Use 2D elements if model space is not set to 3D + if ccxwriter.solver_obj.ModelSpace == "plane stress": + meshtools.plane_stress(ccxwriter.femmesh_file) + if ccxwriter.solver_obj.ModelSpace == "plane strain": + meshtools.plane_strain(ccxwriter.femmesh_file) + if ccxwriter.solver_obj.ModelSpace == "axisymmetric": + meshtools.axisymmetric(ccxwriter.femmesh_file) + inpfile = codecs.open(ccxwriter.file_name, "w", encoding="utf-8") inpfile.write("{}\n".format(59 * "*")) inpfile.write("** {}\n".format(write_name)) @@ -77,6 +85,14 @@ def write_mesh(ccxwriter): if ccxwriter.solver_obj.BeamReducedIntegration: meshtools.beam_reduced_integration(ccxwriter.femmesh_file) + # Use 2D elements if model space is not set to 3D + if ccxwriter.solver_obj.ModelSpace == "plane stress": + meshtools.plane_stress(ccxwriter.femmesh_file) + if ccxwriter.solver_obj.ModelSpace == "plane strain": + meshtools.plane_strain(ccxwriter.femmesh_file) + if ccxwriter.solver_obj.ModelSpace == "axisymmetric": + meshtools.axisymmetric(ccxwriter.femmesh_file) + # reopen file with "append" to add all the rest inpfile = codecs.open(ccxwriter.femmesh_file, "a", encoding="utf-8") inpfile.write("\n\n") diff --git a/src/Mod/Fem/femsolver/calculix/write_step_output.py b/src/Mod/Fem/femsolver/calculix/write_step_output.py index c6d74d356e..e03bb9293c 100644 --- a/src/Mod/Fem/femsolver/calculix/write_step_output.py +++ b/src/Mod/Fem/femsolver/calculix/write_step_output.py @@ -83,6 +83,7 @@ def write_step_output(f, ccxwriter): f.write("RF\n") if ccxwriter.member.cons_fixed or ccxwriter.member.cons_displacement: f.write("\n") + f.write("*OUTPUT, FREQUENCY={}".format(ccxwriter.solver_obj.OutputFrequency)) # there is no need to write all integration point results # as long as there is no reader for them diff --git a/src/Mod/Fem/femtest/data/calculix/box_frequency.inp b/src/Mod/Fem/femtest/data/calculix/box_frequency.inp index c6f624721c..baf8039aff 100644 --- a/src/Mod/Fem/femtest/data/calculix/box_frequency.inp +++ b/src/Mod/Fem/femtest/data/calculix/box_frequency.inp @@ -456,7 +456,7 @@ Evolumes U *EL FILE S, E - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/box_static.inp b/src/Mod/Fem/femtest/data/calculix/box_static.inp index 015fb40f1c..2357b51200 100644 --- a/src/Mod/Fem/femtest/data/calculix/box_static.inp +++ b/src/Mod/Fem/femtest/data/calculix/box_static.inp @@ -507,47 +507,47 @@ FemConstraintFixed,3 *CLOAD ** FemConstraintForce ** node loads on shape: Box:Face6 -2,3,-0.0 -4,3,-0.0 -6,3,-0.0 -8,3,-0.0 -18,3,-0.0 -19,3,-833.3333333333335 -20,3,-833.3333333333335 -30,3,-0.0 -31,3,-833.3333333333335 -32,3,-833.3333333333335 -36,3,-0.0 -37,3,-833.3333333333335 -38,3,-833.3333333333335 -42,3,-0.0 -43,3,-833.3333333333335 -44,3,-833.3333333333335 -170,3,-0.0 -171,3,-0.0 -172,3,-0.0 -173,3,-0.0 -174,3,-0.0 -175,3,-1666.666666666667 -176,3,-1666.666666666667 -177,3,-1666.666666666667 -178,3,-1666.666666666667 -179,3,-1666.666666666667 -180,3,-1666.666666666667 -181,3,-1666.666666666667 -182,3,-1666.666666666667 -183,3,-1666.666666666667 -184,3,-1666.666666666667 -185,3,-1666.666666666667 -186,3,-1666.666666666667 -187,3,-1666.666666666667 -188,3,-1666.666666666667 -189,3,-1666.666666666667 -190,3,-1666.666666666667 -191,3,-1666.666666666667 -192,3,-1666.666666666667 -193,3,-1666.666666666667 -194,3,-1666.666666666667 +2,3,-0 +4,3,-0 +6,3,-0 +8,3,-0 +18,3,-0 +19,3,-833.3333333333 +20,3,-833.3333333333 +30,3,-0 +31,3,-833.3333333333 +32,3,-833.3333333333 +36,3,-0 +37,3,-833.3333333333 +38,3,-833.3333333333 +42,3,-0 +43,3,-833.3333333333 +44,3,-833.3333333333 +170,3,-0 +171,3,-0 +172,3,-0 +173,3,-0 +174,3,-0 +175,3,-1666.666666667 +176,3,-1666.666666667 +177,3,-1666.666666667 +178,3,-1666.666666667 +179,3,-1666.666666667 +180,3,-1666.666666667 +181,3,-1666.666666667 +182,3,-1666.666666667 +183,3,-1666.666666667 +184,3,-1666.666666667 +185,3,-1666.666666667 +186,3,-1666.666666667 +187,3,-1666.666666667 +188,3,-1666.666666667 +189,3,-1666.666666667 +190,3,-1666.666666667 +191,3,-1666.666666667 +192,3,-1666.666666667 +193,3,-1666.666666667 +194,3,-1666.666666667 @@ -584,7 +584,7 @@ S, E *NODE PRINT, NSET=FemConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_buckling_flexuralbuckling.inp b/src/Mod/Fem/femtest/data/calculix/ccx_buckling_flexuralbuckling.inp index f9c5550214..d93e9d9430 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_buckling_flexuralbuckling.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_buckling_flexuralbuckling.inp @@ -803,7 +803,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_circle.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_circle.inp index 91cf87bf3f..c61d0b81d6 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_circle.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_circle.inp @@ -58,7 +58,7 @@ Eedges ** Sections *BEAM SECTION, ELSET=M0B0RstdD0, MATERIAL=MechanicalMaterial, SECTION=CIRC 1000 --0, 1, 0 +0, 1, -0 *********************************************************** ** At least one step is needed to run an CalculiX analysis of FreeCAD @@ -83,7 +83,7 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node load on shape: CantileverLine:Vertex2 -2,3,-9000000.0 +2,3,-9000000 @@ -98,7 +98,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_pipe.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_pipe.inp index c60a64673c..b2366b0f18 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_pipe.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_pipe.inp @@ -58,7 +58,7 @@ Eedges ** Sections *BEAM SECTION, ELSET=M0B0RstdD0, MATERIAL=MechanicalMaterial, SECTION=PIPE 500,100 --0, 1, 0 +0, 1, -0 *********************************************************** ** At least one step is needed to run an CalculiX analysis of FreeCAD @@ -83,7 +83,7 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node load on shape: CantileverLine:Vertex2 -2,3,-9000000.0 +2,3,-9000000 @@ -98,7 +98,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_rect.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_rect.inp index e4109fe5d5..158145c70a 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_rect.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_rect.inp @@ -58,7 +58,7 @@ Eedges ** Sections *BEAM SECTION, ELSET=M0B0RstdD0, MATERIAL=MechanicalMaterial, SECTION=RECT 400,1250 --0, 1, 0 +0, 1, -0 *********************************************************** ** At least one step is needed to run an CalculiX analysis of FreeCAD @@ -83,7 +83,7 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node load on shape: CantileverLine:Vertex2 -2,3,-9000000.0 +2,3,-9000000 @@ -98,7 +98,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_hexa20.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_hexa20.inp index 0730fb3ed2..bd7c47159e 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_hexa20.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_hexa20.inp @@ -403,27 +403,27 @@ ConstraintFixed,3 *CLOAD ** ConstraintForce ** node loads on shape: Box:Face2 -5,3,187500.00000000003 -6,3,187500.00000000003 -7,3,187500.00000000003 -8,3,187500.00000000003 -21,3,-750000.0000000001 -22,3,375000.00000000006 -23,3,-750000.0000000001 -24,3,-750000.0000000001 -25,3,375000.00000000006 -26,3,-750000.0000000001 -27,3,-750000.0000000001 -28,3,375000.00000000006 -29,3,-750000.0000000001 -30,3,-750000.0000000001 -31,3,375000.00000000006 -32,3,-750000.0000000001 -98,3,-1500000.0000000002 -99,3,-1500000.0000000002 -100,3,750000.0000000001 -101,3,-1500000.0000000002 -102,3,-1500000.0000000002 +5,3,187500 +6,3,187500 +7,3,187500 +8,3,187500 +21,3,-750000 +22,3,375000 +23,3,-750000 +24,3,-750000 +25,3,375000 +26,3,-750000 +27,3,-750000 +28,3,375000 +29,3,-750000 +30,3,-750000 +31,3,375000 +32,3,-750000 +98,3,-1500000 +99,3,-1500000 +100,3,750000 +101,3,-1500000 +102,3,-1500000 @@ -438,7 +438,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad4.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad4.inp index e7ee84403d..7b7cd41ff8 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad4.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad4.inp @@ -107,9 +107,9 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node loads on shape: CanileverPlate:Edge3 -3,3,-2250000.0 -4,3,-2250000.0 -13,3,-4500000.0 +3,3,-2250000 +4,3,-2250000 +13,3,-4500000 @@ -124,7 +124,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad8.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad8.inp index 0f652ebbd1..a201a9c3a2 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad8.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad8.inp @@ -95,11 +95,11 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node loads on shape: CanileverPlate:Edge3 -3,3,-750000.0 -4,3,-750000.0 -11,3,-1500000.0 -12,3,-3000000.0 -13,3,-3000000.0 +3,3,-750000 +4,3,-750000 +11,3,-1500000 +12,3,-3000000 +13,3,-3000000 @@ -114,7 +114,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg2.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg2.inp index 50be05ece5..fb0a022008 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg2.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg2.inp @@ -200,7 +200,7 @@ Eedges ** Sections *BEAM SECTION, ELSET=M0B0RstdD0, MATERIAL=MechanicalMaterial, SECTION=RECT 1000,1000 --0, 1, 0 +0, 1, -0 *********************************************************** ** At least one step is needed to run an CalculiX analysis of FreeCAD @@ -225,7 +225,7 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node load on shape: CantileverLine:Vertex2 -2,3,-9000000.0 +2,3,-9000000 @@ -240,7 +240,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg3.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg3.inp index 476c5968b5..72dd4db87c 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg3.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg3.inp @@ -58,7 +58,7 @@ Eedges ** Sections *BEAM SECTION, ELSET=M0B0RstdD0, MATERIAL=MechanicalMaterial, SECTION=RECT 1000,1000 --0, 1, 0 +0, 1, -0 *********************************************************** ** At least one step is needed to run an CalculiX analysis of FreeCAD @@ -83,7 +83,7 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node load on shape: CantileverLine:Vertex2 -2,3,-9000000.0 +2,3,-9000000 @@ -98,7 +98,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria3.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria3.inp index bec70fd1e5..59da919b13 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria3.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria3.inp @@ -1583,14 +1583,14 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node loads on shape: CanileverPlate:Edge3 -3,3,-642857.1428571417 -4,3,-642857.1428571455 -64,3,-1285714.2857142843 -65,3,-1285714.285714283 -66,3,-1285714.28571428 -67,3,-1285714.2857142847 -68,3,-1285714.28571429 -69,3,-1285714.2857142906 +3,3,-642857.1428571 +4,3,-642857.1428571 +64,3,-1285714.285714 +65,3,-1285714.285714 +66,3,-1285714.285714 +67,3,-1285714.285714 +68,3,-1285714.285714 +69,3,-1285714.285714 @@ -1605,7 +1605,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria6.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria6.inp index e01d81d920..04dda8c146 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria6.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria6.inp @@ -313,11 +313,11 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node loads on shape: CanileverPlate:Edge3 -3,3,-750000.0 -4,3,-750000.0 -39,3,-1500000.0 -40,3,-3000000.0 -41,3,-3000000.0 +3,3,-750000 +4,3,-750000 +39,3,-1500000 +40,3,-3000000 +41,3,-3000000 @@ -332,7 +332,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_faceload.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_faceload.inp index 33092c5bc9..03f0e80bd7 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_faceload.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_faceload.inp @@ -377,19 +377,19 @@ ConstraintFixed,3 *CLOAD ** ConstraintForce ** node loads on shape: Box:Face2 -1,3,-0.0 -2,3,-0.0 -3,3,-0.0 -4,3,-0.0 -49,3,-0.0 -64,3,-750000.0000000001 -88,3,-750000.0000000001 -100,3,-750000.0000000001 -102,3,-750000.0000000001 -188,3,-1500000.0000000002 -189,3,-1500000.0000000002 -190,3,-1500000.0000000002 -191,3,-1500000.0000000002 +1,3,-0 +2,3,-0 +3,3,-0 +4,3,-0 +49,3,-0 +64,3,-750000 +88,3,-750000 +100,3,-750000 +102,3,-750000 +188,3,-1500000 +189,3,-1500000 +190,3,-1500000 +191,3,-1500000 @@ -404,7 +404,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_nodeload.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_nodeload.inp index 2004f1a460..9198e5c3a4 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_nodeload.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_nodeload.inp @@ -377,16 +377,16 @@ ConstraintFixed,3 *CLOAD ** ConstraintForce ** node load on shape: Box:Vertex5 -4,3,-2250000.0 +4,3,-2250000 ** node load on shape: Box:Vertex6 -3,3,-2250000.0 +3,3,-2250000 ** node load on shape: Box:Vertex7 -2,3,-2250000.0 +2,3,-2250000 ** node load on shape: Box:Vertex8 -1,3,-2250000.0 +1,3,-2250000 @@ -401,7 +401,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_prescribeddisplacement.inp b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_prescribeddisplacement.inp index 815ec60692..d4a67e562b 100644 --- a/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_prescribeddisplacement.inp +++ b/src/Mod/Fem/femtest/data/calculix/ccx_cantilever_prescribeddisplacement.inp @@ -411,7 +411,7 @@ RF *NODE PRINT, NSET=ConstraintDisplacmentPrescribed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/constraint_contact_shell_shell.inp b/src/Mod/Fem/femtest/data/calculix/constraint_contact_shell_shell.inp index 8382e59786..1a6bc45f52 100644 --- a/src/Mod/Fem/femtest/data/calculix/constraint_contact_shell_shell.inp +++ b/src/Mod/Fem/femtest/data/calculix/constraint_contact_shell_shell.inp @@ -38394,7 +38394,7 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node load on shape: Load_place_point:Vertex1 -5,2,-5000.0 +5,2,-5000 @@ -38409,7 +38409,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/constraint_sectionprint.inp b/src/Mod/Fem/femtest/data/calculix/constraint_sectionprint.inp index 14176c54ec..501355f029 100644 --- a/src/Mod/Fem/femtest/data/calculix/constraint_sectionprint.inp +++ b/src/Mod/Fem/femtest/data/calculix/constraint_sectionprint.inp @@ -3455,7 +3455,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/constraint_selfweight_cantilever.inp b/src/Mod/Fem/femtest/data/calculix/constraint_selfweight_cantilever.inp index aacd4d1102..6eb8cf3780 100644 --- a/src/Mod/Fem/femtest/data/calculix/constraint_selfweight_cantilever.inp +++ b/src/Mod/Fem/femtest/data/calculix/constraint_selfweight_cantilever.inp @@ -2184,7 +2184,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/constraint_tie.inp b/src/Mod/Fem/femtest/data/calculix/constraint_tie.inp index c95467c939..cc73eb5c7f 100644 --- a/src/Mod/Fem/femtest/data/calculix/constraint_tie.inp +++ b/src/Mod/Fem/femtest/data/calculix/constraint_tie.inp @@ -18630,9 +18630,9 @@ ConstraintFixed,3 *CLOAD ** ConstraintForce ** node loads on shape: BooleanFragments:Edge2 -2,2,1666.6666666666667 -8,2,1666.6666666666667 -385,2,6666.666666666667 +2,2,1666.666666667 +8,2,1666.666666667 +385,2,6666.666666667 @@ -18647,7 +18647,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/constraint_transform_beam_hinged.inp b/src/Mod/Fem/femtest/data/calculix/constraint_transform_beam_hinged.inp index 48de5e40b0..23715d316d 100644 --- a/src/Mod/Fem/femtest/data/calculix/constraint_transform_beam_hinged.inp +++ b/src/Mod/Fem/femtest/data/calculix/constraint_transform_beam_hinged.inp @@ -3785,7 +3785,7 @@ S, E *NODE PRINT, NSET=FemConstraintDisplacment, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/constraint_transform_torque.inp b/src/Mod/Fem/femtest/data/calculix/constraint_transform_torque.inp index 805dc88c20..7489f67648 100644 --- a/src/Mod/Fem/femtest/data/calculix/constraint_transform_torque.inp +++ b/src/Mod/Fem/femtest/data/calculix/constraint_transform_torque.inp @@ -10998,2152 +10998,2152 @@ ConstraintFixed,3 *CLOAD ** ConstraintForce ** node loads on shape: Cut:Face1 -3,2,-0.0 -4,2,-0.0 -58,2,-0.0 -59,2,-0.0 -60,2,-0.0 -61,2,-0.0 -62,2,-0.0 -63,2,-0.0 -64,2,-0.0 -65,2,-0.0 -66,2,-0.0 -67,2,-0.0 -68,2,-0.0 -69,2,-0.0 -70,2,-0.0 -71,2,-0.0 -72,2,-0.0 -73,2,-0.0 -74,2,-0.0 -75,2,-0.0 -76,2,-0.0 -77,2,-0.0 -78,2,-0.0 -79,2,-0.0 -80,2,-0.0 -81,2,-0.0 -82,2,-0.0 -83,2,-0.0 -84,2,-0.0 -85,2,-0.0 -86,2,-0.0 -87,2,-0.0 -88,2,-0.0 -89,2,-0.0 -90,2,-0.0 -91,2,-0.0 -92,2,-0.0 -93,2,-0.0 -94,2,-0.0 -95,2,-0.0 -96,2,-0.0 -97,2,-0.0 -98,2,-0.0 -99,2,-0.0 -100,2,-0.0 -101,2,-0.0 -102,2,-0.0 -103,2,-0.0 -104,2,-0.0 -105,2,-0.0 -106,2,-0.0 -107,2,-0.0 -108,2,-0.0 -109,2,-0.0 -110,2,-0.0 -111,2,-0.0 -112,2,-0.0 -113,2,-0.0 -114,2,-0.0 -115,2,-0.0 -116,2,-0.0 -500,2,-0.0 -501,2,-0.0 -502,2,-0.0 -503,2,-0.0 -504,2,-0.0 -505,2,-0.0 -506,2,-0.0 -507,2,-0.0 -508,2,-0.0 -509,2,-0.0 -510,2,-0.0 -511,2,-0.0 -512,2,-0.0 -513,2,-0.0 -514,2,-0.0 -515,2,-0.0 -516,2,-0.0 -517,2,-0.0 -518,2,-0.0 -519,2,-0.0 -520,2,-0.0 -521,2,-0.0 -522,2,-0.0 -523,2,-0.0 -524,2,-0.0 -525,2,-0.0 -526,2,-0.0 -527,2,-0.0 -528,2,-0.0 -529,2,-0.0 -530,2,-0.0 -531,2,-0.0 -532,2,-0.0 -533,2,-0.0 -534,2,-0.0 -535,2,-0.0 -536,2,-0.0 -537,2,-0.0 -538,2,-0.0 -539,2,-0.0 -540,2,-0.0 -541,2,-0.0 -542,2,-0.0 -543,2,-0.0 -544,2,-0.0 -545,2,-0.0 -546,2,-0.0 -547,2,-0.0 -548,2,-0.0 -549,2,-0.0 -550,2,-0.0 -551,2,-0.0 -552,2,-0.0 -553,2,-0.0 -554,2,-0.0 -555,2,-0.0 -556,2,-0.0 -557,2,-0.0 -558,2,-0.0 -559,2,-0.0 -560,2,-0.0 -561,2,-0.0 -562,2,-0.0 -563,2,-0.0 -564,2,-0.0 -565,2,-0.0 -566,2,-0.0 -567,2,-0.0 -568,2,-0.0 -569,2,-0.0 -570,2,-0.0 -571,2,-0.0 -572,2,-0.0 -573,2,-0.0 -574,2,-0.0 -575,2,-0.0 -576,2,-0.0 -577,2,-0.0 -578,2,-0.0 -579,2,-0.0 -580,2,-0.0 -581,2,-0.0 -582,2,-0.0 -583,2,-0.0 -584,2,-0.0 -585,2,-0.0 -586,2,-0.0 -587,2,-0.0 -588,2,-0.0 -589,2,-0.0 -590,2,-0.0 -591,2,-0.0 -592,2,-0.0 -593,2,-0.0 -594,2,-0.0 -595,2,-0.0 -596,2,-0.0 -597,2,-0.0 -598,2,-0.0 -599,2,-0.0 -600,2,-0.0 -601,2,-0.0 -602,2,-0.0 -603,2,-0.0 -604,2,-0.0 -605,2,-0.0 -606,2,-0.0 -607,2,-0.0 -608,2,-0.0 -609,2,-0.0 -610,2,-0.0 -611,2,-0.0 -612,2,-0.0 -613,2,-0.0 -614,2,-0.0 -615,2,-0.0 -616,2,-0.0 -617,2,-0.0 -618,2,-0.0 -619,2,-0.0 -620,2,-0.0 -621,2,-0.0 -622,2,-0.0 -623,2,-0.0 -624,2,-0.0 -625,2,-0.0 -626,2,-0.0 -627,2,-0.0 -628,2,-0.0 -629,2,-0.0 -630,2,-0.0 -631,2,-0.0 -632,2,-0.0 -633,2,-0.0 -634,2,-0.0 -635,2,-0.0 -636,2,-0.0 -637,2,-0.0 -638,2,-0.0 -639,2,-0.0 -640,2,-0.0 -641,2,-0.0 -642,2,-0.0 -643,2,-0.0 -644,2,-0.0 -645,2,-0.0 -646,2,-0.0 -647,2,-0.0 -648,2,-0.0 -649,2,-0.0 -650,2,-0.0 -651,2,-0.0 -652,2,-0.0 -653,2,-0.0 -654,2,-0.0 -655,2,-0.0 -656,2,-0.0 -657,2,-0.0 -658,2,-0.0 -659,2,-0.0 -660,2,-0.0 -661,2,-0.0 -662,2,-0.0 -663,2,-0.0 -664,2,-0.0 -665,2,-0.0 -666,2,-0.0 -667,2,-0.0 -668,2,-0.0 -669,2,-0.0 -670,2,-0.0 -671,2,-0.0 -672,2,-0.0 -673,2,-0.0 -674,2,-0.0 -675,2,-0.0 -676,2,-0.0 -677,2,-0.0 -678,2,-0.0 -679,2,-0.0 -680,2,-0.0 -681,2,-0.0 -682,2,-0.0 -683,2,-0.0 -684,2,-0.0 -685,2,-0.0 -686,2,-0.0 -687,2,-0.0 -688,2,-0.0 -689,2,-0.0 -690,2,-0.0 -691,2,-0.0 -692,2,-0.0 -693,2,-0.0 -694,2,-0.0 -695,2,-0.0 -696,2,-0.0 -697,2,-0.0 -698,2,-0.0 -699,2,-0.0 -700,2,-0.0 -701,2,-0.0 -702,2,-0.0 -703,2,-0.0 -704,2,-0.0 -705,2,-0.0 -706,2,-0.0 -707,2,-0.0 -708,2,-0.0 -709,2,-0.0 -710,2,-0.0 -711,2,-0.0 -712,2,-0.0 -713,2,-0.0 -714,2,-0.0 -715,2,-0.0 -716,2,-0.0 -717,2,-0.0 -718,2,-0.0 -719,2,-0.0 -720,2,-0.0 -721,2,-0.0 -722,2,-0.0 -723,2,-0.0 -724,2,-0.0 -725,2,-0.0 -726,2,-0.0 -727,2,-0.0 -728,2,-0.0 -729,2,-0.0 -730,2,-0.0 -731,2,-0.0 -732,2,-0.0 -733,2,-0.0 -734,2,-0.0 -735,2,-0.0 -736,2,-0.0 -737,2,-0.0 -738,2,-0.0 -739,2,-0.0 -740,2,-0.0 -741,2,-0.0 -742,2,-0.0 -743,2,-0.0 -744,2,-0.0 -745,2,-0.0 -746,2,-0.0 -747,2,-0.0 -748,2,-0.0 -749,2,-0.0 -750,2,-0.0 -751,2,-0.0 -752,2,-0.0 -753,2,-0.0 -754,2,-0.0 -755,2,-0.0 -756,2,-0.0 -757,2,-0.0 -758,2,-0.0 -759,2,-0.0 -760,2,-0.0 -761,2,-0.0 -762,2,-0.0 -763,2,-0.0 -764,2,-0.0 -765,2,-0.0 -766,2,-0.0 -767,2,-0.0 -768,2,-0.0 -769,2,-0.0 -770,2,-0.0 -771,2,-0.0 -772,2,-0.0 -773,2,-0.0 -774,2,-0.0 -775,2,-0.0 -776,2,-0.0 -777,2,-0.0 -778,2,-0.0 -779,2,-0.0 -780,2,-0.0 -781,2,-0.0 -782,2,-0.0 -783,2,-0.0 -784,2,-0.0 -785,2,-0.0 -786,2,-0.0 -787,2,-0.0 -788,2,-0.0 -789,2,-0.0 -790,2,-0.0 -791,2,-0.0 -792,2,-0.0 -793,2,-0.0 -794,2,-0.0 -795,2,-0.0 -796,2,-0.0 -797,2,-0.0 -798,2,-0.0 -799,2,-0.0 -800,2,-0.0 -801,2,-0.0 -802,2,-0.0 -803,2,-0.0 -804,2,-0.0 -805,2,-0.0 -806,2,-0.0 -807,2,-0.0 -808,2,-0.0 -809,2,-0.0 -810,2,-0.0 -811,2,-0.0 -812,2,-0.0 -813,2,-0.0 -814,2,-0.0 -815,2,-0.0 -816,2,-0.0 -817,2,-0.0 -818,2,-0.0 -819,2,-0.0 -820,2,-0.0 -821,2,-0.0 -822,2,-0.0 -823,2,-0.0 -824,2,-0.0 -825,2,-0.0 -826,2,-0.0 -827,2,-0.0 -828,2,-0.0 -829,2,-0.0 -830,2,-0.0 -831,2,-0.0 -832,2,-0.0 -833,2,-0.0 -834,2,-0.0 -835,2,-0.0 -836,2,-0.0 -837,2,-0.0 -838,2,-0.0 -839,2,-0.0 -840,2,-0.0 -841,2,-0.0 -842,2,-0.0 -843,2,-0.0 -844,2,-0.0 -845,2,-0.0 -846,2,-0.0 -847,2,-0.0 -848,2,-0.0 -849,2,-0.0 -850,2,-0.0 -851,2,-0.0 -852,2,-0.0 -853,2,-0.0 -854,2,-0.0 -855,2,-0.0 -856,2,-0.0 -857,2,-0.0 -858,2,-0.0 -859,2,-0.0 -860,2,-0.0 -861,2,-0.0 -862,2,-0.0 -863,2,-0.0 -864,2,-0.0 -865,2,-0.0 -866,2,-0.0 -867,2,-0.0 -868,2,-0.0 -869,2,-0.0 -870,2,-0.0 -871,2,-0.0 -872,2,-0.0 -873,2,-0.0 -874,2,-0.0 -875,2,-0.0 -876,2,-0.0 -877,2,-0.0 -878,2,-0.0 -879,2,-0.0 -880,2,-0.0 -881,2,-0.0 -882,2,-0.0 -883,2,-0.0 -884,2,-0.0 -885,2,-0.0 -886,2,-0.0 -887,2,-0.0 -888,2,-0.0 -889,2,-0.0 -890,2,-0.0 -891,2,-0.0 -892,2,-0.0 -893,2,-0.0 -894,2,-0.0 -895,2,-0.0 -896,2,-0.0 -897,2,-0.0 -898,2,-0.0 -899,2,-0.0 -900,2,-0.0 -901,2,-0.0 -902,2,-0.0 -903,2,-0.0 -904,2,-0.0 -905,2,-0.0 -906,2,-0.0 -907,2,-0.0 -908,2,-0.0 -909,2,-0.0 -910,2,-0.0 -911,2,-0.0 -912,2,-0.0 -913,2,-0.0 -914,2,-0.0 -915,2,-0.0 -916,2,-0.0 -917,2,-0.0 -918,2,-0.0 -919,2,-0.0 -920,2,-0.0 -921,2,-0.0 -922,2,-0.0 -923,2,-0.0 -924,2,-0.0 -925,2,-0.0 -926,2,-0.0 -927,2,-0.0 -928,2,-0.0 -929,2,-0.0 -930,2,-0.0 -931,2,-0.0 -932,2,-0.0 -933,2,-0.0 -934,2,-0.0 -935,2,-0.0 -936,2,-0.0 -937,2,-0.0 -938,2,-0.0 -939,2,-0.0 -940,2,-0.0 -941,2,-0.0 -942,2,-0.0 -943,2,-0.0 -944,2,-0.0 -945,2,-0.0 -946,2,-0.0 -947,2,-0.0 -948,2,-0.0 -949,2,-0.0 -950,2,-0.0 -951,2,-0.0 -952,2,-0.0 -953,2,-0.0 -954,2,-0.0 -955,2,-0.0 -956,2,-0.0 -957,2,-0.0 -958,2,-0.0 -959,2,-0.0 -960,2,-0.0 -961,2,-0.0 -962,2,-0.0 -963,2,-0.0 -964,2,-0.0 -965,2,-0.0 -966,2,-0.0 -967,2,-0.0 -968,2,-0.0 -969,2,-0.0 -970,2,-0.0 -971,2,-0.0 -972,2,-0.0 -973,2,-0.0 -974,2,-0.0 -975,2,-0.0 -976,2,-0.0 -977,2,-0.0 -978,2,-0.0 -979,2,-0.0 -980,2,-0.0 -981,2,-0.0 -982,2,-0.0 -983,2,-0.0 -1042,2,-0.7517613339181721 -1043,2,-0.7257686392359395 -1044,2,-0.7014178184104366 -1045,2,-0.7420304372135555 -1046,2,-0.819718511920942 -1047,2,-0.8059588763762412 -1048,2,-0.8241849097366634 -1049,2,-0.7701800720803801 -1050,2,-0.793093180361123 -1051,2,-0.819200457385329 -1052,2,-0.816743841499161 -1053,2,-0.8054680385894774 -1054,2,-0.7948075848318611 -1055,2,-0.8324682279742158 -1056,2,-0.8403916126499108 -1057,2,-0.8006565826130224 -1058,2,-0.8964480171605341 -1059,2,-0.9236312004587474 -1060,2,-0.7275043972278085 -1061,2,-0.7052732894066319 -1062,2,-0.72490872378519 -1063,2,-0.7727415445736111 -1064,2,-0.7463918268165238 -1065,2,-0.7780084651976014 -1066,2,-0.7491358634623602 -1067,2,-0.7496650389489617 -1068,2,-0.7693256094559306 -1069,2,-0.7808309998519095 -1070,2,-0.786725981137874 -1071,2,-0.7776149580991732 -1072,2,-0.8104100219383318 -1073,2,-0.8127319511240801 -1074,2,-0.7861634732817672 -1075,2,-0.5952328706878076 -1076,2,-1.6175308640971389 -1077,2,-1.219437294252488 -1078,2,-1.455014329859489 -1079,2,-1.5343781387694992 -1080,2,-1.4270016803744794 -1081,2,-1.4561907979227788 -1082,2,-1.51296767164994 -1083,2,-1.4052343696965843 -1084,2,-1.3922242066585964 -1085,2,-1.3037539986236262 -1086,2,-1.462108580673943 -1087,2,-1.5045042074716086 -1088,2,-1.3843130331262257 -1089,2,-1.4741210461891348 -1090,2,-1.460260238080817 -1091,2,-1.3684038963953107 -1092,2,-1.4101942479476117 -1093,2,-1.5605582785368939 -1094,2,-1.4560534987208815 -1095,2,-1.4159156220585551 -1096,2,-1.5348054276706309 -1097,2,-1.4826100050144482 -1098,2,-1.3824393071430383 -1099,2,-1.5438037640087292 -1100,2,-1.4192412454606198 -1101,2,-1.4069179902553577 -1102,2,-1.7845027967479723 -1103,2,-1.548607262193649 -2330,2,-1.4944580040764106 -2331,2,-1.5619053666243914 -2332,2,-1.8472156683847383 -2335,2,-1.4041748622548422 -2336,2,-1.7874834918165368 -2339,2,-1.521685679255092 -2340,2,-1.35220477874405 -2341,2,-1.3596857925623094 -2342,2,-1.4736345483579965 -2343,2,-1.173785315689464 -2406,2,-2.0234951306096502 -2407,2,-1.8273683273787111 -2408,2,-1.5004200120476343 -2409,2,-1.4781889042264578 -2410,2,-1.4319341898702262 -2411,2,-1.5101054273305032 -2412,2,-1.4515696242487843 -2413,2,-1.4890229088790734 -2414,2,-1.48227735557029 -2415,2,-1.5368557296674945 -2416,2,-1.5437263854532781 -2417,2,-1.5953369428159183 -2418,2,-1.5173766676961906 -2419,2,-1.4945826295990137 -2420,2,-1.593732412465303 -2421,2,-1.5261992679800913 -2422,2,-1.5422550398023056 -2423,2,-1.507005151596497 -2424,2,-1.5133824380670644 -2425,2,-1.5052046873872127 -2426,2,-1.5092395307163942 -2427,2,-1.5057338628738144 -2428,2,-1.5377019655434814 -2429,2,-1.5164367482128158 -2430,2,-1.5573625360504502 -2431,2,-1.5225361274422076 -2432,2,-1.6440638198607354 -2433,2,-1.5340415178381865 -2434,2,-1.5495736094169361 -2435,2,-1.563579096732081 -2436,2,-1.5554685907029004 -2437,2,-1.5661137225710817 -2438,2,-1.5898142251497258 -2439,2,-1.557002699532381 -2440,2,-1.614225644949478 -2441,2,-1.5804214949083693 -2442,2,-1.6470207087886368 -2443,2,-1.6207594686401197 -2444,2,-1.698277283653077 -2445,2,-1.6230813978258682 -2446,2,-1.5687980529675656 -2447,2,-1.6483120114763525 -2448,2,-1.5422295751252528 -2449,2,-1.3370597245937295 -2450,2,-1.6931651488107289 -2451,2,-1.1461291219997698 -2452,2,-1.2202089324227092 -2453,2,-1.225419782191977 -2454,2,-1.209825815875944 -2455,2,-1.976205423130376 -2456,2,-1.580870600414336 -2457,2,-1.814846296198629 -2458,2,-1.4853650864385484 -2459,2,-1.5714045903411726 -2460,2,-1.4335946912587476 -2461,2,-1.4785776590523163 -2462,2,-1.384258320328439 -2463,2,-1.447723978549924 -2464,2,-1.3545443242776873 -2465,2,-1.3387136627189637 -2466,2,-1.506098172751776 -2467,2,-1.548164132385297 -2468,2,-1.5296272523146548 -2469,2,-1.4968122406322948 -2470,2,-1.3352260807457905 -2471,2,-1.3333457674901796 -2472,2,-1.5657920683621407 -2473,2,-1.572080434503073 -2474,2,-1.4811401972915839 -2475,2,-1.542967020998749 -2476,2,-1.4801613974324601 -2477,2,-1.548868227525706 -2478,2,-1.4798925625869008 -2479,2,-1.5269131835561411 -2480,2,-1.4363662832759683 -2481,2,-1.4791550188850082 -2482,2,-1.4526634167387982 -2483,2,-1.57404254007342 -2484,2,-1.5838521477956045 -2485,2,-1.2593732850210573 -2486,2,-1.472844180854777 -2487,2,-1.3761326565818446 -2488,2,-1.3841629378018823 -2489,2,-1.350139961899612 -2490,2,-1.4937177992133162 -2491,2,-1.4423865802218734 -2492,2,-1.6218329115463914 -2493,2,-1.6024648403404884 -2494,2,-1.568391855791446 -2495,2,-1.5773890878074066 -2496,2,-1.6295768833711353 -2497,2,-1.6270738019378628 -2498,2,-1.6131368802346073 -2499,2,-1.608862759476247 -2500,2,-1.6525568862242108 -2501,2,-1.6534676787518943 -2502,2,-1.684942044597705 -2503,2,-1.5153315268551542 -2504,2,-0.9942586411401736 -2505,2,-0.956702689901525 -2506,2,-1.133316366889046 -2507,2,-1.3563477182436057 -2508,2,-0.987053398996384 -2509,2,-1.4599911810143644 -2510,2,-1.5246032798106393 -2511,2,-1.4812324531306336 -2512,2,-1.469513843474075 -2513,2,-1.4582595813437846 -2514,2,-1.5578170711466452 -2515,2,-1.4854826257520015 -2516,2,-1.4791220537628396 -2517,2,-1.540698356469063 -2518,2,-1.4996332592236001 -2519,2,-1.481027905150461 -2520,2,-1.5074047230803354 -2521,2,-1.4292688347873166 -2522,2,-1.4141198142853053 -2523,2,-1.4556154559027994 -2524,2,-1.4079269081806276 -2525,2,-1.391229464564859 -2526,2,-1.4133628305795063 -2527,2,-1.3430290904144833 -2528,2,-1.3448372672619806 -2529,2,-1.4003369098673315 -2530,2,-1.409150010394705 -2531,2,-1.424533208311083 -2532,2,-1.4069181637232018 -2533,2,-1.4422293786764409 -2534,2,-1.4357489781927903 -2535,2,-1.4204611241925427 -2536,2,-1.3744810235289897 -2537,2,-1.3684249940625166 -2538,2,-1.4254615616564748 -2539,2,-1.4060723289077224 -2540,2,-1.4223998150756179 -2541,2,-1.4271902083436225 -2542,2,-1.4438068464893123 -2543,2,-1.448820872019685 -2544,2,-1.430757076922028 -2545,2,-1.4223950332079422 -2546,2,-1.4163285987951555 -2547,2,-1.4289452305480845 -2548,2,-1.4167786309676977 -2549,2,-1.4271670230901303 -2550,2,-1.4336297300303975 -2551,2,-1.4739463550633696 -2552,2,-1.4740923229335228 -2553,2,-1.4358812572344788 -2554,2,-1.4294323440631571 -2555,2,-1.4177953682633866 -2556,2,-1.4366685212982577 -2557,2,-1.3983158176018906 -2558,2,-1.4076020553094577 -2559,2,-1.4308954970916425 -2560,2,-1.4686035107354911 -2561,2,-1.4705342513597166 -2562,2,-1.432236848860285 -2563,2,-1.442073775734311 -2564,2,-1.4300989705904201 -2565,2,-1.4335812355287831 -2566,2,-1.388184550586127 -2567,2,-1.39542117918208 -2568,2,-1.4388481478479769 -2569,2,-1.485301553758748 -2570,2,-1.4677832528848371 -2571,2,-1.4632792983776641 -2572,2,-1.4231160454933878 -2573,2,-1.4196418845025933 -2574,2,-1.4233814667374758 -2575,2,-1.3886193807005707 -2576,2,-1.4294091038195573 -2577,2,-1.403481637911047 -2578,2,-1.9640428679545245 -2579,2,-2.1727610630450376 -2580,2,-1.2309930840530772 -2581,2,-1.5956842442019212 -2582,2,-1.639833959033816 -2583,2,-1.476611585912234 -2584,2,-1.4330780643800927 -2585,2,-1.5036982101401353 -2586,2,-1.469860359525148 -2587,2,-1.378983496603558 -2588,2,-1.3774410633951286 -2589,2,-1.5234646759529895 -2590,2,-1.4485861631952799 -2591,2,-1.4446515624145917 -2592,2,-1.4471749530701936 -2593,2,-1.3987762703639433 -2594,2,-1.4943594127926425 -2595,2,-1.4684957358870296 -2596,2,-1.376566400125549 -2597,2,-1.5636253469995793 -2598,2,-1.5059472674164938 -2599,2,-1.5726031745564828 -2600,2,-1.539028547477626 -2601,2,-1.4554291012671179 -2602,2,-1.4219051195653434 -2603,2,-1.460455770288248 -2604,2,-1.3999972514302408 -2605,2,-1.6400589449068135 -2606,2,-1.5858697079107575 -2607,2,-1.63139392546369 -2608,2,-1.4455312673144858 -2609,2,-1.3598121169763795 -2610,2,-1.3405947054707068 -2611,2,-1.4017739614187543 -2612,2,-1.3938576020847786 -2613,2,-1.6162244758851891 -2614,2,-1.5714058739207026 -2615,2,-1.59625534536733 -2616,2,-1.6009665249136569 -2617,2,-1.5913049640721888 -2618,2,-1.6178560440122656 -2619,2,-1.6201385623859306 -2620,2,-1.6271202674849674 -2621,2,-1.61580703560954 -2622,2,-1.602476426476991 -2623,2,-1.5550665568920425 -2624,2,-1.6604802708999058 -2625,2,-1.756695626557175 -2626,2,-1.550643403331138 -2627,2,-1.66931765351472 -2628,2,-2.0051802333603836 -2629,2,-1.5009287063513455 -2630,2,-1.3739368001357177 -2631,2,-1.4027360797088073 -2632,2,-1.4654664847742505 -2633,2,-1.5289657231127072 -2634,2,-1.2526161954695012 -2635,2,-1.5017604054322105 -2636,2,-1.4868049413392583 -2637,2,-1.42143523705801 -2638,2,-1.372322894948668 -2639,2,-1.4915742561685184 -2640,2,-1.5957102855713134 -2641,2,-1.643474028284776 -2642,2,-1.577787597667853 -2643,2,-1.6774979487505226 -2644,2,-1.5041412233756184 -2645,2,-1.3744442616127601 -2646,2,-1.5424842942834975 -2647,2,-1.455854715009621 -2648,2,-1.3388595444868265 -2649,2,-1.6717617196536914 -2650,2,-1.6354763268346364 -2651,2,-1.5520163782111165 -2652,2,-1.5074847102869582 -2653,2,-1.5326753562992883 -2654,2,-1.8385092184059848 -2655,2,-1.4374279015005542 -2656,2,-1.5728013292748118 -2657,2,-1.5937631131340662 -2658,2,-1.5566027906931705 -2659,2,-1.6254055541916712 -2660,2,-1.3066775212370694 -2661,2,-1.0279551182492406 -2662,2,-1.4704920554799992 -2663,2,-1.5710935676388764 -2664,2,-1.6466998702542153 -2665,2,-1.6362203646543325 -2666,2,-1.6058282549457499 -2667,2,-1.6277451785179338 -2668,2,-1.6111012874602806 -2669,2,-1.530316195181587 -2670,2,-1.547168064688652 -2671,2,-1.5209551015522413 -2672,2,-1.5231365114369912 -2673,2,-1.507133708849924 -2674,2,-1.4969913749808295 -2675,2,-1.493558282748061 -2676,2,-1.5123663431571028 -2677,2,-1.583246180240037 -2678,2,-1.4981228197859378 -2679,2,-1.6789051492182894 -2680,2,-1.6724112906921136 -2681,2,-1.5858303156317177 -2682,2,-1.626752976171702 -2683,2,-1.6221762155923685 -2684,2,-1.5759340390524275 -2685,2,-1.6328792524312639 -2686,2,-1.6424211344232167 -2687,2,-1.5788179647440626 -2688,2,-1.6223832723136788 -2689,2,-1.6412488046774978 -2690,2,-1.617659815750319 -2691,2,-1.7018816480051087 -2692,2,-1.6802780675391764 -2693,2,-1.6594033107072594 -2694,2,-1.6565740355109688 -2695,2,-1.854254500928181 -2696,2,-1.6005956557962817 -2697,2,-1.9533909831208596 -2698,2,-1.8298654604414542 -2699,2,-1.9358011589941373 -2700,2,-1.5516959780381931 -2701,2,-1.7305365496051726 -2702,2,-1.8380758200078302 -2703,2,-1.4770086815302719 -2704,2,-1.511442884213206 -2705,2,-1.3765711436500918 -2706,2,-1.3950411438715882 -2707,2,-1.3611260132936553 -2708,2,-1.296852972263078 -2709,2,-1.8647315277552525 -2710,2,-1.4054631603525132 -2711,2,-1.437661774469667 -2712,2,-1.5425565932145102 -2713,2,-1.4703328621694938 -2714,2,-1.4708774873738542 -2715,2,-1.5076047433387845 -2716,2,-1.494920927908805 -2717,2,-1.4925828809383497 -2718,2,-1.244891801302625 -2719,2,-1.4003978917116238 -2720,2,-1.8461588238854019 -2721,2,-1.5895677473809513 -2722,2,-1.5367231761428934 -2723,2,-1.682445875804853 -2724,2,-1.5222319183958997 -2725,2,-1.4986653974910582 -2726,2,-1.4315443789004487 -2727,2,-1.437910992477784 -2728,2,-1.4118438272907659 -2729,2,-1.3424692958981808 -2730,2,-1.4856842921839568 -2731,2,-1.42845755311697 -2732,2,-1.572948147771203 -2733,2,-1.510251504003866 -2734,2,-1.5991220604155774 -2735,2,-1.6009062941182712 -2736,2,-1.3820721180246733 -2737,2,-1.3724270654653525 -2738,2,-1.2781621706482882 -2739,2,-1.4358173041269675 -2740,2,-1.6188017840706013 -2741,2,-1.654142622968109 -2742,2,-1.592454121898327 -2743,2,-1.591998804670899 -2744,2,-1.6638159147496991 -2745,2,-1.6607081532900008 -2746,2,-1.6432652778118264 -2747,2,-1.6116062580150614 -2748,2,-1.4769730490230577 -2749,2,-1.4364671889500278 -2750,2,-1.5461733047247643 -2751,2,-1.566909706788423 -2752,2,-1.1380496804993696 -2753,2,-1.1773448608258041 -2754,2,-1.8373587254756782 -2755,2,-1.6730376155313822 -2756,2,-1.5003526579921822 -2757,2,-1.5058942247441225 -2758,2,-1.477182226578687 -2759,2,-1.4617799088900039 -2760,2,-1.5098841527903486 -2761,2,-1.4108794990877997 -2762,2,-1.5883919873872416 -2763,2,-1.5488182110584288 -2764,2,-1.543242243442371 -2765,2,-1.621003356757951 -2766,2,-1.865137672792928 -2767,2,-1.2686150156201068 -2768,2,-1.5386722804926138 -2769,2,-1.6588699786889607 -2770,2,-1.6708424979086978 -2771,2,-1.6199758509902562 -2772,2,-1.791558233120977 -2773,2,-1.6141113984429645 -2774,2,-1.5800146667003845 -2775,2,-1.6751786104946762 -2776,2,-1.5530816053008187 -2777,2,-1.5023764492424478 -2778,2,-1.594989721050909 -2779,2,-1.4691925361380511 -2780,2,-1.4621824601118958 -2781,2,-1.4817074337882088 -2782,2,-1.4350788552906142 -2783,2,-1.4167747062644356 -2784,2,-1.4673043624179656 -2785,2,-1.4204462291680293 -2786,2,-1.4258951152656671 -2787,2,-1.4308749784395982 -2788,2,-1.43066819227404 -2789,2,-1.4235169762191175 -2790,2,-1.4410566770661715 -2791,2,-1.4216767387720806 -2792,2,-1.4252565004814828 -2793,2,-1.434756060426306 -2794,2,-1.4367373384290656 -2795,2,-1.4509666251746858 -2796,2,-1.4399330287906587 -2797,2,-1.4587513013283067 -2798,2,-1.459457129962878 -2799,2,-1.4510923566180922 -2800,2,-1.4466965123733881 -2801,2,-1.425160454994097 -2802,2,-1.440078242416103 -2803,2,-1.4183345830897809 -2804,2,-1.4298330446202323 -2805,2,-1.4150915790550205 -2806,2,-1.440583978515332 -2807,2,-1.4405151350226402 -2808,2,-1.4283298300850245 -2809,2,-1.4323782701042886 -2810,2,-1.4237975252277935 -2811,2,-1.4286848048681544 -2812,2,-1.424438821421419 -2813,2,-1.4349056740536341 -2814,2,-1.4168698211625703 -2815,2,-1.4407696256467897 -2816,2,-1.4380605995491955 -2817,2,-1.4312955222718273 -2818,2,-1.430115713610271 -2819,2,-1.420102371224479 -2820,2,-1.4313842233428997 -2821,2,-1.4195160172687515 -2822,2,-1.4319166844906153 -2823,2,-1.4283922184068645 -2824,2,-1.4491584019536996 -2825,2,-1.4660444101089012 -2826,2,-1.4528478676332077 -2827,2,-1.4832389320426353 -2828,2,-1.4916892768942667 -2829,2,-1.4782657020165304 -2830,2,-1.4693097461279891 -2831,2,-1.4203356539841556 -2832,2,-1.4858686668195826 -2833,2,-1.4039099861485214 -2834,2,-1.2756435202923337 -2835,2,-1.1829366777258232 -2836,2,-1.5242841700100853 -2837,2,-1.4058251240842634 -2838,2,-1.480989588244519 -2839,2,-1.5369934352384875 -2840,2,-1.5290242073717952 -2841,2,-1.452065412883981 -2842,2,-1.4382099712493968 -2843,2,-1.3995362874983235 -2844,2,-1.5796754182502208 -2845,2,-1.5385516635075687 -2846,2,-1.5022159646080593 -2847,2,-1.585786958149875 -2848,2,-1.6652293919621772 -2849,2,-1.6663801806510647 -2850,2,-1.6294271656587713 -2851,2,-1.604687616899778 -2852,2,-1.2588962583147487 -2853,2,-1.1622885740892026 -2854,2,-1.0327439942513288 -2855,2,-1.349292068941953 -2856,2,-1.7547957174781186 -2857,2,-1.5320634280783725 -2858,2,-1.4123272282700077 -2859,2,-1.5036762254340805 -2860,2,-1.425200617932343 -2861,2,-1.3755361719187051 -2862,2,-1.5690679233924074 -2863,2,-1.4758089467349358 -2864,2,-1.4522868845176236 -2865,2,-1.4637891082648267 -2866,2,-1.3799801240025436 -2867,2,-1.2623515589582415 -2868,2,-1.1567681390296882 -2869,2,-1.8629139600936977 -2870,2,-1.5855099592792714 -2871,2,-1.6127610179622343 -2872,2,-1.4599926611012142 -2873,2,-1.4997853035376447 -2874,2,-1.553868728188901 -2875,2,-1.3819624016914112 -2876,2,-1.4306104902672305 -2877,2,-1.484069870427622 -2878,2,-1.2675245777129243 -2879,2,-1.6614772195794896 -2880,2,-1.511737769783379 -2881,2,-1.7744203854672638 -2882,2,-1.60075081417581 -2883,2,-1.755442746684846 -2884,2,-1.4806350516515865 -2885,2,-1.5656734136173698 -2886,2,-1.2202047957958275 -2887,2,-1.1711465171660669 -2888,2,-1.4921088957659239 -2889,2,-1.483601199214232 -2890,2,-1.4874649681780023 -2891,2,-1.694611227626465 -2892,2,-2.114791537760258 -2893,2,-1.3652434126984943 -2894,2,-1.779704186165129 -2895,2,-1.4605756413049191 -2896,2,-1.5709871877737083 -2897,2,-1.5403952902275675 -2898,2,-1.3669997415566157 -2899,2,-1.5070547834961734 -2900,2,-1.4913071152790556 -2901,2,-1.4858085661634124 -2902,2,-1.4784425197775701 -2903,2,-1.4596016692980904 -2904,2,-1.469065876611148 -2905,2,-1.4735212286147268 -2906,2,-1.470155963062207 -2907,2,-1.4716309450620488 -2908,2,-1.4594322070281616 -2909,2,-1.4863378159690201 -2910,2,-1.528969922247545 -2911,2,-1.4588292922104642 -2912,2,-1.545797581010391 -2913,2,-1.4832943049708784 -2914,2,-1.479891886917764 -2915,2,-1.5578266911311796 -2916,2,-1.5652873774021476 -2917,2,-1.517884977258687 -2918,2,-1.5471849462729907 -2919,2,-1.6115332297388172 -2920,2,-1.5035882918111667 -2921,2,-1.6344111923319387 -2922,2,-1.6046910988013832 -2923,2,-1.5674870243563377 -2924,2,-1.5442074890847828 -2925,2,-1.6817325268654264 -2926,2,-1.8057999663247117 -2927,2,-1.5078115045634732 -2928,2,-1.5644135262236738 -2929,2,-1.5180506902193935 -2930,2,-1.49783702654718 -2931,2,-1.5495426423230707 -2932,2,-1.550095152613687 -2933,2,-1.5207659940667118 -2934,2,-1.536715104783214 -2935,2,-1.5556756964593583 -2936,2,-1.5301464647306686 -2937,2,-1.524726809049946 -2938,2,-1.5840846676917577 -2939,2,-1.5837284618854996 -2940,2,-1.5178923679089429 -2941,2,-1.5265443774580676 -2942,2,-1.4886527494287358 -2943,2,-1.4970227808976926 -2944,2,-1.503856691064242 -2945,2,-1.4734010901575443 -2946,2,-1.73816695772504 -2947,2,-1.8258176252971952 -2948,2,-1.4794905382059758 -2949,2,-1.5613709875208697 -2950,2,-1.4794534650860034 -2951,2,-1.5218612846689648 -2952,2,-1.3188778411063655 -2953,2,-1.4246683166701402 -2954,2,-1.5539338829189306 -2955,2,-1.5442225744369356 -2956,2,-1.5511978757675782 -2957,2,-1.5382098776503494 -2958,2,-1.4498221761232568 -2959,2,-1.495602343209776 -2960,2,-1.5310541760535825 -2961,2,-1.5811140661343455 -2962,2,-2.0477604531647446 -2963,2,-2.039712021462717 -2964,2,-1.743383372531552 -2965,2,-1.4655781885363037 -2966,2,-1.439762498228578 -2967,2,-1.4191397209167058 -2968,2,-1.4058859001286776 -2969,2,-1.335837274034715 -2970,2,-1.4626113122115454 -2971,2,-1.2270328685736742 -2972,2,-1.624609955795656 -2973,2,-1.6554850605768108 -2974,2,-1.4183152749924375 -2975,2,-1.4519513645473512 -2976,2,-1.4116728927727624 -2977,2,-1.6095974526459698 -2978,2,-1.75833302145951 -2979,2,-1.6928200457516511 -2980,2,-1.694753694717487 -2981,2,-1.8102957489628049 -2982,2,-1.6486615370162998 -2983,2,-1.5609958732900648 -2984,2,-1.8145436324959956 -2985,2,-1.4984187420857351 -2986,2,-1.5119148948429462 -2987,2,-1.5927221438762806 -2988,2,-1.504521899498858 -2989,2,-1.463232189832643 -2990,2,-1.544338768394133 -2991,2,-1.4451069548804543 -2992,2,-1.4361890220639566 -2993,2,-1.433899402564125 -2994,2,-1.440921834592892 -2995,2,-1.4454909466897867 -2996,2,-1.4299920966365098 -2997,2,-1.446341546104844 -2998,2,-1.4521377265672244 -2999,2,-1.4398012245791523 -3000,2,-1.4537349332221743 -3001,2,-1.4509997311828173 -3002,2,-1.4590505729384686 -3003,2,-1.4479297722646307 -3004,2,-1.438105181033525 -3005,2,-1.4431235981064043 -3006,2,-1.4263852381969644 -3007,2,-1.4223826499091705 -3008,2,-1.425823881737381 -3009,2,-1.4189320439273794 -3010,2,-1.4165610839225222 -3011,2,-1.4399806242580495 -3012,2,-1.4183008734220746 -3013,2,-1.4148007174089146 -3014,2,-1.4359529699745757 -3015,2,-1.4152245356847364 -3016,2,-1.420930180386166 -3017,2,-1.4185932118092643 -3018,2,-1.4176959415570773 -3019,2,-1.4187274568524928 -3020,2,-1.4394426760121914 -3021,2,-1.4226863053295347 -3022,2,-1.4252583275214967 -3023,2,-1.4411006224157532 -3024,2,-1.428056054690163 -3025,2,-1.4174777558308693 -3026,2,-1.4325918254613461 -3027,2,-1.4244990932806263 -3028,2,-1.453467121435305 -3029,2,-1.412275207781734 -3030,2,-1.4655221034397845 -3031,2,-1.4615015580700381 -3032,2,-1.469762575016669 -3033,2,-1.4700333842981592 -3034,2,-1.498117583022418 -3035,2,-1.4526812594918044 -3036,2,-1.4972702029738385 -3037,2,-1.602017428438528 -3038,2,-1.5152346146312698 -3039,2,-1.5296280837490213 -3040,2,-1.5434750739418501 -3041,2,-1.5064066757241443 -3042,2,-1.5708345797324528 -3043,2,-1.281679597017523 -3044,2,-1.3596914869241992 -3045,2,-1.5737904159988378 -3046,2,-1.5760196171749734 -3047,2,-1.2430901808929493 -3048,2,-1.2327843207208635 -3049,2,-1.2198541007168868 -3050,2,-1.254366134354025 -3051,2,-1.7954837228593155 -3052,2,-1.5250310496375794 -3053,2,-1.5710962286114447 -3054,2,-1.4800658169629508 -3055,2,-1.4788378550556487 -3056,2,-1.473096350114756 -3057,2,-1.4360564734860055 -3058,2,-1.4724800753817222 -3059,2,-1.5903855560000133 -3060,2,-1.6013187074399924 -3061,2,-1.6024984433985676 -3062,2,-1.5093306603888688 -3063,2,-1.5867724930360971 -3064,2,-1.4815867037173187 -3065,2,-1.5919080549853342 -3066,2,-1.6224454923905796 -3067,2,-1.6224575297161692 -3068,2,-1.720200392155857 -3069,2,-1.8705713052178063 -3070,2,-1.5833485726446774 -3071,2,-1.621627287481852 -3072,2,-1.5413691536966625 -3073,2,-1.5161975997976027 -3074,2,-1.528914355125306 -3075,2,-1.5588714686408287 -3076,2,-1.4266060237920841 -3077,2,-1.7905646989600181 -3078,2,-1.7033369370773357 -3079,2,-1.723460932146774 -3080,2,-1.4819220128437594 -3081,2,-1.4122363155972837 -3082,2,-1.5435090597946215 -3083,2,-1.4146705509557218 -3084,2,-1.7136581659883083 -3085,2,-1.7143375888439534 -3086,2,-1.7022546009911808 -3087,2,-1.71790066753108 -3088,2,-1.6674461041982964 -3089,2,-1.687182608643845 -3090,2,-1.530217741842968 -3091,2,-1.5597598125745717 -3092,2,-1.646590575552708 -3093,2,-1.5738434438397617 -3094,2,-1.7046241749578972 -3095,2,-1.628152556656752 -3096,2,-1.7102449504047061 -3097,2,-1.5795564906834296 -3098,2,-1.3622928980412443 -3099,2,-1.7545027139395524 -3100,2,-1.6894070237728642 -3101,2,-1.6277515773837963 -3102,2,-1.5854895145319203 -3103,2,-1.486743713591443 -3104,2,-1.381934210234669 -3105,2,-1.592493294706641 -3106,2,-1.4809802461019177 -3107,2,-1.291203084467842 -3108,2,-1.3830289025241485 -3109,2,-1.3122511417635183 -3110,2,-1.2339241293153105 -3111,2,-1.4434843160326114 -3112,2,-1.488228902954136 -3113,2,-1.5304003675353872 -3114,2,-1.53058464360771 -3115,2,-1.7941246808452713 -3116,2,-1.7724848076394875 -3117,2,-1.6650006427346151 -3118,2,-1.5115156844074973 -3119,2,-1.5591022698060273 -3120,2,-1.5512552598990095 -3121,2,-1.5588511106669876 -3122,2,-1.5478350568190082 -3123,2,-1.5701319658659032 -3124,2,-1.5262799640935893 -3125,2,-1.3571864902988908 -3126,2,-1.4984309641570208 -3127,2,-1.4135059055174004 -3128,2,-1.3130335552754697 -3129,2,-1.4905177790445456 -3130,2,-1.6596307244043185 -3131,2,-1.6230958459945237 -3132,2,-1.6422485458754223 -3133,2,-1.6856959609970863 -3134,2,-1.8513938707879047 -3135,2,-2.0463893195590606 -3136,2,-1.405032567762497 -3137,2,-1.4063618487319423 -3138,2,-2.0487035541264156 -3139,2,-1.9055862179178826 -3140,2,-2.2166238540054763 -3141,2,-1.7714303930244026 -3142,2,-1.6534677613755477 -3143,2,-2.0784740382407114 -3144,2,-1.5915882331361892 -3145,2,-1.5148619281929399 -3146,2,-1.6090503555592575 -3147,2,-1.445712272029147 -3148,2,-1.4081465787137164 -3149,2,-1.3533518697054598 -3150,2,-1.413157205602599 -3151,2,-1.420405401603672 -3152,2,-1.4085950216921652 -3153,2,-1.4256454174494195 -3154,2,-1.4458588331939493 -3155,2,-1.4328391149533908 -3156,2,-1.4593120010908853 -3157,2,-1.4608114558894967 -3158,2,-1.453202341225474 -3159,2,-1.4476196830967893 -3160,2,-1.428863688348989 -3161,2,-1.4566609634379406 -3162,2,-1.421388563211071 -3163,2,-1.4306651651709 -3164,2,-1.4432299648605607 -3165,2,-1.4488244959793621 -3166,2,-1.460839719191499 -3167,2,-1.468094582954963 -3168,2,-1.4591830249128825 -3169,2,-1.4465716555733041 -3170,2,-1.4755832861451352 -3171,2,-1.4327120534211528 -3172,2,-1.4324954689003877 -3173,2,-1.4597809185322308 -3174,2,-1.447639288401885 -3175,2,-1.4626230647309797 -3176,2,-1.461576444088737 -3177,2,-1.4632494958391262 -3178,2,-1.4494374776348373 -3179,2,-1.4801837921722225 -3180,2,-1.4383566584884682 -3181,2,-1.4309339186858603 -3182,2,-1.4652845553508305 -3183,2,-1.421195599865542 -3184,2,-1.4371048497548213 -3185,2,-1.4546059833602512 -3186,2,-1.4656241888350776 -3187,2,-1.4691135783038516 -3188,2,-1.4616853942784784 -3189,2,-1.4560528081487336 -3190,2,-1.4542551848616467 -3191,2,-1.4431592342233557 -3192,2,-1.4887243412768534 -3193,2,-1.413107415053994 -3194,2,-1.4613642638398274 -3195,2,-1.5965500654369382 -3196,2,-1.619356973091023 -3197,2,-1.63169822393767 -3198,2,-1.441118683367217 -3199,2,-1.5208659651955754 -3200,2,-1.6490650292959887 -3201,2,-1.6280056650692407 -3202,2,-1.6194775837866922 -3203,2,-1.5629711906623096 -3204,2,-1.5673304595971513 -3205,2,-1.5728258960783645 -3206,2,-1.4719261587293033 -3207,2,-1.4455622128501506 -3208,2,-1.496248556256883 -3209,2,-1.573539997501244 -3210,2,-1.5730828808146529 -3211,2,-1.5575875128980756 -3212,2,-1.561704693012007 -3213,2,-1.4272161973630104 -3214,2,-1.3786150894899547 -3215,2,-1.4727546447393247 -3216,2,-1.4349420237962311 -3217,2,-1.592865302615394 -3218,2,-1.717244112134948 -3219,2,-1.755185399772349 -3220,2,-1.5201434356713548 -3221,2,-1.574728967233265 -3222,2,-1.467253121097214 -3223,2,-1.4161623276877122 -3224,2,-1.4383160890961706 -3225,2,-1.4282030282812161 -3226,2,-1.5181889042186838 -3227,2,-1.718496743245251 -3228,2,-1.7037278618460687 -3229,2,-1.6841864923820213 -3230,2,-1.6716551571255915 -3231,2,-1.5866191169423824 -3232,2,-1.2057317649201824 -3233,2,-1.1691746533157366 -3234,2,-1.2123700774812654 -3235,2,-1.262646062692508 -3236,2,-1.6857669875072323 -3237,2,-1.6676324548364885 -3238,2,-1.713075515870793 -3239,2,-1.6332260000859398 -3240,2,-1.5854047870701922 -3241,2,-1.5689767522305906 -3242,2,-1.5916760588298144 -3243,2,-1.5741771659168484 -3244,2,-1.7392401288916153 -3245,2,-1.7094294238302976 -3246,2,-1.7599976549492466 -3247,2,-1.5972334126573269 -3248,2,-1.6395678579414612 -3249,2,-1.8315786878540725 -3250,2,-1.5665244620142265 -3251,2,-1.2558763245037288 -3252,2,-1.3873713358213677 -3253,2,-1.6936780086273167 -3254,2,-1.6735761313889246 -3255,2,-1.7724350854350701 -3256,2,-1.811211387659416 -3257,2,-1.6880918102031475 -3258,2,-1.5483671307216993 -3259,2,-1.7017024516017762 -3260,2,-1.60220727975886 -3261,2,-1.5773207324084209 -3262,2,-1.606633898688523 -3263,2,-1.5752961757249326 -3264,2,-1.4560947432978266 -3265,2,-1.5699261616795013 -3266,2,-1.6424909941756431 -3267,2,-1.6008580372015422 -3268,2,-1.59325323417389 -3269,2,-1.435035595473511 -3270,2,-1.542029110997762 -3271,2,-1.5560043037983535 -3272,2,-1.5264130965664446 -3273,2,-1.7207658883767805 -3274,2,-1.73129687118449 -3275,2,-1.7743697962772564 -3276,2,-1.7870617503677717 -3277,2,-1.6692447627747553 -3278,2,-1.5172164673831503 -3279,2,-1.4588851252360404 -3280,2,-1.4703208207601792 -3281,2,-1.5709718920065598 -3282,2,-1.560585988868457 -3283,2,-1.5769450846386708 -3284,2,-1.62034214316918 -3285,2,-1.727440681718831 -3286,2,-1.4536763724018749 -3287,2,-1.2414845730844326 -3288,2,-1.6025275734275524 -3289,2,-1.6103963757981068 -3290,2,-1.7624158752575367 -3291,2,-1.541710885476423 -3292,2,-1.6344009315742498 -3293,2,-1.6758969798633405 -3294,2,-1.757316984010519 -3295,2,-1.5932407397533954 -3296,2,-1.549528414129738 -3297,2,-1.5020848324021585 -3298,2,-2.0132699280379773 -3299,2,-2.264123775150049 -3300,2,-1.5960977090454622 -3301,2,-1.361832104730068 -3302,2,-1.5101069007986985 -3303,2,-1.7338922992482968 -3304,2,-1.5490090629664555 -3305,2,-1.6280011531353489 -3306,2,-1.744614052383715 -3307,2,-1.7242092176504231 -3308,2,-1.3318064743999711 -3309,2,-1.674236653122291 -3310,2,-1.7283858296007464 -3311,2,-1.7679595339782461 -3312,2,-1.7363871973909069 -3313,2,-1.443721225311885 -3314,2,-1.4430788553026688 -3315,2,-1.6033225638942812 -3316,2,-1.614120711764354 -3317,2,-1.6163786295772586 -3318,2,-1.83854552272954 -3319,2,-1.7111560398061243 -3320,2,-1.7674952142928737 -3321,2,-1.5293307146283173 -3322,2,-1.5697300034638535 -3323,2,-1.5505503649920966 -3324,2,-1.5506545716745583 -3325,2,-2.269091295593817 -3326,2,-2.180698419127777 -3327,2,-2.246213445062051 -3328,2,-1.2632482100454037 -3329,2,-1.2324831577108386 -3330,2,-1.325292003012975 -3331,2,-1.4348534811569889 -3332,2,-1.3718857091460874 -3333,2,-1.4518493784171413 -3334,2,-1.4612686558591297 -3335,2,-1.502919073075079 -3336,2,-1.4614184663866832 -3337,2,-1.4511781897506253 -3338,2,-1.4942692592875035 -3339,2,-1.4531373571644808 -3340,2,-1.4605946649996224 -3341,2,-1.4707459170483914 -3342,2,-1.465919661170043 -3343,2,-1.4777542109712278 -3344,2,-1.491712956295257 -3345,2,-1.4933422271058012 -3346,2,-1.4888208657040112 -3347,2,-1.4974853596295477 -3348,2,-1.4842943456820465 -3349,2,-1.4838634798190404 -3350,2,-1.473243479172874 -3351,2,-1.4806724815457144 -3352,2,-1.4903519437395278 -3353,2,-1.4813446049485943 -3354,2,-1.4923640538167997 -3355,2,-1.4861713311326359 -3356,2,-1.502135322196531 -3357,2,-1.4897949028870265 -3358,2,-1.4896986490469415 -3359,2,-1.4878185928380383 -3360,2,-1.4886114304298381 -3361,2,-1.4937995536084203 -3362,2,-1.4925634194342154 -3363,2,-1.4905437214204487 -3364,2,-1.4751411191935084 -3365,2,-1.5084744836945894 -3366,2,-1.4663112802224565 -3367,2,-1.4471990209025234 -3368,2,-1.4731323548478061 -3369,2,-1.4251834713786269 -3370,2,-1.4518334313443177 -3371,2,-1.4431834477981642 -3372,2,-1.4718360842478762 -3373,2,-1.6236482160742762 -3374,2,-1.466887680338856 -3375,2,-1.7457938016821768 -3376,2,-1.772796610973547 -3377,2,-1.8332424184723477 -3378,2,-1.7252291009423844 -3379,2,-1.4011952186993633 -3380,2,-1.3880538263868165 -3381,2,-1.5957150904379396 -3382,2,-1.4863896383266049 -3383,2,-1.4425793649130192 -3384,2,-1.6687397256869898 -3385,2,-1.7487779944235975 -3386,2,-1.4556865499524407 -3387,2,-1.7063938880292648 -3388,2,-1.6031782517847517 -3389,2,-1.6119081555400714 -3390,2,-1.8936361337632266 -3391,2,-1.7292804825337595 -3392,2,-1.730190806007918 -3393,2,-1.4622711336047038 -3394,2,-1.8160630859078812 -3395,2,-1.9205426937329797 -3396,2,-1.8660347103948818 -3397,2,-1.2763326001076774 -3398,2,-1.7335149162638954 -3399,2,-1.9016878929738945 -3400,2,-1.5183400769245425 -3401,2,-1.5492993316958588 -3402,2,-1.7154450930111091 -3403,2,-1.9416244872844577 -3404,2,-1.829237368095178 -3405,2,-1.7864266347306987 -3406,2,-1.7803129771684494 -3407,2,-1.5436789510115176 -3408,2,-1.578433221591558 -3409,2,-1.8796808747128426 -3410,2,-2.073498542026807 -3411,2,-1.6468242285583086 -3412,2,-1.6184151801554876 -3413,2,-1.7013668136328333 -3414,2,-1.6068470002765805 -3415,2,-1.6382694121169221 -3416,2,-1.4874596707513168 -3417,2,-1.6789681124181826 -3418,2,-1.2935803255453617 -3419,2,-1.4534692529436115 -3420,2,-1.4357792512411198 -3421,2,-1.4532767668516238 -3422,2,-1.5907291316503622 -3423,2,-1.6320118690968297 -3424,2,-1.5968399675992904 -3425,2,-1.6128986343002638 -3426,2,-1.7687665728161408 -3427,2,-2.021766916667501 -3428,2,-1.905783010388654 -3429,2,-2.2500378935200507 -3430,2,-1.619743902113777 -3431,2,-1.6055012728164033 -3432,2,-1.516381382183034 -3433,2,-1.5069985393379721 -3434,2,-1.442220390955952 -3435,2,-1.4174967712296578 -3436,2,-1.7634585039641542 -3437,2,-1.6728429022535394 -3438,2,-1.703048300424322 -3439,2,-1.5869273476517882 -3440,2,-1.9888409208945048 -3441,2,-1.3642750038475449 -3442,2,-1.510993516245642 -3443,2,-1.593487328699524 -3444,2,-1.6098399158981447 -3445,2,-1.6219515153836224 -3446,2,-1.5910707011771101 -3447,2,-1.7673723887608062 -3448,2,-1.8456470994935568 -3449,2,-1.8077524818327955 -3450,2,-1.5328227640301408 -3451,2,-1.5473390144388577 -3452,2,-1.6453220494557512 -3453,2,-1.3706503692557521 -3454,2,-2.500078385265467 -3455,2,-1.7214922348831618 -3456,2,-1.7293342371989355 -3457,2,-2.0460856936484197 -3458,2,-1.812893967768691 -3459,2,-1.885236458977152 -3460,2,-1.8343434014813205 -3461,2,-1.8100461919445587 -3462,2,-1.4933537788202254 -3463,2,-1.3487292059149625 -3464,2,-1.4778918334018034 -3465,2,-1.8859526802229154 -3466,2,-1.740472381610107 -3467,2,-1.4114217510554095 -3468,2,-1.7273595520256577 -3469,2,-1.9724873620825052 -3470,2,-2.0880530706765206 -3471,2,-1.926671537265044 -3472,2,-2.0075153458804587 -3473,2,-1.9468490182966267 -3474,2,-1.661773448301841 -3475,2,-1.7189942367576836 -3476,2,-1.6304651835848933 -3477,2,-1.615939298788936 -3478,2,-1.6198322084817154 -3479,2,-1.6540893697856127 -3480,2,-1.3691545578176902 -3481,2,-1.577954130545083 -3482,2,-1.675783228853117 -3483,2,-1.5241843541806974 -3484,2,-1.8523712780691666 -3485,2,-1.5446076185525175 -3486,2,-1.473240797922128 -3487,2,-1.4403783164768027 -3488,2,-1.5891477000014569 -3489,2,-1.6851470371422308 -3490,2,-1.6910168245548696 -3491,2,-1.8199167362285062 -3492,2,-1.655794176103901 -3493,2,-1.706618922927209 -3494,2,-1.6056087554543619 -3495,2,-1.5875396642247983 -3496,2,-1.507585515033488 -3497,2,-1.667425133970046 -3498,2,-1.4943024494304338 -3499,2,-1.484824209481802 -3500,2,-1.4904255588540507 -3501,2,-1.4983339408935257 -3502,2,-1.5482860236939429 -3503,2,-1.479703269420635 -3504,2,-1.5422238772270491 -3505,2,-1.4806041017077527 -3506,2,-1.5976468934843326 -3507,2,-1.4608835826528688 -3508,2,-1.4508443749753335 -3509,2,-1.464858885956478 -3510,2,-1.4593763666140602 -3511,2,-1.5069452191383041 -3512,2,-1.4378705991151113 -3513,2,-1.5180564741924274 -3514,2,-1.521193771170867 -3515,2,-1.542243173986683 -3516,2,-1.5130697644965379 -3517,2,-1.461916208845438 -3518,2,-1.5441868543402775 -3519,2,-1.4667572892817007 -3520,2,-1.5188532069554934 -3521,2,-1.4333216369700714 -3522,2,-1.5295761480372854 -3523,2,-1.521228512298428 -3524,2,-1.5586754519394488 -3525,2,-1.501288985678585 -3526,2,-1.434874833163164 -3527,2,-1.5467288586512924 -3528,2,-1.4240381854334552 -3529,2,-1.4491530569219269 -3530,2,-1.3961921146569434 -3531,2,-1.446207329496928 -3532,2,-1.4708317710218883 -3533,2,-1.4491289393275237 -3534,2,-1.6155904628207867 -3535,2,-1.688676825371485 -3536,2,-1.5322460250084453 -3537,2,-1.3746503670453103 -3538,2,-1.2093728457304402 -3539,2,-1.2130532025745315 -3540,2,-1.1996461331062804 -3541,2,-1.1934354499992808 -3542,2,-2.273861344786303 -3543,2,-2.049053567964828 -3544,2,-2.2687502816063625 -3545,2,-1.917920369185633 -3546,2,-1.981893346336051 -3547,2,-1.8372507367554851 -3548,2,-1.7696884151167473 -3549,2,-1.7061418627047014 -3550,2,-1.923653423524018 -3551,2,-1.6078181791965942 -3552,2,-1.6015648662432194 -3553,2,-1.9069149149025661 -3554,2,-1.5739802481578127 -3555,2,-1.5183953289198018 -3556,2,-1.4550680911075713 -3557,2,-1.6042043541917004 -3558,2,-2.516716155841483 -3559,2,-2.12289628764407 -3560,2,-2.591281141843301 -3561,2,-2.335222084719013 -3562,2,-2.227099493013001 -3563,2,-2.2307236271520505 -3564,2,-1.5927593791872277 -3565,2,-1.8147119432236931 -3566,2,-1.1671788849426863 -3567,2,-1.2201235956501109 -3568,2,-1.6949575457765296 -3569,2,-1.7426449800137673 -3570,2,-1.7624145634232877 -3571,2,-1.8592765795465713 -3572,2,-1.9736044452307682 -3573,2,-1.8667615950036858 -3574,2,-1.8376690437561725 -3575,2,-1.725706324365012 -3576,2,-1.593289952188702 -3577,2,-1.5725683553082057 -3578,2,-1.7560413444998777 -3579,2,-1.6078099315340102 -3580,2,-1.582953897409924 -3581,2,-1.6391877610747554 -3582,2,-2.4095924338276613 -3583,2,-1.7946388167292522 -3584,2,-1.8778928865396234 -3585,2,-1.4154111163458094 -3586,2,-1.3018342378144878 -3587,2,-1.306506370913478 -3588,2,-1.2962364183258979 -3589,2,-1.2097146869902817 -3590,2,-1.4178486140488018 -3591,2,-1.5450810203824423 -3592,2,-1.7838148018304019 -3593,2,-2.0326167122076595 -3594,2,-1.8602092702410233 -3595,2,-2.006166736083476 -3596,2,-1.965798624544773 -3597,2,-1.505551334515659 -3598,2,-1.422640165376472 -3599,2,-1.4371585288285775 -3600,2,-1.5538908324899092 -3601,2,-1.821417911930978 -3602,2,-1.7860728415786693 -3603,2,-1.838506732788415 -3604,2,-1.8826958491718353 -3605,2,-2.0158884800800227 -3606,2,-1.7319368716033354 -3607,2,-1.8848448254775405 -3608,2,-1.8582285672592485 -3609,2,-1.2972692699533492 -3610,2,-1.9295397460569763 -3611,2,-1.9855443847909275 -3612,2,-1.9291759759757054 -3613,2,-2.094544201581167 -3614,2,-2.066649951002566 -3615,2,-2.0219632089158464 -3616,2,-2.183434975282826 -3617,2,-1.7049911481598985 -3618,2,-1.6275922834943217 -3619,2,-1.6529194931888684 -3620,2,-1.9387147122707034 -3621,2,-2.1634239159533997 -3622,2,-1.8716998636784454 -3623,2,-1.7779067023216188 -3624,2,-1.7166957176350401 -3625,2,-2.410849173685201 -3626,2,-1.9074031491452943 -3627,2,-1.8945648589097874 -3628,2,-1.868236281279552 -3629,2,-1.9419614440203599 -3630,2,-1.6057384061907702 -3631,2,-1.772732844133857 -3632,2,-1.5305468575696366 -3633,2,-1.493571373730526 -3634,2,-1.5295426070117393 -3635,2,-1.492327324245742 -3636,2,-1.5087805237040022 -3637,2,-1.5159728753621393 -3638,2,-1.5767720649672827 -3639,2,-1.5740375359980727 -3640,2,-1.5248604922002398 -3641,2,-1.502869303989514 -3642,2,-1.4822778499708584 -3643,2,-1.528379234587006 -3644,2,-1.4653287708070273 -3645,2,-1.456669150474491 -3646,2,-1.5174164017061524 -3647,2,-1.513472872821819 -3648,2,-1.5492646583995566 -3649,2,-1.4653004060376325 -3650,2,-1.5480710417747117 -3651,2,-1.5311322719715528 -3652,2,-1.5034390823274448 -3653,2,-1.4714206102524463 -3654,2,-1.4751717878750483 -3655,2,-1.5061998498551246 -3656,2,-1.548429685170633 -3657,2,-1.5639764598093653 -3658,2,-1.5268705615892637 -3659,2,-1.560377502260066 -3660,2,-1.5374718609002453 -3661,2,-1.5405852230143844 -3662,2,-1.453349269421317 -3663,2,-1.4181779443184162 -3664,2,-1.4459998975005248 -3665,2,-1.3368072892495517 -3666,2,-1.476232650287419 -3667,2,-1.9059591255419521 -3668,2,-2.0412040045240984 -3669,2,-1.3001388721555953 -3670,2,-1.2305476121664367 -3671,2,-1.3326039493959452 -3672,2,-1.366101130595723 -3673,2,-1.5085254096459146 -3674,2,-1.2899885199450731 -3675,2,-1.513217672421756 -3676,2,-1.8533621684944896 -3677,2,-1.418616020678343 -3678,2,-1.5116995541692524 -3679,2,-1.7541362631173176 -3680,2,-1.924530818251651 -3681,2,-1.6979011992314035 -3682,2,-1.628179231796517 -3683,2,-1.5573622080776364 -3684,2,-1.572949830518568 -3685,2,-1.703906774942834 -3686,2,-2.1343105488489806 -3687,2,-2.18147024484791 -3688,2,-2.145899134514388 -3689,2,-1.519472896240767 -3690,2,-1.6753727355038508 -3691,2,-1.538487961513942 -3692,2,-1.7669024348202877 -3693,2,-1.780894242032057 -3694,2,-2.3263891853324443 -3695,2,-2.016783918775748 -3696,2,-1.7907038336163417 -3697,2,-1.8523273196289782 -3698,2,-1.711812928980629 -3699,2,-1.5285949533964467 -3700,2,-2.166767425953038 -3701,2,-1.6671769596389623 -3702,2,-1.5895445785293043 -3703,2,-1.4246811874679395 -3704,2,-1.4804200343186098 -3705,2,-2.072910833413858 -3706,2,-1.9596619311929249 -3707,2,-1.237704275442378 -3708,2,-1.2219970755010412 -3709,2,-1.258891750822284 -3710,2,-1.2984133435152265 -3711,2,-1.356995589081286 -3712,2,-1.47939848667245 -3713,2,-1.3152362806103115 -3714,2,-1.562110906007698 -3715,2,-1.7294011341094377 -3716,2,-1.6101442888403044 -3717,2,-2.093124660587757 -3718,2,-2.0194444532176563 -3719,2,-1.6893148540314853 -3720,2,-1.6293723730928746 -3721,2,-1.821918886053155 -3722,2,-1.7954110544363353 -3723,2,-1.1836319785143712 -3724,2,-1.588583363740037 -3725,2,-1.6265654945511492 -3726,2,-1.5829344039890612 -3727,2,-1.5244011127255155 -3728,2,-1.358389935920542 -3729,2,-1.5727066573517303 -3730,2,-1.8048342752481674 -3731,2,-1.9336837271852516 -3732,2,-2.024795111146275 -3733,2,-1.6952570760133643 -3734,2,-2.1459326026293493 -3735,2,-2.070438185399374 -3736,2,-1.4784230912139629 -3737,2,-1.4836351893932522 -3738,2,-1.3886977062045571 -3739,2,-2.1906532072921823 -3740,2,-1.507040941582763 -3741,2,-1.5309796346409432 -3742,2,-1.4818905143070764 -3743,2,-1.523414052020783 -3744,2,-1.4932916481828495 -3745,2,-1.495937625510034 -3746,2,-1.499544919538826 -3747,2,-1.53479756924035 -3748,2,-1.5163666241555311 -3749,2,-1.5444261903781518 -3750,2,-1.5421796320398593 -3751,2,-1.5428776456894149 -3752,2,-1.498723256703875 -3753,2,-1.447403501094887 -3754,2,-1.5003492268089975 -3755,2,-1.4497503918069614 -3756,2,-1.464894047405966 -3757,2,-1.4639345412824054 -3758,2,-1.4845935847368046 -3759,2,-1.5301476264209843 -3760,2,-1.4777390613310515 -3761,2,-1.5470671605325212 -3762,2,-1.5289953992966918 -3763,2,-1.5292510530092986 -3764,2,-1.5271632860830804 -3765,2,-1.533424174583713 -3766,2,-1.5688402287128431 -3767,2,-1.8855028804500187 -3768,2,-1.5579387960299294 -3769,2,-1.544339546325596 -3770,2,-1.605774341746164 -3771,2,-1.6027377278265682 -3772,2,-1.6124376197893415 -3773,2,-1.9624262817758698 -3774,2,-1.9591608096820414 -3775,2,-2.242304184684698 -3776,2,-2.211770002411598 -3777,2,-2.258619702170995 -3778,2,-2.226678234586248 -3779,2,-1.6867834448092616 -3780,2,-1.6380823939697047 -3781,2,-1.832519655759577 -3782,2,-1.7577607695112996 -3783,2,-1.942173255313906 -3784,2,-1.5232565889454064 -3785,2,-1.5244476667937348 -3786,2,-1.7507139724705711 -3787,2,-1.623582766719148 -3788,2,-1.9526575961583699 -3789,2,-1.5807773776990695 -3790,2,-1.4613206632502465 -3791,2,-2.241645531631499 -3792,2,-2.1561218131863646 -3793,2,-1.567738337335757 -3794,2,-1.557077723467551 -3795,2,-1.6262562138565477 -3796,2,-1.5708610646546137 -3797,2,-1.8124822837949233 -3798,2,-1.5468205459869708 -3799,2,-1.6313882143206886 -3800,2,-2.0239992791343875 -3801,2,-2.391289757990697 -3802,2,-2.024228963624065 -3803,2,-1.9718527227338358 -3804,2,-2.003207693669043 -3805,2,-1.2983765172642123 -3806,2,-1.1954258796345771 -3807,2,-1.3904085173939575 -3808,2,-2.0030601278192064 -3809,2,-1.7356492321759018 -3810,2,-1.8502596071068318 -3811,2,-1.8001362330790194 -3812,2,-1.695146448902685 -3813,2,-1.5771922821548114 -3814,2,-1.4255504627042783 -3815,2,-1.6096376843707232 -3816,2,-1.6073546899936 -3817,2,-1.5455308106293633 -3818,2,-1.5848040069660405 -3819,2,-2.3112632842032084 -3820,2,-2.1095615077477317 -3821,2,-2.1897412172592956 -3822,2,-1.6974439773908285 -3823,2,-1.8531238135109545 -3824,2,-1.6425152193413237 -3825,2,-2.0381588056010016 -3826,2,-1.9384698311613868 -3827,2,-2.1122090302796472 -3828,2,-2.252181861684407 -3829,2,-2.078623194530721 -3830,2,-2.2888512385691246 -3831,2,-2.0926467067712937 -3832,2,-2.0715936113111417 -3833,2,-1.3678785466236574 -3834,2,-1.4849853434415314 -3835,2,-1.475093761586309 -3836,2,-1.4872158291614221 -3837,2,-1.5268017052253904 -3838,2,-1.537767231644853 -3839,2,-1.5260368153231332 -3840,2,-1.4381949238117926 -3841,2,-1.5172951871554932 -3842,2,-1.5594734249353692 -3843,2,-1.7716046296897268 -3844,2,-1.5191915643932445 -3845,2,-1.4550054256523561 -3846,2,-1.4910852003972195 -3847,2,-1.4699104957347524 -3848,2,-1.464305357304864 -3849,2,-1.4469819315898826 -3850,2,-1.4629662217545056 -3851,2,-1.5027187548726686 -3852,2,-1.4455883064122337 -3853,2,-1.5086767048667362 -3854,2,-1.5400883580755658 -3855,2,-1.4167766003638507 -3856,2,-1.5977492950149401 -3857,2,-1.6237965299007582 -3858,2,-1.6176691540837218 -3859,2,-1.7249273506226426 -3860,2,-1.5185364080033361 -3861,2,-1.9220766904409559 -3862,2,-2.2843573813595506 -3863,2,-1.6559386943493815 -3864,2,-1.7921821716775275 -3865,2,-1.5262860794821576 -3866,2,-1.6843465740958579 -3867,2,-2.075794190730651 -3868,2,-1.6686663320809545 -3869,2,-1.6497334627888474 -3870,2,-1.6611330324766238 -3871,2,-1.9875805999577882 -3872,2,-1.8865749822772657 -3873,2,-2.136329303308569 -3874,2,-2.138333380318816 -3875,2,-2.2594727544000794 -3876,2,-1.9174082812064948 -3877,2,-1.8543478104533948 -3878,2,-2.2952256246255236 -3879,2,-2.1460340840514105 -3880,2,-2.346833031217398 -3881,2,-1.630645984308803 -3882,2,-1.3276850115017338 -3883,2,-1.2798978367004272 -3884,2,-2.451767157598856 -3885,2,-2.5196431058682305 -3886,2,-1.59117306699974 -3887,2,-1.991301851394151 -3888,2,-1.7172433965542675 -3889,2,-1.2173194138935648 -3890,2,-2.0402456022871513 -3891,2,-1.364270117859505 -3892,2,-1.4509182635321691 -3893,2,-2.1961376541776603 -3894,2,-1.967076677202224 -3895,2,-1.507970283238552 -3896,2,-1.6188637254564084 -3897,2,-1.7112725960971364 -3898,2,-1.6370176434471981 -3899,2,-1.9316972811955517 -3900,2,-1.6642885160044196 -3901,2,-1.5060358215847716 -3902,2,-2.219926189392333 -3903,2,-1.903301241849583 -3904,2,-1.7511397074053183 -3905,2,-1.4053069725960607 -3906,2,-1.6000601660891673 -3907,2,-1.593195140095649 -3908,2,-1.393798324765621 -3909,2,-1.4138811946991725 -3910,2,-1.495713268310636 -3911,2,-1.499924781562875 -3912,2,-1.367933353908182 -3913,2,-1.7166146402515465 -3914,2,-2.231844161491704 -3915,2,-1.5927758961861576 -3916,2,-1.7475496165652433 -3917,2,-2.145254123326549 -3918,2,-1.8219829945205006 -3919,2,-1.4145787663520974 -3920,2,-1.807730823553902 -3921,2,-1.9148082293929278 -3922,2,-1.6169490643388233 -3923,2,-1.570665792613499 -3924,2,-1.7980718975186059 -3925,2,-1.4947044087551684 -3926,2,-1.7727280436254007 -3927,2,-1.9305567469372746 -3928,2,-1.7226317140708534 -3929,2,-1.8436588043782287 -3930,2,-1.9452002882888213 -3931,2,-1.9158928071680323 -3932,2,-1.299369114741636 -3933,2,-1.7699005786204167 -3934,2,-1.7859776571076602 +3,2,-0 +4,2,-0 +58,2,-0 +59,2,-0 +60,2,-0 +61,2,-0 +62,2,-0 +63,2,-0 +64,2,-0 +65,2,-0 +66,2,-0 +67,2,-0 +68,2,-0 +69,2,-0 +70,2,-0 +71,2,-0 +72,2,-0 +73,2,-0 +74,2,-0 +75,2,-0 +76,2,-0 +77,2,-0 +78,2,-0 +79,2,-0 +80,2,-0 +81,2,-0 +82,2,-0 +83,2,-0 +84,2,-0 +85,2,-0 +86,2,-0 +87,2,-0 +88,2,-0 +89,2,-0 +90,2,-0 +91,2,-0 +92,2,-0 +93,2,-0 +94,2,-0 +95,2,-0 +96,2,-0 +97,2,-0 +98,2,-0 +99,2,-0 +100,2,-0 +101,2,-0 +102,2,-0 +103,2,-0 +104,2,-0 +105,2,-0 +106,2,-0 +107,2,-0 +108,2,-0 +109,2,-0 +110,2,-0 +111,2,-0 +112,2,-0 +113,2,-0 +114,2,-0 +115,2,-0 +116,2,-0 +500,2,-0 +501,2,-0 +502,2,-0 +503,2,-0 +504,2,-0 +505,2,-0 +506,2,-0 +507,2,-0 +508,2,-0 +509,2,-0 +510,2,-0 +511,2,-0 +512,2,-0 +513,2,-0 +514,2,-0 +515,2,-0 +516,2,-0 +517,2,-0 +518,2,-0 +519,2,-0 +520,2,-0 +521,2,-0 +522,2,-0 +523,2,-0 +524,2,-0 +525,2,-0 +526,2,-0 +527,2,-0 +528,2,-0 +529,2,-0 +530,2,-0 +531,2,-0 +532,2,-0 +533,2,-0 +534,2,-0 +535,2,-0 +536,2,-0 +537,2,-0 +538,2,-0 +539,2,-0 +540,2,-0 +541,2,-0 +542,2,-0 +543,2,-0 +544,2,-0 +545,2,-0 +546,2,-0 +547,2,-0 +548,2,-0 +549,2,-0 +550,2,-0 +551,2,-0 +552,2,-0 +553,2,-0 +554,2,-0 +555,2,-0 +556,2,-0 +557,2,-0 +558,2,-0 +559,2,-0 +560,2,-0 +561,2,-0 +562,2,-0 +563,2,-0 +564,2,-0 +565,2,-0 +566,2,-0 +567,2,-0 +568,2,-0 +569,2,-0 +570,2,-0 +571,2,-0 +572,2,-0 +573,2,-0 +574,2,-0 +575,2,-0 +576,2,-0 +577,2,-0 +578,2,-0 +579,2,-0 +580,2,-0 +581,2,-0 +582,2,-0 +583,2,-0 +584,2,-0 +585,2,-0 +586,2,-0 +587,2,-0 +588,2,-0 +589,2,-0 +590,2,-0 +591,2,-0 +592,2,-0 +593,2,-0 +594,2,-0 +595,2,-0 +596,2,-0 +597,2,-0 +598,2,-0 +599,2,-0 +600,2,-0 +601,2,-0 +602,2,-0 +603,2,-0 +604,2,-0 +605,2,-0 +606,2,-0 +607,2,-0 +608,2,-0 +609,2,-0 +610,2,-0 +611,2,-0 +612,2,-0 +613,2,-0 +614,2,-0 +615,2,-0 +616,2,-0 +617,2,-0 +618,2,-0 +619,2,-0 +620,2,-0 +621,2,-0 +622,2,-0 +623,2,-0 +624,2,-0 +625,2,-0 +626,2,-0 +627,2,-0 +628,2,-0 +629,2,-0 +630,2,-0 +631,2,-0 +632,2,-0 +633,2,-0 +634,2,-0 +635,2,-0 +636,2,-0 +637,2,-0 +638,2,-0 +639,2,-0 +640,2,-0 +641,2,-0 +642,2,-0 +643,2,-0 +644,2,-0 +645,2,-0 +646,2,-0 +647,2,-0 +648,2,-0 +649,2,-0 +650,2,-0 +651,2,-0 +652,2,-0 +653,2,-0 +654,2,-0 +655,2,-0 +656,2,-0 +657,2,-0 +658,2,-0 +659,2,-0 +660,2,-0 +661,2,-0 +662,2,-0 +663,2,-0 +664,2,-0 +665,2,-0 +666,2,-0 +667,2,-0 +668,2,-0 +669,2,-0 +670,2,-0 +671,2,-0 +672,2,-0 +673,2,-0 +674,2,-0 +675,2,-0 +676,2,-0 +677,2,-0 +678,2,-0 +679,2,-0 +680,2,-0 +681,2,-0 +682,2,-0 +683,2,-0 +684,2,-0 +685,2,-0 +686,2,-0 +687,2,-0 +688,2,-0 +689,2,-0 +690,2,-0 +691,2,-0 +692,2,-0 +693,2,-0 +694,2,-0 +695,2,-0 +696,2,-0 +697,2,-0 +698,2,-0 +699,2,-0 +700,2,-0 +701,2,-0 +702,2,-0 +703,2,-0 +704,2,-0 +705,2,-0 +706,2,-0 +707,2,-0 +708,2,-0 +709,2,-0 +710,2,-0 +711,2,-0 +712,2,-0 +713,2,-0 +714,2,-0 +715,2,-0 +716,2,-0 +717,2,-0 +718,2,-0 +719,2,-0 +720,2,-0 +721,2,-0 +722,2,-0 +723,2,-0 +724,2,-0 +725,2,-0 +726,2,-0 +727,2,-0 +728,2,-0 +729,2,-0 +730,2,-0 +731,2,-0 +732,2,-0 +733,2,-0 +734,2,-0 +735,2,-0 +736,2,-0 +737,2,-0 +738,2,-0 +739,2,-0 +740,2,-0 +741,2,-0 +742,2,-0 +743,2,-0 +744,2,-0 +745,2,-0 +746,2,-0 +747,2,-0 +748,2,-0 +749,2,-0 +750,2,-0 +751,2,-0 +752,2,-0 +753,2,-0 +754,2,-0 +755,2,-0 +756,2,-0 +757,2,-0 +758,2,-0 +759,2,-0 +760,2,-0 +761,2,-0 +762,2,-0 +763,2,-0 +764,2,-0 +765,2,-0 +766,2,-0 +767,2,-0 +768,2,-0 +769,2,-0 +770,2,-0 +771,2,-0 +772,2,-0 +773,2,-0 +774,2,-0 +775,2,-0 +776,2,-0 +777,2,-0 +778,2,-0 +779,2,-0 +780,2,-0 +781,2,-0 +782,2,-0 +783,2,-0 +784,2,-0 +785,2,-0 +786,2,-0 +787,2,-0 +788,2,-0 +789,2,-0 +790,2,-0 +791,2,-0 +792,2,-0 +793,2,-0 +794,2,-0 +795,2,-0 +796,2,-0 +797,2,-0 +798,2,-0 +799,2,-0 +800,2,-0 +801,2,-0 +802,2,-0 +803,2,-0 +804,2,-0 +805,2,-0 +806,2,-0 +807,2,-0 +808,2,-0 +809,2,-0 +810,2,-0 +811,2,-0 +812,2,-0 +813,2,-0 +814,2,-0 +815,2,-0 +816,2,-0 +817,2,-0 +818,2,-0 +819,2,-0 +820,2,-0 +821,2,-0 +822,2,-0 +823,2,-0 +824,2,-0 +825,2,-0 +826,2,-0 +827,2,-0 +828,2,-0 +829,2,-0 +830,2,-0 +831,2,-0 +832,2,-0 +833,2,-0 +834,2,-0 +835,2,-0 +836,2,-0 +837,2,-0 +838,2,-0 +839,2,-0 +840,2,-0 +841,2,-0 +842,2,-0 +843,2,-0 +844,2,-0 +845,2,-0 +846,2,-0 +847,2,-0 +848,2,-0 +849,2,-0 +850,2,-0 +851,2,-0 +852,2,-0 +853,2,-0 +854,2,-0 +855,2,-0 +856,2,-0 +857,2,-0 +858,2,-0 +859,2,-0 +860,2,-0 +861,2,-0 +862,2,-0 +863,2,-0 +864,2,-0 +865,2,-0 +866,2,-0 +867,2,-0 +868,2,-0 +869,2,-0 +870,2,-0 +871,2,-0 +872,2,-0 +873,2,-0 +874,2,-0 +875,2,-0 +876,2,-0 +877,2,-0 +878,2,-0 +879,2,-0 +880,2,-0 +881,2,-0 +882,2,-0 +883,2,-0 +884,2,-0 +885,2,-0 +886,2,-0 +887,2,-0 +888,2,-0 +889,2,-0 +890,2,-0 +891,2,-0 +892,2,-0 +893,2,-0 +894,2,-0 +895,2,-0 +896,2,-0 +897,2,-0 +898,2,-0 +899,2,-0 +900,2,-0 +901,2,-0 +902,2,-0 +903,2,-0 +904,2,-0 +905,2,-0 +906,2,-0 +907,2,-0 +908,2,-0 +909,2,-0 +910,2,-0 +911,2,-0 +912,2,-0 +913,2,-0 +914,2,-0 +915,2,-0 +916,2,-0 +917,2,-0 +918,2,-0 +919,2,-0 +920,2,-0 +921,2,-0 +922,2,-0 +923,2,-0 +924,2,-0 +925,2,-0 +926,2,-0 +927,2,-0 +928,2,-0 +929,2,-0 +930,2,-0 +931,2,-0 +932,2,-0 +933,2,-0 +934,2,-0 +935,2,-0 +936,2,-0 +937,2,-0 +938,2,-0 +939,2,-0 +940,2,-0 +941,2,-0 +942,2,-0 +943,2,-0 +944,2,-0 +945,2,-0 +946,2,-0 +947,2,-0 +948,2,-0 +949,2,-0 +950,2,-0 +951,2,-0 +952,2,-0 +953,2,-0 +954,2,-0 +955,2,-0 +956,2,-0 +957,2,-0 +958,2,-0 +959,2,-0 +960,2,-0 +961,2,-0 +962,2,-0 +963,2,-0 +964,2,-0 +965,2,-0 +966,2,-0 +967,2,-0 +968,2,-0 +969,2,-0 +970,2,-0 +971,2,-0 +972,2,-0 +973,2,-0 +974,2,-0 +975,2,-0 +976,2,-0 +977,2,-0 +978,2,-0 +979,2,-0 +980,2,-0 +981,2,-0 +982,2,-0 +983,2,-0 +1042,2,-0.7517613339182 +1043,2,-0.7257686392359 +1044,2,-0.7014178184104 +1045,2,-0.7420304372136 +1046,2,-0.8197185119209 +1047,2,-0.8059588763762 +1048,2,-0.8241849097367 +1049,2,-0.7701800720804 +1050,2,-0.7930931803611 +1051,2,-0.8192004573853 +1052,2,-0.8167438414992 +1053,2,-0.8054680385895 +1054,2,-0.7948075848319 +1055,2,-0.8324682279742 +1056,2,-0.8403916126499 +1057,2,-0.800656582613 +1058,2,-0.8964480171605 +1059,2,-0.9236312004587 +1060,2,-0.7275043972278 +1061,2,-0.7052732894066 +1062,2,-0.7249087237852 +1063,2,-0.7727415445736 +1064,2,-0.7463918268165 +1065,2,-0.7780084651976 +1066,2,-0.7491358634624 +1067,2,-0.749665038949 +1068,2,-0.7693256094559 +1069,2,-0.7808309998519 +1070,2,-0.7867259811379 +1071,2,-0.7776149580992 +1072,2,-0.8104100219383 +1073,2,-0.8127319511241 +1074,2,-0.7861634732818 +1075,2,-0.5952328706878 +1076,2,-1.617530864097 +1077,2,-1.219437294252 +1078,2,-1.455014329859 +1079,2,-1.534378138769 +1080,2,-1.427001680374 +1081,2,-1.456190797923 +1082,2,-1.51296767165 +1083,2,-1.405234369697 +1084,2,-1.392224206659 +1085,2,-1.303753998624 +1086,2,-1.462108580674 +1087,2,-1.504504207472 +1088,2,-1.384313033126 +1089,2,-1.474121046189 +1090,2,-1.460260238081 +1091,2,-1.368403896395 +1092,2,-1.410194247948 +1093,2,-1.560558278537 +1094,2,-1.456053498721 +1095,2,-1.415915622059 +1096,2,-1.534805427671 +1097,2,-1.482610005014 +1098,2,-1.382439307143 +1099,2,-1.543803764009 +1100,2,-1.419241245461 +1101,2,-1.406917990255 +1102,2,-1.784502796748 +1103,2,-1.548607262194 +2330,2,-1.494458004076 +2331,2,-1.561905366624 +2332,2,-1.847215668385 +2335,2,-1.404174862255 +2336,2,-1.787483491817 +2339,2,-1.521685679255 +2340,2,-1.352204778744 +2341,2,-1.359685792562 +2342,2,-1.473634548358 +2343,2,-1.173785315689 +2406,2,-2.02349513061 +2407,2,-1.827368327379 +2408,2,-1.500420012048 +2409,2,-1.478188904226 +2410,2,-1.43193418987 +2411,2,-1.510105427331 +2412,2,-1.451569624249 +2413,2,-1.489022908879 +2414,2,-1.48227735557 +2415,2,-1.536855729667 +2416,2,-1.543726385453 +2417,2,-1.595336942816 +2418,2,-1.517376667696 +2419,2,-1.494582629599 +2420,2,-1.593732412465 +2421,2,-1.52619926798 +2422,2,-1.542255039802 +2423,2,-1.507005151596 +2424,2,-1.513382438067 +2425,2,-1.505204687387 +2426,2,-1.509239530716 +2427,2,-1.505733862874 +2428,2,-1.537701965543 +2429,2,-1.516436748213 +2430,2,-1.55736253605 +2431,2,-1.522536127442 +2432,2,-1.644063819861 +2433,2,-1.534041517838 +2434,2,-1.549573609417 +2435,2,-1.563579096732 +2436,2,-1.555468590703 +2437,2,-1.566113722571 +2438,2,-1.58981422515 +2439,2,-1.557002699532 +2440,2,-1.614225644949 +2441,2,-1.580421494908 +2442,2,-1.647020708789 +2443,2,-1.62075946864 +2444,2,-1.698277283653 +2445,2,-1.623081397826 +2446,2,-1.568798052968 +2447,2,-1.648312011476 +2448,2,-1.542229575125 +2449,2,-1.337059724594 +2450,2,-1.693165148811 +2451,2,-1.146129122 +2452,2,-1.220208932423 +2453,2,-1.225419782192 +2454,2,-1.209825815876 +2455,2,-1.97620542313 +2456,2,-1.580870600414 +2457,2,-1.814846296199 +2458,2,-1.485365086439 +2459,2,-1.571404590341 +2460,2,-1.433594691259 +2461,2,-1.478577659052 +2462,2,-1.384258320328 +2463,2,-1.44772397855 +2464,2,-1.354544324278 +2465,2,-1.338713662719 +2466,2,-1.506098172752 +2467,2,-1.548164132385 +2468,2,-1.529627252315 +2469,2,-1.496812240632 +2470,2,-1.335226080746 +2471,2,-1.33334576749 +2472,2,-1.565792068362 +2473,2,-1.572080434503 +2474,2,-1.481140197292 +2475,2,-1.542967020999 +2476,2,-1.480161397432 +2477,2,-1.548868227526 +2478,2,-1.479892562587 +2479,2,-1.526913183556 +2480,2,-1.436366283276 +2481,2,-1.479155018885 +2482,2,-1.452663416739 +2483,2,-1.574042540073 +2484,2,-1.583852147796 +2485,2,-1.259373285021 +2486,2,-1.472844180855 +2487,2,-1.376132656582 +2488,2,-1.384162937802 +2489,2,-1.3501399619 +2490,2,-1.493717799213 +2491,2,-1.442386580222 +2492,2,-1.621832911546 +2493,2,-1.60246484034 +2494,2,-1.568391855791 +2495,2,-1.577389087807 +2496,2,-1.629576883371 +2497,2,-1.627073801938 +2498,2,-1.613136880235 +2499,2,-1.608862759476 +2500,2,-1.652556886224 +2501,2,-1.653467678752 +2502,2,-1.684942044598 +2503,2,-1.515331526855 +2504,2,-0.9942586411402 +2505,2,-0.9567026899015 +2506,2,-1.133316366889 +2507,2,-1.356347718244 +2508,2,-0.9870533989964 +2509,2,-1.459991181014 +2510,2,-1.524603279811 +2511,2,-1.481232453131 +2512,2,-1.469513843474 +2513,2,-1.458259581344 +2514,2,-1.557817071147 +2515,2,-1.485482625752 +2516,2,-1.479122053763 +2517,2,-1.540698356469 +2518,2,-1.499633259224 +2519,2,-1.48102790515 +2520,2,-1.50740472308 +2521,2,-1.429268834787 +2522,2,-1.414119814285 +2523,2,-1.455615455903 +2524,2,-1.407926908181 +2525,2,-1.391229464565 +2526,2,-1.41336283058 +2527,2,-1.343029090414 +2528,2,-1.344837267262 +2529,2,-1.400336909867 +2530,2,-1.409150010395 +2531,2,-1.424533208311 +2532,2,-1.406918163723 +2533,2,-1.442229378676 +2534,2,-1.435748978193 +2535,2,-1.420461124193 +2536,2,-1.374481023529 +2537,2,-1.368424994063 +2538,2,-1.425461561656 +2539,2,-1.406072328908 +2540,2,-1.422399815076 +2541,2,-1.427190208344 +2542,2,-1.443806846489 +2543,2,-1.44882087202 +2544,2,-1.430757076922 +2545,2,-1.422395033208 +2546,2,-1.416328598795 +2547,2,-1.428945230548 +2548,2,-1.416778630968 +2549,2,-1.42716702309 +2550,2,-1.43362973003 +2551,2,-1.473946355063 +2552,2,-1.474092322934 +2553,2,-1.435881257234 +2554,2,-1.429432344063 +2555,2,-1.417795368263 +2556,2,-1.436668521298 +2557,2,-1.398315817602 +2558,2,-1.407602055309 +2559,2,-1.430895497092 +2560,2,-1.468603510735 +2561,2,-1.47053425136 +2562,2,-1.43223684886 +2563,2,-1.442073775734 +2564,2,-1.43009897059 +2565,2,-1.433581235529 +2566,2,-1.388184550586 +2567,2,-1.395421179182 +2568,2,-1.438848147848 +2569,2,-1.485301553759 +2570,2,-1.467783252885 +2571,2,-1.463279298378 +2572,2,-1.423116045493 +2573,2,-1.419641884503 +2574,2,-1.423381466737 +2575,2,-1.388619380701 +2576,2,-1.42940910382 +2577,2,-1.403481637911 +2578,2,-1.964042867955 +2579,2,-2.172761063045 +2580,2,-1.230993084053 +2581,2,-1.595684244202 +2582,2,-1.639833959034 +2583,2,-1.476611585912 +2584,2,-1.43307806438 +2585,2,-1.50369821014 +2586,2,-1.469860359525 +2587,2,-1.378983496604 +2588,2,-1.377441063395 +2589,2,-1.523464675953 +2590,2,-1.448586163195 +2591,2,-1.444651562415 +2592,2,-1.44717495307 +2593,2,-1.398776270364 +2594,2,-1.494359412793 +2595,2,-1.468495735887 +2596,2,-1.376566400126 +2597,2,-1.563625347 +2598,2,-1.505947267416 +2599,2,-1.572603174556 +2600,2,-1.539028547478 +2601,2,-1.455429101267 +2602,2,-1.421905119565 +2603,2,-1.460455770288 +2604,2,-1.39999725143 +2605,2,-1.640058944907 +2606,2,-1.585869707911 +2607,2,-1.631393925464 +2608,2,-1.445531267314 +2609,2,-1.359812116976 +2610,2,-1.340594705471 +2611,2,-1.401773961419 +2612,2,-1.393857602085 +2613,2,-1.616224475885 +2614,2,-1.571405873921 +2615,2,-1.596255345367 +2616,2,-1.600966524914 +2617,2,-1.591304964072 +2618,2,-1.617856044012 +2619,2,-1.620138562386 +2620,2,-1.627120267485 +2621,2,-1.61580703561 +2622,2,-1.602476426477 +2623,2,-1.555066556892 +2624,2,-1.6604802709 +2625,2,-1.756695626557 +2626,2,-1.550643403331 +2627,2,-1.669317653515 +2628,2,-2.00518023336 +2629,2,-1.500928706351 +2630,2,-1.373936800136 +2631,2,-1.402736079709 +2632,2,-1.465466484774 +2633,2,-1.528965723113 +2634,2,-1.25261619547 +2635,2,-1.501760405432 +2636,2,-1.486804941339 +2637,2,-1.421435237058 +2638,2,-1.372322894949 +2639,2,-1.491574256169 +2640,2,-1.595710285571 +2641,2,-1.643474028285 +2642,2,-1.577787597668 +2643,2,-1.677497948751 +2644,2,-1.504141223376 +2645,2,-1.374444261613 +2646,2,-1.542484294283 +2647,2,-1.45585471501 +2648,2,-1.338859544487 +2649,2,-1.671761719654 +2650,2,-1.635476326835 +2651,2,-1.552016378211 +2652,2,-1.507484710287 +2653,2,-1.532675356299 +2654,2,-1.838509218406 +2655,2,-1.437427901501 +2656,2,-1.572801329275 +2657,2,-1.593763113134 +2658,2,-1.556602790693 +2659,2,-1.625405554192 +2660,2,-1.306677521237 +2661,2,-1.027955118249 +2662,2,-1.47049205548 +2663,2,-1.571093567639 +2664,2,-1.646699870254 +2665,2,-1.636220364654 +2666,2,-1.605828254946 +2667,2,-1.627745178518 +2668,2,-1.61110128746 +2669,2,-1.530316195182 +2670,2,-1.547168064689 +2671,2,-1.520955101552 +2672,2,-1.523136511437 +2673,2,-1.50713370885 +2674,2,-1.496991374981 +2675,2,-1.493558282748 +2676,2,-1.512366343157 +2677,2,-1.58324618024 +2678,2,-1.498122819786 +2679,2,-1.678905149218 +2680,2,-1.672411290692 +2681,2,-1.585830315632 +2682,2,-1.626752976172 +2683,2,-1.622176215592 +2684,2,-1.575934039052 +2685,2,-1.632879252431 +2686,2,-1.642421134423 +2687,2,-1.578817964744 +2688,2,-1.622383272314 +2689,2,-1.641248804677 +2690,2,-1.61765981575 +2691,2,-1.701881648005 +2692,2,-1.680278067539 +2693,2,-1.659403310707 +2694,2,-1.656574035511 +2695,2,-1.854254500928 +2696,2,-1.600595655796 +2697,2,-1.953390983121 +2698,2,-1.829865460441 +2699,2,-1.935801158994 +2700,2,-1.551695978038 +2701,2,-1.730536549605 +2702,2,-1.838075820008 +2703,2,-1.47700868153 +2704,2,-1.511442884213 +2705,2,-1.37657114365 +2706,2,-1.395041143872 +2707,2,-1.361126013294 +2708,2,-1.296852972263 +2709,2,-1.864731527755 +2710,2,-1.405463160353 +2711,2,-1.43766177447 +2712,2,-1.542556593215 +2713,2,-1.470332862169 +2714,2,-1.470877487374 +2715,2,-1.507604743339 +2716,2,-1.494920927909 +2717,2,-1.492582880938 +2718,2,-1.244891801303 +2719,2,-1.400397891712 +2720,2,-1.846158823885 +2721,2,-1.589567747381 +2722,2,-1.536723176143 +2723,2,-1.682445875805 +2724,2,-1.522231918396 +2725,2,-1.498665397491 +2726,2,-1.4315443789 +2727,2,-1.437910992478 +2728,2,-1.411843827291 +2729,2,-1.342469295898 +2730,2,-1.485684292184 +2731,2,-1.428457553117 +2732,2,-1.572948147771 +2733,2,-1.510251504004 +2734,2,-1.599122060416 +2735,2,-1.600906294118 +2736,2,-1.382072118025 +2737,2,-1.372427065465 +2738,2,-1.278162170648 +2739,2,-1.435817304127 +2740,2,-1.618801784071 +2741,2,-1.654142622968 +2742,2,-1.592454121898 +2743,2,-1.591998804671 +2744,2,-1.66381591475 +2745,2,-1.66070815329 +2746,2,-1.643265277812 +2747,2,-1.611606258015 +2748,2,-1.476973049023 +2749,2,-1.43646718895 +2750,2,-1.546173304725 +2751,2,-1.566909706788 +2752,2,-1.138049680499 +2753,2,-1.177344860826 +2754,2,-1.837358725476 +2755,2,-1.673037615531 +2756,2,-1.500352657992 +2757,2,-1.505894224744 +2758,2,-1.477182226579 +2759,2,-1.46177990889 +2760,2,-1.50988415279 +2761,2,-1.410879499088 +2762,2,-1.588391987387 +2763,2,-1.548818211058 +2764,2,-1.543242243442 +2765,2,-1.621003356758 +2766,2,-1.865137672793 +2767,2,-1.26861501562 +2768,2,-1.538672280493 +2769,2,-1.658869978689 +2770,2,-1.670842497909 +2771,2,-1.61997585099 +2772,2,-1.791558233121 +2773,2,-1.614111398443 +2774,2,-1.5800146667 +2775,2,-1.675178610495 +2776,2,-1.553081605301 +2777,2,-1.502376449242 +2778,2,-1.594989721051 +2779,2,-1.469192536138 +2780,2,-1.462182460112 +2781,2,-1.481707433788 +2782,2,-1.435078855291 +2783,2,-1.416774706264 +2784,2,-1.467304362418 +2785,2,-1.420446229168 +2786,2,-1.425895115266 +2787,2,-1.43087497844 +2788,2,-1.430668192274 +2789,2,-1.423516976219 +2790,2,-1.441056677066 +2791,2,-1.421676738772 +2792,2,-1.425256500481 +2793,2,-1.434756060426 +2794,2,-1.436737338429 +2795,2,-1.450966625175 +2796,2,-1.439933028791 +2797,2,-1.458751301328 +2798,2,-1.459457129963 +2799,2,-1.451092356618 +2800,2,-1.446696512373 +2801,2,-1.425160454994 +2802,2,-1.440078242416 +2803,2,-1.41833458309 +2804,2,-1.42983304462 +2805,2,-1.415091579055 +2806,2,-1.440583978515 +2807,2,-1.440515135023 +2808,2,-1.428329830085 +2809,2,-1.432378270104 +2810,2,-1.423797525228 +2811,2,-1.428684804868 +2812,2,-1.424438821421 +2813,2,-1.434905674054 +2814,2,-1.416869821163 +2815,2,-1.440769625647 +2816,2,-1.438060599549 +2817,2,-1.431295522272 +2818,2,-1.43011571361 +2819,2,-1.420102371224 +2820,2,-1.431384223343 +2821,2,-1.419516017269 +2822,2,-1.431916684491 +2823,2,-1.428392218407 +2824,2,-1.449158401954 +2825,2,-1.466044410109 +2826,2,-1.452847867633 +2827,2,-1.483238932043 +2828,2,-1.491689276894 +2829,2,-1.478265702017 +2830,2,-1.469309746128 +2831,2,-1.420335653984 +2832,2,-1.48586866682 +2833,2,-1.403909986149 +2834,2,-1.275643520292 +2835,2,-1.182936677726 +2836,2,-1.52428417001 +2837,2,-1.405825124084 +2838,2,-1.480989588245 +2839,2,-1.536993435238 +2840,2,-1.529024207372 +2841,2,-1.452065412884 +2842,2,-1.438209971249 +2843,2,-1.399536287498 +2844,2,-1.57967541825 +2845,2,-1.538551663508 +2846,2,-1.502215964608 +2847,2,-1.58578695815 +2848,2,-1.665229391962 +2849,2,-1.666380180651 +2850,2,-1.629427165659 +2851,2,-1.6046876169 +2852,2,-1.258896258315 +2853,2,-1.162288574089 +2854,2,-1.032743994251 +2855,2,-1.349292068942 +2856,2,-1.754795717478 +2857,2,-1.532063428078 +2858,2,-1.41232722827 +2859,2,-1.503676225434 +2860,2,-1.425200617932 +2861,2,-1.375536171919 +2862,2,-1.569067923392 +2863,2,-1.475808946735 +2864,2,-1.452286884518 +2865,2,-1.463789108265 +2866,2,-1.379980124003 +2867,2,-1.262351558958 +2868,2,-1.15676813903 +2869,2,-1.862913960094 +2870,2,-1.585509959279 +2871,2,-1.612761017962 +2872,2,-1.459992661101 +2873,2,-1.499785303538 +2874,2,-1.553868728189 +2875,2,-1.381962401691 +2876,2,-1.430610490267 +2877,2,-1.484069870428 +2878,2,-1.267524577713 +2879,2,-1.661477219579 +2880,2,-1.511737769783 +2881,2,-1.774420385467 +2882,2,-1.600750814176 +2883,2,-1.755442746685 +2884,2,-1.480635051652 +2885,2,-1.565673413617 +2886,2,-1.220204795796 +2887,2,-1.171146517166 +2888,2,-1.492108895766 +2889,2,-1.483601199214 +2890,2,-1.487464968178 +2891,2,-1.694611227626 +2892,2,-2.11479153776 +2893,2,-1.365243412698 +2894,2,-1.779704186165 +2895,2,-1.460575641305 +2896,2,-1.570987187774 +2897,2,-1.540395290228 +2898,2,-1.366999741557 +2899,2,-1.507054783496 +2900,2,-1.491307115279 +2901,2,-1.485808566163 +2902,2,-1.478442519778 +2903,2,-1.459601669298 +2904,2,-1.469065876611 +2905,2,-1.473521228615 +2906,2,-1.470155963062 +2907,2,-1.471630945062 +2908,2,-1.459432207028 +2909,2,-1.486337815969 +2910,2,-1.528969922248 +2911,2,-1.45882929221 +2912,2,-1.54579758101 +2913,2,-1.483294304971 +2914,2,-1.479891886918 +2915,2,-1.557826691131 +2916,2,-1.565287377402 +2917,2,-1.517884977259 +2918,2,-1.547184946273 +2919,2,-1.611533229739 +2920,2,-1.503588291811 +2921,2,-1.634411192332 +2922,2,-1.604691098801 +2923,2,-1.567487024356 +2924,2,-1.544207489085 +2925,2,-1.681732526865 +2926,2,-1.805799966325 +2927,2,-1.507811504563 +2928,2,-1.564413526224 +2929,2,-1.518050690219 +2930,2,-1.497837026547 +2931,2,-1.549542642323 +2932,2,-1.550095152614 +2933,2,-1.520765994067 +2934,2,-1.536715104783 +2935,2,-1.555675696459 +2936,2,-1.530146464731 +2937,2,-1.52472680905 +2938,2,-1.584084667692 +2939,2,-1.583728461885 +2940,2,-1.517892367909 +2941,2,-1.526544377458 +2942,2,-1.488652749429 +2943,2,-1.497022780898 +2944,2,-1.503856691064 +2945,2,-1.473401090158 +2946,2,-1.738166957725 +2947,2,-1.825817625297 +2948,2,-1.479490538206 +2949,2,-1.561370987521 +2950,2,-1.479453465086 +2951,2,-1.521861284669 +2952,2,-1.318877841106 +2953,2,-1.42466831667 +2954,2,-1.553933882919 +2955,2,-1.544222574437 +2956,2,-1.551197875768 +2957,2,-1.53820987765 +2958,2,-1.449822176123 +2959,2,-1.49560234321 +2960,2,-1.531054176054 +2961,2,-1.581114066134 +2962,2,-2.047760453165 +2963,2,-2.039712021463 +2964,2,-1.743383372532 +2965,2,-1.465578188536 +2966,2,-1.439762498229 +2967,2,-1.419139720917 +2968,2,-1.405885900129 +2969,2,-1.335837274035 +2970,2,-1.462611312212 +2971,2,-1.227032868574 +2972,2,-1.624609955796 +2973,2,-1.655485060577 +2974,2,-1.418315274992 +2975,2,-1.451951364547 +2976,2,-1.411672892773 +2977,2,-1.609597452646 +2978,2,-1.75833302146 +2979,2,-1.692820045752 +2980,2,-1.694753694717 +2981,2,-1.810295748963 +2982,2,-1.648661537016 +2983,2,-1.56099587329 +2984,2,-1.814543632496 +2985,2,-1.498418742086 +2986,2,-1.511914894843 +2987,2,-1.592722143876 +2988,2,-1.504521899499 +2989,2,-1.463232189833 +2990,2,-1.544338768394 +2991,2,-1.44510695488 +2992,2,-1.436189022064 +2993,2,-1.433899402564 +2994,2,-1.440921834593 +2995,2,-1.44549094669 +2996,2,-1.429992096637 +2997,2,-1.446341546105 +2998,2,-1.452137726567 +2999,2,-1.439801224579 +3000,2,-1.453734933222 +3001,2,-1.450999731183 +3002,2,-1.459050572938 +3003,2,-1.447929772265 +3004,2,-1.438105181034 +3005,2,-1.443123598106 +3006,2,-1.426385238197 +3007,2,-1.422382649909 +3008,2,-1.425823881737 +3009,2,-1.418932043927 +3010,2,-1.416561083923 +3011,2,-1.439980624258 +3012,2,-1.418300873422 +3013,2,-1.414800717409 +3014,2,-1.435952969975 +3015,2,-1.415224535685 +3016,2,-1.420930180386 +3017,2,-1.418593211809 +3018,2,-1.417695941557 +3019,2,-1.418727456852 +3020,2,-1.439442676012 +3021,2,-1.42268630533 +3022,2,-1.425258327521 +3023,2,-1.441100622416 +3024,2,-1.42805605469 +3025,2,-1.417477755831 +3026,2,-1.432591825461 +3027,2,-1.424499093281 +3028,2,-1.453467121435 +3029,2,-1.412275207782 +3030,2,-1.46552210344 +3031,2,-1.46150155807 +3032,2,-1.469762575017 +3033,2,-1.470033384298 +3034,2,-1.498117583022 +3035,2,-1.452681259492 +3036,2,-1.497270202974 +3037,2,-1.602017428439 +3038,2,-1.515234614631 +3039,2,-1.529628083749 +3040,2,-1.543475073942 +3041,2,-1.506406675724 +3042,2,-1.570834579732 +3043,2,-1.281679597018 +3044,2,-1.359691486924 +3045,2,-1.573790415999 +3046,2,-1.576019617175 +3047,2,-1.243090180893 +3048,2,-1.232784320721 +3049,2,-1.219854100717 +3050,2,-1.254366134354 +3051,2,-1.795483722859 +3052,2,-1.525031049638 +3053,2,-1.571096228611 +3054,2,-1.480065816963 +3055,2,-1.478837855056 +3056,2,-1.473096350115 +3057,2,-1.436056473486 +3058,2,-1.472480075382 +3059,2,-1.590385556 +3060,2,-1.60131870744 +3061,2,-1.602498443399 +3062,2,-1.509330660389 +3063,2,-1.586772493036 +3064,2,-1.481586703717 +3065,2,-1.591908054985 +3066,2,-1.622445492391 +3067,2,-1.622457529716 +3068,2,-1.720200392156 +3069,2,-1.870571305218 +3070,2,-1.583348572645 +3071,2,-1.621627287482 +3072,2,-1.541369153697 +3073,2,-1.516197599798 +3074,2,-1.528914355125 +3075,2,-1.558871468641 +3076,2,-1.426606023792 +3077,2,-1.79056469896 +3078,2,-1.703336937077 +3079,2,-1.723460932147 +3080,2,-1.481922012844 +3081,2,-1.412236315597 +3082,2,-1.543509059795 +3083,2,-1.414670550956 +3084,2,-1.713658165988 +3085,2,-1.714337588844 +3086,2,-1.702254600991 +3087,2,-1.717900667531 +3088,2,-1.667446104198 +3089,2,-1.687182608644 +3090,2,-1.530217741843 +3091,2,-1.559759812575 +3092,2,-1.646590575553 +3093,2,-1.57384344384 +3094,2,-1.704624174958 +3095,2,-1.628152556657 +3096,2,-1.710244950405 +3097,2,-1.579556490683 +3098,2,-1.362292898041 +3099,2,-1.75450271394 +3100,2,-1.689407023773 +3101,2,-1.627751577384 +3102,2,-1.585489514532 +3103,2,-1.486743713591 +3104,2,-1.381934210235 +3105,2,-1.592493294707 +3106,2,-1.480980246102 +3107,2,-1.291203084468 +3108,2,-1.383028902524 +3109,2,-1.312251141764 +3110,2,-1.233924129315 +3111,2,-1.443484316033 +3112,2,-1.488228902954 +3113,2,-1.530400367535 +3114,2,-1.530584643608 +3115,2,-1.794124680845 +3116,2,-1.772484807639 +3117,2,-1.665000642735 +3118,2,-1.511515684407 +3119,2,-1.559102269806 +3120,2,-1.551255259899 +3121,2,-1.558851110667 +3122,2,-1.547835056819 +3123,2,-1.570131965866 +3124,2,-1.526279964094 +3125,2,-1.357186490299 +3126,2,-1.498430964157 +3127,2,-1.413505905517 +3128,2,-1.313033555275 +3129,2,-1.490517779045 +3130,2,-1.659630724404 +3131,2,-1.623095845995 +3132,2,-1.642248545875 +3133,2,-1.685695960997 +3134,2,-1.851393870788 +3135,2,-2.046389319559 +3136,2,-1.405032567762 +3137,2,-1.406361848732 +3138,2,-2.048703554126 +3139,2,-1.905586217918 +3140,2,-2.216623854005 +3141,2,-1.771430393024 +3142,2,-1.653467761376 +3143,2,-2.078474038241 +3144,2,-1.591588233136 +3145,2,-1.514861928193 +3146,2,-1.609050355559 +3147,2,-1.445712272029 +3148,2,-1.408146578714 +3149,2,-1.353351869705 +3150,2,-1.413157205603 +3151,2,-1.420405401604 +3152,2,-1.408595021692 +3153,2,-1.425645417449 +3154,2,-1.445858833194 +3155,2,-1.432839114953 +3156,2,-1.459312001091 +3157,2,-1.460811455889 +3158,2,-1.453202341225 +3159,2,-1.447619683097 +3160,2,-1.428863688349 +3161,2,-1.456660963438 +3162,2,-1.421388563211 +3163,2,-1.430665165171 +3164,2,-1.443229964861 +3165,2,-1.448824495979 +3166,2,-1.460839719191 +3167,2,-1.468094582955 +3168,2,-1.459183024913 +3169,2,-1.446571655573 +3170,2,-1.475583286145 +3171,2,-1.432712053421 +3172,2,-1.4324954689 +3173,2,-1.459780918532 +3174,2,-1.447639288402 +3175,2,-1.462623064731 +3176,2,-1.461576444089 +3177,2,-1.463249495839 +3178,2,-1.449437477635 +3179,2,-1.480183792172 +3180,2,-1.438356658488 +3181,2,-1.430933918686 +3182,2,-1.465284555351 +3183,2,-1.421195599866 +3184,2,-1.437104849755 +3185,2,-1.45460598336 +3186,2,-1.465624188835 +3187,2,-1.469113578304 +3188,2,-1.461685394278 +3189,2,-1.456052808149 +3190,2,-1.454255184862 +3191,2,-1.443159234223 +3192,2,-1.488724341277 +3193,2,-1.413107415054 +3194,2,-1.46136426384 +3195,2,-1.596550065437 +3196,2,-1.619356973091 +3197,2,-1.631698223938 +3198,2,-1.441118683367 +3199,2,-1.520865965196 +3200,2,-1.649065029296 +3201,2,-1.628005665069 +3202,2,-1.619477583787 +3203,2,-1.562971190662 +3204,2,-1.567330459597 +3205,2,-1.572825896078 +3206,2,-1.471926158729 +3207,2,-1.44556221285 +3208,2,-1.496248556257 +3209,2,-1.573539997501 +3210,2,-1.573082880815 +3211,2,-1.557587512898 +3212,2,-1.561704693012 +3213,2,-1.427216197363 +3214,2,-1.37861508949 +3215,2,-1.472754644739 +3216,2,-1.434942023796 +3217,2,-1.592865302615 +3218,2,-1.717244112135 +3219,2,-1.755185399772 +3220,2,-1.520143435671 +3221,2,-1.574728967233 +3222,2,-1.467253121097 +3223,2,-1.416162327688 +3224,2,-1.438316089096 +3225,2,-1.428203028281 +3226,2,-1.518188904219 +3227,2,-1.718496743245 +3228,2,-1.703727861846 +3229,2,-1.684186492382 +3230,2,-1.671655157126 +3231,2,-1.586619116942 +3232,2,-1.20573176492 +3233,2,-1.169174653316 +3234,2,-1.212370077481 +3235,2,-1.262646062693 +3236,2,-1.685766987507 +3237,2,-1.667632454836 +3238,2,-1.713075515871 +3239,2,-1.633226000086 +3240,2,-1.58540478707 +3241,2,-1.568976752231 +3242,2,-1.59167605883 +3243,2,-1.574177165917 +3244,2,-1.739240128892 +3245,2,-1.70942942383 +3246,2,-1.759997654949 +3247,2,-1.597233412657 +3248,2,-1.639567857941 +3249,2,-1.831578687854 +3250,2,-1.566524462014 +3251,2,-1.255876324504 +3252,2,-1.387371335821 +3253,2,-1.693678008627 +3254,2,-1.673576131389 +3255,2,-1.772435085435 +3256,2,-1.811211387659 +3257,2,-1.688091810203 +3258,2,-1.548367130722 +3259,2,-1.701702451602 +3260,2,-1.602207279759 +3261,2,-1.577320732408 +3262,2,-1.606633898689 +3263,2,-1.575296175725 +3264,2,-1.456094743298 +3265,2,-1.56992616168 +3266,2,-1.642490994176 +3267,2,-1.600858037202 +3268,2,-1.593253234174 +3269,2,-1.435035595474 +3270,2,-1.542029110998 +3271,2,-1.556004303798 +3272,2,-1.526413096566 +3273,2,-1.720765888377 +3274,2,-1.731296871184 +3275,2,-1.774369796277 +3276,2,-1.787061750368 +3277,2,-1.669244762775 +3278,2,-1.517216467383 +3279,2,-1.458885125236 +3280,2,-1.47032082076 +3281,2,-1.570971892007 +3282,2,-1.560585988868 +3283,2,-1.576945084639 +3284,2,-1.620342143169 +3285,2,-1.727440681719 +3286,2,-1.453676372402 +3287,2,-1.241484573084 +3288,2,-1.602527573428 +3289,2,-1.610396375798 +3290,2,-1.762415875258 +3291,2,-1.541710885476 +3292,2,-1.634400931574 +3293,2,-1.675896979863 +3294,2,-1.757316984011 +3295,2,-1.593240739753 +3296,2,-1.54952841413 +3297,2,-1.502084832402 +3298,2,-2.013269928038 +3299,2,-2.26412377515 +3300,2,-1.596097709045 +3301,2,-1.36183210473 +3302,2,-1.510106900799 +3303,2,-1.733892299248 +3304,2,-1.549009062966 +3305,2,-1.628001153135 +3306,2,-1.744614052384 +3307,2,-1.72420921765 +3308,2,-1.3318064744 +3309,2,-1.674236653122 +3310,2,-1.728385829601 +3311,2,-1.767959533978 +3312,2,-1.736387197391 +3313,2,-1.443721225312 +3314,2,-1.443078855303 +3315,2,-1.603322563894 +3316,2,-1.614120711764 +3317,2,-1.616378629577 +3318,2,-1.83854552273 +3319,2,-1.711156039806 +3320,2,-1.767495214293 +3321,2,-1.529330714628 +3322,2,-1.569730003464 +3323,2,-1.550550364992 +3324,2,-1.550654571675 +3325,2,-2.269091295594 +3326,2,-2.180698419128 +3327,2,-2.246213445062 +3328,2,-1.263248210045 +3329,2,-1.232483157711 +3330,2,-1.325292003013 +3331,2,-1.434853481157 +3332,2,-1.371885709146 +3333,2,-1.451849378417 +3334,2,-1.461268655859 +3335,2,-1.502919073075 +3336,2,-1.461418466387 +3337,2,-1.451178189751 +3338,2,-1.494269259288 +3339,2,-1.453137357164 +3340,2,-1.460594665 +3341,2,-1.470745917048 +3342,2,-1.46591966117 +3343,2,-1.477754210971 +3344,2,-1.491712956295 +3345,2,-1.493342227106 +3346,2,-1.488820865704 +3347,2,-1.49748535963 +3348,2,-1.484294345682 +3349,2,-1.483863479819 +3350,2,-1.473243479173 +3351,2,-1.480672481546 +3352,2,-1.49035194374 +3353,2,-1.481344604949 +3354,2,-1.492364053817 +3355,2,-1.486171331133 +3356,2,-1.502135322197 +3357,2,-1.489794902887 +3358,2,-1.489698649047 +3359,2,-1.487818592838 +3360,2,-1.48861143043 +3361,2,-1.493799553608 +3362,2,-1.492563419434 +3363,2,-1.49054372142 +3364,2,-1.475141119194 +3365,2,-1.508474483695 +3366,2,-1.466311280222 +3367,2,-1.447199020903 +3368,2,-1.473132354848 +3369,2,-1.425183471379 +3370,2,-1.451833431344 +3371,2,-1.443183447798 +3372,2,-1.471836084248 +3373,2,-1.623648216074 +3374,2,-1.466887680339 +3375,2,-1.745793801682 +3376,2,-1.772796610974 +3377,2,-1.833242418472 +3378,2,-1.725229100942 +3379,2,-1.401195218699 +3380,2,-1.388053826387 +3381,2,-1.595715090438 +3382,2,-1.486389638327 +3383,2,-1.442579364913 +3384,2,-1.668739725687 +3385,2,-1.748777994424 +3386,2,-1.455686549952 +3387,2,-1.706393888029 +3388,2,-1.603178251785 +3389,2,-1.61190815554 +3390,2,-1.893636133763 +3391,2,-1.729280482534 +3392,2,-1.730190806008 +3393,2,-1.462271133605 +3394,2,-1.816063085908 +3395,2,-1.920542693733 +3396,2,-1.866034710395 +3397,2,-1.276332600108 +3398,2,-1.733514916264 +3399,2,-1.901687892974 +3400,2,-1.518340076925 +3401,2,-1.549299331696 +3402,2,-1.715445093011 +3403,2,-1.941624487284 +3404,2,-1.829237368095 +3405,2,-1.786426634731 +3406,2,-1.780312977168 +3407,2,-1.543678951012 +3408,2,-1.578433221592 +3409,2,-1.879680874713 +3410,2,-2.073498542027 +3411,2,-1.646824228558 +3412,2,-1.618415180155 +3413,2,-1.701366813633 +3414,2,-1.606847000277 +3415,2,-1.638269412117 +3416,2,-1.487459670751 +3417,2,-1.678968112418 +3418,2,-1.293580325545 +3419,2,-1.453469252944 +3420,2,-1.435779251241 +3421,2,-1.453276766852 +3422,2,-1.59072913165 +3423,2,-1.632011869097 +3424,2,-1.596839967599 +3425,2,-1.6128986343 +3426,2,-1.768766572816 +3427,2,-2.021766916668 +3428,2,-1.905783010389 +3429,2,-2.25003789352 +3430,2,-1.619743902114 +3431,2,-1.605501272816 +3432,2,-1.516381382183 +3433,2,-1.506998539338 +3434,2,-1.442220390956 +3435,2,-1.41749677123 +3436,2,-1.763458503964 +3437,2,-1.672842902254 +3438,2,-1.703048300424 +3439,2,-1.586927347652 +3440,2,-1.988840920895 +3441,2,-1.364275003848 +3442,2,-1.510993516246 +3443,2,-1.5934873287 +3444,2,-1.609839915898 +3445,2,-1.621951515384 +3446,2,-1.591070701177 +3447,2,-1.767372388761 +3448,2,-1.845647099494 +3449,2,-1.807752481833 +3450,2,-1.53282276403 +3451,2,-1.547339014439 +3452,2,-1.645322049456 +3453,2,-1.370650369256 +3454,2,-2.500078385265 +3455,2,-1.721492234883 +3456,2,-1.729334237199 +3457,2,-2.046085693648 +3458,2,-1.812893967769 +3459,2,-1.885236458977 +3460,2,-1.834343401481 +3461,2,-1.810046191945 +3462,2,-1.49335377882 +3463,2,-1.348729205915 +3464,2,-1.477891833402 +3465,2,-1.885952680223 +3466,2,-1.74047238161 +3467,2,-1.411421751055 +3468,2,-1.727359552026 +3469,2,-1.972487362083 +3470,2,-2.088053070677 +3471,2,-1.926671537265 +3472,2,-2.00751534588 +3473,2,-1.946849018297 +3474,2,-1.661773448302 +3475,2,-1.718994236758 +3476,2,-1.630465183585 +3477,2,-1.615939298789 +3478,2,-1.619832208482 +3479,2,-1.654089369786 +3480,2,-1.369154557818 +3481,2,-1.577954130545 +3482,2,-1.675783228853 +3483,2,-1.524184354181 +3484,2,-1.852371278069 +3485,2,-1.544607618553 +3486,2,-1.473240797922 +3487,2,-1.440378316477 +3488,2,-1.589147700001 +3489,2,-1.685147037142 +3490,2,-1.691016824555 +3491,2,-1.819916736229 +3492,2,-1.655794176104 +3493,2,-1.706618922927 +3494,2,-1.605608755454 +3495,2,-1.587539664225 +3496,2,-1.507585515033 +3497,2,-1.66742513397 +3498,2,-1.49430244943 +3499,2,-1.484824209482 +3500,2,-1.490425558854 +3501,2,-1.498333940894 +3502,2,-1.548286023694 +3503,2,-1.479703269421 +3504,2,-1.542223877227 +3505,2,-1.480604101708 +3506,2,-1.597646893484 +3507,2,-1.460883582653 +3508,2,-1.450844374975 +3509,2,-1.464858885956 +3510,2,-1.459376366614 +3511,2,-1.506945219138 +3512,2,-1.437870599115 +3513,2,-1.518056474192 +3514,2,-1.521193771171 +3515,2,-1.542243173987 +3516,2,-1.513069764497 +3517,2,-1.461916208845 +3518,2,-1.54418685434 +3519,2,-1.466757289282 +3520,2,-1.518853206955 +3521,2,-1.43332163697 +3522,2,-1.529576148037 +3523,2,-1.521228512298 +3524,2,-1.558675451939 +3525,2,-1.501288985679 +3526,2,-1.434874833163 +3527,2,-1.546728858651 +3528,2,-1.424038185433 +3529,2,-1.449153056922 +3530,2,-1.396192114657 +3531,2,-1.446207329497 +3532,2,-1.470831771022 +3533,2,-1.449128939328 +3534,2,-1.615590462821 +3535,2,-1.688676825371 +3536,2,-1.532246025008 +3537,2,-1.374650367045 +3538,2,-1.20937284573 +3539,2,-1.213053202575 +3540,2,-1.199646133106 +3541,2,-1.193435449999 +3542,2,-2.273861344786 +3543,2,-2.049053567965 +3544,2,-2.268750281606 +3545,2,-1.917920369186 +3546,2,-1.981893346336 +3547,2,-1.837250736755 +3548,2,-1.769688415117 +3549,2,-1.706141862705 +3550,2,-1.923653423524 +3551,2,-1.607818179197 +3552,2,-1.601564866243 +3553,2,-1.906914914903 +3554,2,-1.573980248158 +3555,2,-1.51839532892 +3556,2,-1.455068091108 +3557,2,-1.604204354192 +3558,2,-2.516716155841 +3559,2,-2.122896287644 +3560,2,-2.591281141843 +3561,2,-2.335222084719 +3562,2,-2.227099493013 +3563,2,-2.230723627152 +3564,2,-1.592759379187 +3565,2,-1.814711943224 +3566,2,-1.167178884943 +3567,2,-1.22012359565 +3568,2,-1.694957545777 +3569,2,-1.742644980014 +3570,2,-1.762414563423 +3571,2,-1.859276579547 +3572,2,-1.973604445231 +3573,2,-1.866761595004 +3574,2,-1.837669043756 +3575,2,-1.725706324365 +3576,2,-1.593289952189 +3577,2,-1.572568355308 +3578,2,-1.7560413445 +3579,2,-1.607809931534 +3580,2,-1.58295389741 +3581,2,-1.639187761075 +3582,2,-2.409592433828 +3583,2,-1.794638816729 +3584,2,-1.87789288654 +3585,2,-1.415411116346 +3586,2,-1.301834237814 +3587,2,-1.306506370913 +3588,2,-1.296236418326 +3589,2,-1.20971468699 +3590,2,-1.417848614049 +3591,2,-1.545081020382 +3592,2,-1.78381480183 +3593,2,-2.032616712208 +3594,2,-1.860209270241 +3595,2,-2.006166736083 +3596,2,-1.965798624545 +3597,2,-1.505551334516 +3598,2,-1.422640165376 +3599,2,-1.437158528829 +3600,2,-1.55389083249 +3601,2,-1.821417911931 +3602,2,-1.786072841579 +3603,2,-1.838506732788 +3604,2,-1.882695849172 +3605,2,-2.01588848008 +3606,2,-1.731936871603 +3607,2,-1.884844825478 +3608,2,-1.858228567259 +3609,2,-1.297269269953 +3610,2,-1.929539746057 +3611,2,-1.985544384791 +3612,2,-1.929175975976 +3613,2,-2.094544201581 +3614,2,-2.066649951003 +3615,2,-2.021963208916 +3616,2,-2.183434975283 +3617,2,-1.70499114816 +3618,2,-1.627592283494 +3619,2,-1.652919493189 +3620,2,-1.938714712271 +3621,2,-2.163423915953 +3622,2,-1.871699863678 +3623,2,-1.777906702322 +3624,2,-1.716695717635 +3625,2,-2.410849173685 +3626,2,-1.907403149145 +3627,2,-1.89456485891 +3628,2,-1.86823628128 +3629,2,-1.94196144402 +3630,2,-1.605738406191 +3631,2,-1.772732844134 +3632,2,-1.53054685757 +3633,2,-1.493571373731 +3634,2,-1.529542607012 +3635,2,-1.492327324246 +3636,2,-1.508780523704 +3637,2,-1.515972875362 +3638,2,-1.576772064967 +3639,2,-1.574037535998 +3640,2,-1.5248604922 +3641,2,-1.50286930399 +3642,2,-1.482277849971 +3643,2,-1.528379234587 +3644,2,-1.465328770807 +3645,2,-1.456669150474 +3646,2,-1.517416401706 +3647,2,-1.513472872822 +3648,2,-1.5492646584 +3649,2,-1.465300406038 +3650,2,-1.548071041775 +3651,2,-1.531132271972 +3652,2,-1.503439082327 +3653,2,-1.471420610252 +3654,2,-1.475171787875 +3655,2,-1.506199849855 +3656,2,-1.548429685171 +3657,2,-1.563976459809 +3658,2,-1.526870561589 +3659,2,-1.56037750226 +3660,2,-1.5374718609 +3661,2,-1.540585223014 +3662,2,-1.453349269421 +3663,2,-1.418177944318 +3664,2,-1.445999897501 +3665,2,-1.33680728925 +3666,2,-1.476232650287 +3667,2,-1.905959125542 +3668,2,-2.041204004524 +3669,2,-1.300138872156 +3670,2,-1.230547612166 +3671,2,-1.332603949396 +3672,2,-1.366101130596 +3673,2,-1.508525409646 +3674,2,-1.289988519945 +3675,2,-1.513217672422 +3676,2,-1.853362168494 +3677,2,-1.418616020678 +3678,2,-1.511699554169 +3679,2,-1.754136263117 +3680,2,-1.924530818252 +3681,2,-1.697901199231 +3682,2,-1.628179231797 +3683,2,-1.557362208078 +3684,2,-1.572949830519 +3685,2,-1.703906774943 +3686,2,-2.134310548849 +3687,2,-2.181470244848 +3688,2,-2.145899134514 +3689,2,-1.519472896241 +3690,2,-1.675372735504 +3691,2,-1.538487961514 +3692,2,-1.76690243482 +3693,2,-1.780894242032 +3694,2,-2.326389185332 +3695,2,-2.016783918776 +3696,2,-1.790703833616 +3697,2,-1.852327319629 +3698,2,-1.711812928981 +3699,2,-1.528594953396 +3700,2,-2.166767425953 +3701,2,-1.667176959639 +3702,2,-1.589544578529 +3703,2,-1.424681187468 +3704,2,-1.480420034319 +3705,2,-2.072910833414 +3706,2,-1.959661931193 +3707,2,-1.237704275442 +3708,2,-1.221997075501 +3709,2,-1.258891750822 +3710,2,-1.298413343515 +3711,2,-1.356995589081 +3712,2,-1.479398486672 +3713,2,-1.31523628061 +3714,2,-1.562110906008 +3715,2,-1.729401134109 +3716,2,-1.61014428884 +3717,2,-2.093124660588 +3718,2,-2.019444453218 +3719,2,-1.689314854031 +3720,2,-1.629372373093 +3721,2,-1.821918886053 +3722,2,-1.795411054436 +3723,2,-1.183631978514 +3724,2,-1.58858336374 +3725,2,-1.626565494551 +3726,2,-1.582934403989 +3727,2,-1.524401112726 +3728,2,-1.358389935921 +3729,2,-1.572706657352 +3730,2,-1.804834275248 +3731,2,-1.933683727185 +3732,2,-2.024795111146 +3733,2,-1.695257076013 +3734,2,-2.145932602629 +3735,2,-2.070438185399 +3736,2,-1.478423091214 +3737,2,-1.483635189393 +3738,2,-1.388697706205 +3739,2,-2.190653207292 +3740,2,-1.507040941583 +3741,2,-1.530979634641 +3742,2,-1.481890514307 +3743,2,-1.523414052021 +3744,2,-1.493291648183 +3745,2,-1.49593762551 +3746,2,-1.499544919539 +3747,2,-1.53479756924 +3748,2,-1.516366624156 +3749,2,-1.544426190378 +3750,2,-1.54217963204 +3751,2,-1.542877645689 +3752,2,-1.498723256704 +3753,2,-1.447403501095 +3754,2,-1.500349226809 +3755,2,-1.449750391807 +3756,2,-1.464894047406 +3757,2,-1.463934541282 +3758,2,-1.484593584737 +3759,2,-1.530147626421 +3760,2,-1.477739061331 +3761,2,-1.547067160533 +3762,2,-1.528995399297 +3763,2,-1.529251053009 +3764,2,-1.527163286083 +3765,2,-1.533424174584 +3766,2,-1.568840228713 +3767,2,-1.88550288045 +3768,2,-1.55793879603 +3769,2,-1.544339546326 +3770,2,-1.605774341746 +3771,2,-1.602737727827 +3772,2,-1.612437619789 +3773,2,-1.962426281776 +3774,2,-1.959160809682 +3775,2,-2.242304184685 +3776,2,-2.211770002412 +3777,2,-2.258619702171 +3778,2,-2.226678234586 +3779,2,-1.686783444809 +3780,2,-1.63808239397 +3781,2,-1.83251965576 +3782,2,-1.757760769511 +3783,2,-1.942173255314 +3784,2,-1.523256588945 +3785,2,-1.524447666794 +3786,2,-1.750713972471 +3787,2,-1.623582766719 +3788,2,-1.952657596158 +3789,2,-1.580777377699 +3790,2,-1.46132066325 +3791,2,-2.241645531631 +3792,2,-2.156121813186 +3793,2,-1.567738337336 +3794,2,-1.557077723468 +3795,2,-1.626256213857 +3796,2,-1.570861064655 +3797,2,-1.812482283795 +3798,2,-1.546820545987 +3799,2,-1.631388214321 +3800,2,-2.023999279134 +3801,2,-2.391289757991 +3802,2,-2.024228963624 +3803,2,-1.971852722734 +3804,2,-2.003207693669 +3805,2,-1.298376517264 +3806,2,-1.195425879635 +3807,2,-1.390408517394 +3808,2,-2.003060127819 +3809,2,-1.735649232176 +3810,2,-1.850259607107 +3811,2,-1.800136233079 +3812,2,-1.695146448903 +3813,2,-1.577192282155 +3814,2,-1.425550462704 +3815,2,-1.609637684371 +3816,2,-1.607354689994 +3817,2,-1.545530810629 +3818,2,-1.584804006966 +3819,2,-2.311263284203 +3820,2,-2.109561507748 +3821,2,-2.189741217259 +3822,2,-1.697443977391 +3823,2,-1.853123813511 +3824,2,-1.642515219341 +3825,2,-2.038158805601 +3826,2,-1.938469831161 +3827,2,-2.11220903028 +3828,2,-2.252181861684 +3829,2,-2.078623194531 +3830,2,-2.288851238569 +3831,2,-2.092646706771 +3832,2,-2.071593611311 +3833,2,-1.367878546624 +3834,2,-1.484985343442 +3835,2,-1.475093761586 +3836,2,-1.487215829161 +3837,2,-1.526801705225 +3838,2,-1.537767231645 +3839,2,-1.526036815323 +3840,2,-1.438194923812 +3841,2,-1.517295187155 +3842,2,-1.559473424935 +3843,2,-1.77160462969 +3844,2,-1.519191564393 +3845,2,-1.455005425652 +3846,2,-1.491085200397 +3847,2,-1.469910495735 +3848,2,-1.464305357305 +3849,2,-1.44698193159 +3850,2,-1.462966221755 +3851,2,-1.502718754873 +3852,2,-1.445588306412 +3853,2,-1.508676704867 +3854,2,-1.540088358076 +3855,2,-1.416776600364 +3856,2,-1.597749295015 +3857,2,-1.623796529901 +3858,2,-1.617669154084 +3859,2,-1.724927350623 +3860,2,-1.518536408003 +3861,2,-1.922076690441 +3862,2,-2.28435738136 +3863,2,-1.655938694349 +3864,2,-1.792182171678 +3865,2,-1.526286079482 +3866,2,-1.684346574096 +3867,2,-2.075794190731 +3868,2,-1.668666332081 +3869,2,-1.649733462789 +3870,2,-1.661133032477 +3871,2,-1.987580599958 +3872,2,-1.886574982277 +3873,2,-2.136329303309 +3874,2,-2.138333380319 +3875,2,-2.2594727544 +3876,2,-1.917408281206 +3877,2,-1.854347810453 +3878,2,-2.295225624626 +3879,2,-2.146034084051 +3880,2,-2.346833031217 +3881,2,-1.630645984309 +3882,2,-1.327685011502 +3883,2,-1.2798978367 +3884,2,-2.451767157599 +3885,2,-2.519643105868 +3886,2,-1.591173067 +3887,2,-1.991301851394 +3888,2,-1.717243396554 +3889,2,-1.217319413894 +3890,2,-2.040245602287 +3891,2,-1.36427011786 +3892,2,-1.450918263532 +3893,2,-2.196137654178 +3894,2,-1.967076677202 +3895,2,-1.507970283239 +3896,2,-1.618863725456 +3897,2,-1.711272596097 +3898,2,-1.637017643447 +3899,2,-1.931697281196 +3900,2,-1.664288516004 +3901,2,-1.506035821585 +3902,2,-2.219926189392 +3903,2,-1.90330124185 +3904,2,-1.751139707405 +3905,2,-1.405306972596 +3906,2,-1.600060166089 +3907,2,-1.593195140096 +3908,2,-1.393798324766 +3909,2,-1.413881194699 +3910,2,-1.495713268311 +3911,2,-1.499924781563 +3912,2,-1.367933353908 +3913,2,-1.716614640252 +3914,2,-2.231844161492 +3915,2,-1.592775896186 +3916,2,-1.747549616565 +3917,2,-2.145254123327 +3918,2,-1.821982994521 +3919,2,-1.414578766352 +3920,2,-1.807730823554 +3921,2,-1.914808229393 +3922,2,-1.616949064339 +3923,2,-1.570665792613 +3924,2,-1.798071897519 +3925,2,-1.494704408755 +3926,2,-1.772728043625 +3927,2,-1.930556746937 +3928,2,-1.722631714071 +3929,2,-1.843658804378 +3930,2,-1.945200288289 +3931,2,-1.915892807168 +3932,2,-1.299369114742 +3933,2,-1.76990057862 +3934,2,-1.785977657108 @@ -13158,7 +13158,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/frequency_beamsimple.inp b/src/Mod/Fem/femtest/data/calculix/frequency_beamsimple.inp index b0a20a53a7..20d927e010 100644 --- a/src/Mod/Fem/femtest/data/calculix/frequency_beamsimple.inp +++ b/src/Mod/Fem/femtest/data/calculix/frequency_beamsimple.inp @@ -17069,7 +17069,7 @@ RF *NODE PRINT, NSET=Fix_YZ, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fiveboxes.inp b/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fiveboxes.inp index 239603709e..5ec1a3d3e7 100644 --- a/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fiveboxes.inp +++ b/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fiveboxes.inp @@ -27652,1525 +27652,1525 @@ ConstraintFixed,3 *CLOAD ** ConstraintForce ** node loads on shape: Box1:Face6 -17,3,-0.0 -19,3,-0.0 -22,3,-0.0 -23,3,-0.0 -406,3,-0.0 -407,3,-0.0 -408,3,-0.0 -409,3,-0.0 -410,3,-5.569444444448354 -411,3,-4.448173740406444 -412,3,-6.692809797200002 -413,3,-4.2684508864278445 -414,3,-5.56944444445502 -461,3,-0.0 -462,3,-0.0 -463,3,-0.0 -464,3,-0.0 -465,3,-0.0 -466,3,-0.0 -467,3,-0.0 -468,3,-0.0 -469,3,-0.0 -470,3,-5.569444444448354 -471,3,-5.469344307366667 -472,3,-5.469344307366668 -473,3,-4.977899749640001 -474,3,-5.728188473903334 -475,3,-3.6278547238066676 -476,3,-5.054111765570002 -477,3,-5.054111765570002 -478,3,-4.162835361193334 -479,3,-5.269152117963333 -480,3,-0.0 -481,3,-0.0 -482,3,-0.0 -483,3,-0.0 -484,3,-0.0 -485,3,-0.0 -486,3,-0.0 -487,3,-0.0 -488,3,-0.0 -489,3,-5.569444444466707 -490,3,-5.491082822852937 -491,3,-5.491082822852935 -492,3,-5.972276458585068 -493,3,-5.619255599214048 -494,3,-3.6221834996000037 -495,3,-5.05411176547177 -496,3,-5.054111765583335 -497,3,-4.162835361200004 -498,3,-5.269152117936833 -499,3,-0.0 -500,3,-0.0 -501,3,-0.0 -502,3,-0.0 -503,3,-5.269152117989462 -504,3,-4.1206990067671 -505,3,-5.014770039333338 -506,3,-4.120699006833325 -507,3,-5.269152117986828 -4409,3,-0.0 -4410,3,-0.0 -4411,3,-0.0 -4412,3,-0.0 -4413,3,-0.0 -4414,3,-0.0 -4415,3,-0.0 -4416,3,-0.0 -4417,3,-0.0 -4418,3,-0.0 -4419,3,-0.0 -4420,3,-0.0 -4421,3,-0.0 -4422,3,-0.0 -4423,3,-0.0 -4424,3,-0.0 -4425,3,-0.0 -4426,3,-0.0 -4427,3,-0.0 -4428,3,-0.0 -4429,3,-0.0 -4430,3,-0.0 -4431,3,-0.0 -4432,3,-0.0 -4433,3,-0.0 -4434,3,-0.0 -4435,3,-0.0 -4436,3,-0.0 -4437,3,-0.0 -4438,3,-0.0 -4439,3,-0.0 -4440,3,-0.0 -4441,3,-0.0 -4442,3,-0.0 -4443,3,-0.0 -4444,3,-0.0 -4445,3,-0.0 -4446,3,-0.0 -4447,3,-0.0 -4448,3,-0.0 -4449,3,-0.0 -4450,3,-0.0 -4451,3,-0.0 -4452,3,-0.0 -4453,3,-0.0 -4454,3,-0.0 -4455,3,-0.0 -4456,3,-0.0 -4457,3,-0.0 -4458,3,-0.0 -4459,3,-0.0 -4460,3,-0.0 -4461,3,-0.0 -4462,3,-0.0 -4463,3,-0.0 -4464,3,-0.0 -4465,3,-0.0 -4466,3,-9.626054191298042 -4467,3,-11.138888888896709 -4468,3,-12.115785600127513 -4469,3,-9.35933869964351 -4470,3,-11.138888888921727 -4471,3,-11.969444466632819 -4472,3,-8.894590961207191 -4473,3,-10.538304235952795 -4474,3,-8.98274016804374 -4475,3,-8.894590961167097 -4476,3,-10.538304235923661 -4477,3,-8.982740168054276 -4478,3,-9.610303256298177 -4479,3,-8.504783487256132 -4480,3,-7.832175442286246 -4481,3,-11.57914015083904 -4482,3,-11.854939313091734 -4483,3,-10.097455552709393 -4484,3,-8.058345141616334 -4485,3,-9.154781240066884 -4486,3,-9.331688383075718 -4487,3,-7.165745440603582 -4488,3,-10.938688614733334 -4489,3,-12.015685463045827 -4490,3,-12.1788507794515 -4491,3,-12.627684295291067 -4492,3,-9.866986765059638 -4493,3,-10.840708960440647 -4494,3,-11.171151173962157 -4495,3,-13.021149198725047 -4496,3,-11.434035767592079 -4497,3,-9.892791289221936 -4498,3,-10.61727548932297 -4499,3,-10.521158141897933 -4500,3,-7.2917612956142195 -4501,3,-7.7924575391252695 -4502,3,-7.993257127927368 -4503,3,-10.108223531140004 -4504,3,-10.517624963770977 -4505,3,-9.160032417011402 -4506,3,-9.127419770008528 -4507,3,-6.553864279131277 -4508,3,-11.828844546081916 -4509,3,-7.78827420443719 -4510,3,-8.836760587962642 -4511,3,-8.447070260865612 -4512,3,-11.448658007281221 -4513,3,-11.37721213581439 -4514,3,-6.687962445224343 -4515,3,-10.982165645705873 -4516,3,-11.89108284501905 -4517,3,-11.468476200690343 -4518,3,-11.277962406719782 -4519,3,-11.784689080309779 -4520,3,-11.450222555081863 -4521,3,-10.886160071135961 -4522,3,-11.264825680363646 -4523,3,-9.807896196705183 -4524,3,-9.715817580991747 -4525,3,-11.431668220938757 -4526,3,-11.167584545443694 -4527,3,-7.284239493190094 -4528,3,-7.718745481377704 -4529,3,-7.9176838267770595 -4530,3,-10.108223531055105 -4531,3,-10.517624963660241 -4532,3,-9.160032416998897 -4533,3,-9.125569191778563 -4534,3,-6.555384948386638 -4535,3,-11.828844546065566 -4536,3,-7.7882742044302695 -4537,3,-8.836760587966126 -4538,3,-8.447070260862425 -4539,3,-11.448658007248351 -4540,3,-11.377212135784706 -4541,3,-6.6879624452107524 -4542,3,-8.483621473647075 -4543,3,-7.83428705682138 -4544,3,-7.241309341778089 -4545,3,-9.377692506213315 -4546,3,-9.377692506213315 -4547,3,-10.501714633289236 -4548,3,-7.834287056900772 -4549,3,-8.483621473713303 -4550,3,-10.502726535739368 -4551,3,-7.241309341791254 -4552,3,-10.940413089639806 -4553,3,-9.598971939207113 -4554,3,-11.827052164925506 -4555,3,-7.753436068168512 -4556,3,-8.243345002164547 -4557,3,-10.570695717803133 -4558,3,-11.601400018398722 -4559,3,-9.82742757312514 -4560,3,-8.95393044814638 -4561,3,-10.40763440197895 -4562,3,-7.537160613337728 -4563,3,-10.495107986642989 -4564,3,-9.459394154549331 -4565,3,-9.532120269382553 -4566,3,-8.969297401685933 -4567,3,-8.298998574112902 -4568,3,-9.859137773554629 -4569,3,-8.539706699485059 -4570,3,-9.00946639807014 -4571,3,-6.835668636076791 -4572,3,-9.141462424552275 -4573,3,-6.758150870938513 -4574,3,-9.199339394522214 -4575,3,-7.452597530940128 -4576,3,-8.2989985741129 -4577,3,-9.596943649400707 -4578,3,-9.492478312513033 -4579,3,-10.57168568499452 -4580,3,-11.520074602221325 -4581,3,-9.455653209307583 -4582,3,-8.966533065213497 -4583,3,-9.641885001485416 -4584,3,-10.02848371665434 -4585,3,-7.358779755794567 -4586,3,-7.500896584421706 -4587,3,-8.667558859266524 -4588,3,-10.524867292934646 -4589,3,-8.204368991964689 -4590,3,-8.567589775744029 -4591,3,-6.7186120199324915 -4592,3,-7.746277486571393 -4593,3,-6.444360097507013 -4594,3,-9.416700033661614 -4595,3,-10.075818015207345 -4596,3,-10.546544679231468 -4597,3,-9.179394410762866 -4598,3,-9.810229526187113 -4599,3,-9.44506892177233 -4600,3,-9.18229880885837 -4601,3,-9.020545756012414 -4602,3,-9.076732749249029 -4603,3,-9.756783367970842 -4604,3,-9.050596191696748 -4605,3,-10.381696899090647 -4606,3,-7.770626024405195 -4607,3,-6.590244893704297 -4608,3,-6.590244893704295 -4609,3,-7.775749908472318 -4610,3,-6.835668636076791 -4611,3,-8.545489916835855 -4612,3,-9.863944382136111 -4613,3,-9.02037349948806 -4614,3,-10.387832685607902 -4615,3,-7.194444718552161 -4616,3,-7.809143500249738 -4617,3,-6.714450799795907 -4618,3,-5.895401513605357 -4619,3,-6.2084956221105925 -4620,3,-7.912194302480592 -4621,3,-8.700453442029492 -4622,3,-7.738501871790588 -4623,3,-7.0721782043827375 -4624,3,-8.757853752528627 -4625,3,-8.52546909487272 -4626,3,-8.945101825285017 -4627,3,-10.333262157478126 -4628,3,-8.757171222393927 -4629,3,-8.516722833050398 -4630,3,-9.139803285648261 -4631,3,-11.738499319108213 -4632,3,-10.886510736552912 -4633,3,-10.782584759007623 -4634,3,-10.313513943964988 -4635,3,-10.226615603987693 -4636,3,-9.843697836475025 -4637,3,-10.32060975575299 -4638,3,-9.796764214154187 -4639,3,-8.455467088844388 -4640,3,-8.710891732254217 -4641,3,-10.057267286134152 -4642,3,-9.4080753192089 -4643,3,-8.01878657386967 -4644,3,-6.824519372240888 -4645,3,-11.763086887745162 -4646,3,-11.764098790195291 -4647,3,-10.934792227569616 -4648,3,-10.154933555331652 -4649,3,-9.920978678589835 -4650,3,-7.8212092148517725 -4651,3,-8.991454441051218 -4652,3,-8.444327363939323 -4653,3,-9.747789084702726 -4654,3,-9.77859339344761 -4655,3,-10.24594753614439 -4656,3,-9.407149254546212 -4657,3,-8.24890468547053 -4658,3,-7.193817699478614 -4659,3,-6.762773323367787 -4660,3,-8.274973018929224 -4661,3,-6.839862572992859 -4662,3,-9.889357205169741 -4663,3,-9.476617149083664 +17,3,-0 +19,3,-0 +22,3,-0 +23,3,-0 +406,3,-0 +407,3,-0 +408,3,-0 +409,3,-0 +410,3,-5.569444444448 +411,3,-4.448173740406 +412,3,-6.6928097972 +413,3,-4.268450886428 +414,3,-5.569444444455 +461,3,-0 +462,3,-0 +463,3,-0 +464,3,-0 +465,3,-0 +466,3,-0 +467,3,-0 +468,3,-0 +469,3,-0 +470,3,-5.569444444448 +471,3,-5.469344307367 +472,3,-5.469344307367 +473,3,-4.97789974964 +474,3,-5.728188473903 +475,3,-3.627854723807 +476,3,-5.05411176557 +477,3,-5.05411176557 +478,3,-4.162835361193 +479,3,-5.269152117963 +480,3,-0 +481,3,-0 +482,3,-0 +483,3,-0 +484,3,-0 +485,3,-0 +486,3,-0 +487,3,-0 +488,3,-0 +489,3,-5.569444444467 +490,3,-5.491082822853 +491,3,-5.491082822853 +492,3,-5.972276458585 +493,3,-5.619255599214 +494,3,-3.6221834996 +495,3,-5.054111765472 +496,3,-5.054111765583 +497,3,-4.1628353612 +498,3,-5.269152117937 +499,3,-0 +500,3,-0 +501,3,-0 +502,3,-0 +503,3,-5.269152117989 +504,3,-4.120699006767 +505,3,-5.014770039333 +506,3,-4.120699006833 +507,3,-5.269152117987 +4409,3,-0 +4410,3,-0 +4411,3,-0 +4412,3,-0 +4413,3,-0 +4414,3,-0 +4415,3,-0 +4416,3,-0 +4417,3,-0 +4418,3,-0 +4419,3,-0 +4420,3,-0 +4421,3,-0 +4422,3,-0 +4423,3,-0 +4424,3,-0 +4425,3,-0 +4426,3,-0 +4427,3,-0 +4428,3,-0 +4429,3,-0 +4430,3,-0 +4431,3,-0 +4432,3,-0 +4433,3,-0 +4434,3,-0 +4435,3,-0 +4436,3,-0 +4437,3,-0 +4438,3,-0 +4439,3,-0 +4440,3,-0 +4441,3,-0 +4442,3,-0 +4443,3,-0 +4444,3,-0 +4445,3,-0 +4446,3,-0 +4447,3,-0 +4448,3,-0 +4449,3,-0 +4450,3,-0 +4451,3,-0 +4452,3,-0 +4453,3,-0 +4454,3,-0 +4455,3,-0 +4456,3,-0 +4457,3,-0 +4458,3,-0 +4459,3,-0 +4460,3,-0 +4461,3,-0 +4462,3,-0 +4463,3,-0 +4464,3,-0 +4465,3,-0 +4466,3,-9.626054191298 +4467,3,-11.1388888889 +4468,3,-12.11578560013 +4469,3,-9.359338699644 +4470,3,-11.13888888892 +4471,3,-11.96944446663 +4472,3,-8.894590961207 +4473,3,-10.53830423595 +4474,3,-8.982740168044 +4475,3,-8.894590961167 +4476,3,-10.53830423592 +4477,3,-8.982740168054 +4478,3,-9.610303256298 +4479,3,-8.504783487256 +4480,3,-7.832175442286 +4481,3,-11.57914015084 +4482,3,-11.85493931309 +4483,3,-10.09745555271 +4484,3,-8.058345141616 +4485,3,-9.154781240067 +4486,3,-9.331688383076 +4487,3,-7.165745440604 +4488,3,-10.93868861473 +4489,3,-12.01568546305 +4490,3,-12.17885077945 +4491,3,-12.62768429529 +4492,3,-9.86698676506 +4493,3,-10.84070896044 +4494,3,-11.17115117396 +4495,3,-13.02114919873 +4496,3,-11.43403576759 +4497,3,-9.892791289222 +4498,3,-10.61727548932 +4499,3,-10.5211581419 +4500,3,-7.291761295614 +4501,3,-7.792457539125 +4502,3,-7.993257127927 +4503,3,-10.10822353114 +4504,3,-10.51762496377 +4505,3,-9.160032417011 +4506,3,-9.127419770009 +4507,3,-6.553864279131 +4508,3,-11.82884454608 +4509,3,-7.788274204437 +4510,3,-8.836760587963 +4511,3,-8.447070260866 +4512,3,-11.44865800728 +4513,3,-11.37721213581 +4514,3,-6.687962445224 +4515,3,-10.98216564571 +4516,3,-11.89108284502 +4517,3,-11.46847620069 +4518,3,-11.27796240672 +4519,3,-11.78468908031 +4520,3,-11.45022255508 +4521,3,-10.88616007114 +4522,3,-11.26482568036 +4523,3,-9.807896196705 +4524,3,-9.715817580992 +4525,3,-11.43166822094 +4526,3,-11.16758454544 +4527,3,-7.28423949319 +4528,3,-7.718745481378 +4529,3,-7.917683826777 +4530,3,-10.10822353106 +4531,3,-10.51762496366 +4532,3,-9.160032416999 +4533,3,-9.125569191779 +4534,3,-6.555384948387 +4535,3,-11.82884454607 +4536,3,-7.78827420443 +4537,3,-8.836760587966 +4538,3,-8.447070260862 +4539,3,-11.44865800725 +4540,3,-11.37721213578 +4541,3,-6.687962445211 +4542,3,-8.483621473647 +4543,3,-7.834287056821 +4544,3,-7.241309341778 +4545,3,-9.377692506213 +4546,3,-9.377692506213 +4547,3,-10.50171463329 +4548,3,-7.834287056901 +4549,3,-8.483621473713 +4550,3,-10.50272653574 +4551,3,-7.241309341791 +4552,3,-10.94041308964 +4553,3,-9.598971939207 +4554,3,-11.82705216493 +4555,3,-7.753436068169 +4556,3,-8.243345002165 +4557,3,-10.5706957178 +4558,3,-11.6014000184 +4559,3,-9.827427573125 +4560,3,-8.953930448146 +4561,3,-10.40763440198 +4562,3,-7.537160613338 +4563,3,-10.49510798664 +4564,3,-9.459394154549 +4565,3,-9.532120269383 +4566,3,-8.969297401686 +4567,3,-8.298998574113 +4568,3,-9.859137773555 +4569,3,-8.539706699485 +4570,3,-9.00946639807 +4571,3,-6.835668636077 +4572,3,-9.141462424552 +4573,3,-6.758150870939 +4574,3,-9.199339394522 +4575,3,-7.45259753094 +4576,3,-8.298998574113 +4577,3,-9.596943649401 +4578,3,-9.492478312513 +4579,3,-10.57168568499 +4580,3,-11.52007460222 +4581,3,-9.455653209308 +4582,3,-8.966533065213 +4583,3,-9.641885001485 +4584,3,-10.02848371665 +4585,3,-7.358779755795 +4586,3,-7.500896584422 +4587,3,-8.667558859267 +4588,3,-10.52486729293 +4589,3,-8.204368991965 +4590,3,-8.567589775744 +4591,3,-6.718612019932 +4592,3,-7.746277486571 +4593,3,-6.444360097507 +4594,3,-9.416700033662 +4595,3,-10.07581801521 +4596,3,-10.54654467923 +4597,3,-9.179394410763 +4598,3,-9.810229526187 +4599,3,-9.445068921772 +4600,3,-9.182298808858 +4601,3,-9.020545756012 +4602,3,-9.076732749249 +4603,3,-9.756783367971 +4604,3,-9.050596191697 +4605,3,-10.38169689909 +4606,3,-7.770626024405 +4607,3,-6.590244893704 +4608,3,-6.590244893704 +4609,3,-7.775749908472 +4610,3,-6.835668636077 +4611,3,-8.545489916836 +4612,3,-9.863944382136 +4613,3,-9.020373499488 +4614,3,-10.38783268561 +4615,3,-7.194444718552 +4616,3,-7.80914350025 +4617,3,-6.714450799796 +4618,3,-5.895401513605 +4619,3,-6.208495622111 +4620,3,-7.912194302481 +4621,3,-8.700453442029 +4622,3,-7.738501871791 +4623,3,-7.072178204383 +4624,3,-8.757853752529 +4625,3,-8.525469094873 +4626,3,-8.945101825285 +4627,3,-10.33326215748 +4628,3,-8.757171222394 +4629,3,-8.51672283305 +4630,3,-9.139803285648 +4631,3,-11.73849931911 +4632,3,-10.88651073655 +4633,3,-10.78258475901 +4634,3,-10.31351394396 +4635,3,-10.22661560399 +4636,3,-9.843697836475 +4637,3,-10.32060975575 +4638,3,-9.796764214154 +4639,3,-8.455467088844 +4640,3,-8.710891732254 +4641,3,-10.05726728613 +4642,3,-9.408075319209 +4643,3,-8.01878657387 +4644,3,-6.824519372241 +4645,3,-11.76308688775 +4646,3,-11.7640987902 +4647,3,-10.93479222757 +4648,3,-10.15493355533 +4649,3,-9.92097867859 +4650,3,-7.821209214852 +4651,3,-8.991454441051 +4652,3,-8.444327363939 +4653,3,-9.747789084703 +4654,3,-9.778593393448 +4655,3,-10.24594753614 +4656,3,-9.407149254546 +4657,3,-8.248904685471 +4658,3,-7.193817699479 +4659,3,-6.762773323368 +4660,3,-8.274973018929 +4661,3,-6.839862572993 +4662,3,-9.88935720517 +4663,3,-9.476617149084 ** node loads on shape: Box2:Face6 -2,3,-0.0 -4,3,-0.0 -22,3,-0.0 -23,3,-0.0 -43,3,-0.0 -44,3,-0.0 -45,3,-0.0 -46,3,-0.0 -47,3,-5.5694444446420155 -48,3,-4.3711646419271615 -49,3,-6.703045430740325 -50,3,-4.255370802063468 -51,3,-5.569444444500001 -499,3,-0.0 -500,3,-0.0 -501,3,-0.0 -502,3,-0.0 -503,3,-5.56944444450835 -504,3,-4.371164641906154 -505,3,-6.703045430740309 -506,3,-4.255370802166663 -507,3,-5.569444444541347 -564,3,-0.0 -565,3,-0.0 -566,3,-0.0 -567,3,-0.0 -568,3,-0.0 -569,3,-0.0 -570,3,-0.0 -571,3,-0.0 -572,3,-0.0 -573,3,-5.569444444440001 -574,3,-5.261619159736668 -575,3,-5.261619159736668 -576,3,-5.337212586663333 -577,3,-5.021215350833335 -578,3,-5.582527932726667 -579,3,-5.5466145080633344 -580,3,-5.261619159736668 -581,3,-5.261619159736668 -582,3,-5.569444444440001 -602,3,-0.0 -603,3,-0.0 -604,3,-0.0 -605,3,-0.0 -606,3,-0.0 -607,3,-0.0 -608,3,-0.0 -609,3,-0.0 -610,3,-0.0 -611,3,-5.569444444591976 -612,3,-5.261619159733329 -613,3,-5.261619159733333 +2,3,-0 +4,3,-0 +22,3,-0 +23,3,-0 +43,3,-0 +44,3,-0 +45,3,-0 +46,3,-0 +47,3,-5.569444444642 +48,3,-4.371164641927 +49,3,-6.70304543074 +50,3,-4.255370802063 +51,3,-5.5694444445 +499,3,-0 +500,3,-0 +501,3,-0 +502,3,-0 +503,3,-5.569444444508 +504,3,-4.371164641906 +505,3,-6.70304543074 +506,3,-4.255370802167 +507,3,-5.569444444541 +564,3,-0 +565,3,-0 +566,3,-0 +567,3,-0 +568,3,-0 +569,3,-0 +570,3,-0 +571,3,-0 +572,3,-0 +573,3,-5.56944444444 +574,3,-5.261619159737 +575,3,-5.261619159737 +576,3,-5.337212586663 +577,3,-5.021215350833 +578,3,-5.582527932727 +579,3,-5.546614508063 +580,3,-5.261619159737 +581,3,-5.261619159737 +582,3,-5.56944444444 +602,3,-0 +603,3,-0 +604,3,-0 +605,3,-0 +606,3,-0 +607,3,-0 +608,3,-0 +609,3,-0 +610,3,-0 +611,3,-5.569444444592 +612,3,-5.261619159733 +613,3,-5.261619159733 614,3,-5.27617441685 -615,3,-5.038884182466666 -616,3,-5.165394597599998 -617,3,-5.594699809533334 -618,3,-5.261619159733333 -619,3,-5.261619159733333 +615,3,-5.038884182467 +616,3,-5.1653945976 +617,3,-5.594699809533 +618,3,-5.261619159733 +619,3,-5.261619159733 620,3,-5.56944444445 -5745,3,-0.0 -5746,3,-0.0 -5747,3,-0.0 -5748,3,-0.0 -5749,3,-0.0 -5750,3,-0.0 -5751,3,-0.0 -5752,3,-0.0 -5753,3,-0.0 -5754,3,-0.0 -5755,3,-0.0 -5756,3,-0.0 -5757,3,-0.0 -5758,3,-0.0 -5759,3,-0.0 -5760,3,-0.0 -5761,3,-0.0 -5762,3,-0.0 -5763,3,-0.0 -5764,3,-0.0 -5765,3,-0.0 -5766,3,-0.0 -5767,3,-0.0 -5768,3,-0.0 -5769,3,-0.0 -5770,3,-0.0 -5771,3,-0.0 -5772,3,-0.0 -5773,3,-0.0 -5774,3,-0.0 -5775,3,-0.0 -5776,3,-0.0 -5777,3,-0.0 -5778,3,-0.0 -5779,3,-0.0 -5780,3,-0.0 -5781,3,-0.0 -5782,3,-0.0 -5783,3,-0.0 -5784,3,-0.0 -5785,3,-0.0 -5786,3,-0.0 -5787,3,-0.0 -5788,3,-0.0 -5789,3,-0.0 -5790,3,-0.0 -5791,3,-0.0 -5792,3,-0.0 -5793,3,-0.0 -5794,3,-0.0 -5795,3,-0.0 -5796,3,-0.0 -5797,3,-0.0 -5798,3,-9.424848761336506 -5799,3,-11.138888889082017 -5800,3,-11.44178427463891 -5801,3,-9.363263425653836 -5802,3,-11.138888888950003 -5803,3,-11.441784274511289 -5804,3,-9.424848761244183 -5805,3,-11.138888888948351 -5806,3,-11.441784274641911 -5807,3,-9.363263425653832 -5808,3,-11.138888889133323 -5809,3,-11.441784274653264 -5810,3,-9.670981857469766 -5811,3,-8.226568958621652 -5812,3,-7.497585640011778 -5813,3,-11.630124697880209 -5814,3,-12.00286264628293 -5815,3,-10.6972233492923 -5816,3,-8.049189783217303 -5817,3,-9.182450069203353 -5818,3,-9.385722588348887 -5819,3,-7.119542717396222 -5820,3,-9.670981857442932 -5821,3,-8.226568958641987 -5822,3,-7.4975856400531224 -5823,3,-11.630124697880206 -5824,3,-12.002862646277086 -5825,3,-10.697223349286457 -5826,3,-8.049189783279148 -5827,3,-9.18245006930656 -5828,3,-9.385722588348887 -5829,3,-7.1195427173548795 -5830,3,-10.523238319473336 -5831,3,-11.133958989938575 -5832,3,-10.326374040218447 -5833,3,-11.61708706936507 -5834,3,-9.672416375800776 -5835,3,-11.019360932333692 -5836,3,-10.656711799011108 -5837,3,-12.037616255298762 -5838,3,-10.52550234753954 -5839,3,-10.101178326079301 -5840,3,-9.356419139970777 -5841,3,-8.599707597506212 -5842,3,-10.278931948196618 -5843,3,-11.127065671282146 -5844,3,-10.303969903067893 -5845,3,-10.624500713801444 -5846,3,-9.744836637329701 -5847,3,-10.90207107594629 -5848,3,-10.243018523533285 -5849,3,-8.773654182944089 -5850,3,-10.523238319473336 -5851,3,-11.617087069184395 -5852,3,-9.995610094074287 -5853,3,-11.710924477330684 -5854,3,-10.525502347358868 -5855,3,-11.133958989935577 -5856,3,-10.326374040215443 -5857,3,-10.523238319466664 -5858,3,-11.133958989794616 -5859,3,-10.630601948761173 -5860,3,-11.287957834116177 -5861,3,-9.199670707003504 -5862,3,-10.114431455241272 -5863,3,-9.001813136738116 -5864,3,-10.864595712774118 -5865,3,-11.019442668925315 -5866,3,-12.283410316469377 -5867,3,-8.96238047262017 -5868,3,-7.866383883128826 -5869,3,-9.428816176304272 -5870,3,-12.4322332352644 -5871,3,-13.331436662362501 -5872,3,-14.511364771667113 -5873,3,-13.520734669954173 -5874,3,-10.33837475113222 -5875,3,-9.85812138823761 -5876,3,-8.216557855345874 -5877,3,-10.523238319466666 -5878,3,-11.254989799743564 -5879,3,-8.846605049675018 -5880,3,-10.737045581609117 -5881,3,-11.25614826531449 -5882,3,-11.133958989794621 -5883,3,-10.63060194876117 -5884,3,-12.250659961415796 -5885,3,-12.331142920211093 -5886,3,-10.709154834222904 -5887,3,-8.624068647927674 -5888,3,-9.337132605187604 -5889,3,-10.686103018444774 -5890,3,-9.4699653275408 -5891,3,-8.119353485922485 -5892,3,-8.886794413043246 -5893,3,-8.991273845370213 -5894,3,-10.046641930271372 -5895,3,-9.866515914792178 -5896,3,-10.451777427195525 -5897,3,-9.108411379929176 -5898,3,-8.609566003179296 -5899,3,-10.42198607951885 -5900,3,-8.508701540813247 -5901,3,-9.079916307965451 -5902,3,-8.864570993371684 -5903,3,-10.033379154233495 -5904,3,-8.814767744177606 -5905,3,-9.067088593443552 -5906,3,-9.969767378538174 -5907,3,-9.674595987920043 -5908,3,-8.959467339774031 -5909,3,-9.514347375231008 -5910,3,-8.832165378192732 -5911,3,-8.222556949072144 -5912,3,-8.267903322764791 -5913,3,-8.305366927666347 -5914,3,-8.868270286383538 -5915,3,-10.219096128926783 -5916,3,-12.169519532091709 -5917,3,-10.454873779603355 -5918,3,-9.648624919472015 -5919,3,-9.128312769610574 -5920,3,-9.629690527536438 -5921,3,-8.615275020478698 -5922,3,-7.991412627306555 -5923,3,-8.212081132678076 -5924,3,-12.105170388749961 -5925,3,-9.902305944821931 -5926,3,-10.04740091310085 -5927,3,-7.784367057451391 -5928,3,-9.362000408187802 -5929,3,-8.08398585494227 -5930,3,-10.46212204537292 -5931,3,-11.936639155343054 -5932,3,-10.0177343013397 -5933,3,-9.422266030840586 -5934,3,-8.623714631529378 -5935,3,-9.197372168410993 -5936,3,-7.969559654487951 -5937,3,-9.640167516064695 -5938,3,-8.37273749733036 -5939,3,-8.548762013457717 -5940,3,-9.133263691768203 -5941,3,-10.03413296616625 -5942,3,-10.049657473275852 -5943,3,-9.367090451487279 -5944,3,-8.627072960215628 -5945,3,-9.76746030520224 -5946,3,-13.001981513974506 -5947,3,-11.189428657649005 -5948,3,-9.039587457066968 -5949,3,-8.096215533333828 -5950,3,-9.958070032002947 -5951,3,-9.863511529574266 -5952,3,-8.997745163657122 -5953,3,-9.022384317560658 -5954,3,-7.9641136719354195 -5955,3,-7.94119614893634 -5956,3,-9.4699653275408 -5957,3,-7.5151298939691005 -5958,3,-10.418211896669353 -5959,3,-9.190278785986031 -5960,3,-9.249485177108474 -5961,3,-7.944970398156274 -5962,3,-8.356584716416556 -5963,3,-7.877724513736592 -5964,3,-7.508812031576306 -5965,3,-10.960345259214714 -5966,3,-12.250659961415787 -5967,3,-10.709154834222907 -5968,3,-12.331142920211075 -5969,3,-8.624068647927674 -5970,3,-10.351693091295353 -5971,3,-12.45353028903634 -5972,3,-11.189428657649003 -5973,3,-9.03958745706698 -5974,3,-13.088242720930664 -5975,3,-10.688591852701638 -5976,3,-10.336927052064475 -5977,3,-7.784367057451386 -5978,3,-8.08398585494228 -5979,3,-9.568570240546043 -5980,3,-9.803412116388625 -5981,3,-8.09621553333382 -5982,3,-8.392802570166342 -5983,3,-9.222350466361968 +5745,3,-0 +5746,3,-0 +5747,3,-0 +5748,3,-0 +5749,3,-0 +5750,3,-0 +5751,3,-0 +5752,3,-0 +5753,3,-0 +5754,3,-0 +5755,3,-0 +5756,3,-0 +5757,3,-0 +5758,3,-0 +5759,3,-0 +5760,3,-0 +5761,3,-0 +5762,3,-0 +5763,3,-0 +5764,3,-0 +5765,3,-0 +5766,3,-0 +5767,3,-0 +5768,3,-0 +5769,3,-0 +5770,3,-0 +5771,3,-0 +5772,3,-0 +5773,3,-0 +5774,3,-0 +5775,3,-0 +5776,3,-0 +5777,3,-0 +5778,3,-0 +5779,3,-0 +5780,3,-0 +5781,3,-0 +5782,3,-0 +5783,3,-0 +5784,3,-0 +5785,3,-0 +5786,3,-0 +5787,3,-0 +5788,3,-0 +5789,3,-0 +5790,3,-0 +5791,3,-0 +5792,3,-0 +5793,3,-0 +5794,3,-0 +5795,3,-0 +5796,3,-0 +5797,3,-0 +5798,3,-9.424848761337 +5799,3,-11.13888888908 +5800,3,-11.44178427464 +5801,3,-9.363263425654 +5802,3,-11.13888888895 +5803,3,-11.44178427451 +5804,3,-9.424848761244 +5805,3,-11.13888888895 +5806,3,-11.44178427464 +5807,3,-9.363263425654 +5808,3,-11.13888888913 +5809,3,-11.44178427465 +5810,3,-9.67098185747 +5811,3,-8.226568958622 +5812,3,-7.497585640012 +5813,3,-11.63012469788 +5814,3,-12.00286264628 +5815,3,-10.69722334929 +5816,3,-8.049189783217 +5817,3,-9.182450069203 +5818,3,-9.385722588349 +5819,3,-7.119542717396 +5820,3,-9.670981857443 +5821,3,-8.226568958642 +5822,3,-7.497585640053 +5823,3,-11.63012469788 +5824,3,-12.00286264628 +5825,3,-10.69722334929 +5826,3,-8.049189783279 +5827,3,-9.182450069307 +5828,3,-9.385722588349 +5829,3,-7.119542717355 +5830,3,-10.52323831947 +5831,3,-11.13395898994 +5832,3,-10.32637404022 +5833,3,-11.61708706937 +5834,3,-9.672416375801 +5835,3,-11.01936093233 +5836,3,-10.65671179901 +5837,3,-12.0376162553 +5838,3,-10.52550234754 +5839,3,-10.10117832608 +5840,3,-9.356419139971 +5841,3,-8.599707597506 +5842,3,-10.2789319482 +5843,3,-11.12706567128 +5844,3,-10.30396990307 +5845,3,-10.6245007138 +5846,3,-9.74483663733 +5847,3,-10.90207107595 +5848,3,-10.24301852353 +5849,3,-8.773654182944 +5850,3,-10.52323831947 +5851,3,-11.61708706918 +5852,3,-9.995610094074 +5853,3,-11.71092447733 +5854,3,-10.52550234736 +5855,3,-11.13395898994 +5856,3,-10.32637404022 +5857,3,-10.52323831947 +5858,3,-11.13395898979 +5859,3,-10.63060194876 +5860,3,-11.28795783412 +5861,3,-9.199670707004 +5862,3,-10.11443145524 +5863,3,-9.001813136738 +5864,3,-10.86459571277 +5865,3,-11.01944266893 +5866,3,-12.28341031647 +5867,3,-8.96238047262 +5868,3,-7.866383883129 +5869,3,-9.428816176304 +5870,3,-12.43223323526 +5871,3,-13.33143666236 +5872,3,-14.51136477167 +5873,3,-13.52073466995 +5874,3,-10.33837475113 +5875,3,-9.858121388238 +5876,3,-8.216557855346 +5877,3,-10.52323831947 +5878,3,-11.25498979974 +5879,3,-8.846605049675 +5880,3,-10.73704558161 +5881,3,-11.25614826531 +5882,3,-11.13395898979 +5883,3,-10.63060194876 +5884,3,-12.25065996142 +5885,3,-12.33114292021 +5886,3,-10.70915483422 +5887,3,-8.624068647928 +5888,3,-9.337132605188 +5889,3,-10.68610301844 +5890,3,-9.469965327541 +5891,3,-8.119353485922 +5892,3,-8.886794413043 +5893,3,-8.99127384537 +5894,3,-10.04664193027 +5895,3,-9.866515914792 +5896,3,-10.4517774272 +5897,3,-9.108411379929 +5898,3,-8.609566003179 +5899,3,-10.42198607952 +5900,3,-8.508701540813 +5901,3,-9.079916307965 +5902,3,-8.864570993372 +5903,3,-10.03337915423 +5904,3,-8.814767744178 +5905,3,-9.067088593444 +5906,3,-9.969767378538 +5907,3,-9.67459598792 +5908,3,-8.959467339774 +5909,3,-9.514347375231 +5910,3,-8.832165378193 +5911,3,-8.222556949072 +5912,3,-8.267903322765 +5913,3,-8.305366927666 +5914,3,-8.868270286384 +5915,3,-10.21909612893 +5916,3,-12.16951953209 +5917,3,-10.4548737796 +5918,3,-9.648624919472 +5919,3,-9.128312769611 +5920,3,-9.629690527536 +5921,3,-8.615275020479 +5922,3,-7.991412627307 +5923,3,-8.212081132678 +5924,3,-12.10517038875 +5925,3,-9.902305944822 +5926,3,-10.0474009131 +5927,3,-7.784367057451 +5928,3,-9.362000408188 +5929,3,-8.083985854942 +5930,3,-10.46212204537 +5931,3,-11.93663915534 +5932,3,-10.01773430134 +5933,3,-9.422266030841 +5934,3,-8.623714631529 +5935,3,-9.197372168411 +5936,3,-7.969559654488 +5937,3,-9.640167516065 +5938,3,-8.37273749733 +5939,3,-8.548762013458 +5940,3,-9.133263691768 +5941,3,-10.03413296617 +5942,3,-10.04965747328 +5943,3,-9.367090451487 +5944,3,-8.627072960216 +5945,3,-9.767460305202 +5946,3,-13.00198151397 +5947,3,-11.18942865765 +5948,3,-9.039587457067 +5949,3,-8.096215533334 +5950,3,-9.958070032003 +5951,3,-9.863511529574 +5952,3,-8.997745163657 +5953,3,-9.022384317561 +5954,3,-7.964113671935 +5955,3,-7.941196148936 +5956,3,-9.469965327541 +5957,3,-7.515129893969 +5958,3,-10.41821189667 +5959,3,-9.190278785986 +5960,3,-9.249485177108 +5961,3,-7.944970398156 +5962,3,-8.356584716417 +5963,3,-7.877724513737 +5964,3,-7.508812031576 +5965,3,-10.96034525921 +5966,3,-12.25065996142 +5967,3,-10.70915483422 +5968,3,-12.33114292021 +5969,3,-8.624068647928 +5970,3,-10.3516930913 +5971,3,-12.45353028904 +5972,3,-11.18942865765 +5973,3,-9.039587457067 +5974,3,-13.08824272093 +5975,3,-10.6885918527 +5976,3,-10.33692705206 +5977,3,-7.784367057451 +5978,3,-8.083985854942 +5979,3,-9.568570240546 +5980,3,-9.803412116389 +5981,3,-8.096215533334 +5982,3,-8.392802570166 +5983,3,-9.222350466362 ** node loads on shape: Box3:Face6 -2,3,-0.0 -4,3,-0.0 -6,3,-0.0 -8,3,-0.0 -43,3,-0.0 -44,3,-0.0 -45,3,-0.0 -46,3,-0.0 -47,3,-5.5694444446420155 -48,3,-4.3711646419271615 -49,3,-6.703045430740325 -50,3,-4.255370802063468 -51,3,-5.569444444500001 -89,3,-0.0 -90,3,-0.0 -91,3,-0.0 -92,3,-0.0 -93,3,-0.0 -94,3,-0.0 -95,3,-0.0 -96,3,-0.0 -97,3,-0.0 -98,3,-5.569444444440001 -99,3,-5.261619159736668 -100,3,-5.261619159736668 -101,3,-5.337212586663333 -102,3,-5.0212153508333435 -103,3,-5.021350004306668 -104,3,-5.577551643663334 -105,3,-5.261619159736331 -106,3,-5.261619159736668 -107,3,-5.569444444440001 -136,3,-0.0 -137,3,-0.0 -138,3,-0.0 -139,3,-0.0 -140,3,-0.0 -141,3,-0.0 -142,3,-0.0 -143,3,-0.0 -144,3,-0.0 +2,3,-0 +4,3,-0 +6,3,-0 +8,3,-0 +43,3,-0 +44,3,-0 +45,3,-0 +46,3,-0 +47,3,-5.569444444642 +48,3,-4.371164641927 +49,3,-6.70304543074 +50,3,-4.255370802063 +51,3,-5.5694444445 +89,3,-0 +90,3,-0 +91,3,-0 +92,3,-0 +93,3,-0 +94,3,-0 +95,3,-0 +96,3,-0 +97,3,-0 +98,3,-5.56944444444 +99,3,-5.261619159737 +100,3,-5.261619159737 +101,3,-5.337212586663 +102,3,-5.021215350833 +103,3,-5.021350004307 +104,3,-5.577551643663 +105,3,-5.261619159736 +106,3,-5.261619159737 +107,3,-5.56944444444 +136,3,-0 +137,3,-0 +138,3,-0 +139,3,-0 +140,3,-0 +141,3,-0 +142,3,-0 +143,3,-0 +144,3,-0 145,3,-5.56944444445 -146,3,-5.261619159733333 -147,3,-5.261619159733333 +146,3,-5.261619159733 +147,3,-5.261619159733 148,3,-5.27617441685 -149,3,-4.835514662733323 -150,3,-5.582527932733332 -151,3,-5.5466145080666704 -152,3,-5.261619159733333 -153,3,-5.261619159733333 -154,3,-5.569444444324693 -155,3,-0.0 -156,3,-0.0 -157,3,-0.0 -158,3,-0.0 -159,3,-5.569444444508355 -160,3,-4.2553708021666745 -161,3,-6.703045430740325 -162,3,-4.371164641906139 -163,3,-5.569444444541353 -1252,3,-0.0 -1253,3,-0.0 -1254,3,-0.0 -1255,3,-0.0 -1256,3,-0.0 -1257,3,-0.0 -1258,3,-0.0 -1259,3,-0.0 -1260,3,-0.0 -1261,3,-0.0 -1262,3,-0.0 -1263,3,-0.0 -1264,3,-0.0 -1265,3,-0.0 -1266,3,-0.0 -1267,3,-0.0 -1268,3,-0.0 -1269,3,-0.0 -1270,3,-0.0 -1271,3,-0.0 -1272,3,-0.0 -1273,3,-0.0 -1274,3,-0.0 -1275,3,-0.0 -1276,3,-0.0 -1277,3,-0.0 -1278,3,-0.0 -1279,3,-0.0 -1280,3,-0.0 -1281,3,-0.0 -1282,3,-0.0 -1283,3,-0.0 -1284,3,-0.0 -1285,3,-0.0 -1286,3,-0.0 -1287,3,-0.0 -1288,3,-0.0 -1289,3,-0.0 -1290,3,-0.0 -1291,3,-0.0 -1292,3,-0.0 -1293,3,-0.0 -1294,3,-0.0 -1295,3,-0.0 -1296,3,-0.0 -1297,3,-0.0 -1298,3,-0.0 -1299,3,-0.0 -1300,3,-0.0 -1301,3,-0.0 -1302,3,-0.0 -1303,3,-0.0 -1304,3,-0.0 -1305,3,-11.441784274537985 -1306,3,-11.138888888866047 -1307,3,-9.424848761183359 -1308,3,-9.424848761336506 -1309,3,-11.138888889082017 -1310,3,-11.44178427463891 -1311,3,-9.363263425653836 -1312,3,-11.138888888950003 -1313,3,-11.441784274653262 -1314,3,-11.441784274641906 -1315,3,-11.138888888948356 -1316,3,-9.363263425662188 -1317,3,-9.670981857463937 -1318,3,-8.226568958621652 -1319,3,-7.497585640011778 -1320,3,-11.630124697943662 -1321,3,-12.002862646277102 -1322,3,-10.697223349286471 -1323,3,-8.049189783217303 -1324,3,-9.182450069266807 -1325,3,-9.385722588412339 -1326,3,-7.1195427173962225 -1327,3,-10.523238319473336 -1328,3,-11.133958989935577 -1329,3,-10.326374040205412 -1330,3,-11.617087069184395 -1331,3,-9.672416375800758 -1332,3,-11.019360932383021 -1333,3,-10.656711799060446 -1334,3,-12.037616255167418 -1335,3,-10.525502347358868 -1336,3,-11.041584821599237 -1337,3,-9.356419139970766 -1338,3,-8.599707597506214 -1339,3,-9.181543114305235 -1340,3,-11.428101157575885 -1341,3,-12.033295992303483 -1342,3,-12.42712062403511 -1343,3,-11.011635775836812 -1344,3,-10.312991148206853 -1345,3,-9.737744753661902 -1346,3,-8.152854264100089 -1347,3,-10.523238319473 -1348,3,-11.254989799739217 -1349,3,-8.840598382851184 -1350,3,-10.728810144546406 -1351,3,-11.255992204845564 -1352,3,-11.133958989938572 -1353,3,-10.630601948901788 -1354,3,-10.523238319466666 -1355,3,-11.133958989936595 -1356,3,-10.630601948903145 -1357,3,-11.287957834116177 -1358,3,-9.002482625598992 -1359,3,-10.114431455241279 -1360,3,-9.001813136738134 -1361,3,-10.864595712774124 -1362,3,-11.019442668925306 -1363,3,-11.042756415270619 -1364,3,-8.561822871482315 -1365,3,-7.636396142604173 -1366,3,-10.27893194833742 -1367,3,-12.359915402159283 -1368,3,-11.948265994971809 -1369,3,-12.984629221963246 -1370,3,-11.78730562770001 -1371,3,-10.902071075763898 -1372,3,-10.24301852367076 -1373,3,-8.773654183078227 -1374,3,-10.523238319466666 -1375,3,-11.617087069369065 -1376,3,-9.995610093888558 -1377,3,-11.710924477332957 -1378,3,-10.52550234754687 -1379,3,-11.133958989946624 -1380,3,-10.326374040229823 -1381,3,-9.182450069399577 -1382,3,-8.049189783320507 -1383,3,-7.119542717396222 -1384,3,-12.0028626462771 -1385,3,-11.630124697973224 -1386,3,-9.385722588441903 -1387,3,-8.226568958548146 -1388,3,-9.670981857442914 -1389,3,-10.69722334928647 -1390,3,-7.497585639959295 -1391,3,-8.222556949072144 -1392,3,-8.267903322764791 -1393,3,-8.619345411703344 -1394,3,-8.99917531946051 -1395,3,-7.94119614893634 -1396,3,-8.868270286383538 -1397,3,-8.305366927666347 -1398,3,-10.351693091295353 -1399,3,-9.469965327540804 -1400,3,-7.515267407112746 -1401,3,-12.25065996141579 -1402,3,-8.212081132678076 -1403,3,-8.392802570166362 -1404,3,-8.356584716416574 -1405,3,-9.222350466361966 -1406,3,-9.803412116388623 -1407,3,-11.833663165152876 -1408,3,-10.077016440986764 -1409,3,-10.870500976437764 -1410,3,-8.899879092046776 -1411,3,-8.842745127759263 -1412,3,-11.505879684456142 -1413,3,-10.109202161937711 -1414,3,-8.91409635956375 -1415,3,-9.381904061090601 -1416,3,-8.750136338791751 -1417,3,-12.453712920879918 -1418,3,-11.189428657649001 -1419,3,-12.331142920211075 -1420,3,-9.03958745706698 -1421,3,-8.624068647927672 -1422,3,-8.09621553333382 -1423,3,-10.709154834222907 -1424,3,-9.469965327540804 -1425,3,-12.250659961415787 -1426,3,-10.686103018444777 -1427,3,-12.331142920211075 -1428,3,-10.709154834222907 -1429,3,-9.33713260518759 -1430,3,-8.624068647917644 -1431,3,-9.424242214853727 -1432,3,-8.795599794542253 -1433,3,-8.63738045266289 -1434,3,-8.971445849147335 -1435,3,-10.328483871331565 -1436,3,-9.36324218562862 -1437,3,-9.046646700447193 -1438,3,-9.024486393864514 -1439,3,-9.11705675274971 -1440,3,-13.00198151397448 -1441,3,-11.189428657649003 -1442,3,-10.960345259214714 -1443,3,-13.088242720930646 -1444,3,-7.944970398156275 -1445,3,-7.508812031576325 -1446,3,-7.877724513736612 -1447,3,-10.688591852701636 -1448,3,-10.33692705206448 -1449,3,-7.784367057451391 -1450,3,-9.03958745706698 -1451,3,-8.372737497330345 -1452,3,-9.249485177108465 -1453,3,-8.548762013457685 -1454,3,-8.837386915781988 -1455,3,-8.627072960215624 -1456,3,-10.133532146124173 -1457,3,-9.296027036830166 -1458,3,-9.66484234770287 -1459,3,-10.797801489587425 -1460,3,-12.264946805637562 -1461,3,-10.457598863207325 -1462,3,-8.08398585494227 -1463,3,-9.568570240546043 -1464,3,-10.418532041656576 -1465,3,-12.105248144551675 -1466,3,-10.047158294714011 -1467,3,-9.902201068780068 -1468,3,-7.784367057451391 -1469,3,-9.490151809017895 -1470,3,-9.637966376862291 -1471,3,-9.629690527536438 -1472,3,-9.190278785986038 -1473,3,-9.530662197161135 -1474,3,-8.615275020478688 -1475,3,-8.134702049077775 -1476,3,-8.887880059197135 -1477,3,-8.990802641793039 -1478,3,-10.045342745732153 -1479,3,-9.866222111985623 -1480,3,-9.870734448060915 -1481,3,-9.143971951358786 -1482,3,-8.022204324871634 -1483,3,-9.619205993135788 -1484,3,-11.767266197716355 -1485,3,-8.54433801879057 -1486,3,-7.958612968186402 -1487,3,-7.964923105579531 -1488,3,-8.083985854942272 -1489,3,-9.361862665842828 -1490,3,-8.096215533323791 +149,3,-4.835514662733 +150,3,-5.582527932733 +151,3,-5.546614508067 +152,3,-5.261619159733 +153,3,-5.261619159733 +154,3,-5.569444444325 +155,3,-0 +156,3,-0 +157,3,-0 +158,3,-0 +159,3,-5.569444444508 +160,3,-4.255370802167 +161,3,-6.70304543074 +162,3,-4.371164641906 +163,3,-5.569444444541 +1252,3,-0 +1253,3,-0 +1254,3,-0 +1255,3,-0 +1256,3,-0 +1257,3,-0 +1258,3,-0 +1259,3,-0 +1260,3,-0 +1261,3,-0 +1262,3,-0 +1263,3,-0 +1264,3,-0 +1265,3,-0 +1266,3,-0 +1267,3,-0 +1268,3,-0 +1269,3,-0 +1270,3,-0 +1271,3,-0 +1272,3,-0 +1273,3,-0 +1274,3,-0 +1275,3,-0 +1276,3,-0 +1277,3,-0 +1278,3,-0 +1279,3,-0 +1280,3,-0 +1281,3,-0 +1282,3,-0 +1283,3,-0 +1284,3,-0 +1285,3,-0 +1286,3,-0 +1287,3,-0 +1288,3,-0 +1289,3,-0 +1290,3,-0 +1291,3,-0 +1292,3,-0 +1293,3,-0 +1294,3,-0 +1295,3,-0 +1296,3,-0 +1297,3,-0 +1298,3,-0 +1299,3,-0 +1300,3,-0 +1301,3,-0 +1302,3,-0 +1303,3,-0 +1304,3,-0 +1305,3,-11.44178427454 +1306,3,-11.13888888887 +1307,3,-9.424848761183 +1308,3,-9.424848761337 +1309,3,-11.13888888908 +1310,3,-11.44178427464 +1311,3,-9.363263425654 +1312,3,-11.13888888895 +1313,3,-11.44178427465 +1314,3,-11.44178427464 +1315,3,-11.13888888895 +1316,3,-9.363263425662 +1317,3,-9.670981857464 +1318,3,-8.226568958622 +1319,3,-7.497585640012 +1320,3,-11.63012469794 +1321,3,-12.00286264628 +1322,3,-10.69722334929 +1323,3,-8.049189783217 +1324,3,-9.182450069267 +1325,3,-9.385722588412 +1326,3,-7.119542717396 +1327,3,-10.52323831947 +1328,3,-11.13395898994 +1329,3,-10.32637404021 +1330,3,-11.61708706918 +1331,3,-9.672416375801 +1332,3,-11.01936093238 +1333,3,-10.65671179906 +1334,3,-12.03761625517 +1335,3,-10.52550234736 +1336,3,-11.0415848216 +1337,3,-9.356419139971 +1338,3,-8.599707597506 +1339,3,-9.181543114305 +1340,3,-11.42810115758 +1341,3,-12.0332959923 +1342,3,-12.42712062404 +1343,3,-11.01163577584 +1344,3,-10.31299114821 +1345,3,-9.737744753662 +1346,3,-8.1528542641 +1347,3,-10.52323831947 +1348,3,-11.25498979974 +1349,3,-8.840598382851 +1350,3,-10.72881014455 +1351,3,-11.25599220485 +1352,3,-11.13395898994 +1353,3,-10.6306019489 +1354,3,-10.52323831947 +1355,3,-11.13395898994 +1356,3,-10.6306019489 +1357,3,-11.28795783412 +1358,3,-9.002482625599 +1359,3,-10.11443145524 +1360,3,-9.001813136738 +1361,3,-10.86459571277 +1362,3,-11.01944266893 +1363,3,-11.04275641527 +1364,3,-8.561822871482 +1365,3,-7.636396142604 +1366,3,-10.27893194834 +1367,3,-12.35991540216 +1368,3,-11.94826599497 +1369,3,-12.98462922196 +1370,3,-11.7873056277 +1371,3,-10.90207107576 +1372,3,-10.24301852367 +1373,3,-8.773654183078 +1374,3,-10.52323831947 +1375,3,-11.61708706937 +1376,3,-9.995610093889 +1377,3,-11.71092447733 +1378,3,-10.52550234755 +1379,3,-11.13395898995 +1380,3,-10.32637404023 +1381,3,-9.1824500694 +1382,3,-8.049189783321 +1383,3,-7.119542717396 +1384,3,-12.00286264628 +1385,3,-11.63012469797 +1386,3,-9.385722588442 +1387,3,-8.226568958548 +1388,3,-9.670981857443 +1389,3,-10.69722334929 +1390,3,-7.497585639959 +1391,3,-8.222556949072 +1392,3,-8.267903322765 +1393,3,-8.619345411703 +1394,3,-8.999175319461 +1395,3,-7.941196148936 +1396,3,-8.868270286384 +1397,3,-8.305366927666 +1398,3,-10.3516930913 +1399,3,-9.469965327541 +1400,3,-7.515267407113 +1401,3,-12.25065996142 +1402,3,-8.212081132678 +1403,3,-8.392802570166 +1404,3,-8.356584716417 +1405,3,-9.222350466362 +1406,3,-9.803412116389 +1407,3,-11.83366316515 +1408,3,-10.07701644099 +1409,3,-10.87050097644 +1410,3,-8.899879092047 +1411,3,-8.842745127759 +1412,3,-11.50587968446 +1413,3,-10.10920216194 +1414,3,-8.914096359564 +1415,3,-9.381904061091 +1416,3,-8.750136338792 +1417,3,-12.45371292088 +1418,3,-11.18942865765 +1419,3,-12.33114292021 +1420,3,-9.039587457067 +1421,3,-8.624068647928 +1422,3,-8.096215533334 +1423,3,-10.70915483422 +1424,3,-9.469965327541 +1425,3,-12.25065996142 +1426,3,-10.68610301844 +1427,3,-12.33114292021 +1428,3,-10.70915483422 +1429,3,-9.337132605188 +1430,3,-8.624068647918 +1431,3,-9.424242214854 +1432,3,-8.795599794542 +1433,3,-8.637380452663 +1434,3,-8.971445849147 +1435,3,-10.32848387133 +1436,3,-9.363242185629 +1437,3,-9.046646700447 +1438,3,-9.024486393865 +1439,3,-9.11705675275 +1440,3,-13.00198151397 +1441,3,-11.18942865765 +1442,3,-10.96034525921 +1443,3,-13.08824272093 +1444,3,-7.944970398156 +1445,3,-7.508812031576 +1446,3,-7.877724513737 +1447,3,-10.6885918527 +1448,3,-10.33692705206 +1449,3,-7.784367057451 +1450,3,-9.039587457067 +1451,3,-8.37273749733 +1452,3,-9.249485177108 +1453,3,-8.548762013458 +1454,3,-8.837386915782 +1455,3,-8.627072960216 +1456,3,-10.13353214612 +1457,3,-9.29602703683 +1458,3,-9.664842347703 +1459,3,-10.79780148959 +1460,3,-12.26494680564 +1461,3,-10.45759886321 +1462,3,-8.083985854942 +1463,3,-9.568570240546 +1464,3,-10.41853204166 +1465,3,-12.10524814455 +1466,3,-10.04715829471 +1467,3,-9.90220106878 +1468,3,-7.784367057451 +1469,3,-9.490151809018 +1470,3,-9.637966376862 +1471,3,-9.629690527536 +1472,3,-9.190278785986 +1473,3,-9.530662197161 +1474,3,-8.615275020479 +1475,3,-8.134702049078 +1476,3,-8.887880059197 +1477,3,-8.990802641793 +1478,3,-10.04534274573 +1479,3,-9.866222111986 +1480,3,-9.870734448061 +1481,3,-9.143971951359 +1482,3,-8.022204324872 +1483,3,-9.619205993136 +1484,3,-11.76726619772 +1485,3,-8.544338018791 +1486,3,-7.958612968186 +1487,3,-7.96492310558 +1488,3,-8.083985854942 +1489,3,-9.361862665843 +1490,3,-8.096215533324 ** node loads on shape: Box4:Face6 -6,3,-0.0 -8,3,-0.0 -10,3,-0.0 -12,3,-0.0 -155,3,-0.0 -156,3,-0.0 -157,3,-0.0 -158,3,-0.0 -159,3,-3.614848889166662 -160,3,-4.956060414833335 -161,3,-6.508969907333344 -162,3,-5.536850579333322 -163,3,-6.138304924168802 -191,3,-0.0 -192,3,-0.0 -193,3,-0.0 -194,3,-0.0 -195,3,-3.6443097420828496 -196,3,-4.956060414704831 -197,3,-6.508969907333344 -198,3,-5.536850579333344 -199,3,-6.138304924166676 -340,3,-0.0 -341,3,-0.0 -342,3,-0.0 -343,3,-0.0 -344,3,-0.0 -345,3,-0.0 -346,3,-0.0 -347,3,-0.0 -348,3,-0.0 -349,3,-3.6148488891333335 -350,3,-4.769243746173334 -351,3,-6.423036093426669 -352,3,-7.848650861950001 -353,3,-6.038756478293334 -354,3,-6.165802611200001 -355,3,-7.838415950128967 -356,3,-6.423036093426669 -357,3,-4.76924374617828 -358,3,-3.6443097422325357 -378,3,-0.0 -379,3,-0.0 -380,3,-0.0 -381,3,-0.0 -382,3,-0.0 -383,3,-0.0 -384,3,-0.0 -385,3,-0.0 -386,3,-0.0 -387,3,-6.138304924418824 -388,3,-4.559668643459467 -389,3,-6.165246626112532 -390,3,-4.75980772780002 -391,3,-3.9667687295419176 -392,3,-4.4420616466126495 -393,3,-5.068903731072411 -394,3,-5.899704788666669 -395,3,-4.506560275916669 -396,3,-6.138304924250005 -3555,3,-0.0 -3556,3,-0.0 -3557,3,-0.0 -3558,3,-0.0 -3559,3,-0.0 -3560,3,-0.0 -3561,3,-0.0 -3562,3,-0.0 -3563,3,-0.0 -3564,3,-0.0 -3565,3,-0.0 -3566,3,-0.0 -3567,3,-0.0 -3568,3,-0.0 -3569,3,-0.0 -3570,3,-0.0 -3571,3,-0.0 -3572,3,-0.0 -3573,3,-0.0 -3574,3,-0.0 -3575,3,-0.0 -3576,3,-0.0 -3577,3,-0.0 -3578,3,-0.0 -3579,3,-0.0 -3580,3,-0.0 -3581,3,-0.0 -3582,3,-0.0 -3583,3,-0.0 -3584,3,-0.0 -3585,3,-0.0 -3586,3,-0.0 -3587,3,-0.0 -3588,3,-0.0 -3589,3,-0.0 -3590,3,-0.0 -3591,3,-0.0 -3592,3,-0.0 -3593,3,-0.0 -3594,3,-0.0 -3595,3,-0.0 -3596,3,-0.0 -3597,3,-0.0 -3598,3,-0.0 -3599,3,-0.0 -3600,3,-0.0 -3601,3,-0.0 -3602,3,-0.0 -3603,3,-0.0 -3604,3,-0.0 -3605,3,-0.0 -3606,3,-0.0 -3607,3,-10.956901604190847 -3608,3,-12.276609848587626 -3609,3,-9.981133108295333 -3610,3,-7.229697778299996 -3611,3,-7.073412698308217 -3612,3,-7.073412698591778 -3613,3,-7.073412698260245 -3614,3,-7.288619484315385 -3615,3,-7.073412698533724 -3616,3,-12.276609848416681 -3617,3,-10.956901604055034 -3618,3,-9.792351504302298 -3619,3,-10.107822934514731 -3620,3,-8.989755378640488 -3621,3,-8.610326328822952 -3622,3,-10.091121477058538 -3623,3,-6.917127618599999 -3624,3,-10.542664871140499 -3625,3,-11.068816115444553 -3626,3,-9.102424664321864 -3627,3,-10.09669678744453 -3628,3,-10.355447259355367 -3629,3,-8.21525655122786 -3630,3,-8.665323215298248 -3631,3,-8.989755378511994 -3632,3,-10.107822934267897 -3633,3,-10.091121476940218 -3634,3,-8.580865475740461 -3635,3,-6.858205912478583 -3636,3,-11.068816115444553 -3637,3,-10.542664871140508 -3638,3,-9.102424664321846 -3639,3,-10.355447259221702 -3640,3,-10.096696787444552 -3641,3,-8.231383335099785 -3642,3,-8.665323215164605 -3643,3,-8.63321510302237 -3644,3,-9.708431108472583 -3645,3,-9.910079323403064 -3646,3,-8.397751171757692 -3647,3,-13.837977284180917 -3648,3,-10.287007450275702 -3649,3,-8.989704087383009 -3650,3,-14.893845172541733 -3651,3,-15.263592052704253 -3652,3,-12.923030607236427 -3653,3,-11.960532032095587 -3654,3,-13.083950788885065 -3655,3,-12.074870672317044 -3656,3,-13.374730536598351 -3657,3,-12.087578165002252 -3658,3,-10.99648610459504 -3659,3,-15.250280720015963 -3660,3,-15.04734387552732 -3661,3,-12.351324689845436 -3662,3,-10.287007450273988 -3663,3,-13.834900863313667 -3664,3,-12.823768969956244 -3665,3,-9.708431108472576 -3666,3,-8.633215103025602 -3667,3,-8.989704087381284 -3668,3,-8.368290318595482 -3669,3,-9.910079323398081 -3670,3,-8.402496827335977 -3671,3,-8.782477292058346 -3672,3,-7.690557867545957 -3673,3,-10.388055274711412 -3674,3,-11.187384526754654 -3675,3,-8.803557559725062 -3676,3,-9.781945628442141 -3677,3,-9.669203185423225 -3678,3,-10.456769153908242 -3679,3,-7.914946592484122 -3680,3,-7.073563699081852 -3681,3,-8.925697538914129 -3682,3,-8.85757332056541 -3683,3,-8.713966831244027 -3684,3,-7.548856616152584 -3685,3,-9.878349145492962 -3686,3,-7.676659335662925 -3687,3,-10.923822855179921 -3688,3,-11.205852675187836 -3689,3,-10.58861195248704 -3690,3,-11.291206622987822 -3691,3,-10.44849352303075 -3692,3,-12.036653732782094 -3693,3,-9.489334919077331 -3694,3,-10.401617119669861 -3695,3,-8.096190406327333 -3696,3,-8.160606855968963 -3697,3,-7.45083684311291 -3698,3,-7.405486056299498 -3699,3,-10.455861610750173 -3700,3,-10.838218296698374 -3701,3,-11.267147900850018 -3702,3,-10.096624691637789 -3703,3,-11.768318840952489 -3704,3,-10.597500397622284 -3705,3,-8.305655415083697 -3706,3,-8.92085647224762 -3707,3,-9.329104795773866 -3708,3,-10.008088657891852 -3709,3,-7.91578543837581 -3710,3,-9.910250918480958 -3711,3,-7.694456218945648 -3712,3,-7.465903333340855 -3713,3,-7.264350836159887 -3714,3,-7.274587141181307 -3715,3,-7.45901337518236 -3716,3,-7.598166011523454 -3717,3,-7.2838239668946905 -3718,3,-7.506432810236367 -3719,3,-7.955318946978073 -3720,3,-11.632925522371256 -3721,3,-11.506929396626939 -3722,3,-12.170766921883967 -3723,3,-12.590276263502219 -3724,3,-11.429187843593231 -3725,3,-12.671845418304681 -3726,3,-9.847750720353114 -3727,3,-11.844811692422319 -3728,3,-9.421957311989999 -3729,3,-8.4893406531914 -3730,3,-10.581668526317012 -3731,3,-10.548729268689003 -3732,3,-8.900029179792673 -3733,3,-11.325100127519844 -3734,3,-11.687267361991925 -3735,3,-9.289665029451914 -3736,3,-12.054535520397502 -3737,3,-9.72218881972972 -3738,3,-13.215474308058173 -3739,3,-12.536326992147913 -3740,3,-10.227690324280381 -3741,3,-8.392453468197091 -3742,3,-11.567235083986143 -3743,3,-10.541631191788243 -3744,3,-11.067283592869645 -3745,3,-9.868859281590524 -3746,3,-10.028648563434928 -3747,3,-10.915726641231684 -3748,3,-10.321754378247007 -3749,3,-10.779954644003746 -3750,3,-9.780903508389557 -3751,3,-9.353224368244554 -3752,3,-8.554645204628043 -3753,3,-9.184932606418005 -3754,3,-9.335653334424814 -3755,3,-10.910760447742675 -3756,3,-12.799692579619279 -3757,3,-9.13147745100827 -3758,3,-10.493783174468463 -3759,3,-10.09662469163775 -3760,3,-11.627692232727917 -3761,3,-10.692117359696967 -3762,3,-14.436445234796567 -3763,3,-11.41717067387214 -3764,3,-14.027827184772399 -3765,3,-12.469625091896232 -3766,3,-11.956135926207747 -3767,3,-12.824133166460959 -3768,3,-8.428478594795632 -3769,3,-11.862180153020143 -3770,3,-10.767020408856379 -3771,3,-10.719811561689996 -3772,3,-9.312825646827573 -3773,3,-8.746055206979891 -3774,3,-9.516447759091923 -3775,3,-9.199165989285532 -3776,3,-11.825576233996207 -3777,3,-10.703127813078483 -3778,3,-9.9776536395868 -3779,3,-9.486592335614064 -3780,3,-9.71321729473526 -3781,3,-8.628580259547881 -3782,3,-9.44155814654659 -3783,3,-7.983511885976238 -3784,3,-9.450933334557048 -3785,3,-8.063547244828284 -3786,3,-9.910250918480937 -3787,3,-10.008088657891834 -3788,3,-9.352511520504178 -3789,3,-7.612646188949451 +6,3,-0 +8,3,-0 +10,3,-0 +12,3,-0 +155,3,-0 +156,3,-0 +157,3,-0 +158,3,-0 +159,3,-3.614848889167 +160,3,-4.956060414833 +161,3,-6.508969907333 +162,3,-5.536850579333 +163,3,-6.138304924169 +191,3,-0 +192,3,-0 +193,3,-0 +194,3,-0 +195,3,-3.644309742083 +196,3,-4.956060414705 +197,3,-6.508969907333 +198,3,-5.536850579333 +199,3,-6.138304924167 +340,3,-0 +341,3,-0 +342,3,-0 +343,3,-0 +344,3,-0 +345,3,-0 +346,3,-0 +347,3,-0 +348,3,-0 +349,3,-3.614848889133 +350,3,-4.769243746173 +351,3,-6.423036093427 +352,3,-7.84865086195 +353,3,-6.038756478293 +354,3,-6.1658026112 +355,3,-7.838415950129 +356,3,-6.423036093427 +357,3,-4.769243746178 +358,3,-3.644309742233 +378,3,-0 +379,3,-0 +380,3,-0 +381,3,-0 +382,3,-0 +383,3,-0 +384,3,-0 +385,3,-0 +386,3,-0 +387,3,-6.138304924419 +388,3,-4.559668643459 +389,3,-6.165246626113 +390,3,-4.7598077278 +391,3,-3.966768729542 +392,3,-4.442061646613 +393,3,-5.068903731072 +394,3,-5.899704788667 +395,3,-4.506560275917 +396,3,-6.13830492425 +3555,3,-0 +3556,3,-0 +3557,3,-0 +3558,3,-0 +3559,3,-0 +3560,3,-0 +3561,3,-0 +3562,3,-0 +3563,3,-0 +3564,3,-0 +3565,3,-0 +3566,3,-0 +3567,3,-0 +3568,3,-0 +3569,3,-0 +3570,3,-0 +3571,3,-0 +3572,3,-0 +3573,3,-0 +3574,3,-0 +3575,3,-0 +3576,3,-0 +3577,3,-0 +3578,3,-0 +3579,3,-0 +3580,3,-0 +3581,3,-0 +3582,3,-0 +3583,3,-0 +3584,3,-0 +3585,3,-0 +3586,3,-0 +3587,3,-0 +3588,3,-0 +3589,3,-0 +3590,3,-0 +3591,3,-0 +3592,3,-0 +3593,3,-0 +3594,3,-0 +3595,3,-0 +3596,3,-0 +3597,3,-0 +3598,3,-0 +3599,3,-0 +3600,3,-0 +3601,3,-0 +3602,3,-0 +3603,3,-0 +3604,3,-0 +3605,3,-0 +3606,3,-0 +3607,3,-10.95690160419 +3608,3,-12.27660984859 +3609,3,-9.981133108295 +3610,3,-7.2296977783 +3611,3,-7.073412698308 +3612,3,-7.073412698592 +3613,3,-7.07341269826 +3614,3,-7.288619484315 +3615,3,-7.073412698534 +3616,3,-12.27660984842 +3617,3,-10.95690160406 +3618,3,-9.792351504302 +3619,3,-10.10782293451 +3620,3,-8.98975537864 +3621,3,-8.610326328823 +3622,3,-10.09112147706 +3623,3,-6.9171276186 +3624,3,-10.54266487114 +3625,3,-11.06881611544 +3626,3,-9.102424664322 +3627,3,-10.09669678744 +3628,3,-10.35544725936 +3629,3,-8.215256551228 +3630,3,-8.665323215298 +3631,3,-8.989755378512 +3632,3,-10.10782293427 +3633,3,-10.09112147694 +3634,3,-8.58086547574 +3635,3,-6.858205912479 +3636,3,-11.06881611544 +3637,3,-10.54266487114 +3638,3,-9.102424664322 +3639,3,-10.35544725922 +3640,3,-10.09669678744 +3641,3,-8.2313833351 +3642,3,-8.665323215165 +3643,3,-8.633215103022 +3644,3,-9.708431108473 +3645,3,-9.910079323403 +3646,3,-8.397751171758 +3647,3,-13.83797728418 +3648,3,-10.28700745028 +3649,3,-8.989704087383 +3650,3,-14.89384517254 +3651,3,-15.2635920527 +3652,3,-12.92303060724 +3653,3,-11.9605320321 +3654,3,-13.08395078889 +3655,3,-12.07487067232 +3656,3,-13.3747305366 +3657,3,-12.087578165 +3658,3,-10.9964861046 +3659,3,-15.25028072002 +3660,3,-15.04734387553 +3661,3,-12.35132468985 +3662,3,-10.28700745027 +3663,3,-13.83490086331 +3664,3,-12.82376896996 +3665,3,-9.708431108473 +3666,3,-8.633215103026 +3667,3,-8.989704087381 +3668,3,-8.368290318595 +3669,3,-9.910079323398 +3670,3,-8.402496827336 +3671,3,-8.782477292058 +3672,3,-7.690557867546 +3673,3,-10.38805527471 +3674,3,-11.18738452675 +3675,3,-8.803557559725 +3676,3,-9.781945628442 +3677,3,-9.669203185423 +3678,3,-10.45676915391 +3679,3,-7.914946592484 +3680,3,-7.073563699082 +3681,3,-8.925697538914 +3682,3,-8.857573320565 +3683,3,-8.713966831244 +3684,3,-7.548856616153 +3685,3,-9.878349145493 +3686,3,-7.676659335663 +3687,3,-10.92382285518 +3688,3,-11.20585267519 +3689,3,-10.58861195249 +3690,3,-11.29120662299 +3691,3,-10.44849352303 +3692,3,-12.03665373278 +3693,3,-9.489334919077 +3694,3,-10.40161711967 +3695,3,-8.096190406327 +3696,3,-8.160606855969 +3697,3,-7.450836843113 +3698,3,-7.405486056299 +3699,3,-10.45586161075 +3700,3,-10.8382182967 +3701,3,-11.26714790085 +3702,3,-10.09662469164 +3703,3,-11.76831884095 +3704,3,-10.59750039762 +3705,3,-8.305655415084 +3706,3,-8.920856472248 +3707,3,-9.329104795774 +3708,3,-10.00808865789 +3709,3,-7.915785438376 +3710,3,-9.910250918481 +3711,3,-7.694456218946 +3712,3,-7.465903333341 +3713,3,-7.26435083616 +3714,3,-7.274587141181 +3715,3,-7.459013375182 +3716,3,-7.598166011523 +3717,3,-7.283823966895 +3718,3,-7.506432810236 +3719,3,-7.955318946978 +3720,3,-11.63292552237 +3721,3,-11.50692939663 +3722,3,-12.17076692188 +3723,3,-12.5902762635 +3724,3,-11.42918784359 +3725,3,-12.6718454183 +3726,3,-9.847750720353 +3727,3,-11.84481169242 +3728,3,-9.42195731199 +3729,3,-8.489340653191 +3730,3,-10.58166852632 +3731,3,-10.54872926869 +3732,3,-8.900029179793 +3733,3,-11.32510012752 +3734,3,-11.68726736199 +3735,3,-9.289665029452 +3736,3,-12.0545355204 +3737,3,-9.72218881973 +3738,3,-13.21547430806 +3739,3,-12.53632699215 +3740,3,-10.22769032428 +3741,3,-8.392453468197 +3742,3,-11.56723508399 +3743,3,-10.54163119179 +3744,3,-11.06728359287 +3745,3,-9.868859281591 +3746,3,-10.02864856343 +3747,3,-10.91572664123 +3748,3,-10.32175437825 +3749,3,-10.779954644 +3750,3,-9.78090350839 +3751,3,-9.353224368245 +3752,3,-8.554645204628 +3753,3,-9.184932606418 +3754,3,-9.335653334425 +3755,3,-10.91076044774 +3756,3,-12.79969257962 +3757,3,-9.131477451008 +3758,3,-10.49378317447 +3759,3,-10.09662469164 +3760,3,-11.62769223273 +3761,3,-10.6921173597 +3762,3,-14.4364452348 +3763,3,-11.41717067387 +3764,3,-14.02782718477 +3765,3,-12.4696250919 +3766,3,-11.95613592621 +3767,3,-12.82413316646 +3768,3,-8.428478594796 +3769,3,-11.86218015302 +3770,3,-10.76702040886 +3771,3,-10.71981156169 +3772,3,-9.312825646828 +3773,3,-8.74605520698 +3774,3,-9.516447759092 +3775,3,-9.199165989286 +3776,3,-11.825576234 +3777,3,-10.70312781308 +3778,3,-9.977653639587 +3779,3,-9.486592335614 +3780,3,-9.713217294735 +3781,3,-8.628580259548 +3782,3,-9.441558146547 +3783,3,-7.983511885976 +3784,3,-9.450933334557 +3785,3,-8.063547244828 +3786,3,-9.910250918481 +3787,3,-10.00808865789 +3788,3,-9.352511520504 +3789,3,-7.612646188949 ** node loads on shape: Box5:Face6 -10,3,-0.0 -12,3,-0.0 -14,3,-0.0 -16,3,-0.0 -191,3,-0.0 -192,3,-0.0 -193,3,-0.0 -194,3,-0.0 -195,3,-3.9949845133412945 -196,3,-4.956060414704831 -197,3,-6.508969907333344 -198,3,-5.536850579333344 -199,3,-6.138304924166676 -237,3,-0.0 -238,3,-0.0 -239,3,-0.0 -240,3,-0.0 -241,3,-0.0 -242,3,-0.0 -243,3,-0.0 -244,3,-0.0 -245,3,-0.0 -246,3,-3.6459246333893525 -247,3,-3.356722656336667 -248,3,-5.844122433563334 -249,3,-5.507486226663335 -250,3,-4.595447997763334 -251,3,-4.605795435193334 -252,3,-5.0373687160700005 -253,3,-5.660981250433334 -254,3,-4.095993967856423 -255,3,-5.569444444440001 -284,3,-0.0 -285,3,-0.0 -286,3,-0.0 -287,3,-0.0 -288,3,-0.0 -289,3,-0.0 -290,3,-0.0 -291,3,-0.0 -292,3,-0.0 -293,3,-6.138304924250005 -294,3,-4.558257237916666 +10,3,-0 +12,3,-0 +14,3,-0 +16,3,-0 +191,3,-0 +192,3,-0 +193,3,-0 +194,3,-0 +195,3,-3.994984513341 +196,3,-4.956060414705 +197,3,-6.508969907333 +198,3,-5.536850579333 +199,3,-6.138304924167 +237,3,-0 +238,3,-0 +239,3,-0 +240,3,-0 +241,3,-0 +242,3,-0 +243,3,-0 +244,3,-0 +245,3,-0 +246,3,-3.645924633389 +247,3,-3.356722656337 +248,3,-5.844122433563 +249,3,-5.507486226663 +250,3,-4.595447997763 +251,3,-4.605795435193 +252,3,-5.03736871607 +253,3,-5.660981250433 +254,3,-4.095993967856 +255,3,-5.56944444444 +284,3,-0 +285,3,-0 +286,3,-0 +287,3,-0 +288,3,-0 +289,3,-0 +290,3,-0 +291,3,-0 +292,3,-0 +293,3,-6.13830492425 +294,3,-4.558257237917 295,3,-6.15818959865 -296,3,-4.637666805533332 -297,3,-4.696263414066667 -298,3,-5.935566340066669 -299,3,-4.560816379200004 -300,3,-5.135150336204939 -301,3,-5.135150336333335 +296,3,-4.637666805533 +297,3,-4.696263414067 +298,3,-5.935566340067 +299,3,-4.5608163792 +300,3,-5.135150336205 +301,3,-5.135150336333 302,3,-5.56944444445 -303,3,-0.0 -304,3,-0.0 -305,3,-0.0 -306,3,-0.0 -307,3,-5.569444444642013 -308,3,-4.4830729166554875 -309,3,-6.807322053333363 -310,3,-4.392019966166672 -311,3,-5.569444444499989 -2470,3,-0.0 -2471,3,-0.0 -2472,3,-0.0 -2473,3,-0.0 -2474,3,-0.0 -2475,3,-0.0 -2476,3,-0.0 -2477,3,-0.0 -2478,3,-0.0 -2479,3,-0.0 -2480,3,-0.0 -2481,3,-0.0 -2482,3,-0.0 -2483,3,-0.0 -2484,3,-0.0 -2485,3,-0.0 -2486,3,-0.0 -2487,3,-0.0 -2488,3,-0.0 -2489,3,-0.0 -2490,3,-0.0 -2491,3,-0.0 -2492,3,-0.0 -2493,3,-0.0 -2494,3,-0.0 -2495,3,-0.0 -2496,3,-0.0 -2497,3,-0.0 -2498,3,-0.0 -2499,3,-0.0 -2500,3,-0.0 -2501,3,-0.0 -2502,3,-0.0 -2503,3,-0.0 -2504,3,-0.0 -2505,3,-0.0 -2506,3,-0.0 -2507,3,-0.0 -2508,3,-0.0 -2509,3,-0.0 -2510,3,-0.0 -2511,3,-0.0 -2512,3,-0.0 -2513,3,-0.0 -2514,3,-0.0 -2515,3,-0.0 -2516,3,-0.0 -2517,3,-0.0 -2518,3,-0.0 -2519,3,-0.0 -2520,3,-0.0 -2521,3,-0.0 -2522,3,-0.0 -2523,3,-0.0 -2524,3,-7.640909146730647 -2525,3,-7.5866594849179165 -2526,3,-6.814101352285365 -2527,3,-10.956901604188651 -2528,3,-12.276609848416681 -2529,3,-10.073149462659547 -2530,3,-11.138888889082015 -2531,3,-9.232378177773722 -2532,3,-9.65148835381436 -2533,3,-11.150964530888741 -2534,3,-11.138888888949989 -2535,3,-9.446449415565393 -2536,3,-10.15824148987601 -2537,3,-8.989755378511994 -2538,3,-8.793856046747798 -2539,3,-10.614921226329923 -2540,3,-6.91841111180643 -2541,3,-10.542664871140508 -2542,3,-11.068816115444553 -2543,3,-9.409214765428297 -2544,3,-10.096696787444552 -2545,3,-10.35544725935532 -2546,3,-8.44569502296241 -2547,3,-8.665323215298223 -2548,3,-6.619319927824972 -2549,3,-6.524899375232679 -2550,3,-6.49491285912582 -2551,3,-12.916607578189275 -2552,3,-9.10671970505164 -2553,3,-6.591963525456937 -2554,3,-9.879753279195725 -2555,3,-11.964194875295886 -2556,3,-13.529193793258491 -2557,3,-13.13391922221554 -2558,3,-11.034700963698793 -2559,3,-8.925966661333984 -2560,3,-8.967715050295725 -2561,3,-7.846568362052352 -2562,3,-9.412341278602087 -2563,3,-8.936314098763983 -2564,3,-9.053813743617798 -2565,3,-10.8798180890603 -2566,3,-9.843914559478751 -2567,3,-9.75892958291437 -2568,3,-9.94597073741519 -2569,3,-11.503430623423634 -2570,3,-11.229230513337727 -2571,3,-7.758927701190143 -2572,3,-8.380983454838278 -2573,3,-8.911991042360683 -2574,3,-7.137360586938536 -2575,3,-8.493101776326208 -2576,3,-9.027172064977783 -2577,3,-7.848881908640585 -2578,3,-10.627104425711117 -2579,3,-10.581447971960804 -2580,3,-9.43120810020812 -2581,3,-9.060925178844137 -2582,3,-9.432359647878835 -2583,3,-9.055456637492975 -2584,3,-9.576776324089346 -2585,3,-9.24953034320492 -2586,3,-9.675205752368182 -2587,3,-9.35854790724709 -2588,3,-8.677051144419696 -2589,3,-10.488833269204923 -2590,3,-10.979770267839449 -2591,3,-9.479747977144028 -2592,3,-9.605020306972781 -2593,3,-10.333475997782859 -2594,3,-10.05330237054942 -2595,3,-11.531912158738969 -2596,3,-10.270300672538275 -2597,3,-11.358501704953666 -2598,3,-12.169421441116885 -2599,3,-10.573199190531295 -2600,3,-10.716670422772074 -2601,3,-9.917106875110145 -2602,3,-9.1810970311986 -2603,3,-8.565116825827834 -2604,3,-7.775729267864086 -2605,3,-12.213443708432202 -2606,3,-11.505346167876478 -2607,3,-9.50697117769411 -2608,3,-8.269024937232077 -2609,3,-9.798141621265511 -2610,3,-10.869195895256246 -2611,3,-7.519723452011768 -2612,3,-8.90481925228171 -2613,3,-10.32219323273923 -2614,3,-9.26421744488802 -2615,3,-10.920361004319366 -2616,3,-8.920827338747074 -2617,3,-10.570836768239102 -2618,3,-9.969554680178556 -2619,3,-11.7767993927657 -2620,3,-11.914095932461985 -2621,3,-9.76801728077368 -2622,3,-9.33361987993187 -2623,3,-10.164536899428215 -2624,3,-10.103193443200418 -2625,3,-10.567047111427323 -2626,3,-10.594940529147452 -2627,3,-10.974944213358667 -2628,3,-9.354276433666485 -2629,3,-11.82947306745315 -2630,3,-10.901067118872076 -2631,3,-11.046959171242829 -2632,3,-11.785582668974158 -2633,3,-10.783066623855959 -2634,3,-11.728617674002598 -2635,3,-12.941277113531685 -2636,3,-8.51202415666867 -2637,3,-12.906011426892567 -2638,3,-11.797722097830398 -2639,3,-9.105792721103771 -2640,3,-7.978305269617769 -2641,3,-9.822021792245335 -2642,3,-10.035183517268768 -2643,3,-8.507179338502032 -2644,3,-9.647263374269865 -2645,3,-11.765805073442788 -2646,3,-11.85172333729031 -2647,3,-10.442956861399628 -2648,3,-13.300245558723615 -2649,3,-7.295827523606397 -2650,3,-7.557334371313326 -2651,3,-10.925609314972695 -2652,3,-9.571958877942913 -2653,3,-11.04301375876248 -2654,3,-8.133192456111216 -2655,3,-9.364215188070242 -2656,3,-8.577093281179499 -2657,3,-11.26027032784115 -2658,3,-10.126179302257363 -2659,3,-8.030247536176951 -2660,3,-10.22847606029747 -2661,3,-11.229974137197532 -2662,3,-8.774047437331058 -2663,3,-8.58083192587876 -2664,3,-9.350250349701158 -2665,3,-11.331099470292918 -2666,3,-8.167177787846306 -2667,3,-10.709696695356959 -2668,3,-12.472113201425536 -2669,3,-11.424827312249677 -2670,3,-8.502632421842735 -2671,3,-10.151079235422541 -2672,3,-8.101428408983644 -2673,3,-7.168112212296554 -2674,3,-9.404516045230187 -2675,3,-11.974113711952159 -2676,3,-12.024583501206374 -2677,3,-10.674202988513743 -2678,3,-7.760763905507292 -2679,3,-7.589027261626324 -2680,3,-7.628149541201277 -2681,3,-8.015233696905414 -2682,3,-10.096035550617623 -2683,3,-8.837730156653812 -2684,3,-8.706717180117924 -2685,3,-10.13912524434878 -2686,3,-7.270386264154539 -2687,3,-7.126628141039494 -2688,3,-8.37562191156668 -2689,3,-8.37407726970082 -2690,3,-8.644674581852701 -2691,3,-9.376178413150624 -2692,3,-8.425134554301504 -2693,3,-10.961848156065557 -2694,3,-11.418892088676385 -2695,3,-9.34755842214456 -2696,3,-8.568092726124016 -2697,3,-12.495763496986035 -2698,3,-8.876330643378047 -2699,3,-11.84706957055518 -2700,3,-9.763695673365065 -2701,3,-10.78825995277988 -2702,3,-6.656102394198439 -2703,3,-8.514556566256365 -2704,3,-10.091973008371912 -2705,3,-10.806706931138866 -2706,3,-10.781987047004138 -2707,3,-9.051444714941942 -2708,3,-9.153661382205529 -2709,3,-8.856297359489488 -2710,3,-9.504904683675345 -2711,3,-9.510665953081494 -2712,3,-9.739754612539963 +303,3,-0 +304,3,-0 +305,3,-0 +306,3,-0 +307,3,-5.569444444642 +308,3,-4.483072916655 +309,3,-6.807322053333 +310,3,-4.392019966167 +311,3,-5.5694444445 +2470,3,-0 +2471,3,-0 +2472,3,-0 +2473,3,-0 +2474,3,-0 +2475,3,-0 +2476,3,-0 +2477,3,-0 +2478,3,-0 +2479,3,-0 +2480,3,-0 +2481,3,-0 +2482,3,-0 +2483,3,-0 +2484,3,-0 +2485,3,-0 +2486,3,-0 +2487,3,-0 +2488,3,-0 +2489,3,-0 +2490,3,-0 +2491,3,-0 +2492,3,-0 +2493,3,-0 +2494,3,-0 +2495,3,-0 +2496,3,-0 +2497,3,-0 +2498,3,-0 +2499,3,-0 +2500,3,-0 +2501,3,-0 +2502,3,-0 +2503,3,-0 +2504,3,-0 +2505,3,-0 +2506,3,-0 +2507,3,-0 +2508,3,-0 +2509,3,-0 +2510,3,-0 +2511,3,-0 +2512,3,-0 +2513,3,-0 +2514,3,-0 +2515,3,-0 +2516,3,-0 +2517,3,-0 +2518,3,-0 +2519,3,-0 +2520,3,-0 +2521,3,-0 +2522,3,-0 +2523,3,-0 +2524,3,-7.640909146731 +2525,3,-7.586659484918 +2526,3,-6.814101352285 +2527,3,-10.95690160419 +2528,3,-12.27660984842 +2529,3,-10.07314946266 +2530,3,-11.13888888908 +2531,3,-9.232378177774 +2532,3,-9.651488353814 +2533,3,-11.15096453089 +2534,3,-11.13888888895 +2535,3,-9.446449415565 +2536,3,-10.15824148988 +2537,3,-8.989755378512 +2538,3,-8.793856046748 +2539,3,-10.61492122633 +2540,3,-6.918411111806 +2541,3,-10.54266487114 +2542,3,-11.06881611544 +2543,3,-9.409214765428 +2544,3,-10.09669678744 +2545,3,-10.35544725936 +2546,3,-8.445695022962 +2547,3,-8.665323215298 +2548,3,-6.619319927825 +2549,3,-6.524899375233 +2550,3,-6.494912859126 +2551,3,-12.91660757819 +2552,3,-9.106719705052 +2553,3,-6.591963525457 +2554,3,-9.879753279196 +2555,3,-11.9641948753 +2556,3,-13.52919379326 +2557,3,-13.13391922222 +2558,3,-11.0347009637 +2559,3,-8.925966661334 +2560,3,-8.967715050296 +2561,3,-7.846568362052 +2562,3,-9.412341278602 +2563,3,-8.936314098764 +2564,3,-9.053813743618 +2565,3,-10.87981808906 +2566,3,-9.843914559479 +2567,3,-9.758929582914 +2568,3,-9.945970737415 +2569,3,-11.50343062342 +2570,3,-11.22923051334 +2571,3,-7.75892770119 +2572,3,-8.380983454838 +2573,3,-8.911991042361 +2574,3,-7.137360586939 +2575,3,-8.493101776326 +2576,3,-9.027172064978 +2577,3,-7.848881908641 +2578,3,-10.62710442571 +2579,3,-10.58144797196 +2580,3,-9.431208100208 +2581,3,-9.060925178844 +2582,3,-9.432359647879 +2583,3,-9.055456637493 +2584,3,-9.576776324089 +2585,3,-9.249530343205 +2586,3,-9.675205752368 +2587,3,-9.358547907247 +2588,3,-8.67705114442 +2589,3,-10.4888332692 +2590,3,-10.97977026784 +2591,3,-9.479747977144 +2592,3,-9.605020306973 +2593,3,-10.33347599778 +2594,3,-10.05330237055 +2595,3,-11.53191215874 +2596,3,-10.27030067254 +2597,3,-11.35850170495 +2598,3,-12.16942144112 +2599,3,-10.57319919053 +2600,3,-10.71667042277 +2601,3,-9.91710687511 +2602,3,-9.181097031199 +2603,3,-8.565116825828 +2604,3,-7.775729267864 +2605,3,-12.21344370843 +2606,3,-11.50534616788 +2607,3,-9.506971177694 +2608,3,-8.269024937232 +2609,3,-9.798141621266 +2610,3,-10.86919589526 +2611,3,-7.519723452012 +2612,3,-8.904819252282 +2613,3,-10.32219323274 +2614,3,-9.264217444888 +2615,3,-10.92036100432 +2616,3,-8.920827338747 +2617,3,-10.57083676824 +2618,3,-9.969554680179 +2619,3,-11.77679939277 +2620,3,-11.91409593246 +2621,3,-9.768017280774 +2622,3,-9.333619879932 +2623,3,-10.16453689943 +2624,3,-10.1031934432 +2625,3,-10.56704711143 +2626,3,-10.59494052915 +2627,3,-10.97494421336 +2628,3,-9.354276433666 +2629,3,-11.82947306745 +2630,3,-10.90106711887 +2631,3,-11.04695917124 +2632,3,-11.78558266897 +2633,3,-10.78306662386 +2634,3,-11.728617674 +2635,3,-12.94127711353 +2636,3,-8.512024156669 +2637,3,-12.90601142689 +2638,3,-11.79772209783 +2639,3,-9.105792721104 +2640,3,-7.978305269618 +2641,3,-9.822021792245 +2642,3,-10.03518351727 +2643,3,-8.507179338502 +2644,3,-9.64726337427 +2645,3,-11.76580507344 +2646,3,-11.85172333729 +2647,3,-10.4429568614 +2648,3,-13.30024555872 +2649,3,-7.295827523606 +2650,3,-7.557334371313 +2651,3,-10.92560931497 +2652,3,-9.571958877943 +2653,3,-11.04301375876 +2654,3,-8.133192456111 +2655,3,-9.36421518807 +2656,3,-8.577093281179 +2657,3,-11.26027032784 +2658,3,-10.12617930226 +2659,3,-8.030247536177 +2660,3,-10.2284760603 +2661,3,-11.2299741372 +2662,3,-8.774047437331 +2663,3,-8.580831925879 +2664,3,-9.350250349701 +2665,3,-11.33109947029 +2666,3,-8.167177787846 +2667,3,-10.70969669536 +2668,3,-12.47211320143 +2669,3,-11.42482731225 +2670,3,-8.502632421843 +2671,3,-10.15107923542 +2672,3,-8.101428408984 +2673,3,-7.168112212297 +2674,3,-9.40451604523 +2675,3,-11.97411371195 +2676,3,-12.02458350121 +2677,3,-10.67420298851 +2678,3,-7.760763905507 +2679,3,-7.589027261626 +2680,3,-7.628149541201 +2681,3,-8.015233696905 +2682,3,-10.09603555062 +2683,3,-8.837730156654 +2684,3,-8.706717180118 +2685,3,-10.13912524435 +2686,3,-7.270386264155 +2687,3,-7.126628141039 +2688,3,-8.375621911567 +2689,3,-8.374077269701 +2690,3,-8.644674581853 +2691,3,-9.376178413151 +2692,3,-8.425134554302 +2693,3,-10.96184815607 +2694,3,-11.41889208868 +2695,3,-9.347558422145 +2696,3,-8.568092726124 +2697,3,-12.49576349699 +2698,3,-8.876330643378 +2699,3,-11.84706957056 +2700,3,-9.763695673365 +2701,3,-10.78825995278 +2702,3,-6.656102394198 +2703,3,-8.514556566256 +2704,3,-10.09197300837 +2705,3,-10.80670693114 +2706,3,-10.781987047 +2707,3,-9.051444714942 +2708,3,-9.153661382206 +2709,3,-8.856297359489 +2710,3,-9.504904683675 +2711,3,-9.510665953081 +2712,3,-9.73975461254 @@ -29185,7 +29185,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fivefaces.inp b/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fivefaces.inp index 69e3508500..9ac894a8c5 100644 --- a/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fivefaces.inp +++ b/src/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fivefaces.inp @@ -2569,119 +2569,119 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce ** node loads on shape: Face1:Edge4 -9,2,-33.33333333333333 -11,2,-33.33333333333333 -118,2,-66.66666666666666 -119,2,-66.66666666666666 -120,2,-66.66666666666666 -121,2,-66.66666666666666 -122,2,-66.66666666666666 -123,2,-66.66666666666666 -124,2,-66.66666666666666 -125,2,-66.66666666666666 -126,2,-66.66666666666666 -472,2,-133.33333333333331 -473,2,-133.33333333333331 -474,2,-133.33333333333331 -475,2,-133.33333333333331 -476,2,-133.33333333333331 -477,2,-133.33333333333331 -478,2,-133.33333333333331 -479,2,-133.33333333333331 -480,2,-133.33333333333331 -481,2,-133.33333333333331 +9,2,-33.33333333333 +11,2,-33.33333333333 +118,2,-66.66666666667 +119,2,-66.66666666667 +120,2,-66.66666666667 +121,2,-66.66666666667 +122,2,-66.66666666667 +123,2,-66.66666666667 +124,2,-66.66666666667 +125,2,-66.66666666667 +126,2,-66.66666666667 +472,2,-133.3333333333 +473,2,-133.3333333333 +474,2,-133.3333333333 +475,2,-133.3333333333 +476,2,-133.3333333333 +477,2,-133.3333333333 +478,2,-133.3333333333 +479,2,-133.3333333333 +480,2,-133.3333333333 +481,2,-133.3333333333 ** node loads on shape: Face2:Edge4 -7,2,-33.33333333333333 -9,2,-33.33333333333333 -96,2,-66.66666666666666 -97,2,-66.66666666666666 -98,2,-66.66666666666666 -99,2,-66.66666666666666 -100,2,-66.66666666666666 -101,2,-66.66666666666666 -102,2,-66.66666666666666 -103,2,-66.66666666666666 -104,2,-66.66666666666666 -447,2,-133.33333333333331 -448,2,-133.33333333333331 -449,2,-133.33333333333331 -450,2,-133.33333333333331 -451,2,-133.33333333333331 -452,2,-133.33333333333331 -453,2,-133.33333333333331 -454,2,-133.33333333333331 -455,2,-133.33333333333331 -456,2,-133.33333333333331 +7,2,-33.33333333333 +9,2,-33.33333333333 +96,2,-66.66666666667 +97,2,-66.66666666667 +98,2,-66.66666666667 +99,2,-66.66666666667 +100,2,-66.66666666667 +101,2,-66.66666666667 +102,2,-66.66666666667 +103,2,-66.66666666667 +104,2,-66.66666666667 +447,2,-133.3333333333 +448,2,-133.3333333333 +449,2,-133.3333333333 +450,2,-133.3333333333 +451,2,-133.3333333333 +452,2,-133.3333333333 +453,2,-133.3333333333 +454,2,-133.3333333333 +455,2,-133.3333333333 +456,2,-133.3333333333 ** node loads on shape: Face3:Edge4 -5,2,-33.33333333333333 -7,2,-33.33333333333333 -74,2,-66.66666666666666 -75,2,-66.66666666666666 -76,2,-66.66666666666666 -77,2,-66.66666666666666 -78,2,-66.66666666666666 -79,2,-66.66666666666666 -80,2,-66.66666666666666 -81,2,-66.66666666666666 -82,2,-66.66666666666666 -422,2,-133.33333333333331 -423,2,-133.33333333333331 -424,2,-133.33333333333331 -425,2,-133.33333333333331 -426,2,-133.33333333333331 -427,2,-133.33333333333331 -428,2,-133.33333333333331 -429,2,-133.33333333333331 -430,2,-133.33333333333331 -431,2,-133.33333333333331 +5,2,-33.33333333333 +7,2,-33.33333333333 +74,2,-66.66666666667 +75,2,-66.66666666667 +76,2,-66.66666666667 +77,2,-66.66666666667 +78,2,-66.66666666667 +79,2,-66.66666666667 +80,2,-66.66666666667 +81,2,-66.66666666667 +82,2,-66.66666666667 +422,2,-133.3333333333 +423,2,-133.3333333333 +424,2,-133.3333333333 +425,2,-133.3333333333 +426,2,-133.3333333333 +427,2,-133.3333333333 +428,2,-133.3333333333 +429,2,-133.3333333333 +430,2,-133.3333333333 +431,2,-133.3333333333 ** node loads on shape: Face4:Edge4 -3,2,-33.33333333333333 -5,2,-33.33333333333333 -52,2,-66.66666666666666 -53,2,-66.66666666666666 -54,2,-66.66666666666666 -55,2,-66.66666666666666 -56,2,-66.66666666666666 -57,2,-66.66666666666666 -58,2,-66.66666666666666 -59,2,-66.66666666666666 -60,2,-66.66666666666666 -397,2,-133.33333333333331 -398,2,-133.33333333333331 -399,2,-133.33333333333331 -400,2,-133.33333333333331 -401,2,-133.33333333333331 -402,2,-133.33333333333331 -403,2,-133.33333333333331 -404,2,-133.33333333333331 -405,2,-133.33333333333331 -406,2,-133.33333333333331 +3,2,-33.33333333333 +5,2,-33.33333333333 +52,2,-66.66666666667 +53,2,-66.66666666667 +54,2,-66.66666666667 +55,2,-66.66666666667 +56,2,-66.66666666667 +57,2,-66.66666666667 +58,2,-66.66666666667 +59,2,-66.66666666667 +60,2,-66.66666666667 +397,2,-133.3333333333 +398,2,-133.3333333333 +399,2,-133.3333333333 +400,2,-133.3333333333 +401,2,-133.3333333333 +402,2,-133.3333333333 +403,2,-133.3333333333 +404,2,-133.3333333333 +405,2,-133.3333333333 +406,2,-133.3333333333 ** node loads on shape: Face5:Edge4 -1,2,-33.33333333333333 -3,2,-33.33333333333333 -26,2,-66.66666666666666 -27,2,-66.66666666666666 -28,2,-66.66666666666666 -29,2,-66.66666666666666 -30,2,-66.66666666666666 -31,2,-66.66666666666666 -32,2,-66.66666666666666 -33,2,-66.66666666666666 -34,2,-66.66666666666666 -367,2,-133.33333333333331 -368,2,-133.33333333333331 -369,2,-133.33333333333331 -370,2,-133.33333333333331 -371,2,-133.33333333333331 -372,2,-133.33333333333331 -373,2,-133.33333333333331 -374,2,-133.33333333333331 -375,2,-133.33333333333331 -376,2,-133.33333333333331 +1,2,-33.33333333333 +3,2,-33.33333333333 +26,2,-66.66666666667 +27,2,-66.66666666667 +28,2,-66.66666666667 +29,2,-66.66666666667 +30,2,-66.66666666667 +31,2,-66.66666666667 +32,2,-66.66666666667 +33,2,-66.66666666667 +34,2,-66.66666666667 +367,2,-133.3333333333 +368,2,-133.3333333333 +369,2,-133.3333333333 +370,2,-133.3333333333 +371,2,-133.3333333333 +372,2,-133.3333333333 +373,2,-133.3333333333 +374,2,-133.3333333333 +375,2,-133.3333333333 +376,2,-133.3333333333 @@ -2696,7 +2696,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/material_multiple_tensionrod_twoboxes.inp b/src/Mod/Fem/femtest/data/calculix/material_multiple_tensionrod_twoboxes.inp index 1e8accdae7..d378596781 100644 --- a/src/Mod/Fem/femtest/data/calculix/material_multiple_tensionrod_twoboxes.inp +++ b/src/Mod/Fem/femtest/data/calculix/material_multiple_tensionrod_twoboxes.inp @@ -1277,7 +1277,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/material_nonlinear.inp b/src/Mod/Fem/femtest/data/calculix/material_nonlinear.inp index def8eb4108..c2cb7c0505 100644 --- a/src/Mod/Fem/femtest/data/calculix/material_nonlinear.inp +++ b/src/Mod/Fem/femtest/data/calculix/material_nonlinear.inp @@ -20114,7 +20114,7 @@ S, E, PEEQ *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_edgeforces.inp b/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_edgeforces.inp index 753232bed9..a70ab0a392 100644 --- a/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_edgeforces.inp +++ b/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_edgeforces.inp @@ -2581,70 +2581,70 @@ ConstraintFixed,6 *CLOAD ** ConstraintForce1 ** node loads on shape: SquareTube:Edge9 -1,1,2777.7777777777783 -236,1,2777.7777777777783 -343,1,5555.555555555557 -344,1,5555.555555555557 -345,1,5555.555555555557 -346,1,5555.555555555557 -347,1,5555.555555555557 -1376,1,11111.111111111113 -1378,1,11111.111111111113 -1380,1,11111.111111111113 -1383,1,11111.111111111113 -1386,1,11111.111111111113 -1390,1,11111.111111111113 +1,1,2777.777777778 +236,1,2777.777777778 +343,1,5555.555555556 +344,1,5555.555555556 +345,1,5555.555555556 +346,1,5555.555555556 +347,1,5555.555555556 +1376,1,11111.11111111 +1378,1,11111.11111111 +1380,1,11111.11111111 +1383,1,11111.11111111 +1386,1,11111.11111111 +1390,1,11111.11111111 ** ConstraintForce2 ** node loads on shape: SquareTube:Edge3 -2,1,-2777.7777777777783 -129,1,-2777.7777777777783 -131,1,-5555.555555555557 -132,1,-5555.555555555557 -133,1,-5555.555555555557 -134,1,-5555.555555555557 -135,1,-5555.555555555557 -758,1,-11111.111111111113 -762,1,-11111.111111111113 -764,1,-11111.111111111113 -766,1,-11111.111111111113 -769,1,-11111.111111111113 -772,1,-11111.111111111113 +2,1,-2777.777777778 +129,1,-2777.777777778 +131,1,-5555.555555556 +132,1,-5555.555555556 +133,1,-5555.555555556 +134,1,-5555.555555556 +135,1,-5555.555555556 +758,1,-11111.11111111 +762,1,-11111.11111111 +764,1,-11111.11111111 +766,1,-11111.11111111 +769,1,-11111.11111111 +772,1,-11111.11111111 ** ConstraintForce3 ** node loads on shape: SquareTube:Edge11 -1,2,2777.7777777777783 -2,2,2777.7777777777783 -5,2,5555.555555555557 -6,2,5555.555555555557 -7,2,5555.555555555557 -8,2,5555.555555555557 -9,2,5555.555555555557 -429,2,11111.111111111113 -431,2,11111.111111111113 -437,2,11111.111111111113 -440,2,11111.111111111113 -443,2,11111.111111111113 -446,2,11111.111111111113 +1,2,2777.777777778 +2,2,2777.777777778 +5,2,5555.555555556 +6,2,5555.555555556 +7,2,5555.555555556 +8,2,5555.555555556 +9,2,5555.555555556 +429,2,11111.11111111 +431,2,11111.11111111 +437,2,11111.11111111 +440,2,11111.11111111 +443,2,11111.11111111 +446,2,11111.11111111 ** ConstraintForce4 ** node loads on shape: SquareTube:Edge6 -129,2,-2777.7777777777783 -236,2,-2777.7777777777783 -238,2,-5555.555555555557 -239,2,-5555.555555555557 -240,2,-5555.555555555557 -241,2,-5555.555555555557 -242,2,-5555.555555555557 -1067,2,-11111.111111111113 -1071,2,-11111.111111111113 -1073,2,-11111.111111111113 -1075,2,-11111.111111111113 -1078,2,-11111.111111111113 -1081,2,-11111.111111111113 +129,2,-2777.777777778 +236,2,-2777.777777778 +238,2,-5555.555555556 +239,2,-5555.555555556 +240,2,-5555.555555556 +241,2,-5555.555555556 +242,2,-5555.555555556 +1067,2,-11111.11111111 +1071,2,-11111.11111111 +1073,2,-11111.11111111 +1075,2,-11111.11111111 +1078,2,-11111.11111111 +1081,2,-11111.11111111 @@ -2659,7 +2659,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_nodeforces.inp b/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_nodeforces.inp index 02759ba8cd..6e68876fff 100644 --- a/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_nodeforces.inp +++ b/src/Mod/Fem/femtest/data/calculix/square_pipe_end_twisted_nodeforces.inp @@ -2631,42 +2631,42 @@ ConstraintFixed,6 ** ConstraintForce5 ** node load on shape: Forces:Vertex43 -1376,1,-11111.111666666666 +1376,1,-11111.11166667 ** node load on shape: Forces:Vertex44 -1378,1,-11111.111666666666 +1378,1,-11111.11166667 ** node load on shape: Forces:Vertex45 -1380,1,-11111.111666666666 +1380,1,-11111.11166667 ** node load on shape: Forces:Vertex46 -1383,1,-11111.111666666666 +1383,1,-11111.11166667 ** node load on shape: Forces:Vertex47 -1386,1,-11111.111666666666 +1386,1,-11111.11166667 ** node load on shape: Forces:Vertex48 -1390,1,-11111.111666666666 +1390,1,-11111.11166667 ** ConstraintForce6 ** node load on shape: Forces:Vertex31 -758,1,11111.111666666666 +758,1,11111.11166667 ** node load on shape: Forces:Vertex32 -762,1,11111.111666666666 +762,1,11111.11166667 ** node load on shape: Forces:Vertex33 -764,1,11111.111666666666 +764,1,11111.11166667 ** node load on shape: Forces:Vertex34 -766,1,11111.111666666666 +766,1,11111.11166667 ** node load on shape: Forces:Vertex35 -769,1,11111.111666666666 +769,1,11111.11166667 ** node load on shape: Forces:Vertex36 -772,1,11111.111666666666 +772,1,11111.11166667 ** ConstraintForce7 @@ -2721,42 +2721,42 @@ ConstraintFixed,6 ** ConstraintForce11 ** node load on shape: Forces:Vertex25 -429,2,-11111.111666666666 +429,2,-11111.11166667 ** node load on shape: Forces:Vertex26 -431,2,-11111.111666666666 +431,2,-11111.11166667 ** node load on shape: Forces:Vertex27 -437,2,-11111.111666666666 +437,2,-11111.11166667 ** node load on shape: Forces:Vertex28 -440,2,-11111.111666666666 +440,2,-11111.11166667 ** node load on shape: Forces:Vertex29 -443,2,-11111.111666666666 +443,2,-11111.11166667 ** node load on shape: Forces:Vertex30 -446,2,-11111.111666666666 +446,2,-11111.11166667 ** ConstraintForce12 ** node load on shape: Forces:Vertex37 -1067,2,11111.111666666666 +1067,2,11111.11166667 ** node load on shape: Forces:Vertex38 -1071,2,11111.111666666666 +1071,2,11111.11166667 ** node load on shape: Forces:Vertex39 -1073,2,11111.111666666666 +1073,2,11111.11166667 ** node load on shape: Forces:Vertex40 -1075,2,11111.111666666666 +1075,2,11111.11166667 ** node load on shape: Forces:Vertex41 -1078,2,11111.111666666666 +1078,2,11111.11166667 ** node load on shape: Forces:Vertex42 -1081,2,11111.111666666666 +1081,2,11111.11166667 @@ -2771,7 +2771,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/thermomech_bimetall.inp b/src/Mod/Fem/femtest/data/calculix/thermomech_bimetall.inp index 57818a086e..90fce0f689 100644 --- a/src/Mod/Fem/femtest/data/calculix/thermomech_bimetall.inp +++ b/src/Mod/Fem/femtest/data/calculix/thermomech_bimetall.inp @@ -7114,7 +7114,7 @@ S, E *NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY RF - +*OUTPUT, FREQUENCY=1 *********************************************************** *END STEP diff --git a/src/Mod/Fem/femtest/data/calculix/thermomech_flow1D.FCStd b/src/Mod/Fem/femtest/data/calculix/thermomech_flow1D.FCStd new file mode 100644 index 0000000000..94483713a2 Binary files /dev/null and b/src/Mod/Fem/femtest/data/calculix/thermomech_flow1D.FCStd differ diff --git a/src/Mod/Fem/femtest/data/elmer/group_mesh.geo b/src/Mod/Fem/femtest/data/elmer/group_mesh.geo index c20ca320ae..809ee15158 100644 --- a/src/Mod/Fem/femtest/data/elmer/group_mesh.geo +++ b/src/Mod/Fem/femtest/data/elmer/group_mesh.geo @@ -35,6 +35,12 @@ Mesh.Algorithm = 2; // 3D mesh algorithm (1=Delaunay, 2=New Delaunay, 4=Frontal, 7=MMG3D, 9=R-tree, 10=HTX) Mesh.Algorithm3D = 1; +// subdivision algorithm +Mesh.SubdivisionAlgorithm = 0; + +// incomplete second order elements +Mesh.SecondOrderIncomplete = 0; + // meshing Geometry.Tolerance = 1e-06; // set geometrical tolerance (also used for merging nodes) Mesh 3; diff --git a/src/Mod/Fem/femtest/data/mesh/tetra10_mesh.vtk b/src/Mod/Fem/femtest/data/mesh/tetra10_mesh.vtk index 453413b5b1..bc946d3b70 100644 --- a/src/Mod/Fem/femtest/data/mesh/tetra10_mesh.vtk +++ b/src/Mod/Fem/femtest/data/mesh/tetra10_mesh.vtk @@ -8,7 +8,7 @@ POINTS 10 float 9 6 18 6 9 9 3 3 9 9 3 9 CELLS 1 11 -10 0 1 2 3 4 5 6 7 8 9 +10 0 2 1 3 6 5 4 7 9 8 CELL_TYPES 1 24 diff --git a/src/Mod/Fem/femtools/checksanalysis.py b/src/Mod/Fem/femtools/checksanalysis.py index 311e0594f1..f41244a5df 100644 --- a/src/Mod/Fem/femtools/checksanalysis.py +++ b/src/Mod/Fem/femtools/checksanalysis.py @@ -61,14 +61,6 @@ def check_member_for_solver_calculix(analysis, solver, mesh, member): "Solver is set to nonlinear materials, " "but there is no nonlinear material in the analysis.\n" ) - if solver.Proxy.Type == "Fem::SolverCcxTools" \ - and solver.GeometricalNonlinearity != "nonlinear": - # nonlinear geometry --> should be set - # https://forum.freecad.org/viewtopic.php?f=18&t=23101&p=180489#p180489 - message += ( - "Solver CalculiX triggers nonlinear geometry for nonlinear material, " - "thus it should to be set too.\n" - ) # mesh if not mesh: diff --git a/src/Mod/Help/Resources/translations/Help_be.qm b/src/Mod/Help/Resources/translations/Help_be.qm index 879d33f387..18ff3648e3 100644 Binary files a/src/Mod/Help/Resources/translations/Help_be.qm and b/src/Mod/Help/Resources/translations/Help_be.qm differ diff --git a/src/Mod/Help/Resources/translations/Help_be.ts b/src/Mod/Help/Resources/translations/Help_be.ts index 18e673ca93..595a201f42 100644 --- a/src/Mod/Help/Resources/translations/Help_be.ts +++ b/src/Mod/Help/Resources/translations/Help_be.ts @@ -21,11 +21,9 @@ You can easily download the documentation for offline use by using the Addon Manager and installing the "offline-documentation" addon. If this field is left blank, FreeCAD will automatically search for the help files at the default location ($USERAPPDATADIR/Mod/offline-documentation). - Set this to a custom URL or the folder where the help files are located. -You can easily download the documentation for offline use by using the Addon -Manager and installing the "offline-documentation" addon. If this -field is left blank, FreeCAD will automatically search for the help files at -the default location ($USERAPPDATADIR/Mod/offline-documentation). + Задаць карыстальніцкі URL-адрас ці каталог, дзе знаходзяцца файлы даведкі. +Вы можаце лёгка загрузіць дакументацыю для аўтаномнага выкарыстання, калі скарыстаецеся Кіраваннем дадаткамі і ўсталюеце дадатак "аўтаномная дакументацыя". +Калі гэтае поле пакінуць пустым, FreeCAD аўтаматычна выканае пошук файлаў даведкі па першапачатковым размяшчэнні ($USERAPPDATADIR/Mod/offline-documentation). diff --git a/src/Mod/Import/Gui/dxf/ImpExpDxfGui.cpp b/src/Mod/Import/Gui/dxf/ImpExpDxfGui.cpp index 6cbb726f2a..71975dc89c 100644 --- a/src/Mod/Import/Gui/dxf/ImpExpDxfGui.cpp +++ b/src/Mod/Import/Gui/dxf/ImpExpDxfGui.cpp @@ -20,6 +20,7 @@ * * ***************************************************************************/ +#include #ifndef _PreComp_ #include #if OCC_VERSION_HEX < 0x070600 diff --git a/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.qm b/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.qm index 9bf865f201..f4803cf878 100644 Binary files a/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.qm and b/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.qm differ diff --git a/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.ts b/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.ts index 0ce02413fd..a68f4e0bc4 100644 --- a/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.ts +++ b/src/Mod/Inspection/Gui/Resources/translations/Inspection_fr.ts @@ -6,12 +6,12 @@ Inspection - Inspection + Inspecter Inspection... - Inspection... + Inspecter... @@ -24,7 +24,7 @@ Inspection - Inspection + Inspecter diff --git a/src/Mod/Material/App/MaterialPyImpl.cpp b/src/Mod/Material/App/MaterialPyImpl.cpp index 5997db5a52..1d7cb75ee8 100644 --- a/src/Mod/Material/App/MaterialPyImpl.cpp +++ b/src/Mod/Material/App/MaterialPyImpl.cpp @@ -303,7 +303,7 @@ Py::Dict MaterialPy::getProperties() const auto materialProperty = it->second; if (!materialProperty->isNull()) { - auto value = materialProperty->getString(); + auto value = materialProperty->getDictionaryString(); dict.setItem(Py::String(key.toStdString()), Py::String(value.toStdString())); } } @@ -314,7 +314,7 @@ Py::Dict MaterialPy::getProperties() const auto materialProperty = it->second; if (!materialProperty->isNull()) { - auto value = materialProperty->getString(); + auto value = materialProperty->getDictionaryString(); dict.setItem(Py::String(key.toStdString()), Py::String(value.toStdString())); } } @@ -332,7 +332,7 @@ Py::Dict MaterialPy::getPhysicalProperties() const auto materialProperty = it->second; if (!materialProperty->isNull()) { - auto value = materialProperty->getString(); + auto value = materialProperty->getDictionaryString(); dict.setItem(Py::String(key.toStdString()), Py::String(value.toStdString())); } } @@ -350,7 +350,7 @@ Py::Dict MaterialPy::getAppearanceProperties() const auto materialProperty = it->second; if (!materialProperty->isNull()) { - auto value = materialProperty->getString(); + auto value = materialProperty->getDictionaryString(); dict.setItem(Py::String(key.toStdString()), Py::String(value.toStdString())); } } diff --git a/src/Mod/Material/App/Materials.cpp b/src/Mod/Material/App/Materials.cpp index 0cb7090d6e..a0bbc8882c 100644 --- a/src/Mod/Material/App/Materials.cpp +++ b/src/Mod/Material/App/Materials.cpp @@ -118,6 +118,8 @@ std::shared_ptr MaterialProperty::getMaterialValue() const QString MaterialProperty::getString() const { + // This method produces a localized string. For a non-localized string use + // getDictionaryString() if (isNull()) { return {}; } @@ -130,7 +132,7 @@ QString MaterialProperty::getString() const if (value.isNull()) { return {}; } - return QString(QString::fromStdString("%1")).arg(value.toFloat(), 0, 'g', PRECISION); + return QString(QLatin1String("%L1")).arg(value.toFloat(), 0, 'g', PRECISION); } return getValue().toString(); } @@ -140,6 +142,30 @@ QString MaterialProperty::getYAMLString() const return _valuePtr->getYAMLString(); } +QString MaterialProperty::getDictionaryString() const +{ + // This method produces a non-localized string. For a localized string use + // getString() + if (isNull()) { + return {}; + } + if (getType() == MaterialValue::Quantity) { + auto quantity = getValue().value(); + auto string = QString(QLatin1String("%1 %2")) + .arg(quantity.getValue(), 0, 'g', PRECISION) + .arg(quantity.getUnit().getString()); + return string; + } + if (getType() == MaterialValue::Float) { + auto value = getValue(); + if (value.isNull()) { + return {}; + } + return QString(QLatin1String("%1")).arg(value.toFloat(), 0, 'g', PRECISION); + } + return getValue().toString(); +} + void MaterialProperty::setPropertyType(const QString& type) { ModelProperty::setPropertyType(type); @@ -449,7 +475,7 @@ QString Material::getAuthorAndLicense() const if (!_author.isNull()) { authorAndLicense = _author; if (!_license.isNull()) { - authorAndLicense += QString::fromStdString(" ") + _license; + authorAndLicense += QLatin1String(" ") + _license; } } else if (!_license.isNull()) { @@ -925,7 +951,7 @@ Material::getValueString(const std::mapgetValue().toString(); diff --git a/src/Mod/Material/App/Materials.h b/src/Mod/Material/App/Materials.h index ffc71cac1c..d1cd5d0e09 100644 --- a/src/Mod/Material/App/Materials.h +++ b/src/Mod/Material/App/Materials.h @@ -78,6 +78,7 @@ public: std::shared_ptr getMaterialValue() const; QString getString() const; QString getYAMLString() const; + QString getDictionaryString() const; // Non-localized string bool getBoolean() const; int getInt() const; double getFloat() const; diff --git a/src/Mod/Material/App/Model.cpp b/src/Mod/Material/App/Model.cpp index 19a4ebb832..fddc67b9d2 100644 --- a/src/Mod/Material/App/Model.cpp +++ b/src/Mod/Material/App/Model.cpp @@ -39,11 +39,13 @@ ModelProperty::ModelProperty() {} ModelProperty::ModelProperty(const QString& name, + const QString& header, const QString& type, const QString& units, const QString& url, const QString& description) : _name(name) + , _displayName(header) , _propertyType(type) , _units(units) , _url(url) @@ -52,6 +54,7 @@ ModelProperty::ModelProperty(const QString& name, ModelProperty::ModelProperty(const ModelProperty& other) : _name(other._name) + , _displayName(other._displayName) , _propertyType(other._propertyType) , _units(other._units) , _url(other._url) @@ -63,6 +66,14 @@ ModelProperty::ModelProperty(const ModelProperty& other) } } +const QString ModelProperty::getDisplayName() const +{ + if (_displayName.isEmpty()) { + return getName(); + } + return _displayName; +} + ModelProperty& ModelProperty::operator=(const ModelProperty& other) { if (this == &other) { @@ -70,6 +81,7 @@ ModelProperty& ModelProperty::operator=(const ModelProperty& other) } _name = other._name; + _displayName = other._displayName; _propertyType = other._propertyType; _units = other._units; _url = other._url; @@ -89,7 +101,7 @@ bool ModelProperty::operator==(const ModelProperty& other) const return true; } - return (_name == other._name) && (_propertyType == other._propertyType) + return (_name == other._name) && (_displayName == other._displayName) && (_propertyType == other._propertyType) && (_units == other._units) && (_url == other._url) && (_description == other._description) && (_inheritance == other._inheritance); } diff --git a/src/Mod/Material/App/Model.h b/src/Mod/Material/App/Model.h index fcf83efd47..5fe5888de0 100644 --- a/src/Mod/Material/App/Model.h +++ b/src/Mod/Material/App/Model.h @@ -56,6 +56,7 @@ class MaterialsExport ModelProperty: public Base::BaseClass public: ModelProperty(); ModelProperty(const QString& name, + const QString& header, const QString& type, const QString& units, const QString& url, @@ -67,6 +68,7 @@ public: { return _name; } + const QString getDisplayName() const; const QString getPropertyType() const { return _propertyType; @@ -96,6 +98,10 @@ public: { _name = name; } + void setColumnHeader(const QString& header) + { + _displayName = header; + } virtual void setPropertyType(const QString& type) { _propertyType = type; @@ -139,6 +145,7 @@ public: private: QString _name; + QString _displayName; QString _propertyType; QString _units; QString _url; diff --git a/src/Mod/Material/App/ModelLoader.cpp b/src/Mod/Material/App/ModelLoader.cpp index a24bea113a..595c3f0d85 100644 --- a/src/Mod/Material/App/ModelLoader.cpp +++ b/src/Mod/Material/App/ModelLoader.cpp @@ -254,6 +254,7 @@ void ModelLoader::addToTree(std::shared_ptr model, if (exclude.count(QString::fromStdString(propName)) == 0) { // showYaml(it->second); auto yamlProp = yamlProperties[propName]; + auto propDisplayName = yamlValue(yamlProp, "DisplayName", ""); auto propType = yamlValue(yamlProp, "Type", ""); auto propUnits = yamlValue(yamlProp, "Units", ""); auto propURL = yamlValue(yamlProp, "URL", ""); @@ -261,6 +262,7 @@ void ModelLoader::addToTree(std::shared_ptr model, // auto inherits = yamlValue(yamlProp, "Inherits", ""); ModelProperty property(QString::fromStdString(propName), + propDisplayName, propType, propUnits, propURL, @@ -276,11 +278,13 @@ void ModelLoader::addToTree(std::shared_ptr model, // Base::Console().Log("\tColumns '%s'\n", colName.c_str()); auto colProp = cols[colName]; + auto colPropDisplayName = yamlValue(colProp, "DisplayName", ""); auto colPropType = yamlValue(colProp, "Type", ""); auto colPropUnits = yamlValue(colProp, "Units", ""); auto colPropURL = yamlValue(colProp, "URL", ""); auto colPropDescription = yamlValue(colProp, "Description", ""); ModelProperty colProperty(QString::fromStdString(colName), + colPropDisplayName, colPropType, colPropUnits, colPropURL, diff --git a/src/Mod/Material/CMakeLists.txt b/src/Mod/Material/CMakeLists.txt index 58422a436a..4b53cdac99 100644 --- a/src/Mod/Material/CMakeLists.txt +++ b/src/Mod/Material/CMakeLists.txt @@ -232,11 +232,24 @@ SET(MaterialModel_Files Resources/Models/Fluid/Fluid.yml Resources/Models/Legacy/Father.yml Resources/Models/Legacy/MaterialStandard.yml + Resources/Models/Mechanical/ArrudaBoyce.yml Resources/Models/Mechanical/Density.yml Resources/Models/Mechanical/IsotropicLinearElastic.yml Resources/Models/Mechanical/LinearElastic.yml + Resources/Models/Mechanical/MooneyRivlin.yml + Resources/Models/Mechanical/NeoHooke.yml + Resources/Models/Mechanical/OgdenN1.yml + Resources/Models/Mechanical/OgdenN2.yml + Resources/Models/Mechanical/OgdenN3.yml Resources/Models/Mechanical/OgdenYld2004p18.yml Resources/Models/Mechanical/OrthotropicLinearElastic.yml + Resources/Models/Mechanical/PolynomialN1.yml + Resources/Models/Mechanical/PolynomialN2.yml + Resources/Models/Mechanical/PolynomialN3.yml + Resources/Models/Mechanical/ReducedPolynomialN1.yml + Resources/Models/Mechanical/ReducedPolynomialN2.yml + Resources/Models/Mechanical/ReducedPolynomialN3.yml + Resources/Models/Mechanical/Yeoh.yml Resources/Models/Patterns/PAT.yml "Resources/Models/Patterns/Pattern File.yml" "Resources/Models/Render Workbench/RenderAppleseed.yml" diff --git a/src/Mod/Material/Gui/Array2D.cpp b/src/Mod/Material/Gui/Array2D.cpp index e2fc7d40f9..fd383ecf44 100644 --- a/src/Mod/Material/Gui/Array2D.cpp +++ b/src/Mod/Material/Gui/Array2D.cpp @@ -62,6 +62,7 @@ Array2D::Array2D(const QString& propertyName, if (_property) { _value = std::static_pointer_cast(_property->getMaterialValue()); + setWindowTitle(_property->getDisplayName()); } else { _value = nullptr; @@ -81,16 +82,6 @@ Array2D::Array2D(const QString& propertyName, connect(ui->standardButtons, &QDialogButtonBox::rejected, this, &Array2D::reject); } -void Array2D::setHeaders(QStandardItemModel* model) -{ - QStringList headers; - auto columns = _property->getColumns(); - for (auto column = columns.begin(); column != columns.end(); column++) { - headers.append(column->getName()); - } - model->setHorizontalHeaderLabels(headers); -} - void Array2D::setColumnWidths(QTableView* table) { int length = _property->columns(); diff --git a/src/Mod/Material/Gui/Array2D.h b/src/Mod/Material/Gui/Array2D.h index 0829a9565e..3372d85c56 100644 --- a/src/Mod/Material/Gui/Array2D.h +++ b/src/Mod/Material/Gui/Array2D.h @@ -68,7 +68,6 @@ private: QAction _deleteAction; - void setHeaders(QStandardItemModel* model); void setColumnWidths(QTableView* table); void setColumnDelegates(QTableView* table); void setupArray(); diff --git a/src/Mod/Material/Gui/ArrayModel.cpp b/src/Mod/Material/Gui/ArrayModel.cpp index 5d1dbdd57d..a6b7bac366 100644 --- a/src/Mod/Material/Gui/ArrayModel.cpp +++ b/src/Mod/Material/Gui/ArrayModel.cpp @@ -111,7 +111,7 @@ QVariant Array2DModel::headerData(int section, Qt::Orientation orientation, int if (role == Qt::DisplayRole) { if (orientation == Qt::Horizontal) { const Materials::MaterialProperty& column = _property->getColumn(section); - return column.getName(); + return column.getDisplayName(); } else if (orientation == Qt::Vertical) { // Vertical header @@ -251,7 +251,7 @@ QVariant Array3DDepthModel::headerData(int section, Qt::Orientation orientation, if (role == Qt::DisplayRole) { if (orientation == Qt::Horizontal) { const Materials::MaterialProperty& column = _property->getColumn(section); - return column.getName(); + return column.getDisplayName(); } if (orientation == Qt::Vertical) { // Vertical header @@ -406,7 +406,7 @@ QVariant Array3DModel::headerData(int section, Qt::Orientation orientation, int if (role == Qt::DisplayRole) { if (orientation == Qt::Horizontal) { const Materials::MaterialProperty& column = _property->getColumn(section + 1); - return column.getName(); + return column.getDisplayName(); } if (orientation == Qt::Vertical) { // Vertical header diff --git a/src/Mod/Material/Gui/MaterialDelegate.cpp b/src/Mod/Material/Gui/MaterialDelegate.cpp index 414f4cc1b3..feff9ec196 100644 --- a/src/Mod/Material/Gui/MaterialDelegate.cpp +++ b/src/Mod/Material/Gui/MaterialDelegate.cpp @@ -110,7 +110,8 @@ QVariant MaterialDelegate::getValue(const QModelIndex& index) const QVariant propertyValue; if (group->child(row, 1)) { auto material = group->child(row, 1)->data().value>(); - auto propertyName = group->child(row, 0)->text(); + // auto propertyName = group->child(row, 0)->text(); + auto propertyName = group->child(row, 0)->data().toString(); propertyValue = material->getProperty(propertyName)->getValue(); } return propertyValue; @@ -130,7 +131,8 @@ void MaterialDelegate::setValue(QAbstractItemModel* model, int row = index.row(); if (group->child(row, 1)) { auto material = group->child(row, 1)->data().value>(); - auto propertyName = group->child(row, 0)->text(); + // auto propertyName = group->child(row, 0)->text(); + auto propertyName = group->child(row, 0)->data().toString(); material->getProperty(propertyName)->setValue(value); group->child(row, 1)->setText(value.toString()); } @@ -152,7 +154,8 @@ void MaterialDelegate::notifyChanged(const QAbstractItemModel* model, int row = index.row(); if (group->child(row, 1)) { auto material = group->child(row, 1)->data().value>(); - auto propertyName = group->child(row, 0)->text(); + // auto propertyName = group->child(row, 0)->text(); + auto propertyName = group->child(row, 0)->data().toString(); auto propertyValue = material->getProperty(propertyName)->getValue(); material->setEditStateAlter(); Base::Console().Log("MaterialDelegate::notifyChanged() - marked altered\n"); @@ -181,7 +184,8 @@ bool MaterialDelegate::editorEvent(QEvent* event, int row = index.row(); - QString propertyName = group->child(row, 0)->text(); + // QString propertyName = group->child(row, 0)->text(); + QString propertyName = group->child(row, 0)->data().toString(); auto type = getType(index); if (type == Materials::MaterialValue::Color) { diff --git a/src/Mod/Material/Gui/MaterialsEditor.cpp b/src/Mod/Material/Gui/MaterialsEditor.cpp index defc306520..b6166395a6 100644 --- a/src/Mod/Material/Gui/MaterialsEditor.cpp +++ b/src/Mod/Material/Gui/MaterialsEditor.cpp @@ -963,7 +963,9 @@ void MaterialsEditor::updateMaterialAppearance() QList items; QString key = itp->first; - auto propertyItem = new QStandardItem(key); + // auto propertyItem = new QStandardItem(key); + auto propertyItem = new QStandardItem(itp->second.getDisplayName()); + propertyItem->setData(key); propertyItem->setToolTip(itp->second.getDescription()); items.append(propertyItem); @@ -1026,7 +1028,9 @@ void MaterialsEditor::updateMaterialProperties() QString key = itp->first; Materials::ModelProperty modelProperty = static_cast(itp->second); - auto propertyItem = new QStandardItem(key); + // auto propertyItem = new QStandardItem(key); + auto propertyItem = new QStandardItem(modelProperty.getDisplayName()); + propertyItem->setData(key); propertyItem->setToolTip(modelProperty.getDescription()); items.append(propertyItem); diff --git a/src/Mod/Material/Resources/Models/Architectural/Architectural.yml b/src/Mod/Material/Resources/Models/Architectural/Architectural.yml index a94675ff0e..9586f36e46 100644 --- a/src/Mod/Material/Resources/Models/Architectural/Architectural.yml +++ b/src/Mod/Material/Resources/Models/Architectural/Architectural.yml @@ -28,16 +28,19 @@ Model: Description: "default architectural model" DOI: "" EnvironmentalEfficiencyClass: + DisplayName: "Environmental Efficiency Class" Type: 'String' Units: '' URL: '' Description: " " ExecutionInstructions: + DisplayName: "Execution Instructions" Type: 'String' Units: '' URL: '' Description: " " FireResistanceClass: + DisplayName: "Fire Resistance Class" Type: 'String' Units: '' URL: '' @@ -48,11 +51,13 @@ Model: URL: '' Description: " " SoundTransmissionClass: + DisplayName: "Sound Transmission Class" Type: 'String' Units: '' URL: '' Description: " " UnitsPerQuantity: + DisplayName: "Units Per Quantity" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Costs/Costs.yml b/src/Mod/Material/Resources/Models/Costs/Costs.yml index 92eb8323e4..edefdbe0c7 100644 --- a/src/Mod/Material/Resources/Models/Costs/Costs.yml +++ b/src/Mod/Material/Resources/Models/Costs/Costs.yml @@ -28,11 +28,13 @@ Model: Description: "default cost model" DOI: "" ProductURL: + DisplayName: "Product URL" Type: 'URL' Units: '' URL: 'https://de.wikipedia.org/wiki/Hyperlink' Description: "Product URL, recommended are wikipedia links" SpecificPrice: + DisplayName: "Specific Price" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml b/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml index 1f70ab439c..866c56665a 100644 --- a/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml +++ b/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml @@ -28,17 +28,20 @@ Model: Description: "default electromagnetic model" DOI: "" RelativePermittivity: + DisplayName: "Relative Permittivity" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Relative_permittivity' Description: "The ratio to the permittivity of the vacuum" ElectricalConductivity: + DisplayName: "Electrical Conductivity" Type: 'Quantity' Units: 'S/m' URL: 'https://en.wikipedia.org/wiki/Electrical_resistivity_and_conductivity' Description: > The electrical conductivity in [FreeCAD ElectricalConductivity unit] RelativePermeability: + DisplayName: "Relative Permeability" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Permeability_(electromagnetism)' diff --git a/src/Mod/Material/Resources/Models/Fluid/Fluid.yml b/src/Mod/Material/Resources/Models/Fluid/Fluid.yml index 4ddea05de3..2853392d9d 100644 --- a/src/Mod/Material/Resources/Models/Fluid/Fluid.yml +++ b/src/Mod/Material/Resources/Models/Fluid/Fluid.yml @@ -30,6 +30,7 @@ Model: - Density: UUID: '454661e5-265b-4320-8e6f-fcf6223ac3af' DynamicViscosity: + DisplayName: "Dynamic Viscosity" Type: 'Quantity' Units: 'Pa*s' URL: 'https://en.wikipedia.org/wiki/Viscosity' @@ -38,11 +39,13 @@ Model: flow and deform during mechanical oscillation as a function of temperature, frequency, time, or both KinematicViscosity: + DisplayName: "Kinematic Viscosity" Type: 'Quantity' Units: 'm^2/s' URL: 'https://en.wikipedia.org/wiki/Viscosity' Description: "Kinematic Viscosity = Dynamic Viscosity / Density" PrandtlNumber: + DisplayName: "Prandtl Number" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Prandtl_number' diff --git a/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml b/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml index c1d2cf9d27..18f26da015 100644 --- a/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml +++ b/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml @@ -28,16 +28,19 @@ Model: Description: "Describes the norm or standards referenced by this material" DOI: "" KindOfMaterial: + DisplayName: "Kind Of Material" Type: 'String' Units: '' URL: '' Description: " " MaterialNumber: + DisplayName: "Material Number" Type: 'String' Units: '' URL: '' Description: " " StandardCode: + DisplayName: "Standard Code" Type: 'String' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Mechanical/ArrudaBoyce.yml b/src/Mod/Material/Resources/Models/Mechanical/ArrudaBoyce.yml new file mode 100644 index 0000000000..1579bcec97 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ArrudaBoyce.yml @@ -0,0 +1,60 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'ArrudaBoyce' + UUID: 'e10d00de-c7de-4e59-bcdd-058c2ea19ec6' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + A hyperelastic constitutive model used to describe the mechanical + behavior of rubber and other polymeric substances + ArrudaBoyce: + DisplayName: "Arruda-Boyce" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu: + DisplayName: 'μ' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ [FreeCAD Pressure unit]" + LambdaM: + DisplayName: 'λm' + Type: 'Float' + Units: '' + URL: '' + Description: "λm" + D: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Arruda-Boyce properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml b/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml index 71eb1c519e..3aca53ef15 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml @@ -30,21 +30,25 @@ Model: and strain relationship is linear DOI: "10.1016/j.ijplas.2004.06.004" BulkModulus: + DisplayName: "Bulk Modulus" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Bulk_modulus' Description: "Bulk modulus in [FreeCAD Pressure unit]" PoissonRatio: + DisplayName: "Poisson Ratio" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" ShearModulus: + DisplayName: "Shear Modulus" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" YoungsModulus: + DisplayName: "Young's Modulus" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' diff --git a/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml b/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml index 83b02a264f..aabd4ea72b 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml @@ -35,6 +35,7 @@ Model: - IsotropicLinearElastic: UUID: 'f6f9e48c-b116-4e82-ad7f-3659a9219c50' AngleOfFriction: + DisplayName: "Angle Of Friction" Type: 'Quantity' Units: 'deg' URL: 'https://en.wikipedia.org/wiki/Friction#Angle_of_friction' @@ -42,11 +43,13 @@ Model: Further information can be found at https://en.wikipedia.org/wiki/Mohr%E2%80%93Coulomb_theory CompressiveStrength: + DisplayName: "Compressive Strength" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Compressive_strength' Description: "Compressive strength in [FreeCAD Pressure unit]" FractureToughness: + DisplayName: "Fracture Toughness" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Fracture_toughness' @@ -55,16 +58,19 @@ Model: the unit is fixed MPa * m^0.5. https://github.com/FreeCAD/FreeCAD/pull/2156 UltimateStrain: + DisplayName: "Ultimate Strain" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Deformation_(mechanics)' Description: " " UltimateTensileStrength: + DisplayName: "Ultimate Tensile Strength" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Ultimate_tensile_strength' Description: "Ultimate tensile strength in [FreeCAD Pressure unit]" YieldStrength: + DisplayName: "Yield Strength" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Yield_Strength' diff --git a/src/Mod/Material/Resources/Models/Mechanical/MooneyRivlin.yml b/src/Mod/Material/Resources/Models/Mechanical/MooneyRivlin.yml new file mode 100644 index 0000000000..59950db9d1 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/MooneyRivlin.yml @@ -0,0 +1,59 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'MooneyRivlin' + UUID: 'beeed169-7770-4da0-ab67-c9172cf7d23d' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + A hyperelastic material model where the strain energy density function + W is a linear combination of two invariants of the left Cauchy–Green + deformation tensor B + MooneyRivlin: + DisplayName: "Mooney-Rivlin" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Mooney-Rivlin properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/NeoHooke.yml b/src/Mod/Material/Resources/Models/Mechanical/NeoHooke.yml new file mode 100644 index 0000000000..ad1b615826 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/NeoHooke.yml @@ -0,0 +1,54 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'NeoHooke' + UUID: '569ebc58-ef29-434a-83be-555a0980d505' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + A neo-Hookean solid is a hyperelastic material model, similar to + Hooke's law, that can be used for predicting the nonlinear stress-strain + behavior of materials undergoing large deformations. + NeoHooke: + DisplayName: "neo-Hooke" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing neo-Hooke properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenN1.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenN1.yml new file mode 100644 index 0000000000..1d1c11cf3f --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenN1.yml @@ -0,0 +1,61 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'OgdenN1' + UUID: 'a2634a2c-412f-468d-9bec-74ae5d87a9c0' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Ogden material model is a hyperelastic material model used to + describe the non-linear stress–strain behaviour of complex materials + such as rubbers, polymers, and biological tissue. + OgdenN1: + DisplayName: "Ogden N=1" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu1: + DisplayName: 'μ1' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Alpha1: + DisplayName: 'α1' + Type: 'Float' + Units: '' + URL: '' + Description: "α1" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Ogden N=1 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenN2.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenN2.yml new file mode 100644 index 0000000000..406e359e90 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenN2.yml @@ -0,0 +1,78 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'OgdenN2' + UUID: '233540bb-7b13-4f49-ac12-126a5c82cedf' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Ogden material model is a hyperelastic material model used to + describe the non-linear stress–strain behaviour of complex materials + such as rubbers, polymers, and biological tissue. + OgdenN2: + DisplayName: "Ogden N=2" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu1: + DisplayName: 'μ1' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Mu2: + DisplayName: 'μ2' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ2 [FreeCAD Pressure unit]" + Alpha1: + DisplayName: 'α1' + Type: 'Float' + Units: '' + URL: '' + Description: "α1" + Alpha2: + DisplayName: 'α2' + Type: 'Float' + Units: '' + URL: '' + Description: "α2" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Ogden N=2 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenN3.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenN3.yml new file mode 100644 index 0000000000..0fed1d8a78 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenN3.yml @@ -0,0 +1,95 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'OgdenN3' + UUID: 'a917d6b8-209f-429e-9972-fe4bbb97af3f' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Ogden material model is a hyperelastic material model used to + describe the non-linear stress–strain behaviour of complex materials + such as rubbers, polymers, and biological tissue. + OgdenN3: + DisplayName: "Ogden N=3" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu1: + DisplayName: 'μ1' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Mu2: + DisplayName: 'μ2' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ2 [FreeCAD Pressure unit]" + Mu3: + DisplayName: 'μ3' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Alpha1: + DisplayName: 'α1' + Type: 'Float' + Units: '' + URL: '' + Description: "α1" + Alpha2: + DisplayName: 'α2' + Type: 'Float' + Units: '' + URL: '' + Description: "α2" + Alpha3: + DisplayName: 'α3' + Type: 'Float' + Units: '' + URL: '' + Description: "α3" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Ogden N=3 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml index 7bf43f619b..f904d828e8 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml @@ -30,33 +30,39 @@ Model: strain relationship is linear DOI: "10.1016/j.ijplas.2004.06.004" OgdenModuli: + DisplayName: "Ogden Moduli" Type: 'List' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Ogden_hyperelastic_model' Description: "Elastic moduli μ for Ogden [FreeCAD Pressure unit]" OgdenExponent: + DisplayName: "Ogden Exponent" Type: 'Integer' Units: '' URL: 'https://en.wikipedia.org/wiki/Ogden_hyperelastic_model' Description: "Exponent ɑ for Ogden [unitless]" InitialYieldStress: + DisplayName: "Initial Yield Stress" Type: 'Quantity' Units: 'kPa' URL: '' Description: > Saturation stress for Voce isotropic hardening [FreeCAD Pressure unit] VoceSaturationStress: + DisplayName: "Voce Saturation Stress" Type: 'Quantity' Units: 'kPa' URL: '' Description: > Saturation stress for Voce isotropic hardening [FreeCAD Pressure unit] VoceStrainScale: + DisplayName: "Voce Strain Scale" Type: 'Float' Units: '' URL: '' Description: "Strain scale in Voce isotropic hardening [unitless]" Yld2004p18Coefficients: + DisplayName: "Yld2004p18 Coefficients" Type: 'List' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml b/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml index b63302dc96..7e88745eb2 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml @@ -30,46 +30,55 @@ Model: strain relationship is linear DOI: "" PoissonRatioXY: + DisplayName: "Poisson Ratio XY" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" PoissonRatioXZ: + DisplayName: "Poisson Ratio XZ" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" PoissonRatioYZ: + DisplayName: "Poisson Ratio YZ" Type: 'Float' Units: 'Pressure' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" ShearModulusXY: + DisplayName: "Shear Modulus XY" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" ShearModulusXZ: + DisplayName: "Shear Modulus XZ" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" ShearModulusYZ: + DisplayName: "Shear Modulus YZ" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" YoungsModulusX: + DisplayName: "Young's Modulus X" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' Description: "Young's modulus (or E-Module) in [FreeCAD Pressure unit]" YoungsModulusY: + DisplayName: "Young's Modulus Y" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' Description: "Young's modulus (or E-Module) in [FreeCAD Pressure unit]" YoungsModulusZ: + DisplayName: "Young's Modulus Z" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' diff --git a/src/Mod/Material/Resources/Models/Mechanical/PolynomialN1.yml b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN1.yml new file mode 100644 index 0000000000..8f4195636f --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN1.yml @@ -0,0 +1,58 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'PolynomialN1' + UUID: '285a6042-0f0c-4a36-a898-4afadd6408ce' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + PolynomialN1: + DisplayName: "Polynomial N=1" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Polynomial N=1 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/PolynomialN2.yml b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN2.yml new file mode 100644 index 0000000000..cd0fc72df0 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN2.yml @@ -0,0 +1,78 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'PolynomialN2' + UUID: '4c2fb7b2-5121-4d6f-be0d-8c5970c9e682' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + PolynomialN2: + DisplayName: "Polynomial N=2" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C11: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C02: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Polynomial N=2 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/PolynomialN3.yml b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN3.yml new file mode 100644 index 0000000000..daa41b364a --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN3.yml @@ -0,0 +1,103 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'PolynomialN3' + UUID: 'e83ada22-947e-4beb-91e7-482a16f5ba77' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + PolynomialN3: + DisplayName: "Polynomial N=3" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C11: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C02: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C30: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C21: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C12: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C03: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Polynomial N=3 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN1.yml b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN1.yml new file mode 100644 index 0000000000..d2e70cf1c5 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN1.yml @@ -0,0 +1,53 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'ReducdedPolynomialN1' + UUID: 'f8052a3c-db17-42ea-b2be-13aa5ef30730' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + ReducdedPolynomialN1: + DisplayName: "Reduced Polynomial N=1" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Reduced Polynomial N=1 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN2.yml b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN2.yml new file mode 100644 index 0000000000..e98cdd6545 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN2.yml @@ -0,0 +1,63 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'ReducdedPolynomialN2' + UUID: 'c52b5021-4bb8-441c-80d4-855fce9de15e' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + ReducdedPolynomialN2: + DisplayName: "Reduced Polynomial N=2" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Reduced Polynomial N=2 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN3.yml b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN3.yml new file mode 100644 index 0000000000..85f9b34dc6 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN3.yml @@ -0,0 +1,73 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'ReducdedPolynomialN3' + UUID: 'fa4e58b4-74c7-4292-8e79-7d5fd232fb55' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + ReducdedPolynomialN3: + DisplayName: "Reduced Polynomial N=3" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C30: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Reduced Polynomial N=3 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/Yeoh.yml b/src/Mod/Material/Resources/Models/Mechanical/Yeoh.yml new file mode 100644 index 0000000000..803e97d4c2 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/Yeoh.yml @@ -0,0 +1,73 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * 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 * +# * * +# *************************************************************************** + +Model: + Name: 'Yeoh' + UUID: 'cd13c492-21a9-4578-8191-deec003e4c01' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Yeoh hyperelastic material model is a phenomenological model for + the deformation of nearly incompressible, nonlinear elastic materials + such as rubber. + Yeoh: + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C30: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Yeoh properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml b/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml index 84223de33b..d6057fb312 100644 --- a/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml @@ -31,11 +31,13 @@ AppearanceModel: - BasicRendering: UUID: 'f006c7e4-35b7-43d5-bbf9-c5d572309e6e' FragmentShader: + DisplayName: "Fragment Shader" Type: 'String' Units: '' URL: '' Description: " " VertexShader: + DisplayName: "Vertex Shader" Type: 'String' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml b/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml index c5d145ba2d..e9ffd5a36f 100644 --- a/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml @@ -28,16 +28,19 @@ AppearanceModel: Description: "default rendering model" DOI: "" AmbientColor: + DisplayName: "Ambient Color" Type: 'Color' Units: '' URL: '' Description: " " DiffuseColor: + DisplayName: "Diffuse Color" Type: 'Color' Units: '' URL: '' Description: " " EmissiveColor: + DisplayName: "Emissive Color" Type: 'Color' Units: '' URL: '' @@ -48,6 +51,7 @@ AppearanceModel: URL: '' Description: " " SpecularColor: + DisplayName: "Specular Color" Type: 'Color' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml b/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml index c2fadfa0ad..02150163d6 100644 --- a/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml @@ -31,11 +31,13 @@ AppearanceModel: - BasicRendering: UUID: 'f006c7e4-35b7-43d5-bbf9-c5d572309e6e' TexturePath: + DisplayName: "Texture Path" Type: 'File' Units: '' URL: '' Description: " " TextureScaling: + DisplayName: "Texture Scaling" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml b/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml index a1eb05213e..b756b63ecb 100644 --- a/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml @@ -28,31 +28,37 @@ AppearanceModel: Description: "default vector rendering model" DOI: "" SectionFillPattern: + DisplayName: "Section Fill Pattern" Type: 'File' Units: '' URL: '' Description: " " SectionLinewidth: + DisplayName: "Section Linewidth" Type: 'Float' Units: '' URL: '' Description: " " SectionColor: + DisplayName: "Section Color" Type: 'Color' Units: '' URL: '' Description: " " ViewColor: + DisplayName: "View Color" Type: 'Color' Units: '' URL: '' Description: " " ViewFillPattern: + DisplayName: "View Fill Pattern" Type: 'Boolean' Units: '' URL: '' Description: " " ViewLinewidth: + DisplayName: "View Linewidth" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Thermal/Thermal.yml b/src/Mod/Material/Resources/Models/Thermal/Thermal.yml index f8154af60b..5bbf0a137e 100644 --- a/src/Mod/Material/Resources/Models/Thermal/Thermal.yml +++ b/src/Mod/Material/Resources/Models/Thermal/Thermal.yml @@ -28,16 +28,19 @@ Model: Description: "default thermal model" DOI: "" SpecificHeat: + DisplayName: "Specific Heat" Type: 'Quantity' Units: 'J/kg/K' URL: 'https://en.wikipedia.org/wiki/Heat_capacity' Description: "Specific capacity in [FreeCAD SpecificHeat unit]" ThermalConductivity: + DisplayName: "Thermal Conductivity" Type: 'Quantity' Units: 'W/m/K' URL: 'https://en.wikipedia.org/wiki/Thermal_conductivity' Description: "Thermal conductivity in [FreeCAD ThermalConductivity unit]" ThermalExpansionCoefficient: + DisplayName: "Thermal Expansion Coefficient" Type: 'Quantity' Units: 'm/m/K' URL: diff --git a/src/Mod/Material/materialtests/TestMaterials.py b/src/Mod/Material/materialtests/TestMaterials.py index 0c4c50e77d..86f3104584 100644 --- a/src/Mod/Material/materialtests/TestMaterials.py +++ b/src/Mod/Material/materialtests/TestMaterials.py @@ -170,19 +170,19 @@ class MaterialTestCases(unittest.TestCase): self.assertTrue(len(properties["SpecularColor"]) > 0) self.assertTrue(len(properties["Transparency"]) > 0) - self.assertEqual(properties["Density"], + self.assertEqual(parseQuantity(properties["Density"]).UserString, parseQuantity("7900.00 kg/m^3").UserString) # self.assertEqual(properties["BulkModulus"], "") self.assertAlmostEqual(parseQuantity(properties["PoissonRatio"]).Value, parseQuantity("0.3").Value) - self.assertEqual(properties["YoungsModulus"], + self.assertEqual(parseQuantity(properties["YoungsModulus"]).UserString, parseQuantity("210.00 GPa").UserString) # self.assertEqual(properties["ShearModulus"], "") - self.assertEqual(properties["SpecificHeat"], + self.assertEqual(parseQuantity(properties["SpecificHeat"]).UserString, parseQuantity("590.00 J/kg/K").UserString) - self.assertEqual(properties["ThermalConductivity"], + self.assertEqual(parseQuantity(properties["ThermalConductivity"]).UserString, parseQuantity("43.00 W/m/K").UserString) - self.assertEqual(properties["ThermalExpansionCoefficient"], + self.assertEqual(parseQuantity(properties["ThermalExpansionCoefficient"]).UserString, parseQuantity("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)") diff --git a/src/Mod/Material/materialtools/cardutils.py b/src/Mod/Material/materialtools/cardutils.py index 54280d86d8..4f5bbb76dc 100644 --- a/src/Mod/Material/materialtools/cardutils.py +++ b/src/Mod/Material/materialtools/cardutils.py @@ -269,7 +269,7 @@ def import_materials(category='Solid', template=False): mat = materialManager.getMaterial(matUUID) physicalModels = mat.PhysicalModels fluid = ('1ae66d8c-1ba1-4211-ad12-b9917573b202' in physicalModels) - if not fluid: + if (category == 'Solid' and not fluid) or (category != 'Solid' and fluid): path = mat.LibraryRoot + "/" + mat.Directory materials[path] = mat.Properties diff --git a/src/Mod/Mesh/App/Core/Builder.cpp b/src/Mod/Mesh/App/Core/Builder.cpp index f2e312c638..6da208df60 100644 --- a/src/Mod/Mesh/App/Core/Builder.cpp +++ b/src/Mod/Mesh/App/Core/Builder.cpp @@ -369,7 +369,7 @@ void MeshFastBuilder::Finish() } // std::sort(verts.begin(), verts.end()); - int threads = QThread::idealThreadCount(); + int threads = int(std::thread::hardware_concurrency()); MeshCore::parallel_sort(verts.begin(), verts.end(), std::less<>(), threads); QVector indices(ulCtPts); diff --git a/src/Mod/Mesh/App/Core/Evaluation.cpp b/src/Mod/Mesh/App/Core/Evaluation.cpp index 5397320bef..6b6c8820e6 100644 --- a/src/Mod/Mesh/App/Core/Evaluation.cpp +++ b/src/Mod/Mesh/App/Core/Evaluation.cpp @@ -991,7 +991,7 @@ void MeshKernel::RebuildNeighbours(FacetIndex index) // sort the edges // std::sort(edges.begin(), edges.end(), Edge_Less()); - int threads = QThread::idealThreadCount(); + int threads = int(std::thread::hardware_concurrency()); MeshCore::parallel_sort(edges.begin(), edges.end(), Edge_Less(), threads); PointIndex p0 = POINT_INDEX_MAX, p1 = POINT_INDEX_MAX; diff --git a/src/Mod/Mesh/App/Core/Functional.h b/src/Mod/Mesh/App/Core/Functional.h index d33a1cdda6..63d64d5cd8 100644 --- a/src/Mod/Mesh/App/Core/Functional.h +++ b/src/Mod/Mesh/App/Core/Functional.h @@ -23,9 +23,8 @@ #ifndef MESH_FUNCTIONAL_H #define MESH_FUNCTIONAL_H -#include -#include #include +#include namespace MeshCore @@ -39,18 +38,25 @@ static void parallel_sort(Iter begin, Iter end, Pred comp, int threads) else { Iter mid = begin + (end - begin) / 2; if (threads == 2) { - QFuture future = - QtConcurrent::run(parallel_sort, begin, mid, comp, threads / 2); + auto future = std::async(parallel_sort, begin, mid, comp, threads / 2); std::sort(mid, end, comp); - future.waitForFinished(); + future.wait(); } else { - QFuture a = - QtConcurrent::run(parallel_sort, begin, mid, comp, threads / 2); - QFuture b = - QtConcurrent::run(parallel_sort, mid, end, comp, threads / 2); - a.waitForFinished(); - b.waitForFinished(); + auto a = std::async(std::launch::async, + parallel_sort, + begin, + mid, + comp, + threads / 2); + auto b = std::async(std::launch::async, + parallel_sort, + mid, + end, + comp, + threads / 2); + a.wait(); + b.wait(); } std::inplace_merge(begin, mid, end, comp); } diff --git a/src/Mod/Mesh/App/Core/Visitor.cpp b/src/Mod/Mesh/App/Core/Visitor.cpp index 2c9992d3d1..0400224308 100644 --- a/src/Mod/Mesh/App/Core/Visitor.cpp +++ b/src/Mod/Mesh/App/Core/Visitor.cpp @@ -40,6 +40,10 @@ unsigned long MeshKernel::VisitNeighbourFacets(MeshFacetVisitor& rclFVisitor, std::vector::iterator clCurrIter; MeshFacetArray::_TConstIterator clCurrFacet, clNBFacet; + if (ulStartFacet >= _aclFacetArray.size()) { + return 0; + } + // pick up start point clCurrentLevel.push_back(ulStartFacet); _aclFacetArray[ulStartFacet].SetFlag(MeshFacet::VISIT); @@ -98,6 +102,10 @@ unsigned long MeshKernel::VisitNeighbourFacetsOverCorners(MeshFacetVisitor& rclF MeshFacetArray::_TConstIterator pFBegin = raclFAry.begin(); std::vector aclCurrentLevel, aclNextLevel; + if (ulStartFacet >= _aclFacetArray.size()) { + return 0; + } + aclCurrentLevel.push_back(ulStartFacet); raclFAry[ulStartFacet].SetFlag(MeshFacet::VISIT); diff --git a/src/Mod/Mesh/App/Exporter.h b/src/Mod/Mesh/App/Exporter.h index 005fc5ed5b..3085f7bba2 100644 --- a/src/Mod/Mesh/App/Exporter.h +++ b/src/Mod/Mesh/App/Exporter.h @@ -43,7 +43,7 @@ namespace Mesh * If objects are meant to be combined into a single file, then the file should * be saved from the derived class' destructor. */ -class Exporter +class MeshExport Exporter { public: Exporter(); @@ -76,7 +76,7 @@ protected: }; /// Creates a single mesh, in a file, from one or more objects -class MergeExporter: public Exporter +class MeshExport MergeExporter: public Exporter { public: MergeExporter(std::string fileName, MeshCore::MeshIO::Format fmt); @@ -202,7 +202,7 @@ private: * The constructor and destructor write the beginning and end of the 3MF, * addObject() is used to add geometry */ -class Exporter3MF: public Exporter +class MeshExport Exporter3MF: public Exporter { public: Exporter3MF(std::string fileName, const std::vector& = {}); @@ -235,7 +235,7 @@ private: * The constructor and destructor write the beginning and end of the AMF, * addObject() is used to add geometry */ -class ExporterAMF: public Exporter +class MeshExport ExporterAMF: public Exporter { public: /// Writes AMF header diff --git a/src/Mod/Mesh/App/MeshFeaturePy.xml b/src/Mod/Mesh/App/MeshFeaturePy.xml index c90a1855d4..6a6292e202 100644 --- a/src/Mod/Mesh/App/MeshFeaturePy.xml +++ b/src/Mod/Mesh/App/MeshFeaturePy.xml @@ -1,86 +1,104 @@  - - - - The Mesh::Feature class handles meshes. + + + + The Mesh::Feature class handles meshes. The Mesh.MeshFeature() function is for internal use only and cannot be used to create instances of this class. Therefore you must have a reference to a document, e.g. 'd' then you can create an instance with d.addObject("Mesh::Feature"). - - - - - Return the number of vertices of the mesh object - - - - - Return the number of facets of the mesh object - - - - - Adjust wrong oriented facets - - - - - Smooth the mesh data - - - - - Remove non-manifolds - - - - - Remove non-manifold points - - - - - Repair any invalid indices - - - - - Remove degenerated facets - - - - - Remove duplicated facets - - - - - Remove duplicated points - - - - - Repair self-intersections - - - - - Remove folds on surfaces - - - - - Remove points with invalid coordinates (NaN) - - - + + + + + Return the number of vertices of the mesh object + + + + + Return the number of facets of the mesh object + + + + + Adjust wrong oriented facets + + + + + Smooth the mesh data + + + + + + Decimate the mesh + decimate(tolerance(Float), reduction(Float)) + tolerance: maximum error + reduction: reduction factor must be in the range [0.0,1.0] + Example: + mesh.decimate(0.5, 0.1) # reduction by up to 10 percent + mesh.decimate(0.5, 0.9) # reduction by up to 90 percent + + or + + decimate(targwt size(int)) + mesh.decimate(mesh.CountFacets/2) + + + + + + Remove non-manifolds + + + + + Remove non-manifold points + + + + + Repair any invalid indices + + + + + Remove degenerated facets + + + + + Remove duplicated facets + + + + + Remove duplicated points + + + + + Repair self-intersections + + + + + Remove folds on surfaces + + + + + Remove points with invalid coordinates (NaN) + + + diff --git a/src/Mod/Mesh/App/MeshFeaturePyImp.cpp b/src/Mod/Mesh/App/MeshFeaturePyImp.cpp index 8f02291db2..aaaf58aff0 100644 --- a/src/Mod/Mesh/App/MeshFeaturePyImp.cpp +++ b/src/Mod/Mesh/App/MeshFeaturePyImp.cpp @@ -90,6 +90,43 @@ PyObject* MeshFeaturePy::smooth(PyObject* args) Py_Return; } +PyObject* MeshFeaturePy::decimate(PyObject* args) +{ + float fTol {}; + float fRed {}; + if (PyArg_ParseTuple(args, "ff", &fTol, &fRed)) { + PY_TRY + { + Mesh::Feature* obj = getFeaturePtr(); + MeshObject* kernel = obj->Mesh.startEditing(); + kernel->decimate(fTol, fRed); + obj->Mesh.finishEditing(); + } + PY_CATCH; + + Py_Return; + } + + PyErr_Clear(); + int targetSize {}; + if (PyArg_ParseTuple(args, "i", &targetSize)) { + PY_TRY + { + Mesh::Feature* obj = getFeaturePtr(); + MeshObject* kernel = obj->Mesh.startEditing(); + kernel->decimate(targetSize); + obj->Mesh.finishEditing(); + } + PY_CATCH; + + Py_Return; + } + + PyErr_SetString(PyExc_ValueError, + "decimate(tolerance=float, reduction=float) or decimate(targetSize=int)"); + return nullptr; +} + PyObject* MeshFeaturePy::removeNonManifolds(PyObject* args) { if (!PyArg_ParseTuple(args, "")) { diff --git a/src/Mod/Mesh/App/MeshPyImp.cpp b/src/Mod/Mesh/App/MeshPyImp.cpp index fbeb0e9438..1f4422e008 100644 --- a/src/Mod/Mesh/App/MeshPyImp.cpp +++ b/src/Mod/Mesh/App/MeshPyImp.cpp @@ -66,6 +66,7 @@ struct MeshPropertyLock private: PropertyMeshKernel* prop; + FC_DISABLE_COPY_MOVE(MeshPropertyLock) }; int MeshPy::PyInit(PyObject* args, PyObject*) @@ -345,7 +346,7 @@ PyObject* MeshPy::write(PyObject* args, PyObject* kwds) PyObject* MeshPy::writeInventor(PyObject* args) { - float creaseangle = 0.0f; + float creaseangle = 0.0F; if (!PyArg_ParseTuple(args, "|f", &creaseangle)) { return nullptr; } @@ -374,7 +375,9 @@ PyObject* MeshPy::offset(PyObject* args) PyObject* MeshPy::offsetSpecial(PyObject* args) { - float Float {}, zmin {}, zmax {}; + float Float {}; + float zmin {}; + float zmax {}; if (!PyArg_ParseTuple(args, "fff", &Float, &zmin, &zmax)) { return nullptr; } @@ -392,7 +395,7 @@ PyObject* MeshPy::crossSections(PyObject* args) { PyObject* obj {}; PyObject* poly = Py_False; - float min_eps = 1.0e-2f; + float min_eps = 1.0e-2F; if (!PyArg_ParseTuple(args, "O|fO!", &obj, &min_eps, &PyBool_Type, &poly)) { return nullptr; } @@ -554,7 +557,7 @@ PyObject* MeshPy::section(PyObject* args, PyObject* kwds) { PyObject* pcObj {}; PyObject* connectLines = Py_True; - float fMinDist = 0.0001f; + float fMinDist = 0.0001F; static const std::array keywords_section {"Mesh", "ConnectLines", @@ -601,7 +604,9 @@ PyObject* MeshPy::coarsen(PyObject* args) PyObject* MeshPy::translate(PyObject* args) { - float x {}, y {}, z {}; + float x {}; + float y {}; + float z {}; if (!PyArg_ParseTuple(args, "fff", &x, &y, &z)) { return nullptr; } @@ -619,7 +624,9 @@ PyObject* MeshPy::translate(PyObject* args) PyObject* MeshPy::rotate(PyObject* args) { - double x {}, y {}, z {}; + double x {}; + double y {}; + double z {}; if (!PyArg_ParseTuple(args, "ddd", &x, &y, &z)) { return nullptr; } @@ -677,7 +684,15 @@ PyObject* MeshPy::getEigenSystem(PyObject* args) PyObject* MeshPy::addFacet(PyObject* args) { - double x1 {}, y1 {}, z1 {}, x2 {}, y2 {}, z2 {}, x3 {}, y3 {}, z3 {}; + double x1 {}; + double y1 {}; + double z1 {}; + double x2 {}; + double y2 {}; + double z2 {}; + double x3 {}; + double y3 {}; + double z3 {}; if (PyArg_ParseTuple(args, "ddddddddd", &x1, &y1, &z1, &x2, &y2, &z2, &x3, &y3, &z3)) { getMeshObjectPtr()->addFacet( MeshCore::MeshGeomFacet(Base::Vector3f((float)x1, (float)y1, (float)z1), @@ -687,7 +702,9 @@ PyObject* MeshPy::addFacet(PyObject* args) } PyErr_Clear(); - PyObject *v1 {}, *v2 {}, *v3 {}; + PyObject* v1 {}; + PyObject* v2 {}; + PyObject* v3 {}; if (PyArg_ParseTuple(args, "O!O!O!", &(Base::VectorPy::Type), @@ -908,7 +925,9 @@ PyObject* MeshPy::movePoint(PyObject* args) Base::Vector3d vec; do { - double x = 0.0, y = 0.0, z = 0.0; + double x = 0.0; + double y = 0.0; + double z = 0.0; if (PyArg_ParseTuple(args, "kddd", &index, &x, &y, &z)) { vec.Set(x, y, z); break; @@ -961,7 +980,7 @@ PyObject* MeshPy::addSegment(PyObject* args) segment.reserve(list.size()); for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { Py::Long value(*it); - Mesh::FacetIndex index = static_cast(value); + Mesh::FacetIndex index = static_cast(value); if (index < numFacets) { segment.push_back(index); } @@ -1371,13 +1390,13 @@ PyObject* MeshPy::fillupHoles(PyObject* args) { unsigned long len {}; int level = 0; - float max_area = 0.0f; + float max_area = 0.0F; if (!PyArg_ParseTuple(args, "k|if", &len, &level, &max_area)) { return nullptr; } try { std::unique_ptr tria; - if (max_area > 0.0f) { + if (max_area > 0.0F) { tria = std::unique_ptr( new MeshCore::ConstraintDelaunayTriangulator(max_area)); } @@ -1415,8 +1434,8 @@ PyObject* MeshPy::fixIndices(PyObject* args) PyObject* MeshPy::fixCaps(PyObject* args) { - float fMaxAngle = Base::toRadians(150.0f); - float fSplitFactor = 0.25f; + float fMaxAngle = Base::toRadians(150.0F); + float fSplitFactor = 0.25F; if (!PyArg_ParseTuple(args, "|ff", &fMaxAngle, &fSplitFactor)) { return nullptr; } @@ -1556,7 +1575,7 @@ PyObject* MeshPy::mergeFacets(PyObject* args) PyObject* MeshPy::optimizeTopology(PyObject* args) { - float fMaxAngle = -1.0f; + float fMaxAngle = -1.0F; if (!PyArg_ParseTuple( args, "|f; specify the maximum allowed angle between the normals of two adjacent facets", @@ -1607,7 +1626,8 @@ PyObject* MeshPy::splitEdges(PyObject* args) PyObject* MeshPy::splitEdge(PyObject* args) { - unsigned long facet {}, neighbour {}; + unsigned long facet {}; + unsigned long neighbour {}; PyObject* vertex {}; if (!PyArg_ParseTuple(args, "kkO!", &facet, &neighbour, &Base::VectorPy::Type, &vertex)) { return nullptr; @@ -1683,7 +1703,8 @@ PyObject* MeshPy::splitFacet(PyObject* args) PyObject* MeshPy::swapEdge(PyObject* args) { - unsigned long facet {}, neighbour {}; + unsigned long facet {}; + unsigned long neighbour {}; if (!PyArg_ParseTuple(args, "kk", &facet, &neighbour)) { return nullptr; } @@ -1716,7 +1737,8 @@ PyObject* MeshPy::swapEdge(PyObject* args) PyObject* MeshPy::collapseEdge(PyObject* args) { - unsigned long facet {}, neighbour {}; + unsigned long facet {}; + unsigned long neighbour {}; if (!PyArg_ParseTuple(args, "kk", &facet, &neighbour)) { return nullptr; } @@ -1960,7 +1982,8 @@ PyObject* MeshPy::trim(PyObject* args) PyObject* MeshPy::trimByPlane(PyObject* args) { - PyObject *base {}, *norm {}; + PyObject* base {}; + PyObject* norm {}; if (!PyArg_ParseTuple(args, "O!O!", &Base::VectorPy::Type, @@ -2044,7 +2067,8 @@ PyObject* MeshPy::smooth(PyObject* args, PyObject* kwds) PyObject* MeshPy::decimate(PyObject* args) { - float fTol {}, fRed {}; + float fTol {}; + float fRed {}; if (PyArg_ParseTuple(args, "ff", &fTol, &fRed)) { PY_TRY { diff --git a/src/Mod/Mesh/App/WildMagic4/Wm4Sphere3.h b/src/Mod/Mesh/App/WildMagic4/Wm4Sphere3.h index 9eface1c34..14e23f4c4d 100644 --- a/src/Mod/Mesh/App/WildMagic4/Wm4Sphere3.h +++ b/src/Mod/Mesh/App/WildMagic4/Wm4Sphere3.h @@ -38,7 +38,7 @@ public: Sphere3& operator= (const Sphere3& rkSphere); Vector3 Center; - Real Radius; + Real Radius{}; }; } diff --git a/src/Mod/Mesh/Gui/DlgDecimating.cpp b/src/Mod/Mesh/Gui/DlgDecimating.cpp index 1cbf2d8f96..8d29e6d777 100644 --- a/src/Mod/Mesh/Gui/DlgDecimating.cpp +++ b/src/Mod/Mesh/Gui/DlgDecimating.cpp @@ -22,7 +22,7 @@ #include "PreCompiled.h" -#include +#include #include #include #include @@ -61,9 +61,8 @@ int DlgDecimating::targetNumberOfTriangles() const if (ui->checkAbsoluteNumber->isChecked()) { return ui->spinBoxReduction->value(); } - else { - return numberOfTriangles * (1.0 - reduction()); - } + + return int(numberOfTriangles * (1.0 - reduction())); } void DlgDecimating::setNumberOfTriangles(int num) @@ -90,7 +89,7 @@ void DlgDecimating::onCheckAbsoluteNumberToggled(bool on) ui->sliderReduction, &QSlider::setValue); ui->spinBoxReduction->setRange(1, numberOfTriangles); - ui->spinBoxReduction->setValue(numberOfTriangles * (1.0 - reduction())); + ui->spinBoxReduction->setValue(int(numberOfTriangles * (1.0 - reduction()))); ui->spinBoxReduction->setSuffix(QString()); ui->checkAbsoluteNumber->setText( tr("Absolute number (Maximum: %1)").arg(numberOfTriangles)); @@ -159,22 +158,20 @@ bool TaskDecimating::accept() Gui::WaitCursor wc; Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Mesh Decimating")); - float tolerance = widget->tolerance(); - float reduction = widget->reduction(); + float tolerance = float(widget->tolerance()); + float reduction = float(widget->reduction()); bool absolute = widget->isAbsoluteNumber(); int targetSize = 0; if (absolute) { targetSize = widget->targetNumberOfTriangles(); } for (auto mesh : meshes) { - Mesh::MeshObject* mm = mesh->Mesh.startEditing(); if (absolute) { - mm->decimate(targetSize); + Gui::cmdAppObjectArgs(mesh, "decimate(%i)", targetSize); } else { - mm->decimate(tolerance, reduction); + Gui::cmdAppObjectArgs(mesh, "decimate(%f, %f)", tolerance, reduction); } - mesh->Mesh.finishEditing(); } Gui::Command::commitCommand(); diff --git a/src/Mod/Mesh/Gui/DlgDecimating.h b/src/Mod/Mesh/Gui/DlgDecimating.h index 58efb56f42..838cec7705 100644 --- a/src/Mod/Mesh/Gui/DlgDecimating.h +++ b/src/Mod/Mesh/Gui/DlgDecimating.h @@ -51,6 +51,8 @@ private: private: int numberOfTriangles {0}; std::unique_ptr ui; + + Q_DISABLE_COPY_MOVE(DlgDecimating) }; /** diff --git a/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp b/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp index 89046e0d55..0448d68461 100644 --- a/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp +++ b/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp @@ -90,7 +90,7 @@ public: bool enableFoldsCheck {false}; bool checkNonManfoldPoints {false}; bool strictlyDegenerated {true}; - float epsilonDegenerated {0.0f}; + float epsilonDegenerated {0.0F}; }; /* TRANSLATOR MeshGui::DlgEvaluateMeshImp */ @@ -129,7 +129,7 @@ DlgEvaluateMeshImp::DlgEvaluateMeshImp(QWidget* parent, Qt::WindowFlags fl) d->enableFoldsCheck = hGrp->GetBool("EnableFoldsCheck", false); d->strictlyDegenerated = hGrp->GetBool("StrictlyDegenerated", true); if (d->strictlyDegenerated) { - d->epsilonDegenerated = 0.0f; + d->epsilonDegenerated = 0.0F; } else { d->epsilonDegenerated = MeshCore::MeshDefinitions::_fMinPointDistanceP2; @@ -350,8 +350,7 @@ void DlgEvaluateMeshImp::addViewProvider(const char* name, removeViewProvider(name); if (d->view) { - ViewProviderMeshDefects* vp = - static_cast(Base::Type::createInstanceByName(name)); + auto vp = static_cast(Base::Type::createInstanceByName(name)); assert(vp->isDerivedFrom()); vp->attach(d->meshFeature); d->view->getViewer()->addViewProvider(vp); @@ -362,7 +361,7 @@ void DlgEvaluateMeshImp::addViewProvider(const char* name, void DlgEvaluateMeshImp::removeViewProvider(const char* name) { - std::map::iterator it = d->vp.find(name); + auto it = d->vp.find(name); if (it != d->vp.end()) { if (d->view) { d->view->getViewer()->removeViewProvider(it->second); @@ -499,8 +498,7 @@ void DlgEvaluateMeshImp::onRefreshButtonClicked() void DlgEvaluateMeshImp::onCheckOrientationButtonClicked() { - std::map::iterator it = - d->vp.find("MeshGui::ViewProviderMeshOrientation"); + auto it = d->vp.find("MeshGui::ViewProviderMeshOrientation"); if (it != d->vp.end()) { if (d->ui.checkOrientationButton->isChecked()) { it->second->show(); @@ -692,8 +690,7 @@ void DlgEvaluateMeshImp::onRepairNonmanifoldsButtonClicked() void DlgEvaluateMeshImp::onCheckIndicesButtonClicked() { - std::map::iterator it = - d->vp.find("MeshGui::ViewProviderMeshIndices"); + auto it = d->vp.find("MeshGui::ViewProviderMeshIndices"); if (it != d->vp.end()) { if (d->ui.checkIndicesButton->isChecked()) { it->second->show(); @@ -785,8 +782,7 @@ void DlgEvaluateMeshImp::onRepairIndicesButtonClicked() void DlgEvaluateMeshImp::onCheckDegenerationButtonClicked() { - std::map::iterator it = - d->vp.find("MeshGui::ViewProviderMeshDegenerations"); + auto it = d->vp.find("MeshGui::ViewProviderMeshDegenerations"); if (it != d->vp.end()) { if (d->ui.checkDegenerationButton->isChecked()) { it->second->show(); @@ -856,8 +852,7 @@ void DlgEvaluateMeshImp::onRepairDegeneratedButtonClicked() void DlgEvaluateMeshImp::onCheckDuplicatedFacesButtonClicked() { - std::map::iterator it = - d->vp.find("MeshGui::ViewProviderMeshDuplicatedFaces"); + auto it = d->vp.find("MeshGui::ViewProviderMeshDuplicatedFaces"); if (it != d->vp.end()) { if (d->ui.checkDuplicatedFacesButton->isChecked()) { it->second->show(); @@ -928,8 +923,7 @@ void DlgEvaluateMeshImp::onRepairDuplicatedFacesButtonClicked() void DlgEvaluateMeshImp::onCheckDuplicatedPointsButtonClicked() { - std::map::iterator it = - d->vp.find("MeshGui::ViewProviderMeshDuplicatedPoints"); + auto it = d->vp.find("MeshGui::ViewProviderMeshDuplicatedPoints"); if (it != d->vp.end()) { if (d->ui.checkDuplicatedPointsButton->isChecked()) { it->second->show(); @@ -998,8 +992,7 @@ void DlgEvaluateMeshImp::onRepairDuplicatedPointsButtonClicked() void DlgEvaluateMeshImp::onCheckSelfIntersectionButtonClicked() { - std::map::iterator it = - d->vp.find("MeshGui::ViewProviderMeshSelfIntersections"); + auto it = d->vp.find("MeshGui::ViewProviderMeshSelfIntersections"); if (it != d->vp.end()) { if (d->ui.checkSelfIntersectionButton->isChecked()) { it->second->show(); @@ -1077,8 +1070,7 @@ void DlgEvaluateMeshImp::onRepairSelfIntersectionButtonClicked() void DlgEvaluateMeshImp::onCheckFoldsButtonClicked() { - std::map::iterator it = - d->vp.find("MeshGui::ViewProviderMeshFolds"); + auto it = d->vp.find("MeshGui::ViewProviderMeshFolds"); if (it != d->vp.end()) { if (d->ui.checkFoldsButton->isChecked()) { it->second->show(); @@ -1309,7 +1301,7 @@ void DlgEvaluateMeshImp::onButtonBoxClicked(QAbstractButton* button) d->showFoldsFunction(d->enableFoldsCheck); d->strictlyDegenerated = dlg.isDegeneratedFacetsChecked(); if (d->strictlyDegenerated) { - d->epsilonDegenerated = 0.0f; + d->epsilonDegenerated = 0.0F; } else { d->epsilonDegenerated = MeshCore::MeshDefinitions::_fMinPointDistanceP2; @@ -1397,8 +1389,9 @@ DockEvaluateMeshImp::~DockEvaluateMeshImp() /** * Destroys the dock window this object is embedded into without destroying itself. */ -void DockEvaluateMeshImp::closeEvent(QCloseEvent*) +void DockEvaluateMeshImp::closeEvent(QCloseEvent* event) { + Q_UNUSED(event) // closes the dock window Gui::DockWindowManager* pDockMgr = Gui::DockWindowManager::instance(); pDockMgr->removeDockWindow(scrollArea); diff --git a/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.h b/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.h index fb43bdf3f1..5fff87bb15 100644 --- a/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.h +++ b/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.h @@ -140,6 +140,8 @@ protected: private: class Private; Private* d; + + Q_DISABLE_COPY_MOVE(DlgEvaluateMeshImp) }; /** @@ -165,6 +167,8 @@ public: private: QScrollArea* scrollArea; static DockEvaluateMeshImp* _instance; + + Q_DISABLE_COPY_MOVE(DockEvaluateMeshImp) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/DlgEvaluateSettings.h b/src/Mod/Mesh/Gui/DlgEvaluateSettings.h index 305d93d1b2..5c9f5ba801 100644 --- a/src/Mod/Mesh/Gui/DlgEvaluateSettings.h +++ b/src/Mod/Mesh/Gui/DlgEvaluateSettings.h @@ -53,6 +53,8 @@ public: private: Ui_DlgEvaluateSettings* ui; + + Q_DISABLE_COPY_MOVE(DlgEvaluateSettings) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/DlgRegularSolidImp.h b/src/Mod/Mesh/Gui/DlgRegularSolidImp.h index 4473febef7..84eeadcee1 100644 --- a/src/Mod/Mesh/Gui/DlgRegularSolidImp.h +++ b/src/Mod/Mesh/Gui/DlgRegularSolidImp.h @@ -46,6 +46,8 @@ protected: private: std::unique_ptr ui; + + Q_DISABLE_COPY_MOVE(DlgRegularSolidImp) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/DlgSettingsImportExportImp.h b/src/Mod/Mesh/Gui/DlgSettingsImportExportImp.h index 6851b65cbe..1b36f74c25 100644 --- a/src/Mod/Mesh/Gui/DlgSettingsImportExportImp.h +++ b/src/Mod/Mesh/Gui/DlgSettingsImportExportImp.h @@ -52,6 +52,8 @@ protected: private: Ui_DlgSettingsImportExport* ui; + + Q_DISABLE_COPY_MOVE(DlgSettingsImportExport) }; // end class DlgSettingsImportExport } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/DlgSettingsMeshView.h b/src/Mod/Mesh/Gui/DlgSettingsMeshView.h index c0b5a4c56d..41aab80940 100644 --- a/src/Mod/Mesh/Gui/DlgSettingsMeshView.h +++ b/src/Mod/Mesh/Gui/DlgSettingsMeshView.h @@ -54,6 +54,8 @@ protected: private: std::unique_ptr ui; + + Q_DISABLE_COPY_MOVE(DlgSettingsMeshView) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/DlgSmoothing.cpp b/src/Mod/Mesh/Gui/DlgSmoothing.cpp index 70422e8ba2..2334948fbc 100644 --- a/src/Mod/Mesh/Gui/DlgSmoothing.cpp +++ b/src/Mod/Mesh/Gui/DlgSmoothing.cpp @@ -108,7 +108,7 @@ DlgSmoothing::Smooth DlgSmoothing::method() const if (ui->radioButtonTaubin->isChecked()) { return DlgSmoothing::Taubin; } - else if (ui->radioButtonLaplace->isChecked()) { + if (ui->radioButtonLaplace->isChecked()) { return DlgSmoothing::Laplace; } return DlgSmoothing::None; diff --git a/src/Mod/Mesh/Gui/DlgSmoothing.h b/src/Mod/Mesh/Gui/DlgSmoothing.h index 371173f60e..89919334f4 100644 --- a/src/Mod/Mesh/Gui/DlgSmoothing.h +++ b/src/Mod/Mesh/Gui/DlgSmoothing.h @@ -69,6 +69,8 @@ Q_SIGNALS: private: Ui_DlgSmoothing* ui; QButtonGroup* bg; + + Q_DISABLE_COPY_MOVE(DlgSmoothing) }; /** @@ -105,6 +107,8 @@ public: private: DlgSmoothing* widget; + + Q_DISABLE_COPY_MOVE(SmoothingDialog) }; /** diff --git a/src/Mod/Mesh/Gui/MeshEditor.cpp b/src/Mod/Mesh/Gui/MeshEditor.cpp index 4393961d42..63f014fff3 100644 --- a/src/Mod/Mesh/Gui/MeshEditor.cpp +++ b/src/Mod/Mesh/Gui/MeshEditor.cpp @@ -94,11 +94,11 @@ void ViewProviderFace::attach(App::DocumentObject* obj) SoGroup* markers = new SoGroup(); SoDrawStyle* pointStyle = new SoDrawStyle(); pointStyle->style = SoDrawStyle::POINTS; - pointStyle->pointSize = 8.0f; + pointStyle->pointSize = 8.0F; markers->addChild(pointStyle); SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoPointSet* marker = new SoPointSet(); markers->addChild(markcol); markers->addChild(pcCoords); @@ -121,7 +121,7 @@ void ViewProviderFace::attach(App::DocumentObject* obj) basecol->rgb.setValue(col.r, col.g, col.b); } else { - basecol->rgb.setValue(1.0f, 0.0f, 0.0f); + basecol->rgb.setValue(1.0F, 0.0F, 0.0F); } faces->addChild(basecol); @@ -524,8 +524,8 @@ void MeshFillHole::closeBridge() { // Do the hole-filling Gui::WaitCursor wc; - TBoundary::iterator it = std::find(myPolygon.begin(), myPolygon.end(), myVertex1); - TBoundary::iterator jt = std::find(myPolygon.begin(), myPolygon.end(), myVertex2); + auto it = std::find(myPolygon.begin(), myPolygon.end(), myVertex1); + auto jt = std::find(myPolygon.begin(), myPolygon.end(), myVertex2); if (it != myPolygon.end() && jt != myPolygon.end()) { // which iterator comes first if (jt < it) { @@ -533,7 +533,8 @@ void MeshFillHole::closeBridge() } // split the boundary into two loops and take the shorter one std::list bounds; - TBoundary loop1, loop2; + TBoundary loop1; + TBoundary loop2; loop1.insert(loop1.end(), myPolygon.begin(), it); loop1.insert(loop1.end(), jt, myPolygon.end()); loop2.insert(loop2.end(), it, jt); @@ -694,14 +695,14 @@ void MeshFillHole::fileHoleCallback(void* ud, SoEventCallback* n) } SoNode* node = self->getPickedPolygon(rp); if (node) { - std::map::iterator it = self->myPolygons.find(node); + auto it = self->myPolygons.find(node); if (it != self->myPolygons.end()) { // now check which vertex of the polygon is closest to the ray Mesh::PointIndex vertex_index {}; SbVec3f closestPoint; float minDist = self->findClosestPoint(rp.getLine(), it->second, vertex_index, closestPoint); - if (minDist < 1.0f) { + if (minDist < 1.0F) { if (self->myNumPoints == 0) { self->myVertex->point.set1Value(0, closestPoint); } @@ -731,7 +732,7 @@ void MeshFillHole::fileHoleCallback(void* ud, SoEventCallback* n) } SoNode* node = self->getPickedPolygon(rp); if (node) { - std::map::iterator it = self->myPolygons.find(node); + auto it = self->myPolygons.find(node); if (it != self->myPolygons.end()) { // now check which vertex of the polygon is closest to the ray Mesh::PointIndex vertex_index {}; @@ -740,7 +741,7 @@ void MeshFillHole::fileHoleCallback(void* ud, SoEventCallback* n) it->second, vertex_index, closestPoint); - if (minDist < 1.0f) { + if (minDist < 1.0F) { if (self->myNumPoints == 0) { self->myBoundaryRoot->addChild(node); self->myVertex->point.set1Value(0, closestPoint); diff --git a/src/Mod/Mesh/Gui/MeshEditor.h b/src/Mod/Mesh/Gui/MeshEditor.h index aa06a010e2..3ed56ee245 100644 --- a/src/Mod/Mesh/Gui/MeshEditor.h +++ b/src/Mod/Mesh/Gui/MeshEditor.h @@ -81,6 +81,8 @@ public: SoCoordinate3* pcCoords; SoFaceSet* pcFaces; SoFCMeshPickNode* pcMeshPick; + + FC_DISABLE_COPY_MOVE(ViewProviderFace) }; /** @@ -112,6 +114,8 @@ private: private: ViewProviderFace* faceView; + + Q_DISABLE_COPY_MOVE(MeshFaceAddition) }; class MeshGuiExport MeshHoleFiller @@ -179,6 +183,8 @@ private: TBoundary myPolygon; MeshHoleFiller& myHoleFiller; Connection myConnection; + + Q_DISABLE_COPY_MOVE(MeshFillHole) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/MeshSelection.cpp b/src/Mod/Mesh/Gui/MeshSelection.cpp index 2c34abd3a6..e59ea05648 100644 --- a/src/Mod/Mesh/Gui/MeshSelection.cpp +++ b/src/Mod/Mesh/Gui/MeshSelection.cpp @@ -60,6 +60,7 @@ using namespace MeshGui; #define CROSS_HOT_X 7 #define CROSS_HOT_Y 7 +// NOLINTBEGIN // clang-format off unsigned char MeshSelection::cross_bitmap[] = { 0xc0, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, @@ -73,6 +74,7 @@ unsigned char MeshSelection::cross_mask_bitmap[] = { 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03}; // clang-format on +// NOLINTEND MeshSelection::MeshSelection() { @@ -205,8 +207,8 @@ void MeshSelection::prepareFreehandSelection(bool add, SoEventCallbackCB* cb) // set cross cursor Gui::FreehandSelection* freehand = new Gui::FreehandSelection(); freehand->setClosed(true); - freehand->setColor(1.0f, 0.0f, 0.0f); - freehand->setLineWidth(3.0f); + freehand->setColor(1.0F, 0.0F, 0.0F); + freehand->setLineWidth(3.0F); viewer->navigationStyle()->startSelection(freehand); auto setComponentCursor = [=]() { @@ -303,7 +305,8 @@ bool MeshSelection::deleteSelectionBorder() Mesh::Feature* mf = static_cast(view->getObject()); // mark the selected facet as visited - std::vector selection, remove; + std::vector selection; + std::vector remove; std::set borderPoints; MeshCore::MeshAlgorithm meshAlg(mf->Mesh.getValue().getKernel()); meshAlg.GetFacetsFlag(selection, MeshCore::MeshFacet::SELECTED); @@ -469,7 +472,8 @@ void MeshSelection::selectGLCallback(void* ud, SoEventCallback* n) polygon.push_back(polygon.front()); } - SbVec3f pnt, dir; + SbVec3f pnt; + SbVec3f dir; view->getNearPlane(pnt, dir); Base::Vector3f normal(dir[0], dir[1], dir[2]); @@ -491,7 +495,8 @@ void MeshSelection::selectGLCallback(void* ud, SoEventCallback* n) if (self->onlyVisibleTriangles) { const SbVec2s& sz = view->getSoRenderManager()->getViewportRegion().getWindowSize(); - short width {}, height {}; + short width {}; + short height {}; sz.getValue(width, height); std::vector pixelPoly = view->getPolygon(); SbBox2s rect; @@ -519,7 +524,7 @@ void MeshSelection::selectGLCallback(void* ud, SoEventCallback* n) MeshCore::MeshFacetIterator it_f(kernel); for (Mesh::FacetIndex face : faces) { it_f.Set(face); - if (it_f->GetNormal() * normal > 0.0f) { + if (it_f->GetNormal() * normal > 0.0F) { screen.push_back(face); } } diff --git a/src/Mod/Mesh/Gui/RemeshGmsh.h b/src/Mod/Mesh/Gui/RemeshGmsh.h index be1f9d8e17..d699b2df5e 100644 --- a/src/Mod/Mesh/Gui/RemeshGmsh.h +++ b/src/Mod/Mesh/Gui/RemeshGmsh.h @@ -82,6 +82,8 @@ private: private: class Private; std::unique_ptr d; + + Q_DISABLE_COPY_MOVE(GmshWidget) }; /** @@ -105,6 +107,8 @@ protected: private: class Private; std::unique_ptr d; + + Q_DISABLE_COPY_MOVE(RemeshGmsh) }; /** diff --git a/src/Mod/Mesh/Gui/RemoveComponents.h b/src/Mod/Mesh/Gui/RemoveComponents.h index 58635b5bc4..29f14879b0 100644 --- a/src/Mod/Mesh/Gui/RemoveComponents.h +++ b/src/Mod/Mesh/Gui/RemoveComponents.h @@ -73,6 +73,8 @@ private: private: Ui_RemoveComponents* ui; MeshSelection meshSel; + + Q_DISABLE_COPY_MOVE(RemoveComponents) }; /** @@ -93,6 +95,8 @@ private Q_SLOTS: private: RemoveComponents* widget; + + Q_DISABLE_COPY_MOVE(RemoveComponentsDialog) }; /** diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.ts b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.ts index 38d5702bf0..ac35298d39 100644 --- a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.ts +++ b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.ts @@ -25,7 +25,7 @@ Mesh - Mesh + Maillage @@ -44,7 +44,7 @@ Mesh - Mesh + Maillage @@ -63,7 +63,7 @@ Mesh - Mesh + Maillage @@ -82,7 +82,7 @@ Mesh - Mesh + Maillage @@ -669,17 +669,17 @@ Mesh union - Union de maillage + Unir des maillages Mesh difference - Différence de maillage + Générer la différence de maillages Mesh intersection - Intersection de maillage + Générer la l'intersection de maillages @@ -694,7 +694,7 @@ Mesh Smoothing - Lissage du maillage + Lisser un maillage @@ -709,22 +709,22 @@ Fill up holes - Remplir les trous + Remplir des trous Mesh merge - Fusion de maillage + Fusionner des maillages Mesh split - Scinder le maillage + Scinder un maillage Mesh scale - Redimensionner le maillage + Mettre à l'échelle le maillage @@ -749,17 +749,17 @@ Remove degenerated faces - Enlever les faces dégénérées + Supprimer les faces dégénérées Remove duplicated faces - Enlever les faces dupliquées + Supprimer les faces dupliquées Remove duplicated points - Enlever les points dupliqués + Supprimer les points dupliqués @@ -1308,7 +1308,7 @@ Mesh Formats - Formats du maillage + Formats des maillages @@ -1323,7 +1323,7 @@ <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-size:7.8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Tessellation</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"><span style=" font-weight:400;">Defines the maximum deviation of the tessellated mesh to the surface. The smaller the value is the slower the render speed which results in increased detail/resolution.</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-size:7.8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pavage du plan</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"><span style=" font-weight:400;">Définit la déviation maximale de la maille en mosaïque par rapport à la surface. Plus la valeur est petite, plus la vitesse de rendu est lente, ce qui se traduit par une augmentation des détails/de la résolution.</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-size:7.8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Tessellation</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"><span style=" font-weight:400;">Définit la déviation maximale du maillage tesselé par rapport à la surface. Plus la valeur est petite, plus la vitesse de rendu est lente, ce qui se traduit par une augmentation des détails/de la résolution.</span></p></body></html> @@ -1369,8 +1369,7 @@ This parameter indicates whether ZIP compression is used when writing a file in AMF format - Ce paramètre indique si la compression ZIP -est utilisée lors de l'écriture d'un fichier au format AMF + Ce paramètre indique si la compression ZIP est utilisée lors de l'écriture d'un fichier au format AMF.
@@ -1584,7 +1583,7 @@ l'ombrage Phong conduit à un aspect plus lisse. Running gmsh... - Exécution de gmsh... + Lancer Gmsh... @@ -2047,7 +2046,7 @@ l'ombrage Phong conduit à un aspect plus lisse. X: %1 Y: %2 Z: %3 - X: %1 Y: %2 Z: %3 + X : %1 Y : %2 Z : %3 @@ -2141,7 +2140,7 @@ Consulter le site http://www.openscad.org/index.html pour l'installer. Object File Format - Format de fichier Objet + Format du fichier de l'objet @@ -2173,7 +2172,7 @@ Consulter le site http://www.openscad.org/index.html pour l'installer. Simple Model Format - Modèle simple Format + Format du modèle simple @@ -2213,7 +2212,7 @@ Consulter le site http://www.openscad.org/index.html pour l'installer. Python module def - Définition de module Python + Définition du module Python @@ -2298,7 +2297,7 @@ Consulter le site http://www.openscad.org/index.html pour l'installer. Display colors - Couleurs d'affichage + Afficher les couleurs diff --git a/src/Mod/Mesh/Gui/Segmentation.h b/src/Mod/Mesh/Gui/Segmentation.h index 17c3c5235d..77b4aea1b3 100644 --- a/src/Mod/Mesh/Gui/Segmentation.h +++ b/src/Mod/Mesh/Gui/Segmentation.h @@ -57,6 +57,8 @@ protected: private: Ui_Segmentation* ui; Mesh::Feature* myMesh; + + Q_DISABLE_COPY_MOVE(Segmentation) }; /** diff --git a/src/Mod/Mesh/Gui/SegmentationBestFit.h b/src/Mod/Mesh/Gui/SegmentationBestFit.h index 2a552c70ca..72b1cddcb6 100644 --- a/src/Mod/Mesh/Gui/SegmentationBestFit.h +++ b/src/Mod/Mesh/Gui/SegmentationBestFit.h @@ -90,6 +90,8 @@ private: Mesh::Feature* myMesh; MeshSelection meshSel; std::vector spinBoxes; + + Q_DISABLE_COPY_MOVE(ParametersDialog) }; class MeshGuiExport SegmentationBestFit: public QWidget @@ -119,6 +121,8 @@ private: Ui_SegmentationBestFit* ui; Mesh::Feature* myMesh; MeshSelection meshSel; + + Q_DISABLE_COPY_MOVE(SegmentationBestFit) }; /** diff --git a/src/Mod/Mesh/Gui/Selection.h b/src/Mod/Mesh/Gui/Selection.h index 0e14d3f1db..6c3b18068a 100644 --- a/src/Mod/Mesh/Gui/Selection.h +++ b/src/Mod/Mesh/Gui/Selection.h @@ -56,6 +56,8 @@ private: private: MeshSelection meshSel; Ui_Selection* ui; + + Q_DISABLE_COPY_MOVE(Selection) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/SoPolygon.cpp b/src/Mod/Mesh/Gui/SoPolygon.cpp index 572bd2a086..acc5701058 100644 --- a/src/Mod/Mesh/Gui/SoPolygon.cpp +++ b/src/Mod/Mesh/Gui/SoPolygon.cpp @@ -94,7 +94,7 @@ void SoPolygon::GLRender(SoGLRenderAction* action) */ void SoPolygon::drawPolygon(const SbVec3f* points, int32_t len) const { - glLineWidth(3.0f); + glLineWidth(3.0F); int32_t beg = startIndex.getValue(); int32_t cnt = numVertices.getValue(); int32_t end = beg + cnt; @@ -162,10 +162,10 @@ void SoPolygon::computeBBox(SoAction* action, SbBox3f& box, SbVec3f& center) } box.setBounds(minX, minY, minZ, maxX, maxY, maxZ); - center.setValue(0.5f * (minX + maxX), 0.5f * (minY + maxY), 0.5f * (minZ + maxZ)); + center.setValue(0.5F * (minX + maxX), 0.5F * (minY + maxY), 0.5F * (minZ + maxZ)); } else { box.setBounds(SbVec3f(0, 0, 0), SbVec3f(0, 0, 0)); - center.setValue(0.0f, 0.0f, 0.0f); + center.setValue(0.0F, 0.0F, 0.0F); } } diff --git a/src/Mod/Mesh/Gui/ThumbnailExtension.cpp b/src/Mod/Mesh/Gui/ThumbnailExtension.cpp index 6a678216d6..2c3aba2b1b 100644 --- a/src/Mod/Mesh/Gui/ThumbnailExtension.cpp +++ b/src/Mod/Mesh/Gui/ThumbnailExtension.cpp @@ -57,13 +57,13 @@ Mesh::Extension3MF::Resource ThumbnailExtension3MF::addMesh(const Mesh::MeshObje ViewProviderMeshBuilder().createMesh(mesh.getKernel(), coord, faces); - SbRotation rot(-0.35355f, -0.14644f, -0.35355f, -0.85355f); + SbRotation rot(-0.35355F, -0.14644F, -0.35355F, -0.85355F); cam->orientation.setValue(rot); SbViewportRegion vpr(256, 256); cam->viewAll(root, vpr); Gui::SoQtOffscreenRenderer renderer(vpr); - renderer.setBackgroundColor(SbColor4f(1.0f, 1.0f, 1.0f, 0.0f)); + renderer.setBackgroundColor(SbColor4f(1.0F, 1.0F, 1.0F, 0.0F)); QImage img; renderer.render(root); renderer.writeToImage(img); diff --git a/src/Mod/Mesh/Gui/ViewProvider.cpp b/src/Mod/Mesh/Gui/ViewProvider.cpp index d24dc4cc7b..a6bd2b286c 100644 --- a/src/Mod/Mesh/Gui/ViewProvider.cpp +++ b/src/Mod/Mesh/Gui/ViewProvider.cpp @@ -224,8 +224,8 @@ QIcon ViewProviderExport::getIcon() const // ------------------------------------------------------ -App::PropertyFloatConstraint::Constraints ViewProviderMesh::floatRange = {1.0f, 64.0f, 1.0f}; -App::PropertyFloatConstraint::Constraints ViewProviderMesh::angleRange = {0.0f, 180.0f, 1.0f}; +App::PropertyFloatConstraint::Constraints ViewProviderMesh::floatRange = {1.0F, 64.0F, 1.0F}; +App::PropertyFloatConstraint::Constraints ViewProviderMesh::angleRange = {0.0F, 180.0F, 1.0F}; App::PropertyIntegerConstraint::Constraints ViewProviderMesh::intPercent = {0, 100, 5}; const char* ViewProviderMesh::LightingEnums[] = {"One side", "Two side", nullptr}; @@ -357,7 +357,7 @@ void ViewProviderMesh::onChanged(const App::Property* prop) pcMatBinding->value = SoMaterialBinding::OVERALL; } if (prop == &LineTransparency) { - float trans = LineTransparency.getValue() / 100.0f; + float trans = LineTransparency.getValue() / 100.0F; pLineColor->transparency = trans; } else if (prop == &LineWidth) { @@ -406,12 +406,12 @@ void ViewProviderMesh::onChanged(const App::Property* prop) void ViewProviderMesh::setOpenEdgeColorFrom(const App::Color& c) { - float r = 1.0f - c.r; - r = r < 0.5f ? 0.0f : 1.0f; - float g = 1.0f - c.g; - g = g < 0.5f ? 0.0f : 1.0f; - float b = 1.0f - c.b; - b = b < 0.5f ? 0.0f : 1.0f; + float r = 1.0F - c.r; + r = r < 0.5F ? 0.0F : 1.0F; + float g = 1.0F - c.g; + g = g < 0.5F ? 0.0F : 1.0F; + float b = 1.0F - c.b; + b = b < 0.5F ? 0.0F : 1.0F; pOpenColor->rgb.setValue(r, g, b); } @@ -478,8 +478,8 @@ void ViewProviderMesh::attach(App::DocumentObject* pcFeat) // appear on top of the faces SoPolygonOffset* offset = new SoPolygonOffset(); offset->styles = SoPolygonOffset::FILLED; - offset->factor = 1.0f; - offset->units = 1.0f; + offset->factor = 1.0F; + offset->units = 1.0F; SoSeparator* pcWireSep = new SoSeparator(); pcWireSep->addChild(pcLineStyle); @@ -1297,17 +1297,17 @@ void ViewProviderMesh::selectGLCallback(void* ud, SoEventCallback* n) pos.getValue(pX, pY); const SbVec2s& sz = view->getSoRenderManager()->getViewportRegion().getViewportSizePixels(); float fRatio = view->getSoRenderManager()->getViewportRegion().getViewportAspectRatio(); - if (fRatio > 1.0f) { - pX = (pX - 0.5f) / fRatio + 0.5f; + if (fRatio > 1.0F) { + pX = (pX - 0.5F) / fRatio + 0.5F; pos.setValue(pX, pY); } - else if (fRatio < 1.0f) { - pY = (pY - 0.5f) * fRatio + 0.5f; + else if (fRatio < 1.0F) { + pY = (pY - 0.5F) * fRatio + 0.5F; pos.setValue(pX, pY); } - short x1 = (short)(pX * sz[0] + 0.5f); - short y1 = (short)(pY * sz[1] + 0.5f); + short x1 = (short)(pX * sz[0] + 0.5F); + short y1 = (short)(pY * sz[1] + 0.5F); SbVec2s loc = ev->getPosition(); short x2 = loc[0]; short y2 = loc[1]; @@ -1436,7 +1436,10 @@ void ViewProviderMesh::boxZoom(const SbBox2s& box, const SbViewportRegion& vp, S } // Get the new center in normalized pixel coordinates - short xmin {}, xmax {}, ymin {}, ymax {}; + short xmin {}; + short xmax {}; + short ymin {}; + short ymax {}; box.getBounds(xmin, ymin, xmax, ymax); const SbVec2f center((float)((xmin + xmax) / 2) / (float)std::max((int)(size[0] - 1), 1), (float)(size[1] - (ymin + ymax) / 2) @@ -1454,8 +1457,8 @@ void ViewProviderMesh::boxZoom(const SbBox2s& box, const SbViewportRegion& vp, S static_cast(cam)->height = height; } else if (cam->getTypeId() == SoPerspectiveCamera::getClassTypeId()) { - float height = static_cast(cam)->heightAngle.getValue() / 2.0f; - height = 2.0f * atan(tan(height) * scale); + float height = static_cast(cam)->heightAngle.getValue() / 2.0F; + height = 2.0F * atan(tan(height) * scale); static_cast(cam)->heightAngle = height; } } @@ -1544,7 +1547,7 @@ std::vector ViewProviderMesh::getVisibleFacets(const SbViewpor // Coin3d's off-screen renderer doesn't work out-of-the-box any more on most recent Linux // systems. So, use FreeCAD's offscreen renderer now. Gui::SoQtOffscreenRenderer renderer(vp); - renderer.setBackgroundColor(SbColor4f(0.0f, 0.0f, 0.0f)); + renderer.setBackgroundColor(SbColor4f(0.0F, 0.0F, 0.0F)); QImage img; renderer.render(root); @@ -2091,7 +2094,7 @@ void ViewProviderMesh::selectFacet(Mesh::FacetIndex facet) highlightSelection(); } else { - pcShapeMaterial->diffuseColor.set1Value(facet, 1.0f, 0.0f, 0.0f); + pcShapeMaterial->diffuseColor.set1Value(facet, 1.0F, 0.0F, 0.0F); } } @@ -2291,7 +2294,7 @@ void ViewProviderMesh::highlightSelection() cols[i].setValue(c.r, c.g, c.b); } for (Mesh::FacetIndex it : selection) { - cols[it].setValue(1.0f, 0.0f, 0.0f); + cols[it].setValue(1.0F, 0.0F, 0.0F); } pcShapeMaterial->diffuseColor.finishEditing(); } @@ -2494,7 +2497,7 @@ void ViewProviderIndexedFaceSet::attach(App::DocumentObject* pcFeat) int size = hGrp->GetInt("RenderTriangleLimit", -1); if (size > 0) { static_cast(pcMeshFaces)->renderTriangleLimit = - (unsigned int)(pow(10.0f, size)); + (unsigned int)(pow(10.0F, size)); } } @@ -2585,7 +2588,7 @@ void ViewProviderMeshObject::attach(App::DocumentObject* pcFeat) Gui::WindowParameter::getDefaultParameter()->GetGroup("Mod/Mesh"); int size = hGrp->GetInt("RenderTriangleLimit", -1); if (size > 0) { - pcMeshShape->renderTriangleLimit = (unsigned int)(pow(10.0f, size)); + pcMeshShape->renderTriangleLimit = (unsigned int)(pow(10.0F, size)); } } diff --git a/src/Mod/Mesh/Gui/ViewProvider.h b/src/Mod/Mesh/Gui/ViewProvider.h index 30bda1c157..54972993ff 100644 --- a/src/Mod/Mesh/Gui/ViewProvider.h +++ b/src/Mod/Mesh/Gui/ViewProvider.h @@ -111,6 +111,8 @@ public: } std::vector getDisplayModes() const override; const char* getDefaultDisplayMode() const override; + + FC_DISABLE_COPY_MOVE(ViewProviderExport) }; /** @@ -284,6 +286,8 @@ private: static App::PropertyFloatConstraint::Constraints angleRange; static App::PropertyIntegerConstraint::Constraints intPercent; static const char* LightingEnums[]; + + FC_DISABLE_COPY_MOVE(ViewProviderMesh) }; /** @@ -311,6 +315,8 @@ protected: private: SoCoordinate3* pcMeshCoord; SoIndexedFaceSet* pcMeshFaces; + + FC_DISABLE_COPY_MOVE(ViewProviderIndexedFaceSet) }; /** @@ -337,6 +343,8 @@ protected: private: SoFCMeshObjectNode* pcMeshNode; SoFCMeshObjectShape* pcMeshShape; + + FC_DISABLE_COPY_MOVE(ViewProviderMeshObject) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/ViewProviderCurvature.cpp b/src/Mod/Mesh/Gui/ViewProviderCurvature.cpp index ec0a778f1a..eb568e88e1 100644 --- a/src/Mod/Mesh/Gui/ViewProviderCurvature.cpp +++ b/src/Mod/Mesh/Gui/ViewProviderCurvature.cpp @@ -183,14 +183,14 @@ void ViewProviderMeshCurvature::init(const Mesh::PropertyCurvatureList* pCurvInf // histogram over all values std::map aHistogram; for (float aMinValue : aMinValues) { - int grp = (int)(10.0f * (aMinValue - fMin) / (fMax - fMin)); + int grp = (int)(10.0F * (aMinValue - fMin) / (fMax - fMin)); aHistogram[grp]++; } - float fRMin = -1.0f; + float fRMin = -1.0F; for (const auto& mIt : aHistogram) { - if ((float)mIt.second / (float)aMinValues.size() > 0.15f) { - fRMin = mIt.first * (fMax - fMin) / 10.0f + fMin; + if ((float)mIt.second / (float)aMinValues.size() > 0.15F) { + fRMin = mIt.first * (fMax - fMin) / 10.0F + fMin; break; } } @@ -201,15 +201,15 @@ void ViewProviderMeshCurvature::init(const Mesh::PropertyCurvatureList* pCurvInf // histogram over all values aHistogram.clear(); for (float aMaxValue : aMaxValues) { - int grp = (int)(10.0f * (aMaxValue - fMin) / (fMax - fMin)); + int grp = (int)(10.0F * (aMaxValue - fMin) / (fMax - fMin)); aHistogram[grp]++; } - float fRMax = 1.0f; + float fRMax = 1.0F; for (std::map::reverse_iterator rIt2 = aHistogram.rbegin(); rIt2 != aHistogram.rend(); ++rIt2) { - if ((float)rIt2->second / (float)aMaxValues.size() > 0.15f) { - fRMax = rIt2->first * (fMax - fMin) / 10.0f + fMin; + if ((float)rIt2->second / (float)aMaxValues.size() > 0.15F) { + fRMax = rIt2->first * (fMax - fMin) / 10.0F + fMin; break; } } @@ -609,9 +609,9 @@ ViewProviderMeshCurvature::curvatureInfo(bool detail, int index1, int index2, in const Mesh::CurvatureInfo& cVal1 = (*curv)[index1]; const Mesh::CurvatureInfo& cVal2 = (*curv)[index2]; const Mesh::CurvatureInfo& cVal3 = (*curv)[index3]; - float fVal1 = 0.0f; - float fVal2 = 0.0f; - float fVal3 = 0.0f; + float fVal1 = 0.0F; + float fVal2 = 0.0F; + float fVal3 = 0.0F; bool print = true; std::string mode = getActiveDisplayMode(); @@ -631,9 +631,9 @@ ViewProviderMeshCurvature::curvatureInfo(bool detail, int index1, int index2, in fVal3 = cVal3.fMaxCurvature * cVal3.fMinCurvature; } else if (mode == "Mean curvature") { - fVal1 = 0.5f * (cVal1.fMaxCurvature + cVal1.fMinCurvature); - fVal2 = 0.5f * (cVal2.fMaxCurvature + cVal2.fMinCurvature); - fVal3 = 0.5f * (cVal3.fMaxCurvature + cVal3.fMinCurvature); + fVal1 = 0.5F * (cVal1.fMaxCurvature + cVal1.fMinCurvature); + fVal2 = 0.5F * (cVal2.fMaxCurvature + cVal2.fMinCurvature); + fVal3 = 0.5F * (cVal3.fMaxCurvature + cVal3.fMinCurvature); } else if (mode == "Absolute curvature") { fVal1 = fabs(cVal1.fMaxCurvature) > fabs(cVal1.fMinCurvature) ? cVal1.fMaxCurvature diff --git a/src/Mod/Mesh/Gui/ViewProviderCurvature.h b/src/Mod/Mesh/Gui/ViewProviderCurvature.h index 483e8cf5dc..c30fba3667 100644 --- a/src/Mod/Mesh/Gui/ViewProviderCurvature.h +++ b/src/Mod/Mesh/Gui/ViewProviderCurvature.h @@ -126,6 +126,8 @@ private: private: static bool addflag; + + FC_DISABLE_COPY_MOVE(ViewProviderMeshCurvature) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/ViewProviderDefects.cpp b/src/Mod/Mesh/Gui/ViewProviderDefects.cpp index 41f89a5381..a16646a1fa 100644 --- a/src/Mod/Mesh/Gui/ViewProviderDefects.cpp +++ b/src/Mod/Mesh/Gui/ViewProviderDefects.cpp @@ -59,7 +59,7 @@ PROPERTY_SOURCE(MeshGui::ViewProviderMeshFolds, MeshGui::ViewProviderMeshDefects ViewProviderMeshDefects::ViewProviderMeshDefects() { - ADD_PROPERTY(LineWidth, (2.0f)); + ADD_PROPERTY(LineWidth, (2.0F)); pcCoords = new SoCoordinate3(); pcCoords->ref(); @@ -124,14 +124,14 @@ void ViewProviderMeshOrientation::attach(App::DocumentObject* pcFeat) // Draw faces SoSeparator* linesep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.5f, 0.0f); + basecol->rgb.setValue(1.0F, 0.5F, 0.0F); linesep->addChild(basecol); linesep->addChild(pcCoords); linesep->addChild(pcFaces); // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -160,7 +160,7 @@ void ViewProviderMeshOrientation::showDefects(const std::vector_aclPoints) { // move a bit in opposite normal direction to overlay the original faces - cP -= 0.001f * cF->GetNormal(); + cP -= 0.001F * cF->GetNormal(); pcCoords->point.set1Value(i++, cP.x, cP.y, cP.z); } pcFaces->numVertices.set1Value(j++, 3); @@ -195,7 +195,7 @@ void ViewProviderMeshNonManifolds::attach(App::DocumentObject* pcFeat) // Draw lines SoSeparator* linesep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.0f, 0.0f); + basecol->rgb.setValue(1.0F, 0.0F, 0.0F); linesep->addChild(basecol); linesep->addChild(pcCoords); linesep->addChild(pcLines); @@ -203,7 +203,7 @@ void ViewProviderMeshNonManifolds::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -268,7 +268,7 @@ void ViewProviderMeshNonManifoldPoints::attach(App::DocumentObject* pcFeat) // Draw points SoSeparator* pointsep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.5f, 0.0f); + basecol->rgb.setValue(1.0F, 0.5F, 0.0F); pointsep->addChild(basecol); pointsep->addChild(pcCoords); pointsep->addChild(pcPoints); @@ -276,7 +276,7 @@ void ViewProviderMeshNonManifoldPoints::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -338,7 +338,7 @@ void ViewProviderMeshDuplicatedFaces::attach(App::DocumentObject* pcFeat) // Draw lines SoSeparator* linesep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.0f, 0.0f); + basecol->rgb.setValue(1.0F, 0.0F, 0.0F); linesep->addChild(basecol); linesep->addChild(pcCoords); linesep->addChild(pcFaces); @@ -346,7 +346,7 @@ void ViewProviderMeshDuplicatedFaces::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -373,7 +373,7 @@ void ViewProviderMeshDuplicatedFaces::showDefects(const std::vector_aclPoints) { // move a bit in normal direction to overlay the original faces - cP += 0.001f * cF->GetNormal(); + cP += 0.001F * cF->GetNormal(); pcCoords->point.set1Value(i++, cP.x, cP.y, cP.z); } pcFaces->numVertices.set1Value(j++, 3); @@ -408,7 +408,7 @@ void ViewProviderMeshDuplicatedPoints::attach(App::DocumentObject* pcFeat) // Draw points SoSeparator* pointsep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.5f, 0.0f); + basecol->rgb.setValue(1.0F, 0.5F, 0.0F); pointsep->addChild(basecol); pointsep->addChild(pcCoords); pointsep->addChild(pcPoints); @@ -416,7 +416,7 @@ void ViewProviderMeshDuplicatedPoints::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -471,7 +471,7 @@ void ViewProviderMeshDegenerations::attach(App::DocumentObject* pcFeat) // Draw lines SoSeparator* linesep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.5f, 0.0f); + basecol->rgb.setValue(1.0F, 0.5F, 0.0F); linesep->addChild(basecol); linesep->addChild(pcCoords); linesep->addChild(pcLines); @@ -479,7 +479,7 @@ void ViewProviderMeshDegenerations::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -511,7 +511,7 @@ void ViewProviderMeshDegenerations::showDefects(const std::vector_aclPoints[(j + 2) % 3] - cF->_aclPoints[j]; // adjust the neighbourhoods and point indices - if (cVec1 * cVec2 < 0.0f) { + if (cVec1 * cVec2 < 0.0F) { pcCoords->point.set1Value(i++, cF->_aclPoints[(j + 1) % 3].x, cF->_aclPoints[(j + 1) % 3].y, @@ -589,7 +589,7 @@ void ViewProviderMeshIndices::attach(App::DocumentObject* pcFeat) // Draw lines SoSeparator* linesep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.5f, 0.0f); + basecol->rgb.setValue(1.0F, 0.5F, 0.0F); linesep->addChild(basecol); linesep->addChild(pcCoords); linesep->addChild(pcFaces); @@ -597,7 +597,7 @@ void ViewProviderMeshIndices::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -625,7 +625,7 @@ void ViewProviderMeshIndices::showDefects(const std::vector& cF.Set(ind); for (auto cP : cF->_aclPoints) { // move a bit in opposite normal direction to overlay the original faces - cP -= 0.001f * cF->GetNormal(); + cP -= 0.001F * cF->GetNormal(); pcCoords->point.set1Value(i++, cP.x, cP.y, cP.z); } pcFaces->numVertices.set1Value(j++, 3); @@ -661,7 +661,7 @@ void ViewProviderMeshSelfIntersections::attach(App::DocumentObject* pcFeat) // Draw lines SoSeparator* linesep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.5f, 0.0f); + basecol->rgb.setValue(1.0F, 0.5F, 0.0F); linesep->addChild(basecol); linesep->addChild(pcCoords); linesep->addChild(pcLines); @@ -669,7 +669,7 @@ void ViewProviderMeshSelfIntersections::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -750,7 +750,7 @@ void ViewProviderMeshFolds::attach(App::DocumentObject* pcFeat) // Draw lines SoSeparator* linesep = new SoSeparator; SoBaseColor* basecol = new SoBaseColor; - basecol->rgb.setValue(1.0f, 0.0f, 0.0f); + basecol->rgb.setValue(1.0F, 0.0F, 0.0F); linesep->addChild(basecol); linesep->addChild(pcCoords); linesep->addChild(pcFaces); @@ -758,7 +758,7 @@ void ViewProviderMeshFolds::attach(App::DocumentObject* pcFeat) // Draw markers SoBaseColor* markcol = new SoBaseColor; - markcol->rgb.setValue(1.0f, 1.0f, 0.0f); + markcol->rgb.setValue(1.0F, 1.0F, 0.0F); SoMarkerSet* marker = new SoMarkerSet; marker->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex( "PLUS", @@ -785,7 +785,7 @@ void ViewProviderMeshFolds::showDefects(const std::vector& i cF.Set(ind); for (auto cP : cF->_aclPoints) { // move a bit in normal direction to overlay the original faces - cP += 0.001f * cF->GetNormal(); + cP += 0.001F * cF->GetNormal(); pcCoords->point.set1Value(i++, cP.x, cP.y, cP.z); } pcFaces->numVertices.set1Value(j++, 3); diff --git a/src/Mod/Mesh/Gui/ViewProviderDefects.h b/src/Mod/Mesh/Gui/ViewProviderDefects.h index 8a06a0a5e5..69fd2cf1ba 100644 --- a/src/Mod/Mesh/Gui/ViewProviderDefects.h +++ b/src/Mod/Mesh/Gui/ViewProviderDefects.h @@ -65,6 +65,9 @@ protected: SoCoordinate3* pcCoords; SoDrawStyle* pcDrawStyle; // NOLINTEND + +private: + FC_DISABLE_COPY_MOVE(ViewProviderMeshDefects) }; /** The ViewProviderMeshOrientation class displays wrong oriented facets (i.e. flipped normals) in @@ -84,6 +87,7 @@ public: private: SoFaceSet* pcFaces; + FC_DISABLE_COPY_MOVE(ViewProviderMeshOrientation) }; /** The ViewProviderMeshNonManifolds class displays edges with more than two faces attached in red. @@ -102,6 +106,7 @@ public: private: SoLineSet* pcLines; + FC_DISABLE_COPY_MOVE(ViewProviderMeshNonManifolds) }; /** The ViewProviderMeshNonManifoldPoints class displays non-manifold vertexes in red. @@ -120,6 +125,7 @@ public: private: SoPointSet* pcPoints; + FC_DISABLE_COPY_MOVE(ViewProviderMeshNonManifoldPoints) }; /** The ViewProviderMeshDuplicatedFaces class displays duplicated faces in red. @@ -138,6 +144,7 @@ public: private: SoFaceSet* pcFaces; + FC_DISABLE_COPY_MOVE(ViewProviderMeshDuplicatedFaces) }; /** The ViewProviderMeshDegenerations class displays degenerated faces to a line or even a point in @@ -157,6 +164,7 @@ public: private: SoLineSet* pcLines; + FC_DISABLE_COPY_MOVE(ViewProviderMeshDegenerations) }; class MeshGuiExport ViewProviderMeshDuplicatedPoints: public ViewProviderMeshDefects @@ -172,6 +180,7 @@ public: private: SoPointSet* pcPoints; + FC_DISABLE_COPY_MOVE(ViewProviderMeshDuplicatedPoints) }; class MeshGuiExport ViewProviderMeshIndices: public ViewProviderMeshDefects @@ -187,6 +196,7 @@ public: private: SoFaceSet* pcFaces; + FC_DISABLE_COPY_MOVE(ViewProviderMeshIndices) }; /** The ViewProviderMeshSelfIntersections class displays lines of self-intersections. @@ -205,6 +215,7 @@ public: private: SoLineSet* pcLines; + FC_DISABLE_COPY_MOVE(ViewProviderMeshSelfIntersections) }; class MeshGuiExport ViewProviderMeshFolds: public ViewProviderMeshDefects @@ -220,6 +231,8 @@ public: private: SoFaceSet* pcFaces; + + FC_DISABLE_COPY_MOVE(ViewProviderMeshFolds) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.cpp b/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.cpp index 49a95431be..e503fea2ec 100644 --- a/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.cpp +++ b/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.cpp @@ -91,9 +91,9 @@ void ViewProviderMeshFaceSet::attach(App::DocumentObject* pcFeat) Gui::WindowParameter::getDefaultParameter()->GetGroup("Mod/Mesh"); int size = hGrp->GetInt("RenderTriangleLimit", -1); if (size > 0) { - pcMeshShape->renderTriangleLimit = (unsigned int)(pow(10.0f, size)); + pcMeshShape->renderTriangleLimit = (unsigned int)(pow(10.0F, size)); static_cast(pcMeshFaces)->renderTriangleLimit = - (unsigned int)(pow(10.0f, size)); + (unsigned int)(pow(10.0F, size)); } } diff --git a/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.h b/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.h index dd6413cfb6..013fb24ecb 100644 --- a/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.h +++ b/src/Mod/Mesh/Gui/ViewProviderMeshFaceSet.h @@ -70,6 +70,8 @@ private: SoFCIndexedFaceSet* pcMeshFaces; SoFCMeshObjectNode* pcMeshNode; SoFCMeshObjectShape* pcMeshShape; + + FC_DISABLE_COPY_MOVE(ViewProviderMeshFaceSet) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/ViewProviderTransform.h b/src/Mod/Mesh/Gui/ViewProviderTransform.h index 746fdcc716..d2ac7e6c42 100644 --- a/src/Mod/Mesh/Gui/ViewProviderTransform.h +++ b/src/Mod/Mesh/Gui/ViewProviderTransform.h @@ -72,6 +72,8 @@ public: private: SoTransformerManip* pcTransformerDragger; + + FC_DISABLE_COPY_MOVE(ViewProviderMeshTransform) }; } // namespace MeshGui diff --git a/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.cpp b/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.cpp index d1bcedb8c2..714fe832e1 100644 --- a/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.cpp +++ b/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.cpp @@ -135,11 +135,11 @@ void ViewProviderMeshTransformDemolding::calcNormalVector() void ViewProviderMeshTransformDemolding::calcMaterialIndex(const SbRotation& rot) { - SbVec3f Up(0, 0, 1), result; + SbVec3f Up(0, 0, 1); + SbVec3f result; int i = 0; - for (std::vector::const_iterator it = normalVector.begin(); it != normalVector.end(); - ++it, i++) { + for (auto it = normalVector.begin(); it != normalVector.end(); ++it, i++) { rot.multVec(*it, result); } } diff --git a/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.h b/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.h index f8c7dac8c0..f051f89638 100644 --- a/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.h +++ b/src/Mod/Mesh/Gui/ViewProviderTransformDemolding.h @@ -88,6 +88,8 @@ private: SoMaterial* pcColorMat; std::vector normalVector; Base::Vector3f center; + + FC_DISABLE_COPY_MOVE(ViewProviderMeshTransformDemolding) }; } // namespace MeshGui diff --git a/src/Mod/MeshPart/App/Mesher.cpp b/src/Mod/MeshPart/App/Mesher.cpp index 1cf051a96a..e5088b9141 100644 --- a/src/Mod/MeshPart/App/Mesher.cpp +++ b/src/Mod/MeshPart/App/Mesher.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include "Mesher.h" @@ -123,47 +124,6 @@ int MeshingOutput::sync() namespace MeshPart { -struct Vertex -{ - static const double deflection; - Standard_Real x, y, z; - Standard_Integer i = 0; - mutable MeshCore::MeshPoint p; - - Vertex(Standard_Real X, Standard_Real Y, Standard_Real Z) - : x(X) - , y(Y) - , z(Z) - { - p.x = static_cast(x); - p.y = static_cast(y); - p.z = static_cast(z); - } - - const MeshCore::MeshPoint& toPoint() const - { - return p; - } - - bool operator<(const Vertex& v) const - { - if (fabs(this->x - v.x) >= deflection) { - return this->x < v.x; - } - if (fabs(this->y - v.y) >= deflection) { - return this->y < v.y; - } - if (fabs(this->z - v.z) >= deflection) { - return this->z < v.z; - } - return false; // points are considered to be equal - } -}; - -const double Vertex::deflection = 10 * std::numeric_limits::epsilon(); - -// ---------------------------------------------------------------------------- - class BrepMesh { bool segments; @@ -177,6 +137,32 @@ public: Mesh::MeshObject* create(const std::vector& domains) const { + std::vector points; + std::vector facets; + Part::BRepMesh mesh; + mesh.getFacesFromDomains(domains, points, facets); + + MeshCore::MeshFacetArray faces; + faces.reserve(facets.size()); + std::transform(facets.cbegin(), + facets.cend(), + std::back_inserter(faces), + [](const Part::TopoShape::Facet& face) { + return MeshCore::MeshFacet(face.I1, face.I2, face.I3); + }); + + MeshCore::MeshPointArray verts; + verts.reserve(points.size()); + for (const auto& it : points) { + verts.emplace_back(float(it.x), float(it.y), float(it.z)); + } + + MeshCore::MeshKernel kernel; + kernel.Adopt(verts, faces, true); + + // mesh segments + std::vector> meshSegments; + std::map> colorMap; for (std::size_t i = 0; i < colors.size(); i++) { colorMap[colors[i]].push_back(i); @@ -184,104 +170,19 @@ public: bool createSegm = (colors.size() == domains.size()); - MeshCore::MeshFacetArray faces; - std::size_t numTriangles = 0; - for (const auto& it : domains) { - numTriangles += it.facets.size(); + // add a segment for the face + if (createSegm || this->segments) { + auto segments = mesh.createSegments(); + meshSegments.reserve(segments.size()); + std::transform(segments.cbegin(), + segments.cend(), + std::back_inserter(meshSegments), + [](const Part::BRepMesh::Segment& segm) { + std::vector faces; + faces.insert(faces.end(), segm.cbegin(), segm.cend()); + return faces; + }); } - faces.reserve(numTriangles); - - std::set vertices; - Standard_Real x1, y1, z1; - Standard_Real x2, y2, z2; - Standard_Real x3, y3, z3; - - std::vector> meshSegments; - std::size_t numMeshFaces = 0; - - for (const auto& domain : domains) { - std::size_t numDomainFaces = 0; - for (std::size_t j = 0; j < domain.facets.size(); ++j) { - const Part::TopoShape::Facet& tria = domain.facets[j]; - x1 = domain.points[tria.I1].x; - y1 = domain.points[tria.I1].y; - z1 = domain.points[tria.I1].z; - - x2 = domain.points[tria.I2].x; - y2 = domain.points[tria.I2].y; - z2 = domain.points[tria.I2].z; - - x3 = domain.points[tria.I3].x; - y3 = domain.points[tria.I3].y; - z3 = domain.points[tria.I3].z; - - std::set::iterator it; - MeshCore::MeshFacet face; - - // 1st vertex - Vertex v1(x1, y1, z1); - it = vertices.find(v1); - if (it == vertices.end()) { - v1.i = vertices.size(); - face._aulPoints[0] = v1.i; - vertices.insert(v1); - } - else { - face._aulPoints[0] = it->i; - } - - // 2nd vertex - Vertex v2(x2, y2, z2); - it = vertices.find(v2); - if (it == vertices.end()) { - v2.i = vertices.size(); - face._aulPoints[1] = v2.i; - vertices.insert(v2); - } - else { - face._aulPoints[1] = it->i; - } - - // 3rd vertex - Vertex v3(x3, y3, z3); - it = vertices.find(v3); - if (it == vertices.end()) { - v3.i = vertices.size(); - face._aulPoints[2] = v3.i; - vertices.insert(v3); - } - else { - face._aulPoints[2] = it->i; - } - - // make sure that we don't insert invalid facets - if (face._aulPoints[0] != face._aulPoints[1] - && face._aulPoints[1] != face._aulPoints[2] - && face._aulPoints[2] != face._aulPoints[0]) { - faces.push_back(face); - numDomainFaces++; - } - } - - // add a segment for the face - if (createSegm || this->segments) { - std::vector segment(numDomainFaces); - std::generate(segment.begin(), - segment.end(), - Base::iotaGen(numMeshFaces)); - numMeshFaces += numDomainFaces; - meshSegments.push_back(segment); - } - } - - MeshCore::MeshPointArray verts; - verts.resize(vertices.size()); - for (const auto& it : vertices) { - verts[it.i] = it.toPoint(); - } - - MeshCore::MeshKernel kernel; - kernel.Adopt(verts, faces, true); Mesh::MeshObject* meshdata = new Mesh::MeshObject(); meshdata->swap(kernel); diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts index 4a5ba563e1..41551b2b52 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts @@ -29,13 +29,13 @@ Curve on mesh... - Courbe sur maillage ... + Courbe sur un maillage... Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Crée une courbe approximative au dessus d'un maillage. + Crée rune courbe approximative au-dessus d'un maillage. Cette commande ne fonctionne qu'avec un objet "mesh". @@ -167,7 +167,7 @@ Cette commande ne fonctionne qu'avec un objet "mesh". Connect edges if distance less than - Racorder les arêtes si la distance est inférieure à + Relier les arêtes si la distance est inférieure à @@ -185,7 +185,7 @@ Cette commande ne fonctionne qu'avec un objet "mesh". Close wire - Fermer un fil + Fermer une polyligne @@ -200,7 +200,7 @@ Cette commande ne fonctionne qu'avec un objet "mesh". Wrong mesh picked - Mauvaise maille choisie + Mauvais maillage choisi @@ -213,7 +213,7 @@ Cette commande ne fonctionne qu'avec un objet "mesh". Curve on mesh - Courbe sur maillage + Courbe sur un maillage @@ -247,7 +247,7 @@ Cette commande ne fonctionne qu'avec un objet "Mesh", pas avec une face ou une s Spline Approximation - Approximation d'une spline + Approximation de spline @@ -267,7 +267,7 @@ Cette commande ne fonctionne qu'avec un objet "Mesh", pas avec une face ou une s Start - Début + Démarrer @@ -300,7 +300,7 @@ Cette commande ne fonctionne qu'avec un objet "Mesh", pas avec une face ou une s Maximal linear deflection of a mesh section from the surface of the object - Déflexion linéaire maximale d'une section de maille de la surface de l'objet + Déflexion linéaire maximale d'une section de maillage de la surface de l'objet @@ -317,7 +317,7 @@ Cette commande ne fonctionne qu'avec un objet "Mesh", pas avec une face ou une s The maximal linear deviation of a mesh segment will be the specified Surface deviation multiplied by the length of the current mesh segment (edge) La déflexion linéaire maximale d'un segment de maillage sera la déviation -de surface spécifiée multipliée par la longueur du segment de maillage actuel (arête) +de surface spécifiée multipliée par la longueur du segment de maillage en cours (arête) @@ -327,7 +327,7 @@ de surface spécifiée multipliée par la longueur du segment de maillage actuel Mesh will get face colors of the object - Le maillage obtiendra les couleurs de face de l'objet + Le maillage récupère les couleurs des faces de l'objet. @@ -367,7 +367,7 @@ cette fonction (par exemple le format OBJ). If this number is smaller the mesh becomes finer. The smallest value is 0. - Si ce nombre est plus petit, le maillage devient plus fine. + Si ce nombre est plus petit, le maillage devient plus fin. La valeur la plus petite est 0. @@ -423,7 +423,7 @@ La valeur la plus petite est 0. Mesh size grading: - Classement des tailles de maillages: + Classement par taille de maillage : @@ -501,14 +501,14 @@ Une valeur dans la plage de 0.2-10. You have selected a body without tip. Either set the tip of the body or select a different shape, please. Vous avez sélectionné un corps sans fonction résultante. -Définissez la fonction résultante du corps ou sélectionnez une forme différente, s'il vous plaît. +Définissez la fonction résultante du corps ou sélectionnez une forme différente. You have selected a shape without faces. Select a different shape, please. Vous avez sélectionné une forme sans face. -Merci de sélectionner une forme différente. +Sélectionner une forme différente. @@ -526,7 +526,7 @@ Merci de sélectionner une forme différente. Please select a plane at which you section the mesh. - Veuillez sélectionner un plan à partir duquel vous découpez le maillage. + Sélectionner un plan à partir duquel vous découpez le maillage. @@ -549,7 +549,7 @@ Merci de sélectionner une forme différente. Select the side you want to keep. - Sélectionner le coté à conserver. + Sélectionner le coté à conserver @@ -564,7 +564,7 @@ Merci de sélectionner une forme différente. Split - Scinder + Recomposer diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.ts index c21d8f07af..74425d5fd9 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.ts @@ -227,7 +227,7 @@ Dit commando werkt alleen met een 'maaswerk'-object, niet een normaal vlak of op Wire - Draad + Polygonale lijn diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.qm index bec142ff7e..1614ec3eb4 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.ts b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.ts index 088142e5a6..4ac0f498a9 100644 --- a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.ts +++ b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.ts @@ -21,7 +21,7 @@ The path to the OpenSCAD executable - Le chemin de l'exécutable de OpenSCAD + Le chemin d'accès de l'exécutable de OpenSCAD @@ -97,7 +97,7 @@ The path to the directory for transferring files to and from OpenSCAD - Le chemin d'accès au répertoire pour le transfert des fichiers vers et depuis OpenSCAD + Le chemin du répertoire pour le transfert des fichiers vers et depuis OpenSCAD @@ -107,7 +107,7 @@ Maximum fragment size - Taille maximale de fragment + Taille maximale des fragments @@ -184,7 +184,7 @@ Unable to explode %s - Impossible d'exploser %s + Impossible de dégrouper %s @@ -286,12 +286,12 @@ OpenSCAD file contains both 2D and 3D shapes. That is not supported in this importer, all shapes must have the same dimensionality. - Le fichier OpenSCAD contient à la fois des formes 2D et 3D. Cela n'est pas pris en charge par cet importateur, toutes les formes doivent avoir la même dimensionnalité. + Le fichier OpenSCAD contient à la fois des formes 2D et 3D. Cela n'est pas pris en charge par cet importateur. Toutes les formes doivent avoir la même dimensionnalité. Error: either all shapes must be 2D or all shapes must be 3D - Erreur: toutes les formes doivent être exclusivement en 2D ou en 3D + Erreur : soit toutes les formes sont en 2D, soit toutes les formes sont en 3D. @@ -303,7 +303,7 @@ Press OK - Appuyez sur OK + Appuyer sur OK @@ -316,7 +316,7 @@ Remove fusion, apply placement to children, and color randomly - Supprimer la fusion, appliquer le placement aux enfants et colorier au hasard + Supprimer l'union, appliquer le placement aux enfants et colorier au hasard @@ -324,7 +324,7 @@ Color Shapes - Colorer les formes + Colorier des formes @@ -428,7 +428,7 @@ Replace an object in the Tree view. Please select old, new, and parent object - Remplacer un objet dans la vue en arborescence. Veuillez sélectionner l'ancien objet, le nouvel objet et l'objet parent + Remplacer un objet dans la vue en arborescence. Sélectionner l'ancien objet, le nouvel objet et l'objet parent @@ -475,12 +475,12 @@ Hull - Enveloppe + Coque Use OpenSCAD to create a hull - Utilisez OpenSCAD pour créer une coque + Utiliser OpenSCAD pour créer une coque @@ -488,12 +488,12 @@ OpenSCAD Tools - Outils OpenSCAD + Outils d'OpenSCAD Frequently-used Part WB tools - Outils de pièce WB fréquemment utilisés + Outils fréquemment utilisés de l'atelier Part diff --git a/src/Mod/Part/App/AppPart.cpp b/src/Mod/Part/App/AppPart.cpp index de78cddefe..4190208200 100644 --- a/src/Mod/Part/App/AppPart.cpp +++ b/src/Mod/Part/App/AppPart.cpp @@ -398,6 +398,7 @@ PyMOD_INIT_FUNC(Part) Part::PropertyGeometryList ::init(); Part::PropertyShapeHistory ::init(); Part::PropertyFilletEdges ::init(); + Part::PropertyShapeCache ::init(); Part::PropertyTopoShapeList ::init(); Part::FaceMaker ::init(); diff --git a/src/Mod/Part/App/AttachEnginePyImp.cpp b/src/Mod/Part/App/AttachEnginePyImp.cpp index b4f08d3a95..d7b27b0297 100644 --- a/src/Mod/Part/App/AttachEnginePyImp.cpp +++ b/src/Mod/Part/App/AttachEnginePyImp.cpp @@ -131,8 +131,12 @@ Py::Object AttachEnginePy::getReferences() const { try { AttachEngine &attacher = *(this->getAttachEnginePtr()); - AttachEngine::verifyReferencesAreSafe(attacher.references); - return Py::Object(attacher.references.getPyObject(),true); + Py::List ret; + int i=0; + for(auto obj : attacher.getRefObjects()) + ret.append(Py::TupleN(Py::asObject(obj->getPyObject()), + Py::String(attacher.subnames[i++]))); + return ret; } ATTACHERPY_STDCATCH_ATTR; } @@ -140,7 +144,9 @@ void AttachEnginePy::setReferences(Py::Object arg) { try { AttachEngine &attacher = *(this->getAttachEnginePtr()); - attacher.references.setPyObject(arg.ptr()); + App::PropertyLinkSubList references; + references.setPyObject(arg.ptr()); + attacher.setReferences(references); } ATTACHERPY_STDCATCH_ATTR; } @@ -518,7 +524,7 @@ PyObject* AttachEnginePy::readParametersFromFeature(PyObject* args) } Part::AttachExtension* feat = dobj->getExtensionByType(); AttachEngine &attacher = *(this->getAttachEnginePtr()); - attacher.setUp(feat->Support, + attacher.setUp(feat->AttachmentSupport, eMapMode(feat->MapMode.getValue()), feat->MapReversed.getValue(), feat->MapPathParameter.getValue(), @@ -542,8 +548,7 @@ PyObject* AttachEnginePy::writeParametersToFeature(PyObject* args) } Part::AttachExtension* feat = dobj->getExtensionByType(); const AttachEngine &attacher = *(this->getAttachEnginePtr()); - AttachEngine::verifyReferencesAreSafe(attacher.references); - feat->Support.Paste(attacher.references); + feat->AttachmentSupport.setValues(attacher.getRefObjects(),attacher.getSubValues()); feat->MapMode.setValue(attacher.mapMode); feat->MapReversed.setValue(attacher.mapReverse); feat->MapPathParameter.setValue(attacher.attachParameter); diff --git a/src/Mod/Part/App/AttachExtension.cpp b/src/Mod/Part/App/AttachExtension.cpp index cca0227a25..530fc748ad 100644 --- a/src/Mod/Part/App/AttachExtension.cpp +++ b/src/Mod/Part/App/AttachExtension.cpp @@ -38,7 +38,7 @@ AttachExtension::AttachExtension() EXTENSION_ADD_PROPERTY_TYPE(AttacherType, ("Attacher::AttachEngine3D"), "Attachment",(App::PropertyType)(App::Prop_None),"Class name of attach engine object driving the attachment."); this->AttacherType.setStatus(App::Property::Status::Hidden, true); - EXTENSION_ADD_PROPERTY_TYPE(Support, (nullptr,nullptr), "Attachment",(App::PropertyType)(App::Prop_None),"Support of the 2D geometry"); + EXTENSION_ADD_PROPERTY_TYPE(AttachmentSupport, (nullptr,nullptr), "Attachment",(App::PropertyType)(App::Prop_None),"Support of the 2D geometry"); EXTENSION_ADD_PROPERTY_TYPE(MapMode, (mmDeactivated), "Attachment", App::Prop_None, "Mode of attachment to other object"); MapMode.setEditorName("PartGui::PropertyEnumAttacherItem"); @@ -119,7 +119,10 @@ bool AttachExtension::positionBySupport() try { if (_attacher->mapMode == mmDeactivated) return false; - getPlacement().setValue(_attacher->calculateAttachedPlacement(getPlacement().getValue())); + bool subChanged = false; + getPlacement().setValue(_attacher->calculateAttachedPlacement(getPlacement().getValue(), &subChanged)); + if(subChanged) + AttachmentSupport.setValues(AttachmentSupport.getValues(),_attacher->getSubValues()); _active = 1; return true; } catch (ExceptionCancel&) { @@ -165,7 +168,7 @@ App::DocumentObjectExecReturn *AttachExtension::extensionExecute() void AttachExtension::extensionOnChanged(const App::Property* prop) { if(! getExtendedObject()->isRestoring()){ - if ((prop == &Support + if ((prop == &AttachmentSupport || prop == &MapMode || prop == &MapPathParameter || prop == &MapReversed @@ -193,7 +196,7 @@ void AttachExtension::extensionOnChanged(const App::Property* prop) // MapPathParameter is only used if there is a reference to one edge and not edge + vertex bool hasOneRef = false; - if (_attacher && _attacher->references.getSubValues().size() == 1) { + if (_attacher && _attacher->subnames.size() == 1) { hasOneRef = true; } @@ -212,13 +215,32 @@ void AttachExtension::extensionOnChanged(const App::Property* prop) App::DocumentObjectExtension::extensionOnChanged(prop); } -void AttachExtension::extHandleChangedPropertyName(Base::XMLReader &reader, const char* TypeName, const char* PropName) +bool AttachExtension::extensionHandleChangedPropertyName(Base::XMLReader &reader, const char* TypeName, const char *PropName) { - // Was superPlacement + // superPlacement -> AttachmentOffset Base::Type type = Base::Type::fromName(TypeName); - if (AttachmentOffset.getClassTypeId() == type && strcmp(PropName, "superPlacement") == 0) { + if (strcmp(PropName, "superPlacement") == 0 && AttachmentOffset.getClassTypeId() == type) { AttachmentOffset.Restore(reader); + return true; } + // Support -> AttachmentSupport + else if (strcmp(PropName, "Support") == 0) { + // At one point, the type of Support changed from PropertyLinkSub to its present type of PropertyLinkSubList. + // Later, the property name changed to AttachmentSupport + App::PropertyLinkSub tmp; + if (0 == strcmp(tmp.getTypeId().getName(),TypeName)) { + tmp.setContainer(this->getExtendedContainer()); + tmp.Restore(reader); + AttachmentSupport.setValue(tmp.getValue(), tmp.getSubValues()); + this->MapMode.setValue(Attacher::mmFlatFace); + return true; + } + else if (AttachmentSupport.getClassTypeId() == type) { + AttachmentSupport.Restore(reader); + return true; + } + } + return App::DocumentObjectExtension::extensionHandleChangedPropertyName(reader, TypeName, PropName); } void AttachExtension::onExtendedDocumentRestored() @@ -238,7 +260,7 @@ void AttachExtension::onExtendedDocumentRestored() // MapPathParameter is only used if there is a reference to one edge and not edge + vertex bool hasOneRef = false; - if (_attacher && _attacher->references.getSubValues().size() == 1) { + if (_attacher && _attacher->subnames.size() == 1) { hasOneRef = true; } @@ -257,7 +279,7 @@ void AttachExtension::updateAttacherVals() { if (!_attacher) return; - _attacher->setUp(this->Support, + _attacher->setUp(this->AttachmentSupport, eMapMode(this->MapMode.getValue()), this->MapReversed.getValue(), this->MapPathParameter.getValue(), diff --git a/src/Mod/Part/App/AttachExtension.h b/src/Mod/Part/App/AttachExtension.h index d33de4d64b..46e6fbc96f 100644 --- a/src/Mod/Part/App/AttachExtension.h +++ b/src/Mod/Part/App/AttachExtension.h @@ -85,7 +85,7 @@ public: App::PropertyString AttacherType; - App::PropertyLinkSubList Support; + App::PropertyLinkSubList AttachmentSupport; App::PropertyEnumeration MapMode; //see AttachEngine::eMapMode App::PropertyBool MapReversed; //inverts Z and X internal axes App::PropertyPlacement AttachmentOffset; @@ -97,7 +97,7 @@ public: */ App::PropertyFloat MapPathParameter; - /** calculate and update the Placement property based on the Support, and + /** calculate and update the Placement property based on the AttachmentSupport, and * mode. Can throw FreeCAD and OCC exceptions. Returns true if attached, * false if not, throws if attachment failed. */ @@ -108,7 +108,7 @@ public: bool isAttacherActive() const; virtual bool isTouched_Mapping() - {return true; /*support.isTouched isn't true when linked objects are changed... why?..*/} + {return true; /*AttachmentSupport.isTouched isn't true when linked objects are changed... why?..*/} short int extensionMustExecute() override; App::DocumentObjectExecReturn *extensionExecute() override; @@ -117,7 +117,7 @@ public: protected: void extensionOnChanged(const App::Property* /*prop*/) override; - virtual void extHandleChangedPropertyName(Base::XMLReader &reader, const char* TypeName, const char* PropName); + virtual bool extensionHandleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) override; App::PropertyPlacement& getPlacement() const; diff --git a/src/Mod/Part/App/AttachExtensionPy.xml b/src/Mod/Part/App/AttachExtensionPy.xml index e839670f4f..7d5845df34 100644 --- a/src/Mod/Part/App/AttachExtensionPy.xml +++ b/src/Mod/Part/App/AttachExtensionPy.xml @@ -15,7 +15,7 @@ - positionBySupport(): Reposition object based on Support, MapMode and MapPathParameter properties. + positionBySupport(): Reposition object based on AttachmentSupport, MapMode and MapPathParameter properties. Returns True if attachment calculation was successful, false if object is not attached and Placement wasn't updated, and raises an exception if attachment calculation fails. diff --git a/src/Mod/Part/App/Attacher.cpp b/src/Mod/Part/App/Attacher.cpp index cebff12d76..1eafeca8b2 100644 --- a/src/Mod/Part/App/Attacher.cpp +++ b/src/Mod/Part/App/Attacher.cpp @@ -172,13 +172,69 @@ TYPESYSTEM_SOURCE_ABSTRACT(Attacher::AttachEngine, Base::BaseClass) AttachEngine::AttachEngine() = default; +void AttachEngine::setReferences(const App::PropertyLinkSubList& references) +{ + std::string docname; + std::vector names; + for (auto obj : references.getValues()) { + if (!obj->getNameInDocument()) { + throw AttachEngineException("AttachEngine::invalid object"); + } + if (docname.empty()) { + docname = obj->getDocument()->getName(); + } + else if (docname != obj->getDocument()->getName()) { + throw AttachEngineException("AttachEngine::object from multiple document"); + } + names.emplace_back(obj->getNameInDocument()); + } + this->docName = docname; + this->objNames = std::move(names); + this->subnames.clear(); + this->subnames.reserve(this->objNames.size()); + this->shadowSubs.clear(); + this->shadowSubs.reserve(this->objNames.size()); + for (auto& shadow : references.getShadowSubs()) { + this->shadowSubs.push_back(shadow.first); + this->subnames.push_back(shadow.second); + } + assert(this->objNames.size() == this->subnames.size()); +} + +void AttachEngine::setReferences(const std::vector& references) +{ + std::string docname; + std::vector names; + std::vector subnames; + std::vector shadowSubs; + for (auto& ref : references) { + if (!ref.getSubObject()) { + FC_THROWM(AttachEngineException, + "AttachEngine::invalid object " << ref.getSubObjectFullName()); + } + if (docname.empty()) { + docname = ref.getDocumentName(); + } + else if (docname != ref.getDocumentName()) { + throw AttachEngineException("AttachEngine::object from multiple document"); + } + names.push_back(ref.getObjectName()); + subnames.push_back(ref.getSubNameNoElement() + ref.getOldElementName()); + shadowSubs.push_back(ref.getSubNameNoElement() + ref.getNewElementName()); + } + this->docName = docname; + this->objNames = std::move(names); + this->subnames = std::move(subnames); + this->shadowSubs = std::move(shadowSubs); +} + void AttachEngine::setUp(const App::PropertyLinkSubList &references, eMapMode mapMode, bool mapReverse, double attachParameter, double surfU, double surfV, const Base::Placement &attachmentOffset) { - this->references.Paste(references); + setReferences(references); this->mapMode = mapMode; this->mapReverse = mapReverse; this->attachParameter = attachParameter; @@ -189,13 +245,16 @@ void AttachEngine::setUp(const App::PropertyLinkSubList &references, void AttachEngine::setUp(const AttachEngine &another) { - setUp(another.references, - another.mapMode, - another.mapReverse, - another.attachParameter, - another.surfU, - another.surfV, - another.attachmentOffset); + this->docName = another.docName; + this->objNames = another.objNames; + this->subnames = another.subnames; + this->shadowSubs = another.shadowSubs; + this->mapMode = another.mapMode; + this->mapReverse = another.mapReverse; + this->attachParameter = another.attachParameter; + this->surfU = another.surfU; + this->surfV = another.surfV; + this->attachmentOffset = another.attachmentOffset; } Base::Placement AttachEngine::placementFactory(const gp_Dir &ZAxis, @@ -324,7 +383,7 @@ void AttachEngine::suggestMapModes(SuggestResult &result) const std::vector shapeStorage; std::vector typeStr; try{ - readLinks(this->references, parts, shapes, shapeStorage, typeStr); + readLinks(getRefObjects(),subnames, parts, shapes, shapeStorage, typeStr); } catch (Base::Exception &err) { result.references_Types = typeStr; result.message = SuggestResult::srLinkBroken; @@ -346,17 +405,17 @@ void AttachEngine::suggestMapModes(SuggestResult &result) const for (std::size_t iChr = 0; iChr < str.size() && iChr < typeStr.size(); ++iChr) { int match = AttachEngine::isShapeOfType(typeStr[iChr], str[iChr]); switch(match){ - case -1: - score = -1; - break; - case 0: - score = 0; - break; - case 1: - //keep score - break; - default: //2 and above - if (score > 0) + case -1: + score = -1; + break; + case 0: + score = 0; + break; + case 1: + //keep score + break; + default: //2 and above + if (score > 0) score += match; break; } @@ -514,7 +573,7 @@ eRefType AttachEngine::getShapeType(const App::DocumentObject *obj, const std::s std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(tmpLink, parts, shapes, copiedShapeStorage, types); + readLinks(tmpLink.getValues(),tmpLink.getSubValues(), parts, shapes, copiedShapeStorage, types); assert(types.size() == 1); return types[0]; @@ -677,7 +736,7 @@ GProp_GProps AttachEngine::getInertialPropsOfShape(const std::vector &objs, + const std::vector &sub, std::vector &geofs, std::vector &shapes, std::vector &storage, std::vector &types) { - verifyReferencesAreSafe(references); - const std::vector &objs = references.getValues(); - const std::vector &sub = references.getSubValues(); geofs.resize(objs.size()); storage.reserve(objs.size()); shapes.resize(objs.size()); @@ -771,24 +828,34 @@ void AttachEngine::readLinks(const App::PropertyLinkSubList &references, } App::GeoFeature* geof = static_cast(objs[i]); geofs[i] = geof; - const Part::TopoShape* shape; + Part::TopoShape shape; if (geof->isDerivedFrom(Part::Feature::getClassTypeId())){ - shape = &(static_cast(geof)->Shape.getShape()); - if (shape->isNull()){ + shape = (static_cast(geof)->Shape.getShape()); + if (shape.isNull()){ throw AttachEngineException("AttachEngine3D: Part has null shape"); } if (sub[i].length()>0){ try{ - storage.push_back(shape->getSubShape(sub[i].c_str())); - } catch (Standard_Failure&){ - throw AttachEngineException("AttachEngine3D: subshape not found"); + shape = Part::Feature::getTopoShape(geof, sub[i].c_str(), true); + if (shape.isNull()) + throw AttachEngineException("AttachEngine3D: null subshape"); + storage.push_back(shape.getShape()); + } catch (Standard_Failure &e){ + FC_THROWM(AttachEngineException, "AttachEngine3D: subshape not found " + << objs[i]->getNameInDocument() << '.' << sub[i] + << std::endl << e.GetMessageString()); + } catch (Base::CADKernelError &e){ + FC_THROWM(AttachEngineException, "AttachEngine3D: subshape not found " + << objs[i]->getNameInDocument() << '.' << sub[i] + << std::endl << e.what()); } if(storage[storage.size()-1].IsNull()) - throw AttachEngineException("AttachEngine3D: null subshape"); - shapes[i] = &(storage[storage.size()-1]); + FC_THROWM(AttachEngineException, "AttachEngine3D: null subshape " + << objs[i]->getNameInDocument() << '.' << sub[i]); } else { - shapes[i] = &(shape->getShape()); + storage.push_back(shape.getShape()); } + shapes[i] = &(storage[storage.size()-1]); } else if ( geof->isDerivedFrom(App::Plane::getClassTypeId()) ){ //obtain Z axis and origin of placement Base::Vector3d norm; @@ -859,9 +926,98 @@ void AttachEngine::verifyReferencesAreSafe(const App::PropertyLinkSubList &refer } } +std::vector AttachEngine::getRefObjects() const +{ + std::vector objs; + if (objNames.empty()) { + return objs; + } + auto doc = App::GetApplication().getDocument(docName.c_str()); + if (!doc) { + FC_THROWM(AttachEngineException, "AttachEngine: document '" << docName << "' not found"); + } + objs.reserve(objNames.size()); + for (auto& name : objNames) { + objs.push_back(doc->getObject(name.c_str())); + if (!objs.back()) { + FC_THROWM(AttachEngineException, + "AttachEngine: object '" << docName << "#" << name << "' not found"); + } + } + return objs; +} + +Base::Placement AttachEngine::calculateAttachedPlacement(const Base::Placement& origPlacement, + bool* subChanged) +{ + std::map> subChanges; + int i = -1; + auto objs = getRefObjects(); + for (auto obj : objs) { + ++i; + auto& sub = subnames[i]; + auto& shadow = shadowSubs[i]; + if (shadow.empty() || !Data::hasMissingElement(sub.c_str())) { + continue; + } + auto related = Part::Feature::getRelatedElements(obj, + shadow.c_str(), + Part::HistoryTraceType::followTypeChange, + false); + if (!related.empty()) { + auto& res = subChanges[i]; + res.first = Data::ComplexGeoData::elementMapPrefix(); + related.front().name.appendToBuffer(res.first); + res.second.clear(); + related.front().index.appendToStringBuffer(res.second); + } + else { + std::string name = Data::oldElementName(shadow.c_str()); + if (!name.empty()) { + auto& res = subChanges[i]; + res.first.clear(); + res.second = name; + } + else { + subnames[i] = shadow; + } + } + } + if (!subChanges.empty()) { + // In case there is topological name changes, we only auto change the + // subname if the calculated placement stays the same. If not, just + // proceed as normal, which will throw exception and catch user's + // attention. + auto subs = subnames; + for (auto& change : subChanges) { + auto [subkey, namechange] =change; + auto [_oldname, newname] = namechange; + subs[subkey] = newname; + } + auto pla = _calculateAttachedPlacement(objs, subs, origPlacement); + // check equal placement with some tolerance + if (pla.getPosition().IsEqual(origPlacement.getPosition(), Precision::Confusion()) + && pla.getRotation().isSame(origPlacement.getRotation(), Precision::Angular())) { + // Only make changes if the caller supplies 'subChanged', because + // otherwise it means the caller just want to do an immutable test. + // See AttachExtension::isAttacherActive(). + if (subChanged) { + *subChanged = true; + subnames = std::move(subs); + for (auto& v : subChanges) { + shadowSubs[v.first] = v.second.first; + } + } + return pla; + } + } + return _calculateAttachedPlacement(objs, subnames, origPlacement); +} + //================================================================================= + TYPESYSTEM_SOURCE(Attacher::AttachEngine3D, Attacher::AttachEngine) AttachEngine3D::AttachEngine3D() @@ -973,613 +1129,761 @@ AttachEngine3D* AttachEngine3D::copy() const return p; } -Base::Placement AttachEngine3D::calculateAttachedPlacement(const Base::Placement& origPlacement) const +Base::Placement +AttachEngine3D::_calculateAttachedPlacement(const std::vector& objs, + const std::vector& subs, + const Base::Placement& origPlacement) const { const eMapMode mmode = this->mapMode; - if (mmode == mmDeactivated) - throw ExceptionCancel();//to be handled in positionBySupport, to not do anything if disabled + if (mmode == mmDeactivated) { + throw ExceptionCancel(); // to be handled in positionBySupport, to not do anything if + // disabled + } std::vector parts; std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(this->references, parts, shapes, copiedShapeStorage, types); + readLinks(objs, subs, parts, shapes, copiedShapeStorage, types); - if (parts.empty()) + if (parts.empty()) { throw ExceptionCancel(); + } - - //common stuff for all map modes - gp_Pnt refOrg (0.0,0.0,0.0);//origin of linked object + // common stuff for all map modes + gp_Pnt refOrg(0.0, 0.0, 0.0); // origin of linked object Base::Placement Place = parts[0]->Placement.getValue(); refOrg = gp_Pnt(Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); - //variables to derive the actual placement. - //They are to be set, depending on the mode: - //to the sketch - gp_Dir SketchNormal;//points at the user - gp_Vec SketchXAxis; //if left zero, a guess will be made - gp_Pnt SketchBasePoint; //where to put the origin of the sketch + // variables to derive the actual placement. + // They are to be set, depending on the mode: + // to the sketch + gp_Dir SketchNormal; // points at the user + gp_Vec SketchXAxis; // if left zero, a guess will be made + gp_Pnt SketchBasePoint; // where to put the origin of the sketch switch (mmode) { - case mmDeactivated: - //should have been filtered out already! - break; - case mmTranslate:{ - if (shapes.empty()) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: no subobjects specified (need one vertex)."); - const TopoDS_Shape &sh = *shapes[0]; - if (sh.IsNull()) - throw Base::ValueError("Null face in AttachEngine3D::calculateAttachedPlacement()!"); - if (sh.ShapeType() != TopAbs_VERTEX) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: no subobjects specified (need one vertex)."); - gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(sh)); - Base::Placement plm = Base::Placement(); - plm.setPosition(Base::Vector3d(p.X(), p.Y(), p.Z())); - plm.setPosition(plm.getPosition() + this->attachmentOffset.getPosition()); - plm.setRotation(origPlacement.getRotation()); - return plm; - } break; - case mmObjectXY: - case mmObjectXZ: - case mmObjectYZ:{ - //DeepSOIC: could have been done much more efficiently, but I'm lazy... - gp_Dir dirX, dirY, dirZ; - if (types[0] & rtFlagHasPlacement) { - Base::Vector3d dX,dY,dZ;//internal axes of support object, as they are in global space - Place.getRotation().multVec(Base::Vector3d(1,0,0),dX); - Place.getRotation().multVec(Base::Vector3d(0,1,0),dY); - Place.getRotation().multVec(Base::Vector3d(0,0,1),dZ); - dirX = gp_Dir(dX.x, dX.y, dX.z); - dirY = gp_Dir(dY.x, dY.y, dY.z); - dirZ = gp_Dir(dZ.x, dZ.y, dZ.z); - SketchBasePoint = gp_Pnt(Place.getPosition().x,Place.getPosition().y,Place.getPosition().z); - } else if (isShapeOfType(types[0],rtConic) > 0) { - const TopoDS_Edge &e = TopoDS::Edge(*shapes[0]); - BRepAdaptor_Curve adapt(e); - gp_Ax3 pos; - switch(adapt.GetType()){ - case GeomAbs_Ellipse:{ - gp_Elips cc = adapt.Ellipse(); - pos = gp_Ax3(cc.Position()); - }break; - case GeomAbs_Hyperbola:{ - gp_Hypr cc = adapt.Hyperbola(); - pos = gp_Ax3(cc.Position()); - }break; - case GeomAbs_Parabola:{ - gp_Parab cc = adapt.Parabola(); - pos = gp_Ax3(cc.Position()); - }break; - default: - assert(0);//conics should have been filtered out by testing shape type in the above if. + case mmDeactivated: + // should have been filtered out already! + break; + case mmTranslate: { + if (shapes.empty()) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: no subobjects " + "specified (need one vertex)."); } - dirX = pos.XDirection(); - dirY = pos.YDirection(); - dirZ = pos.Axis().Direction(); - SketchBasePoint = pos.Location(); - } else { - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: need either a conic section edge, or a whole object for ObjectXY-like modes."); - } - - switch (mmode){ + const TopoDS_Shape& sh = *shapes[0]; + if (sh.IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngine3D::calculateAttachedPlacement()!"); + } + if (sh.ShapeType() != TopAbs_VERTEX) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: no subobjects " + "specified (need one vertex)."); + } + gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(sh)); + Base::Placement plm = Base::Placement(); + plm.setPosition(Base::Vector3d(p.X(), p.Y(), p.Z())); + plm.setPosition(plm.getPosition() + this->attachmentOffset.getPosition()); + plm.setRotation(origPlacement.getRotation()); + return plm; + } break; case mmObjectXY: - SketchNormal = dirZ; - SketchXAxis = gp_Vec(dirX); - break; case mmObjectXZ: - SketchNormal = dirY.Reversed(); - SketchXAxis = gp_Vec(dirX); - break; - case mmObjectYZ: - SketchNormal = dirX; - SketchXAxis = gp_Vec(dirY); - break; - default: - break; - } + case mmObjectYZ: { + // DeepSOIC: could have been done much more efficiently, but I'm lazy... + gp_Dir dirX, dirY, dirZ; + if (types[0] & rtFlagHasPlacement) { + Base::Vector3d dX, dY, + dZ; // internal axes of support object, as they are in global space + Place.getRotation().multVec(Base::Vector3d(1, 0, 0), dX); + Place.getRotation().multVec(Base::Vector3d(0, 1, 0), dY); + Place.getRotation().multVec(Base::Vector3d(0, 0, 1), dZ); + dirX = gp_Dir(dX.x, dX.y, dX.z); + dirY = gp_Dir(dY.x, dY.y, dY.z); + dirZ = gp_Dir(dZ.x, dZ.y, dZ.z); + SketchBasePoint = + gp_Pnt(Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); + } + else if (isShapeOfType(types[0], rtConic) > 0) { + const TopoDS_Edge& e = TopoDS::Edge(*shapes[0]); + BRepAdaptor_Curve adapt(e); + gp_Ax3 pos; + switch (adapt.GetType()) { + case GeomAbs_Ellipse: { + gp_Elips cc = adapt.Ellipse(); + pos = gp_Ax3(cc.Position()); + } break; + case GeomAbs_Hyperbola: { + gp_Hypr cc = adapt.Hyperbola(); + pos = gp_Ax3(cc.Position()); + } break; + case GeomAbs_Parabola: { + gp_Parab cc = adapt.Parabola(); + pos = gp_Ax3(cc.Position()); + } break; + default: + assert(0); // conics should have been filtered out by testing shape type in + // the above if. + } + dirX = pos.XDirection(); + dirY = pos.YDirection(); + dirZ = pos.Axis().Direction(); + SketchBasePoint = pos.Location(); + } + else { + throw Base::ValueError( + "AttachEngine3D::calculateAttachedPlacement: need either a conic section edge, " + "or a whole object for ObjectXY-like modes."); + } - } break; - case mmInertialCS:{ - GProp_GProps gpr = AttachEngine::getInertialPropsOfShape(shapes); - GProp_PrincipalProps pr = gpr.PrincipalProperties(); - if (pr.HasSymmetryPoint()) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement:InertialCS: inertia tensor is trivial, principal axes are undefined."); - if (pr.HasSymmetryAxis()){ - Base::Console().Warning("AttachEngine3D::calculateAttachedPlacement:InertialCS: inertia tensor has axis of symmetry. Second and third axes of inertia are undefined.\n"); - //find defined axis, and use it as Z axis - //situation: we have two moments that are almost equal, and one - //that is substantially different. The one that is different - //corresponds to a defined axis. We'll identify the different one by - //comparing differences. - Standard_Real I1, I2, I3; - pr.Moments(I1,I2,I3); - Standard_Real d12, d23, d31; - d12 = fabs(I1-I2); - d23 = fabs(I2-I3); - d31 = fabs(I3-I1); - if(d12 < d23 && d12 < d31){ - SketchNormal = pr.ThirdAxisOfInertia(); - } else if (d23 < d31 && d23 < d12){ + switch (mmode) { + case mmObjectXY: + SketchNormal = dirZ; + SketchXAxis = gp_Vec(dirX); + break; + case mmObjectXZ: + SketchNormal = dirY.Reversed(); + SketchXAxis = gp_Vec(dirX); + break; + case mmObjectYZ: + SketchNormal = dirX; + SketchXAxis = gp_Vec(dirY); + break; + default: + break; + } + + } break; + case mmInertialCS: { + GProp_GProps gpr = AttachEngine::getInertialPropsOfShape(shapes); + GProp_PrincipalProps pr = gpr.PrincipalProperties(); + if (pr.HasSymmetryPoint()) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement:InertialCS: " + "inertia tensor is trivial, principal axes are undefined."); + } + if (pr.HasSymmetryAxis()) { + Base::Console().Warning( + "AttachEngine3D::calculateAttachedPlacement:InertialCS: inertia tensor has " + "axis of symmetry. Second and third axes of inertia are undefined.\n"); + // find defined axis, and use it as Z axis + // situation: we have two moments that are almost equal, and one + // that is substantially different. The one that is different + // corresponds to a defined axis. We'll identify the different one by + // comparing differences. + Standard_Real I1, I2, I3; + pr.Moments(I1, I2, I3); + Standard_Real d12, d23, d31; + d12 = fabs(I1 - I2); + d23 = fabs(I2 - I3); + d31 = fabs(I3 - I1); + if (d12 < d23 && d12 < d31) { + SketchNormal = pr.ThirdAxisOfInertia(); + } + else if (d23 < d31 && d23 < d12) { + SketchNormal = pr.FirstAxisOfInertia(); + } + else { + SketchNormal = pr.SecondAxisOfInertia(); + } + } + else { SketchNormal = pr.FirstAxisOfInertia(); - } else { - SketchNormal = pr.SecondAxisOfInertia(); + SketchXAxis = pr.SecondAxisOfInertia(); } - } else { - SketchNormal = pr.FirstAxisOfInertia(); - SketchXAxis = pr.SecondAxisOfInertia(); - } - SketchBasePoint = gpr.CentreOfMass(); - }break; - case mmFlatFace:{ - if (shapes.empty()) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: no subobjects specified (needed one planar face)."); - - const TopoDS_Face &face = TopoDS::Face(*(shapes[0])); - if (face.IsNull()) - throw Base::ValueError("Null face in AttachEngine3D::calculateAttachedPlacement()!"); - - gp_Pln plane; - BRepAdaptor_Surface adapt(face); - if (adapt.GetType() == GeomAbs_Plane) { - plane = adapt.Plane(); - } - else { - TopLoc_Location loc; - Handle(Geom_Surface) surf = BRep_Tool::Surface(face, loc); - GeomLib_IsPlanarSurface check(surf); - if (check.IsPlanar()) - plane = check.Plan(); - else - throw Base::ValueError("No planar face in AttachEngine3D::calculateAttachedPlacement()!"); - } - - bool Reverse = false; - if (face.Orientation() == TopAbs_REVERSED) - Reverse = true; - - Standard_Boolean ok = plane.Direct(); - if (!ok) { - // toggle if plane has a left-handed coordinate system - plane.UReverse(); - Reverse = !Reverse; - } - gp_Ax1 Normal = plane.Axis(); - if (Reverse) - Normal.Reverse(); - SketchNormal = Normal.Direction(); - - Handle (Geom_Plane) gPlane = new Geom_Plane(plane); - GeomAPI_ProjectPointOnSurf projector(refOrg,gPlane); - SketchBasePoint = projector.NearestPoint(); - - } break; - case mmTangentPlane: { - if (shapes.size() < 2) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: not enough subshapes (need one false and one vertex)."); - - bool bThruVertex = false; - if (shapes[0]->ShapeType() == TopAbs_VERTEX) { - std::swap(shapes[0],shapes[1]); - bThruVertex = true; - } - - const TopoDS_Face &face = TopoDS::Face(*(shapes[0])); - if (face.IsNull()) - throw Base::ValueError("Null face in AttachEngine3D::calculateAttachedPlacement()!"); - - const TopoDS_Vertex &vertex = TopoDS::Vertex(*(shapes[1])); - if (vertex.IsNull()) - throw Base::ValueError("Null vertex in AttachEngine3D::calculateAttachedPlacement()!"); - - Handle (Geom_Surface) hSurf = BRep_Tool::Surface(face); - gp_Pnt p = BRep_Tool::Pnt(vertex); - - GeomAPI_ProjectPointOnSurf projector(p, hSurf); - double u, v; - if (projector.NbPoints()==0) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: projecting point onto surface failed."); - - projector.LowerDistanceParameters(u, v); - BRepAdaptor_Surface surf(face); - BRepLProp_SLProps prop(surf, u, v, 1, Precision::Confusion()); - gp_Dir dirX; - Standard_Boolean done; - - Tools::getNormal(face, u, v, Precision::Confusion(), SketchNormal, done); - - if (!done) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: finding normal to surface at projected point failed."); - - // if getNormal succeeds, at least one of the tangent is defined - if (prop.IsTangentUDefined()) { - prop.TangentU(dirX); - if (face.Orientation() == TopAbs_REVERSED) - dirX.Reverse(); - } - // here the orientation of dirX is managed by SketchNormal orientation - else { - gp_Dir dirY; - prop.TangentV(dirY); - dirX = dirY.Crossed(SketchNormal); - } - - SketchXAxis = gp_Vec(dirX).Reversed();//yields upside-down sketches less often. - - if (bThruVertex) { - SketchBasePoint = p; - } else { - SketchBasePoint = projector.NearestPoint(); - } - } break; - case mmNormalToPath: - case mmFrenetNB: - case mmFrenetTN: - case mmFrenetTB: - case mmRevolutionSection: - case mmConcentric: {//all alignments to point on curve - if (shapes.empty()) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: no subshapes specified (need one edge, and an optional vertex)."); - - bool bThruVertex = false; - if (shapes[0]->ShapeType() == TopAbs_VERTEX && shapes.size()>=2) { - std::swap(shapes[0],shapes[1]); - bThruVertex = true; - } - - const TopoDS_Edge &path = TopoDS::Edge(*(shapes[0])); - if (path.IsNull()) - throw Base::ValueError("Null path in AttachEngine3D::calculateAttachedPlacement()!"); - - BRepAdaptor_Curve adapt(path); - - double u = 0.0; - double u1 = adapt.FirstParameter(); - double u2 = adapt.LastParameter(); - if(Precision::IsInfinite(u1) || Precision::IsInfinite(u2)){ - //prevent attachment to infinities in case of infinite shape. - //example of an infinite shape is a datum line. - u1 = 0.0; - u2 = 1.0; - } - - //if a point is specified, use the point as a point of mapping, otherwise use parameter value from properties - gp_Pnt p_in; - if (shapes.size() >= 2) { - TopoDS_Vertex vertex = TopoDS::Vertex(*(shapes[1])); - if (vertex.IsNull()) - throw Base::ValueError("Null vertex in AttachEngine3D::calculateAttachedPlacement()!"); - p_in = BRep_Tool::Pnt(vertex); - - Handle (Geom_Curve) hCurve = BRep_Tool::Curve(path, u1, u2); - - GeomAPI_ProjectPointOnCurve projector (p_in, hCurve); - u = projector.LowerDistanceParameter(); - } else { - u = u1 + this->attachParameter * (u2 - u1); - } - gp_Pnt p; gp_Vec d; //point and derivative - adapt.D1(u,p,d); - - if (d.Magnitude() Precision::SquareConfusion()) { - N.Normalize(); - B = T.Crossed(N); - } else { - Base::Console().Warning("AttachEngine3D::calculateAttachedPlacement: path curve second derivative is below 1e-14, can't align x axis.\n"); - N = gp_Vec(0.,0.,0.); - B = gp_Vec(0.,0.,0.);//redundant, just for consistency + TopoDS_Face face; + gp_Pln plane; + bool Reverse = false; + try { + face = TopoDS::Face(*(shapes[0])); } - - - switch (mmode){ - case mmFrenetNB: - case mmRevolutionSection: - SketchNormal = T.Reversed();//to avoid sketches upside-down for regular curves like circles - SketchXAxis = N.Reversed(); - break; - case mmFrenetTN: - case mmConcentric: - if (N.Magnitude() == 0.0) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: Frenet-Serret normal is undefined. Can't align to TN plane."); - SketchNormal = B; - SketchXAxis = T; - break; - case mmFrenetTB: - if (N.Magnitude() == 0.0) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: Frenet-Serret normal is undefined. Can't align to TB plane."); - SketchNormal = N.Reversed();//it is more convenient to sketch on something looking at it so it is convex. - SketchXAxis = T; - break; - default: - assert(0);//mode forgotten? + catch (...) { } - if (mmode == mmRevolutionSection || mmode == mmConcentric) { - //make sketch origin be at center of osculating circle - if (N.Magnitude() == 0.0) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: path has infinite radius of curvature at the point. Can't align for revolving."); - double curvature = dd.Dot(N) / pow(d.Magnitude(), 2); - gp_Vec pv (p.XYZ()); - pv.Add(N.Multiplied(1/curvature));//shift the point along curvature by radius of curvature - SketchBasePoint = gp_Pnt(pv.XYZ()); - //it would have been cool to have the curve attachment point available inside sketch... Leave for future. - } - } else if (mmode == mmNormalToPath){//mmNormalToPath - //align sketch origin to the origin of support - SketchNormal = gp_Dir(d.Reversed());//sketch normal looks at user. It is natural to have the curve directed away from user, so reversed. - } - - } break; - case mmThreePointsPlane: - case mmThreePointsNormal: { - - std::vector points; - - for (const auto & shape : shapes) { - const TopoDS_Shape &sh = *shape; - if (sh.IsNull()) - throw Base::ValueError("Null shape in AttachEngine3D::calculateAttachedPlacement()!"); - if (sh.ShapeType() == TopAbs_VERTEX){ - const TopoDS_Vertex &v = TopoDS::Vertex(sh); - points.push_back(BRep_Tool::Pnt(v)); - } else if (sh.ShapeType() == TopAbs_EDGE) { - const TopoDS_Edge &e = TopoDS::Edge(sh); - BRepAdaptor_Curve crv(e); - double u1 = crv.FirstParameter(); - double u2 = crv.LastParameter(); - if ( Precision::IsInfinite(u1) - || Precision::IsInfinite(u2) ){ - u1 = 0.0; - u2 = 1.0; + if (face.IsNull()) { + if (!TopoShape(*shapes[0]).findPlane(plane)) { + throw Base::ValueError( + "No planar face in AttachEngine3D::calculateAttachedPlacement()!"); } - points.push_back(crv.Value(u1)); - points.push_back(crv.Value(u2)); } - if (points.size() >= 3) - break; - } + else { + BRepAdaptor_Surface adapt(face); + if (adapt.GetType() == GeomAbs_Plane) { + plane = adapt.Plane(); + } + else { + TopLoc_Location loc; + Handle(Geom_Surface) surf = BRep_Tool::Surface(face, loc); + GeomLib_IsPlanarSurface check(surf); + if (check.IsPlanar()) { + plane = check.Plan(); + } + else { + throw Base::ValueError( + "No planar face in AttachEngine3D::calculateAttachedPlacement()!"); + } + } - if(points.size()<3) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: less than 3 points are specified, cannot derive the plane."); + if (face.Orientation() == TopAbs_REVERSED) { + Reverse = true; + } + } - gp_Pnt p0 = points[0]; - gp_Pnt p1 = points[1]; - gp_Pnt p2 = points[2]; + Standard_Boolean ok = plane.Direct(); + if (!ok) { + // toggle if plane has a left-handed coordinate system + plane.UReverse(); + Reverse = !Reverse; + } + gp_Ax1 Normal = plane.Axis(); + if (Reverse) { + Normal.Reverse(); + } + SketchNormal = Normal.Direction(); - gp_Vec vec01 (p0,p1); - gp_Vec vec02 (p0,p2); - if (vec01.Magnitude() < Precision::Confusion() || vec02.Magnitude() < Precision::Confusion()) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: some of 3 points are coincident. Can't make a plane"); - vec01.Normalize(); - vec02.Normalize(); - - gp_Vec norm ; - if (mmode == mmThreePointsPlane) { - norm = vec01.Crossed(vec02); - if (norm.Magnitude() < Precision::Confusion()) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: points are collinear. Can't make a plane"); - //SketchBasePoint = (p0+p1+p2)/3.0 - SketchBasePoint = gp_Pnt(gp_Vec(p0.XYZ()).Added(p1.XYZ()).Added(p2.XYZ()).Multiplied(1.0/3.0).XYZ()); - } else if (mmode == mmThreePointsNormal) { - norm = vec02.Subtracted(vec01.Multiplied(vec02.Dot(vec01))).Reversed();//norm = vec02 forced perpendicular to vec01. - if (norm.Magnitude() < Precision::Confusion()) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: points are collinear. Can't make a plane"); - //SketchBasePoint = (p0+p1)/2.0 - - Handle (Geom_Plane) gPlane = new Geom_Plane(p0, gp_Dir(norm)); - GeomAPI_ProjectPointOnSurf projector(p2,gPlane); + Handle(Geom_Plane) gPlane = new Geom_Plane(plane); + GeomAPI_ProjectPointOnSurf projector(refOrg, gPlane); SketchBasePoint = projector.NearestPoint(); - } + } break; + case mmTangentPlane: { + if (shapes.size() < 2) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: not enough " + "subshapes (need one false and one vertex)."); + } - norm.Normalize(); - SketchNormal = gp_Dir(norm); + bool bThruVertex = false; + if (shapes[0]->ShapeType() == TopAbs_VERTEX) { + std::swap(shapes[0], shapes[1]); + bThruVertex = true; + } - } break; - case mmFolding: { + TopoDS_Face face; + try { + face = TopoDS::Face(*(shapes[0])); + } + catch (...) { + } + if (face.IsNull()) { + throw Base::ValueError( + "Null face in AttachEngine3D::calculateAttachedPlacement()!"); + } - // Expected selection: four edges in order: edgeA, fold axis A, - // fold axis B, edgeB. The sketch will be placed angled so as to join - // edgeA to edgeB by folding the sheet along axes. All edges are - // expected to be in one plane. + TopoDS_Vertex vertex; + try { + vertex = TopoDS::Vertex(*(shapes[1])); + } + catch (...) { + } + if (vertex.IsNull()) { + throw Base::ValueError( + "Null vertex in AttachEngine3D::calculateAttachedPlacement()!"); + } - if (shapes.size()<4) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: not enough shapes (need 4 lines: edgeA, axisA, axisB, edgeB)."); + Handle(Geom_Surface) hSurf = BRep_Tool::Surface(face); + gp_Pnt p = BRep_Tool::Pnt(vertex); - //extract the four lines - const TopoDS_Edge* edges[4]; - BRepAdaptor_Curve adapts[4]; - gp_Lin lines[4]; - for(int i=0 ; i<4 ; i++){ - edges[i] = &TopoDS::Edge(*(shapes[i])); - if (edges[i]->IsNull()) - throw Base::ValueError("Null edge in AttachEngine3D::calculateAttachedPlacement()!"); + GeomAPI_ProjectPointOnSurf projector(p, hSurf); + double u, v; + if (projector.NbPoints() == 0) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: projecting " + "point onto surface failed."); + } - adapts[i] = BRepAdaptor_Curve(*(edges[i])); - if (adapts[i].GetType() != GeomAbs_Line) - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: Folding - non-straight edge."); - lines[i] = adapts[i].Line(); - } + projector.LowerDistanceParameters(u, v); + BRepAdaptor_Surface surf(face); + BRepLProp_SLProps prop(surf, u, v, 1, Precision::Confusion()); + gp_Dir dirX; + Standard_Boolean done; - //figure out the common starting point (variable p) - gp_Pnt p, p1, p2, p3, p4; - double signs[4] = {0,0,0,0};//flags whether to reverse line directions, for all directions to point away from the common vertex - p1 = adapts[0].Value(adapts[0].FirstParameter()); - p2 = adapts[0].Value(adapts[0].LastParameter()); - p3 = adapts[1].Value(adapts[1].FirstParameter()); - p4 = adapts[1].Value(adapts[1].LastParameter()); - p = p1; - if (p1.Distance(p3) < Precision::Confusion()){ - p = p3; - signs[0] = +1.0; - signs[1] = +1.0; - } else if (p1.Distance(p4) < Precision::Confusion()){ - p = p4; - signs[0] = +1.0; - signs[1] = -1.0; - } else if (p2.Distance(p3) < Precision::Confusion()){ - p = p3; - signs[0] = -1.0; - signs[1] = +1.0; - } else if (p2.Distance(p4) < Precision::Confusion()){ - p = p4; - signs[0] = -1.0; - signs[1] = -1.0; - } else { - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: Folding - edges to not share a vertex."); - } - for (int i = 2 ; i<4 ; i++){ - p1 = adapts[i].Value(adapts[i].FirstParameter()); - p2 = adapts[i].Value(adapts[i].LastParameter()); - if (p.Distance(p1) < Precision::Confusion()) - signs[i] = +1.0; - else if (p.Distance(p2) < Precision::Confusion()) - signs[i] = -1.0; - else - throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: Folding - edges to not share a vertex."); - } + Tools::getNormal(face, u, v, Precision::Confusion(), SketchNormal, done); - gp_Vec dirs[4]; - for(int i=0 ; i<4 ; i++){ - assert(fabs(signs[i]) == 1.0); - dirs[i] = gp_Vec(lines[i].Direction()).Multiplied(signs[i]); - } + if (!done) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: finding normal " + "to surface at projected point failed."); + } - double ang = this->calculateFoldAngle( - dirs[1], - dirs[2], - dirs[0], - dirs[3] - ); + // if getNormal succeeds, at least one of the tangent is defined + if (prop.IsTangentUDefined()) { + prop.TangentU(dirX); + if (face.Orientation() == TopAbs_REVERSED) { + dirX.Reverse(); + } + } + // here the orientation of dirX is managed by SketchNormal orientation + else { + gp_Dir dirY; + prop.TangentV(dirY); + dirX = dirY.Crossed(SketchNormal); + } - gp_Vec norm = dirs[1].Crossed(dirs[2]); - //rotation direction: when angle is positive, rotation is CCW when observing the vector so - //that the axis is pointing at you. Hence angle is negated here. - norm.Rotate(gp_Ax1(gp_Pnt(),gp_Dir(dirs[1])),-ang); - SketchNormal = norm.Reversed(); + SketchXAxis = gp_Vec(dirX).Reversed(); // yields upside-down sketches less often. - SketchXAxis = dirs[1]; + if (bThruVertex) { + SketchBasePoint = p; + } + else { + SketchBasePoint = projector.NearestPoint(); + } + } break; + case mmNormalToPath: + case mmFrenetNB: + case mmFrenetTN: + case mmFrenetTB: + case mmRevolutionSection: + case mmConcentric: { // all alignments to point on curve + if (shapes.empty()) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: no subshapes " + "specified (need one edge, and an optional vertex)."); + } - SketchBasePoint = p; + bool bThruVertex = false; + if (shapes[0]->ShapeType() == TopAbs_VERTEX && shapes.size() >= 2) { + std::swap(shapes[0], shapes[1]); + bThruVertex = true; + } - } break; - case mmOZX: - case mmOZY: - case mmOXY: - case mmOXZ: - case mmOYZ: - case mmOYX: { - const char orderStrings[6][4] = { - "ZXY", - "ZYX", - "XYZ", - "XZY", - "YZX", - "YXZ", - }; - const char* orderString = orderStrings[mmode - mmOZX]; + TopoDS_Edge path; + try { + path = TopoDS::Edge(*(shapes[0])); + } + catch (...) { + } + if (path.IsNull()) { + throw Base::ValueError( + "Null path in AttachEngine3D::calculateAttachedPlacement()!"); + } - enum dirIndex { - X, - Y, - Z - }; - int order[3]; - for(int i = 0; i < 3; ++i){ - order[i] = orderString[i] - 'X'; - } + BRepAdaptor_Curve adapt(path); - if (shapes.size() < 2) - THROWM(Base::ValueError, "AttachEngine3D::calculateAttachedPlacement: not enough shapes linked (at least two are required)."); + double u = 0.0; + double u1 = adapt.FirstParameter(); + double u2 = adapt.LastParameter(); + if (Precision::IsInfinite(u1) || Precision::IsInfinite(u2)) { + // prevent attachment to infinities in case of infinite shape. + // example of an infinite shape is a datum line. + u1 = 0.0; + u2 = 1.0; + } - gp_Vec dirs[3]; + // if a point is specified, use the point as a point of mapping, otherwise use parameter + // value from properties + gp_Pnt p_in; + if (shapes.size() >= 2) { + TopoDS_Vertex vertex; + try { + vertex = TopoDS::Vertex(*(shapes[1])); + } + catch (...) { + } + if (vertex.IsNull()) { + throw Base::ValueError( + "Null vertex in AttachEngine3D::calculateAttachedPlacement()!"); + } + p_in = BRep_Tool::Pnt(vertex); - //read out origin - if (shapes[0]->IsNull()) - THROWM(Base::TypeError, "AttachEngine3D::calculateAttachedPlacement: null shape!") - if (shapes[0]->ShapeType() != TopAbs_VERTEX) - THROWM(Base::TypeError, "AttachEngine3D::calculateAttachedPlacement: first reference must be a vertex, it's not") - SketchBasePoint = BRep_Tool::Pnt(TopoDS::Vertex(*(shapes[0]))); + Handle(Geom_Curve) hCurve = BRep_Tool::Curve(path, u1, u2); - //read out axes directions - for(size_t i = 1; i < 3 && i < shapes.size(); ++i){ - if (shapes[i]->IsNull()) + GeomAPI_ProjectPointOnCurve projector(p_in, hCurve); + u = projector.LowerDistanceParameter(); + } + else { + u = u1 + this->attachParameter * (u2 - u1); + } + gp_Pnt p; + gp_Vec d; // point and derivative + adapt.D1(u, p, d); + + if (d.Magnitude() < Precision::Confusion()) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: path curve " + "derivative is below 1e-7, too low, can't align"); + } + + // Set origin. Note that it will be overridden later for mmConcentric and + // mmRevolutionSection + if (bThruVertex) { + SketchBasePoint = p_in; + } + else { + SketchBasePoint = p; + } + + if (mmode == mmRevolutionSection || mmode == mmConcentric || mmode == mmFrenetNB + || mmode == mmFrenetTN || mmode == mmFrenetTB) { + gp_Vec dd; // second derivative + try { + adapt.D2(u, p, d, dd); + } + catch (Standard_Failure& e) { + // ignore. This is probably due to insufficient continuity. + dd = gp_Vec(0., 0., 0.); + Base::Console().Warning("AttachEngine3D::calculateAttachedPlacement: can't " + "calculate second derivative of curve. OCC error: %s\n", + e.GetMessageString()); + } + + gp_Vec T, N, B; // Frenet?Serret axes: tangent, normal, binormal + T = d.Normalized(); + N = dd.Subtracted( + T.Multiplied(dd.Dot(T))); // take away the portion of dd that is along tangent + if (N.Magnitude() > Precision::SquareConfusion()) { + N.Normalize(); + B = T.Crossed(N); + } + else { + Base::Console().Warning( + "AttachEngine3D::calculateAttachedPlacement: path curve second derivative " + "is below 1e-14, can't align x axis.\n"); + N = gp_Vec(0., 0., 0.); + B = gp_Vec(0., 0., 0.); // redundant, just for consistency + } + + + switch (mmode) { + case mmFrenetNB: + case mmRevolutionSection: + SketchNormal = T.Reversed(); // to avoid sketches upside-down for regular + // curves like circles + SketchXAxis = N.Reversed(); + break; + case mmFrenetTN: + case mmConcentric: + if (N.Magnitude() == 0.0) { + throw Base::ValueError( + "AttachEngine3D::calculateAttachedPlacement: Frenet-Serret normal " + "is undefined. Can't align to TN plane."); + } + SketchNormal = B; + SketchXAxis = T; + break; + case mmFrenetTB: + if (N.Magnitude() == 0.0) { + throw Base::ValueError( + "AttachEngine3D::calculateAttachedPlacement: Frenet-Serret normal " + "is undefined. Can't align to TB plane."); + } + SketchNormal = N.Reversed(); // it is more convenient to sketch on + // something looking at it so it is convex. + SketchXAxis = T; + break; + default: + assert(0); // mode forgotten? + } + if (mmode == mmRevolutionSection || mmode == mmConcentric) { + // make sketch origin be at center of osculating circle + if (N.Magnitude() == 0.0) { + throw Base::ValueError( + "AttachEngine3D::calculateAttachedPlacement: path has infinite radius " + "of curvature at the point. Can't align for revolving."); + } + double curvature = dd.Dot(N) / pow(d.Magnitude(), 2); + gp_Vec pv(p.XYZ()); + pv.Add(N.Multiplied( + 1 / curvature)); // shift the point along curvature by radius of curvature + SketchBasePoint = gp_Pnt(pv.XYZ()); + // it would have been cool to have the curve attachment point available inside + // sketch... Leave for future. + } + } + else if (mmode == mmNormalToPath) { // mmNormalToPath + // align sketch origin to the origin of support + SketchNormal = + gp_Dir(d.Reversed()); // sketch normal looks at user. It is natural to have the + // curve directed away from user, so reversed. + } + + } break; + case mmThreePointsPlane: + case mmThreePointsNormal: { + + std::vector points; + + for (const auto & shape : shapes) { + const TopoDS_Shape &sh = *shape; + if (sh.IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngine3D::calculateAttachedPlacement()!"); + } + if (sh.ShapeType() == TopAbs_VERTEX) { + const TopoDS_Vertex& v = TopoDS::Vertex(sh); + points.push_back(BRep_Tool::Pnt(v)); + } + else if (sh.ShapeType() == TopAbs_EDGE) { + const TopoDS_Edge& e = TopoDS::Edge(sh); + BRepAdaptor_Curve crv(e); + double u1 = crv.FirstParameter(); + double u2 = crv.LastParameter(); + if (Precision::IsInfinite(u1) || Precision::IsInfinite(u2)) { + u1 = 0.0; + u2 = 1.0; + } + points.push_back(crv.Value(u1)); + points.push_back(crv.Value(u2)); + } + if (points.size() >= 3) { + break; + } + } + + if (points.size() < 3) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: less than 3 " + "points are specified, cannot derive the plane."); + } + + gp_Pnt p0 = points[0]; + gp_Pnt p1 = points[1]; + gp_Pnt p2 = points[2]; + + gp_Vec vec01(p0, p1); + gp_Vec vec02(p0, p2); + if (vec01.Magnitude() < Precision::Confusion() + || vec02.Magnitude() < Precision::Confusion()) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: some of 3 " + "points are coincident. Can't make a plane"); + } + vec01.Normalize(); + vec02.Normalize(); + + gp_Vec norm; + if (mmode == mmThreePointsPlane) { + norm = vec01.Crossed(vec02); + if (norm.Magnitude() < Precision::Confusion()) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: points are " + "collinear. Can't make a plane"); + } + // SketchBasePoint = (p0+p1+p2)/3.0 + SketchBasePoint = gp_Pnt( + gp_Vec(p0.XYZ()).Added(p1.XYZ()).Added(p2.XYZ()).Multiplied(1.0 / 3.0).XYZ()); + } + else if (mmode == mmThreePointsNormal) { + norm = vec02.Subtracted(vec01.Multiplied(vec02.Dot(vec01))) + .Reversed(); // norm = vec02 forced perpendicular to vec01. + if (norm.Magnitude() < Precision::Confusion()) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: points are " + "collinear. Can't make a plane"); + } + // SketchBasePoint = (p0+p1)/2.0 + + Handle(Geom_Plane) gPlane = new Geom_Plane(p0, gp_Dir(norm)); + GeomAPI_ProjectPointOnSurf projector(p2, gPlane); + SketchBasePoint = projector.NearestPoint(); + } + + norm.Normalize(); + SketchNormal = gp_Dir(norm); + + } break; + case mmFolding: { + + // Expected selection: four edges in order: edgeA, fold axis A, + // fold axis B, edgeB. The sketch will be placed angled so as to join + // edgeA to edgeB by folding the sheet along axes. All edges are + // expected to be in one plane. + + if (shapes.size() < 4) { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: not enough " + "shapes (need 4 lines: edgeA, axisA, axisB, edgeB)."); + } + + // extract the four lines + const TopoDS_Edge* edges[4]; + BRepAdaptor_Curve adapts[4]; + gp_Lin lines[4]; + for (int i = 0; i < 4; i++) { + try { + edges[i] = &TopoDS::Edge(*(shapes[i])); + } + catch (...) { + } + if (edges[i]->IsNull()) { + throw Base::ValueError( + "Null edge in AttachEngine3D::calculateAttachedPlacement()!"); + } + + adapts[i] = BRepAdaptor_Curve(*(edges[i])); + if (adapts[i].GetType() != GeomAbs_Line) { + throw Base::ValueError( + "AttachEngine3D::calculateAttachedPlacement: Folding - non-straight edge."); + } + lines[i] = adapts[i].Line(); + } + + // figure out the common starting point (variable p) + gp_Pnt p, p1, p2, p3, p4; + double signs[4] = {0, 0, 0, 0}; // flags whether to reverse line directions, for all + // directions to point away from the common vertex + p1 = adapts[0].Value(adapts[0].FirstParameter()); + p2 = adapts[0].Value(adapts[0].LastParameter()); + p3 = adapts[1].Value(adapts[1].FirstParameter()); + p4 = adapts[1].Value(adapts[1].LastParameter()); + p = p1; + if (p1.Distance(p3) < Precision::Confusion()) { + p = p3; + signs[0] = +1.0; + signs[1] = +1.0; + } + else if (p1.Distance(p4) < Precision::Confusion()) { + p = p4; + signs[0] = +1.0; + signs[1] = -1.0; + } + else if (p2.Distance(p3) < Precision::Confusion()) { + p = p3; + signs[0] = -1.0; + signs[1] = +1.0; + } + else if (p2.Distance(p4) < Precision::Confusion()) { + p = p4; + signs[0] = -1.0; + signs[1] = -1.0; + } + else { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: Folding - " + "edges to not share a vertex."); + } + for (int i = 2; i < 4; i++) { + p1 = adapts[i].Value(adapts[i].FirstParameter()); + p2 = adapts[i].Value(adapts[i].LastParameter()); + if (p.Distance(p1) < Precision::Confusion()) { + signs[i] = +1.0; + } + else if (p.Distance(p2) < Precision::Confusion()) { + signs[i] = -1.0; + } + else { + throw Base::ValueError("AttachEngine3D::calculateAttachedPlacement: Folding - " + "edges to not share a vertex."); + } + } + + gp_Vec dirs[4]; + for (int i = 0; i < 4; i++) { + assert(fabs(signs[i]) == 1.0); + dirs[i] = gp_Vec(lines[i].Direction()).Multiplied(signs[i]); + } + + double ang = this->calculateFoldAngle(dirs[1], dirs[2], dirs[0], dirs[3]); + + gp_Vec norm = dirs[1].Crossed(dirs[2]); + // rotation direction: when angle is positive, rotation is CCW when observing the vector + // so that the axis is pointing at you. Hence angle is negated here. + norm.Rotate(gp_Ax1(gp_Pnt(), gp_Dir(dirs[1])), -ang); + SketchNormal = norm.Reversed(); + + SketchXAxis = dirs[1]; + + SketchBasePoint = p; + + } break; + case mmOZX: + case mmOZY: + case mmOXY: + case mmOXZ: + case mmOYZ: + case mmOYX: { + const char orderStrings[6][4] = { + "ZXY", + "ZYX", + "XYZ", + "XZY", + "YZX", + "YXZ", + }; + const char* orderString = orderStrings[mmode - mmOZX]; + + enum dirIndex + { + X, + Y, + Z + }; + int order[3]; + for (int i = 0; i < 3; ++i) { + order[i] = orderString[i] - 'X'; + } + + if (shapes.size() < 2) { + THROWM(Base::ValueError, + "AttachEngine3D::calculateAttachedPlacement: not enough shapes linked (at " + "least two are required)."); + } + + gp_Vec dirs[3]; + + // read out origin + if (shapes[0]->IsNull()) { THROWM(Base::TypeError, "AttachEngine3D::calculateAttachedPlacement: null shape!") - if (shapes[i]->ShapeType() == TopAbs_VERTEX){ - gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(*(shapes[i]))); - dirs[order[i-1]] = gp_Vec(SketchBasePoint, p); - } else if (shapes[i]->ShapeType() == TopAbs_EDGE){ - const TopoDS_Edge &e = TopoDS::Edge(*(shapes[i])); - BRepAdaptor_Curve crv(e); - double u1 = crv.FirstParameter(); - double u2 = crv.LastParameter(); - if ( Precision::IsInfinite(u1) - || Precision::IsInfinite(u2) ){ - u1 = 0.0; - u2 = 1.0; - } - gp_Pnt p1 = crv.Value(u1); - gp_Pnt p2 = crv.Value(u2); - dirs[order[i-1]] = gp_Vec(p1,p2); } - } + if (shapes[0]->ShapeType() != TopAbs_VERTEX) { + THROWM(Base::TypeError, + "AttachEngine3D::calculateAttachedPlacement: first reference must be a " + "vertex, it's not") + } + SketchBasePoint = BRep_Tool::Pnt(TopoDS::Vertex(*(shapes[0]))); - //make the placement - Base::Rotation rot = - Base::Rotation::makeRotationByAxes( - Base::Vector3d(dirs[0].X(), dirs[0].Y(), dirs[0].Z()), - Base::Vector3d(dirs[1].X(), dirs[1].Y(), dirs[1].Z()), - Base::Vector3d(dirs[2].X(), dirs[2].Y(), dirs[2].Z()), - orderString - ); - if(this->mapReverse){ - rot = rot * Base::Rotation(Base::Vector3d(0,1,0),D_PI); - } + // read out axes directions + for (size_t i = 1; i < 3 && i < shapes.size(); ++i) { + if (shapes[i]->IsNull()) { + THROWM(Base::TypeError, + "AttachEngine3D::calculateAttachedPlacement: null shape!") + } + if (shapes[i]->ShapeType() == TopAbs_VERTEX) { + gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(*(shapes[i]))); + dirs[order[i - 1]] = gp_Vec(SketchBasePoint, p); + } + else if (shapes[i]->ShapeType() == TopAbs_EDGE) { + const TopoDS_Edge& e = TopoDS::Edge(*(shapes[i])); + BRepAdaptor_Curve crv(e); + double u1 = crv.FirstParameter(); + double u2 = crv.LastParameter(); + if (Precision::IsInfinite(u1) || Precision::IsInfinite(u2)) { + u1 = 0.0; + u2 = 1.0; + } + gp_Pnt p1 = crv.Value(u1); + gp_Pnt p2 = crv.Value(u2); + dirs[order[i - 1]] = gp_Vec(p1, p2); + } + } - Base::Placement plm = - Base::Placement(Base::Vector3d(SketchBasePoint.X(), SketchBasePoint.Y(), SketchBasePoint.Z()), rot); - plm *= this->attachmentOffset; - return plm; - } break; - default: - throwWrongMode(mmode); - }//switch (MapMode) + // make the placement + Base::Rotation rot = Base::Rotation::makeRotationByAxes( + Base::Vector3d(dirs[0].X(), dirs[0].Y(), dirs[0].Z()), + Base::Vector3d(dirs[1].X(), dirs[1].Y(), dirs[1].Z()), + Base::Vector3d(dirs[2].X(), dirs[2].Y(), dirs[2].Z()), + orderString); + if (this->mapReverse) { + rot = rot * Base::Rotation(Base::Vector3d(0, 1, 0), D_PI); + } + + Base::Placement plm = Base::Placement( + Base::Vector3d(SketchBasePoint.X(), SketchBasePoint.Y(), SketchBasePoint.Z()), + rot); + plm *= this->attachmentOffset; + return plm; + } break; + default: + throwWrongMode(mmode); + } // switch (MapMode) //----------calculate placement, based on point and vector Base::Placement plm = - this->placementFactory(SketchNormal, SketchXAxis, SketchBasePoint, gp_Pnt(), - /*useRefOrg_Line = */ false, - /*useRefOrg_Plane = */ false, - /*makeYVertical = */ false, - /*makeLegacyFlatFaceOrientation = */ mmode == mmFlatFace, - &Place); + this->placementFactory(SketchNormal, + SketchXAxis, + SketchBasePoint, + gp_Pnt(), + /*useRefOrg_Line = */ false, + /*useRefOrg_Plane = */ false, + /*makeYVertical = */ false, + /*makeLegacyFlatFaceOrientation = */ mmode == mmFlatFace, + &Place); plm *= this->attachmentOffset; return plm; } @@ -1636,13 +1940,16 @@ AttachEnginePlane *AttachEnginePlane::copy() const return p; } -Base::Placement AttachEnginePlane::calculateAttachedPlacement(const Base::Placement& origPlacement) const +Base::Placement AttachEnginePlane::_calculateAttachedPlacement( + const std::vector&objs, + const std::vector &subs, + const Base::Placement &origPlacement) const { - //re-use Attacher3d + //reuse Attacher3d Base::Placement plm; AttachEngine3D attacher3D; attacher3D.setUp(*this); - plm = attacher3D.calculateAttachedPlacement(origPlacement); + plm = attacher3D._calculateAttachedPlacement(objs,subs,origPlacement); return plm; } @@ -1700,253 +2007,342 @@ AttachEngineLine *AttachEngineLine::copy() const return p; } -Base::Placement AttachEngineLine::calculateAttachedPlacement(const Base::Placement& origPlacement) const +Base::Placement +AttachEngineLine::_calculateAttachedPlacement(const std::vector& objs, + const std::vector& subs, + const Base::Placement& origPlacement) const { eMapMode mmode = this->mapMode; - //modes that are mirrors of attacher3D: + // modes that are mirrors of attacher3D: bool bReUsed = true; Base::Placement presuperPlacement; - switch(mmode){ - case mmDeactivated: - throw ExceptionCancel();//to be handled in positionBySupport, to not do anything if disabled - case mm1AxisX: - mmode = mmObjectYZ; - break; - case mm1AxisY: - mmode = mmObjectXZ; - break; - case mm1AxisZ: - mmode = mmObjectXY; - break; - case mm1AxisCurv: - mmode = mmRevolutionSection; - //the line should go along Y, not Z - presuperPlacement.setRotation( - Base::Rotation( Base::Vector3d(0.0,0.0,1.0), - Base::Vector3d(0.0,1.0,0.0) ) - ); - break; - case mm1Binormal: - mmode = mmFrenetTN; - break; - case mm1Normal: - mmode = mmFrenetTB; - break; - case mm1Tangent: - mmode = mmNormalToPath; - break; - case mm1FaceNormal: - mmode = mmTangentPlane; - break; - default: - bReUsed = false; - break; + switch (mmode) { + case mmDeactivated: + throw ExceptionCancel(); // to be handled in positionBySupport, to not do anything if + // disabled + case mm1AxisX: + mmode = mmObjectYZ; + break; + case mm1AxisY: + mmode = mmObjectXZ; + break; + case mm1AxisZ: + mmode = mmObjectXY; + break; + case mm1AxisCurv: + mmode = mmRevolutionSection; + // the line should go along Y, not Z + presuperPlacement.setRotation( + Base::Rotation(Base::Vector3d(0.0, 0.0, 1.0), Base::Vector3d(0.0, 1.0, 0.0))); + break; + case mm1Binormal: + mmode = mmFrenetTN; + break; + case mm1Normal: + mmode = mmFrenetTB; + break; + case mm1Tangent: + mmode = mmNormalToPath; + break; + case mm1FaceNormal: + mmode = mmTangentPlane; + break; + default: + bReUsed = false; + break; } Base::Placement plm; - if (!bReUsed){ + if (!bReUsed) { std::vector parts; std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(this->references, parts, shapes, copiedShapeStorage, types); + readLinks(objs, subs, parts, shapes, copiedShapeStorage, types); - if (parts.empty()) + if (parts.empty()) { throw ExceptionCancel(); + } - //common stuff for all map modes - gp_Pnt refOrg (0.0,0.0,0.0); + // common stuff for all map modes + gp_Pnt refOrg(0.0, 0.0, 0.0); Base::Placement Place = parts[0]->Placement.getValue(); refOrg = gp_Pnt(Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); - //variables to derive the actual placement. - //They are to be set, depending on the mode: + // variables to derive the actual placement. + // They are to be set, depending on the mode: gp_Dir LineDir; - gp_Pnt LineBasePoint; //the point the line goes through + gp_Pnt LineBasePoint; // the point the line goes through switch (mmode) { - case mm1AxisInertia1: - case mm1AxisInertia2: - case mm1AxisInertia3:{ - GProp_GProps gpr = AttachEngine::getInertialPropsOfShape(shapes); - LineBasePoint = gpr.CentreOfMass(); - GProp_PrincipalProps pr = gpr.PrincipalProperties(); - if (pr.HasSymmetryPoint()) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia tensor is trivial, principal axes are undefined."); - - //query moments, to use them to check if axis is defined - //See AttachEngine3D::calculateAttachedPlacement:case mmInertial for comment explaining these comparisons - Standard_Real I1, I2, I3; - pr.Moments(I1,I2,I3); - Standard_Real d12, d23, d31; - d12 = fabs(I1-I2); - d23 = fabs(I2-I3); - d31 = fabs(I3-I1); - - if (mmode == mm1AxisInertia1){ - LineDir = pr.FirstAxisOfInertia(); - if (pr.HasSymmetryAxis() && !(d23 < d31 && d23 < d12)) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia tensor has axis of symmetry; first axis of inertia is undefined."); - } else if (mmode == mm1AxisInertia2) { - LineDir = pr.SecondAxisOfInertia(); - if (pr.HasSymmetryAxis() && !(d31 < d12 && d31 < d23)) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia tensor has axis of symmetry; second axis of inertia is undefined."); - } else if (mmode == mm1AxisInertia3) { - LineDir = pr.ThirdAxisOfInertia(); - if (pr.HasSymmetryAxis() && !(d12 < d23 && d12 < d31)) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia tensor has axis of symmetry; third axis of inertia is undefined."); - } - }break; - case mm1TwoPoints:{ - std::vector points; - - for (const auto & shape : shapes) { - const TopoDS_Shape &sh = *shape; - if (sh.IsNull()) - throw Base::ValueError("Null shape in AttachEngineLine::calculateAttachedPlacement()!"); - if (sh.ShapeType() == TopAbs_VERTEX){ - const TopoDS_Vertex &v = TopoDS::Vertex(sh); - points.push_back(BRep_Tool::Pnt(v)); - } else if (sh.ShapeType() == TopAbs_EDGE) { - const TopoDS_Edge &e = TopoDS::Edge(sh); - BRepAdaptor_Curve crv(e); - double u1 = crv.FirstParameter(); - double u2 = crv.LastParameter(); - if ( Precision::IsInfinite(u1) - || Precision::IsInfinite(u2) ){ - u1 = 0.0; - u2 = 1.0; - } - points.push_back(crv.Value(u1)); - points.push_back(crv.Value(u2)); + case mm1AxisInertia1: + case mm1AxisInertia2: + case mm1AxisInertia3: { + GProp_GProps gpr = AttachEngine::getInertialPropsOfShape(shapes); + LineBasePoint = gpr.CentreOfMass(); + GProp_PrincipalProps pr = gpr.PrincipalProperties(); + if (pr.HasSymmetryPoint()) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia " + "tensor is trivial, principal axes are undefined."); } - if (points.size() >= 2) - break; - } - if(points.size()<2) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: less than 2 points are specified, cannot derive the line."); + // query moments, to use them to check if axis is defined + // See AttachEngine3D::calculateAttachedPlacement:case mmInertial for comment + // explaining these comparisons + Standard_Real I1, I2, I3; + pr.Moments(I1, I2, I3); + Standard_Real d12, d23, d31; + d12 = fabs(I1 - I2); + d23 = fabs(I2 - I3); + d31 = fabs(I3 - I1); - gp_Pnt p0 = points[0]; - gp_Pnt p1 = points[1]; + if (mmode == mm1AxisInertia1) { + LineDir = pr.FirstAxisOfInertia(); + if (pr.HasSymmetryAxis() && !(d23 < d31 && d23 < d12)) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia " + "tensor has axis of symmetry; first axis of inertia is undefined."); + } + } + else if (mmode == mm1AxisInertia2) { + LineDir = pr.SecondAxisOfInertia(); + if (pr.HasSymmetryAxis() && !(d31 < d12 && d31 < d23)) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia " + "tensor has axis of symmetry; second axis of inertia is undefined."); + } + } + else if (mmode == mm1AxisInertia3) { + LineDir = pr.ThirdAxisOfInertia(); + if (pr.HasSymmetryAxis() && !(d12 < d23 && d12 < d31)) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement:AxisOfInertia: inertia " + "tensor has axis of symmetry; third axis of inertia is undefined."); + } + } + } break; + case mm1TwoPoints: { + std::vector points; - LineDir = gp_Dir(gp_Vec(p0,p1)); - LineBasePoint = p0; + for (const auto & shape : shapes) { + const TopoDS_Shape &sh = *shape; + if (sh.IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngineLine::calculateAttachedPlacement()!"); + } + if (sh.ShapeType() == TopAbs_VERTEX) { + const TopoDS_Vertex& v = TopoDS::Vertex(sh); + points.push_back(BRep_Tool::Pnt(v)); + } + else if (sh.ShapeType() == TopAbs_EDGE) { + const TopoDS_Edge& e = TopoDS::Edge(sh); + BRepAdaptor_Curve crv(e); + double u1 = crv.FirstParameter(); + double u2 = crv.LastParameter(); + if (Precision::IsInfinite(u1) || Precision::IsInfinite(u2)) { + u1 = 0.0; + u2 = 1.0; + } + points.push_back(crv.Value(u1)); + points.push_back(crv.Value(u2)); + } + if (points.size() >= 2) { + break; + } + } - }break; - case mm1Asymptote1: - case mm1Asymptote2:{ - if (shapes[0]->IsNull()) - throw Base::ValueError("Null shape in AttachEngineLine::calculateAttachedPlacement()!"); - const TopoDS_Edge &e = TopoDS::Edge(*(shapes[0])); - BRepAdaptor_Curve adapt (e); - if (adapt.GetType() != GeomAbs_Hyperbola) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: Asymptotes are available only for hyperbola-shaped edges, the one supplied is not."); - gp_Hypr hyp = adapt.Hyperbola(); - if (mmode == mm1Asymptote1) - LineDir = hyp.Asymptote1().Direction(); - else - LineDir = hyp.Asymptote2().Direction(); - LineBasePoint = hyp.Location(); - }break; - case mm1Directrix1: - case mm1Directrix2:{ - if (shapes[0]->IsNull()) - throw Base::ValueError("Null shape in AttachEngineLine::calculateAttachedPlacement()!"); - const TopoDS_Edge &e = TopoDS::Edge(*(shapes[0])); - BRepAdaptor_Curve adapt (e); - gp_Ax1 dx1, dx2;//vars to receive directrices - switch(adapt.GetType()){ - case GeomAbs_Ellipse:{ - gp_Elips cc = adapt.Ellipse(); - dx1 = cc.Directrix1(); - dx2 = cc.Directrix2(); - }break; - case GeomAbs_Hyperbola:{ - gp_Hypr cc = adapt.Hyperbola(); - dx1 = cc.Directrix1(); - dx2 = cc.Directrix2(); - }break; - case GeomAbs_Parabola:{ - gp_Parab cc = adapt.Parabola(); - dx1 = cc.Directrix(); - if (mmode == mm1Directrix2) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: Parabola has no second directrix"); - }break; + if (points.size() < 2) { + throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: less " + "than 2 points are specified, cannot derive the line."); + } + + gp_Pnt p0 = points[0]; + gp_Pnt p1 = points[1]; + + LineDir = gp_Dir(gp_Vec(p0, p1)); + LineBasePoint = p0; + + } break; + case mm1Asymptote1: + case mm1Asymptote2: { + if (shapes[0]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngineLine::calculateAttachedPlacement()!"); + } + TopoDS_Edge e; + try { + e = TopoDS::Edge(*(shapes[0])); + } + catch (...) { + } + if (e.IsNull()) { + throw Base::ValueError( + "Null edge in AttachEngineLine::calculateAttachedPlacement()!"); + } + BRepAdaptor_Curve adapt(e); + if (adapt.GetType() != GeomAbs_Hyperbola) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement: Asymptotes are available " + "only for hyperbola-shaped edges, the one supplied is not."); + } + gp_Hypr hyp = adapt.Hyperbola(); + if (mmode == mm1Asymptote1) { + LineDir = hyp.Asymptote1().Direction(); + } + else { + LineDir = hyp.Asymptote2().Direction(); + } + LineBasePoint = hyp.Location(); + } break; + case mm1Directrix1: + case mm1Directrix2: { + if (shapes[0]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngineLine::calculateAttachedPlacement()!"); + } + TopoDS_Edge e; + try { + e = TopoDS::Edge(*(shapes[0])); + } + catch (...) { + } + if (e.IsNull()) { + throw Base::ValueError( + "Null edge in AttachEngineLine::calculateAttachedPlacement()!"); + } + BRepAdaptor_Curve adapt(e); + gp_Ax1 dx1, dx2; // vars to receive directrices + switch (adapt.GetType()) { + case GeomAbs_Ellipse: { + gp_Elips cc = adapt.Ellipse(); + dx1 = cc.Directrix1(); + dx2 = cc.Directrix2(); + } break; + case GeomAbs_Hyperbola: { + gp_Hypr cc = adapt.Hyperbola(); + dx1 = cc.Directrix1(); + dx2 = cc.Directrix2(); + } break; + case GeomAbs_Parabola: { + gp_Parab cc = adapt.Parabola(); + dx1 = cc.Directrix(); + if (mmode == mm1Directrix2) { + throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: " + "Parabola has no second directrix"); + } + } break; + default: + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement: referenced edge is not " + "a conic section with a directrix"); + } + if (mmode == mm1Directrix1) { + LineDir = dx1.Direction(); + LineBasePoint = dx1.Location(); + } + else { + LineDir = dx2.Direction(); + LineBasePoint = dx2.Location(); + } + } break; + case mm1Intersection: { + if (shapes.size() < 2) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement: Intersection mode requires " + "two shapes; only one is supplied"); + } + if (shapes[0]->IsNull() || shapes[1]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngineLine::calculateAttachedPlacement()!"); + } + + const TopoDS_Face& face1 = TopoDS::Face(*(shapes[0])); + const TopoDS_Face& face2 = TopoDS::Face(*(shapes[1])); + + Handle(Geom_Surface) hSurf1 = BRep_Tool::Surface(face1); + Handle(Geom_Surface) hSurf2 = BRep_Tool::Surface(face2); + GeomAPI_IntSS intersector(hSurf1, hSurf2, Precision::Confusion()); + if (!intersector.IsDone()) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement: Intersection failed"); + } + + const Standard_Integer intLines = intersector.NbLines(); + if (intLines == 0) { + throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: The two " + "shapes don't intersect"); + } + if (intLines != 1) { + throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: " + "Intersection is not a single curve"); + } + + GeomAdaptor_Curve adapt(intersector.Line(1)); + if (adapt.GetType() != GeomAbs_Line) { + throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: " + "Intersection is not a straight line"); + } + + LineBasePoint = adapt.Line().Location(); + LineDir = adapt.Line().Direction(); + } break; + case mm1Proximity: { + if (shapes.size() < 2) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement: Proximity mode requires two " + "shapes; only one is supplied"); + } + if (shapes[0]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngineLine::calculateAttachedPlacement()!"); + } + if (shapes[1]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEngineLine::calculateAttachedPlacement()!"); + } + BRepExtrema_DistShapeShape distancer(*(shapes[0]), *(shapes[1])); + if (!distancer.IsDone()) { + throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: " + "proximity calculation failed."); + } + if (distancer.NbSolution() > 1) { + Base::Console().Warning("AttachEngineLine::calculateAttachedPlacement: " + "proximity calculation gave %i solutions, ambiguous.\n", + int(distancer.NbSolution())); + } + gp_Pnt p1 = distancer.PointOnShape1(1); + gp_Pnt p2 = distancer.PointOnShape2(1); + LineBasePoint = p1; + gp_Vec dist = gp_Vec(p1, p2); + if (dist.Magnitude() < Precision::Confusion()) { + throw Base::ValueError( + "AttachEngineLine::calculateAttachedPlacement: can't make proximity line, " + "because shapes touch or intersect"); + } + LineDir = gp_Dir(dist); + } break; default: - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: referenced edge is not a conic section with a directrix"); - } - if (mmode == mm1Directrix1){ - LineDir = dx1.Direction(); - LineBasePoint = dx1.Location(); - } else { - LineDir = dx2.Direction(); - LineBasePoint = dx2.Location(); - } - }break; - case mm1Intersection:{ - if (shapes.size() < 2) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: Intersection mode requires two shapes; only one is supplied"); - if (shapes[0]->IsNull() || shapes[1]->IsNull()) - throw Base::ValueError("Null shape in AttachEngineLine::calculateAttachedPlacement()!"); - - const TopoDS_Face &face1 = TopoDS::Face(*(shapes[0])); - const TopoDS_Face &face2 = TopoDS::Face(*(shapes[1])); - - Handle(Geom_Surface) hSurf1 = BRep_Tool::Surface(face1); - Handle(Geom_Surface) hSurf2 = BRep_Tool::Surface(face2); - GeomAPI_IntSS intersector(hSurf1, hSurf2, Precision::Confusion()); - if (!intersector.IsDone()) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: Intersection failed"); - - const Standard_Integer intLines = intersector.NbLines(); - if (intLines == 0) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: The two shapes don't intersect"); - if (intLines != 1) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: Intersection is not a single curve"); - - GeomAdaptor_Curve adapt(intersector.Line(1)); - if (adapt.GetType() != GeomAbs_Line) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: Intersection is not a straight line"); - - LineBasePoint = adapt.Line().Location(); - LineDir = adapt.Line().Direction(); - }break; - case mm1Proximity:{ - if (shapes.size() < 2) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: Proximity mode requires two shapes; only one is supplied"); - if (shapes[0]->IsNull()) - throw Base::ValueError("Null shape in AttachEngineLine::calculateAttachedPlacement()!"); - if (shapes[1]->IsNull()) - throw Base::ValueError("Null shape in AttachEngineLine::calculateAttachedPlacement()!"); - BRepExtrema_DistShapeShape distancer (*(shapes[0]), *(shapes[1])); - if (!distancer.IsDone()) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: proximity calculation failed."); - if (distancer.NbSolution()>1) - Base::Console().Warning("AttachEngineLine::calculateAttachedPlacement: proximity calculation gave %i solutions, ambiguous.\n",int(distancer.NbSolution())); - gp_Pnt p1 = distancer.PointOnShape1(1); - gp_Pnt p2 = distancer.PointOnShape2(1); - LineBasePoint = p1; - gp_Vec dist = gp_Vec(p1,p2); - if (dist.Magnitude() < Precision::Confusion()) - throw Base::ValueError("AttachEngineLine::calculateAttachedPlacement: can't make proximity line, because shapes touch or intersect"); - LineDir = gp_Dir(dist); - }break; - default: - throwWrongMode(mmode); + throwWrongMode(mmode); } - plm = this->placementFactory(LineDir, gp_Vec(), LineBasePoint, refOrg, - /*useRefOrg_Line = */ true); - } else {//re-use 3d mode + plm = this->placementFactory(LineDir, + gp_Vec(), + LineBasePoint, + refOrg, + /*useRefOrg_Line = */ true); + } + else { // reuse 3d mode AttachEngine3D attacher3D; attacher3D.setUp(*this); attacher3D.mapMode = mmode; - attacher3D.attachmentOffset = Base::Placement(); //AttachmentOffset is applied separately here, afterwards. So we are resetting it in sub-attacher to avoid applying it twice! - plm = attacher3D.calculateAttachedPlacement(origPlacement); + attacher3D.attachmentOffset = + Base::Placement(); // AttachmentOffset is applied separately here, afterwards. So we + // are resetting it in sub-attacher to avoid applying it twice! + plm = attacher3D._calculateAttachedPlacement(objs, subs, origPlacement); plm *= presuperPlacement; } plm *= this->attachmentOffset; @@ -1997,125 +2393,164 @@ AttachEnginePoint *AttachEnginePoint::copy() const return p; } -Base::Placement AttachEnginePoint::calculateAttachedPlacement(const Base::Placement& origPlacement) const +Base::Placement +AttachEnginePoint::_calculateAttachedPlacement(const std::vector& objs, + const std::vector& subs, + const Base::Placement& origPlacement) const { eMapMode mmode = this->mapMode; - //modes that are mirrors of attacher3D: + // modes that are mirrors of attacher3D: bool bReUsed = true; - switch(mmode){ - case mmDeactivated: - throw ExceptionCancel();//to be handled in positionBySupport, to not do anything if disabled - case mm0Origin: - mmode = mmObjectXY; - break; - case mm0CenterOfCurvature: - mmode = mmRevolutionSection; - break; - case mm0OnEdge: - //todo: prevent thruPoint - mmode = mmNormalToPath; - break; - default: - bReUsed = false; + switch (mmode) { + case mmDeactivated: + throw ExceptionCancel(); // to be handled in positionBySupport, to not do anything if + // disabled + case mm0Origin: + mmode = mmObjectXY; + break; + case mm0CenterOfCurvature: + mmode = mmRevolutionSection; + break; + case mm0OnEdge: + // todo: prevent thruPoint + mmode = mmNormalToPath; + break; + default: + bReUsed = false; } Base::Placement plm; - if (!bReUsed){ + if (!bReUsed) { std::vector parts; std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(this->references, parts, shapes, copiedShapeStorage, types); + readLinks(objs, subs, parts, shapes, copiedShapeStorage, types); - if (parts.empty()) + if (parts.empty()) { throw ExceptionCancel(); + } - //variables to derive the actual placement. - //They are to be set, depending on the mode: - gp_Pnt BasePoint; //where to put the point + // variables to derive the actual placement. + // They are to be set, depending on the mode: + gp_Pnt BasePoint; // where to put the point switch (mmode) { - case mm0Vertex:{ - std::vector points; - assert(shapes.size()>0); + case mm0Vertex: { + std::vector points; + assert(!shapes.empty()); - const TopoDS_Shape &sh = *shapes[0]; - if (sh.IsNull()) - throw Base::ValueError("Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); - if (sh.ShapeType() == TopAbs_VERTEX){ - const TopoDS_Vertex &v = TopoDS::Vertex(sh); - BasePoint = BRep_Tool::Pnt(v); - } else if (sh.ShapeType() == TopAbs_EDGE) { - const TopoDS_Edge &e = TopoDS::Edge(sh); - BRepAdaptor_Curve crv(e); - double u = crv.FirstParameter(); - if(Precision::IsInfinite(u)) - throw Base::ValueError("Edge is infinite"); - BasePoint = crv.Value(u); - } + const TopoDS_Shape& sh = *shapes[0]; + if (sh.IsNull()) { + throw Base::ValueError( + "Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); + } + if (sh.ShapeType() == TopAbs_VERTEX) { + const TopoDS_Vertex& v = TopoDS::Vertex(sh); + BasePoint = BRep_Tool::Pnt(v); + } + else if (sh.ShapeType() == TopAbs_EDGE) { + const TopoDS_Edge& e = TopoDS::Edge(sh); + BRepAdaptor_Curve crv(e); + double u = crv.FirstParameter(); + if (Precision::IsInfinite(u)) { + throw Base::ValueError("Edge is infinite"); + } + BasePoint = crv.Value(u); + } - }break; - case mm0Focus1: - case mm0Focus2:{ - if (shapes[0]->IsNull()) - throw Base::ValueError("Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); - const TopoDS_Edge &e = TopoDS::Edge(*(shapes[0])); - BRepAdaptor_Curve adapt (e); - gp_Pnt f1, f2; - switch(adapt.GetType()){ - case GeomAbs_Ellipse:{ - gp_Elips cc = adapt.Ellipse(); - f1 = cc.Focus1(); - f2 = cc.Focus2(); - }break; - case GeomAbs_Hyperbola:{ - gp_Hypr cc = adapt.Hyperbola(); - f1 = cc.Focus1(); - f2 = cc.Focus2(); - }break; - case GeomAbs_Parabola:{ - gp_Parab cc = adapt.Parabola(); - f1 = cc.Focus(); - if (mmode == mm0Focus2) - throw Base::ValueError("AttachEnginePoint::calculateAttachedPlacement: Parabola has no second focus"); - }break; + } break; + case mm0Focus1: + case mm0Focus2: { + if (shapes[0]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); + } + TopoDS_Edge e; + try { + e = TopoDS::Edge(*(shapes[0])); + } + catch (...) { + } + if (e.IsNull()) { + throw Base::ValueError( + "Null edge in AttachEnginePoint::calculateAttachedPlacement()!"); + } + BRepAdaptor_Curve adapt(e); + gp_Pnt f1, f2; + switch (adapt.GetType()) { + case GeomAbs_Ellipse: { + gp_Elips cc = adapt.Ellipse(); + f1 = cc.Focus1(); + f2 = cc.Focus2(); + } break; + case GeomAbs_Hyperbola: { + gp_Hypr cc = adapt.Hyperbola(); + f1 = cc.Focus1(); + f2 = cc.Focus2(); + } break; + case GeomAbs_Parabola: { + gp_Parab cc = adapt.Parabola(); + f1 = cc.Focus(); + if (mmode == mm0Focus2) { + throw Base::ValueError("AttachEnginePoint::calculateAttachedPlacement: " + "Parabola has no second focus"); + } + } break; + default: + throw Base::ValueError( + "AttachEnginePoint::calculateAttachedPlacement: referenced edge is not " + "a conic section with a directrix"); + } + if (mmode == mm0Focus1) { + BasePoint = f1; + } + else { + BasePoint = f2; + } + } break; + case mm0ProximityPoint1: + case mm0ProximityPoint2: { + if (shapes.size() < 2) { + throw Base::ValueError( + "AttachEnginePoint::calculateAttachedPlacement: Proximity mode requires " + "two shapes; only one is supplied"); + } + if (shapes[0]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); + } + if (shapes[1]->IsNull()) { + throw Base::ValueError( + "Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); + } + + BasePoint = getProximityPoint(mmode, *(shapes[0]), *(shapes[1])); + } break; + case mm0CenterOfMass: { + GProp_GProps gpr = AttachEngine::getInertialPropsOfShape(shapes); + BasePoint = gpr.CentreOfMass(); + } break; default: - throw Base::ValueError("AttachEnginePoint::calculateAttachedPlacement: referenced edge is not a conic section with a directrix"); - } - if (mmode == mm0Focus1) - BasePoint = f1; - else - BasePoint = f2; - }break; - case mm0ProximityPoint1: - case mm0ProximityPoint2:{ - if (shapes.size() < 2) - throw Base::ValueError("AttachEnginePoint::calculateAttachedPlacement: Proximity mode requires two shapes; only one is supplied"); - if (shapes[0]->IsNull()) - throw Base::ValueError("Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); - if (shapes[1]->IsNull()) - throw Base::ValueError("Null shape in AttachEnginePoint::calculateAttachedPlacement()!"); - - BasePoint = getProximityPoint(mmode, *(shapes[0]), *(shapes[1])); - }break; - case mm0CenterOfMass:{ - GProp_GProps gpr = AttachEngine::getInertialPropsOfShape(shapes); - BasePoint = gpr.CentreOfMass(); - }break; - default: - throwWrongMode(mmode); + throwWrongMode(mmode); } - plm = this->placementFactory(gp_Vec(0.0,0.0,1.0), gp_Vec(1.0,0.0,0.0), BasePoint, gp_Pnt()); - } else {//re-use 3d mode + plm = this->placementFactory(gp_Vec(0.0, 0.0, 1.0), + gp_Vec(1.0, 0.0, 0.0), + BasePoint, + gp_Pnt()); + } + else { // reuse 3d mode AttachEngine3D attacher3D; attacher3D.setUp(*this); attacher3D.mapMode = mmode; - attacher3D.attachmentOffset = Base::Placement(); //AttachmentOffset is applied separately here, afterwards. So we are resetting it in sub-attacher to avoid applying it twice! - plm = attacher3D.calculateAttachedPlacement(origPlacement); + attacher3D.attachmentOffset = + Base::Placement(); // AttachmentOffset is applied separately here, afterwards. So we + // are resetting it in sub-attacher to avoid applying it twice! + plm = attacher3D._calculateAttachedPlacement(objs, subs, origPlacement); } plm *= this->attachmentOffset; return plm; diff --git a/src/Mod/Part/App/Attacher.h b/src/Mod/Part/App/Attacher.h index e580c71808..da086becbd 100644 --- a/src/Mod/Part/App/Attacher.h +++ b/src/Mod/Part/App/Attacher.h @@ -30,8 +30,10 @@ #include +#include #include #include +#include #include #include @@ -144,7 +146,7 @@ enum eRefType { }; -using refTypeString = std::vector; //a sequence of ref types, according to Support contents for example +using refTypeString = std::vector; //a sequence of ref types, according to AttachmentSupport contents for example using refTypeStringList = std::vector; //a set of type strings, defines which selection sets are supported by a certain mode @@ -222,7 +224,17 @@ public: //methods const Base::Placement &attachmentOffset = Base::Placement()); virtual void setUp(const AttachEngine &another); virtual AttachEngine* copy() const = 0; - virtual Base::Placement calculateAttachedPlacement(const Base::Placement& origPlacement) const = 0; + + Base::Placement calculateAttachedPlacement( + const Base::Placement &origPlacement, bool *subChanged=0); + + virtual Base::Placement _calculateAttachedPlacement( + const std::vector &objs, + const std::vector &subs, + const Base::Placement &origPlacement) const = 0; + + void setReferences(const App::PropertyLinkSubList &references); + void setReferences(const std::vector &references); /** * @brief placementFactory calculates placement from Z axis direction, @@ -348,6 +360,9 @@ public://helper functions that may be useful outside of the class static GProp_GProps getInertialPropsOfShape(const std::vector &shapes); + std::vector getRefObjects() const; + const std::vector &getSubValues() const {return subnames;} + /** * @brief verifyReferencesAreSafe: checks if pointers in references still * point to objects contained in open documents. This guarantees the links @@ -361,7 +376,10 @@ public: //enums public: //members - App::PropertyLinkSubList references; + std::string docName; + std::vector objNames; + std::vector subnames; + std::vector shadowSubs; eMapMode mapMode = mmDeactivated; bool mapReverse = false; @@ -405,7 +423,8 @@ protected: ret.push_back(rt4); return ret; } - static void readLinks(const App::PropertyLinkSubList &references, std::vector &geofs, + static void readLinks(const std::vector &objs, + const std::vector &subs, std::vector &geofs, std::vector& shapes, std::vector &storage, std::vector &types); @@ -420,7 +439,10 @@ class PartExport AttachEngine3D : public AttachEngine public: AttachEngine3D(); AttachEngine3D* copy() const override; - Base::Placement calculateAttachedPlacement(const Base::Placement& origPlacement) const override; + Base::Placement _calculateAttachedPlacement( + const std::vector &objs, + const std::vector &subs, + const Base::Placement &origPlacement) const override; private: double calculateFoldAngle(gp_Vec axA, gp_Vec axB, gp_Vec edA, gp_Vec edB) const; }; @@ -432,7 +454,10 @@ class PartExport AttachEnginePlane : public AttachEngine public: AttachEnginePlane(); AttachEnginePlane* copy() const override; - Base::Placement calculateAttachedPlacement(const Base::Placement& origPlacement) const override; + Base::Placement _calculateAttachedPlacement( + const std::vector &objs, + const std::vector &subs, + const Base::Placement &origPlacement) const override; }; //attacher specialized for datum lines @@ -442,7 +467,10 @@ class PartExport AttachEngineLine : public AttachEngine public: AttachEngineLine(); AttachEngineLine* copy() const override; - Base::Placement calculateAttachedPlacement(const Base::Placement& origPlacement) const override; + Base::Placement _calculateAttachedPlacement( + const std::vector &objs, + const std::vector &subs, + const Base::Placement &origPlacement) const override; }; //attacher specialized for datum points @@ -452,7 +480,10 @@ class PartExport AttachEnginePoint : public AttachEngine public: AttachEnginePoint(); AttachEnginePoint* copy() const override; - Base::Placement calculateAttachedPlacement(const Base::Placement& origPlacement) const override; + Base::Placement _calculateAttachedPlacement( + const std::vector &objs, + const std::vector &subs, + const Base::Placement &origPlacement) const override; private: gp_Pnt getProximityPoint(eMapMode mode, const TopoDS_Shape& s1, const TopoDS_Shape& s2) const; diff --git a/src/Mod/Part/App/BRepMesh.cpp b/src/Mod/Part/App/BRepMesh.cpp new file mode 100644 index 0000000000..1f1dd87246 --- /dev/null +++ b/src/Mod/Part/App/BRepMesh.cpp @@ -0,0 +1,324 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +/*************************************************************************** + * Copyright (c) 2024 Werner Mayer * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + + +#include "PreCompiled.h" +#ifndef _PreComp_ +#include +#include +#endif + +#include "BRepMesh.h" +#include + +using namespace Part; + +namespace { +struct MeshVertex +{ + Base::Vector3d p; + std::size_t i = 0; + + explicit MeshVertex(const Base::Vector3d& p) + : p(p) + { + } + + Base::Vector3d toPoint() const + { + return p; + } + + bool operator < (const MeshVertex &v) const + { + if (p.x != v.p.x) { + return p.x < v.p.x; + } + if (p.y != v.p.y) { + return p.y < v.p.y; + } + if (p.z != v.p.z) { + return p.z < v.p.z; + } + + // points are equal + return false; + } +}; + +class MergeVertex +{ +public: + using Facet = BRepMesh::Facet; + + MergeVertex(std::vector points, + std::vector faces, + double tolerance) + : points{std::move(points)} + , faces{std::move(faces)} + , tolerance{tolerance} + { + setDefaultMap(); + check(); + } + + bool hasDuplicatedPoints() const + { + return duplicatedPoints > 0; + } + + void mergeDuplicatedPoints() + { + if (!hasDuplicatedPoints()) { + return; + } + + redirectPointIndex(); + auto degreeMap = getPointDegrees(); + decrementPointIndex(degreeMap); + removeUnusedPoints(degreeMap); + reset(); + } + + std::vector getPoints() const + { + return points; + } + + std::vector getFacets() const + { + return faces; + } + +private: + void setDefaultMap() + { + // by default map point index to itself + mapPointIndex.resize(points.size()); + std::generate(mapPointIndex.begin(), + mapPointIndex.end(), + Base::iotaGen(0)); + } + + void reset() + { + mapPointIndex.clear(); + duplicatedPoints = 0; + } + + void check() + { + using VertexIterator = std::vector::const_iterator; + + double tol3d = tolerance; + auto vertexLess = [tol3d](const VertexIterator& v1, + const VertexIterator& v2) + { + if (fabs(v1->x - v2->x) >= tol3d) { + return v1->x < v2->x; + } + if (fabs(v1->y - v2->y) >= tol3d) { + return v1->y < v2->y; + } + if (fabs(v1->z - v2->z) >= tol3d) { + return v1->z < v2->z; + } + return false; // points are considered to be equal + }; + auto vertexEqual = [&](const VertexIterator& v1, + const VertexIterator& v2) + { + if (vertexLess(v1, v2)) { + return false; + } + if (vertexLess(v2, v1)) { + return false; + } + return true; + }; + + std::vector vertices; + vertices.reserve(points.size()); + for (auto it = points.cbegin(); it != points.cend(); ++it) { + vertices.push_back(it); + } + + std::sort(vertices.begin(), vertices.end(), vertexLess); + + auto next = vertices.begin(); + while (next != vertices.end()) { + next = std::adjacent_find(next, vertices.end(), vertexEqual); + if (next != vertices.end()) { + auto first = next; + std::size_t first_index = *first - points.begin(); + ++next; + while (next != vertices.end() && vertexEqual(*first, *next)) { + std::size_t next_index = *next - points.begin(); + mapPointIndex[next_index] = first_index; + ++duplicatedPoints; + ++next; + } + } + } + } + + void redirectPointIndex() + { + for (auto& face : faces) { + face.I1 = int(mapPointIndex[face.I1]); + face.I2 = int(mapPointIndex[face.I2]); + face.I3 = int(mapPointIndex[face.I3]); + } + } + + std::vector getPointDegrees() const + { + std::vector degreeMap; + degreeMap.resize(points.size()); + for (const auto& face : faces) { + degreeMap[face.I1]++; + degreeMap[face.I2]++; + degreeMap[face.I3]++; + } + + return degreeMap; + } + + void decrementPointIndex(const std::vector& degreeMap) + { + std::vector decrements; + decrements.resize(points.size()); + + std::size_t decr = 0; + for (std::size_t pos = 0; pos < points.size(); pos++) { + decrements[pos] = decr; + if (degreeMap[pos] == 0) { + decr++; + } + } + + for (auto& face : faces) { + face.I1 -= int(decrements[face.I1]); + face.I2 -= int(decrements[face.I2]); + face.I3 -= int(decrements[face.I3]); + } + } + + void removeUnusedPoints(const std::vector& degreeMap) + { + // remove unreferenced points + std::vector new_points; + new_points.reserve(points.size() - duplicatedPoints); + for (std::size_t pos = 0; pos < points.size(); ++pos) { + if (degreeMap[pos] > 0) { + new_points.push_back(points[pos]); + } + } + + points.swap(new_points); + } + +private: + std::vector points; + std::vector faces; + double tolerance = 0.0; + std::size_t duplicatedPoints = 0; + std::vector mapPointIndex; +}; + +} + +void BRepMesh::getFacesFromDomains(const std::vector& domains, + std::vector& points, + std::vector& faces) +{ + std::size_t numFaces = 0; + for (const auto& it : domains) { + numFaces += it.facets.size(); + } + faces.reserve(numFaces); + + std::set vertices; + auto addVertex = [&vertices](const Base::Vector3d& pnt, uint32_t& pointIndex) { + MeshVertex vertex(pnt); + vertex.i = vertices.size(); + auto it = vertices.insert(vertex); + pointIndex = it.first->i; + }; + + for (const auto & domain : domains) { + std::size_t numDomainFaces = 0; + for (const Facet& df : domain.facets) { + Facet face; + + // 1st vertex + addVertex(domain.points[df.I1], face.I1); + + // 2nd vertex + addVertex(domain.points[df.I2], face.I2); + + // 3rd vertex + addVertex(domain.points[df.I3], face.I3); + + // make sure that we don't insert invalid facets + if (face.I1 != face.I2 && + face.I2 != face.I3 && + face.I3 != face.I1) { + faces.push_back(face); + numDomainFaces++; + } + } + + domainSizes.push_back(numDomainFaces); + } + + std::vector meshPoints; + meshPoints.resize(vertices.size()); + for (const auto & vertex : vertices) { + meshPoints[vertex.i] = vertex.toPoint(); + } + points.swap(meshPoints); + + MergeVertex merge(points, faces, Precision::Confusion()); + if (merge.hasDuplicatedPoints()) { + merge.mergeDuplicatedPoints(); + points = merge.getPoints(); + faces = merge.getFacets(); + } +} + +std::vector BRepMesh::createSegments() const +{ + std::size_t numMeshFaces = 0; + std::vector segm; + for (size_t numDomainFaces : domainSizes) { + Segment segment(numDomainFaces); + std::generate(segment.begin(), + segment.end(), + Base::iotaGen(numMeshFaces)); + numMeshFaces += numDomainFaces; + segm.push_back(segment); + } + + return segm; +} diff --git a/src/Mod/Part/App/BRepMesh.h b/src/Mod/Part/App/BRepMesh.h new file mode 100644 index 0000000000..e5edeaa9fe --- /dev/null +++ b/src/Mod/Part/App/BRepMesh.h @@ -0,0 +1,50 @@ +// 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 PART_BREPMESH_H +#define PART_BREPMESH_H + +#include +#include + +namespace Part { + +class PartExport BRepMesh +{ +public: + using Facet = Data::ComplexGeoData::Facet; + using Domain = Data::ComplexGeoData::Domain; + using Segment = std::vector; + + void getFacesFromDomains(const std::vector& domains, + std::vector& points, + std::vector& faces); + std::vector createSegments() const; + +private: + std::vector domainSizes; +}; + +} + +#endif // PART_BREPMESH_H diff --git a/src/Mod/Part/App/CMakeLists.txt b/src/Mod/Part/App/CMakeLists.txt index 1a85f3b620..ab4cd149a9 100644 --- a/src/Mod/Part/App/CMakeLists.txt +++ b/src/Mod/Part/App/CMakeLists.txt @@ -500,6 +500,8 @@ SET(Part_SRCS Attacher.h AppPart.cpp AppPartPy.cpp + BRepMesh.cpp + BRepMesh.h BRepOffsetAPI_MakeOffsetFix.cpp BRepOffsetAPI_MakeOffsetFix.h BSplineCurveBiArcs.cpp diff --git a/src/Mod/Part/App/ConePyImp.cpp b/src/Mod/Part/App/ConePyImp.cpp index cfc127199f..b4a4241a75 100644 --- a/src/Mod/Part/App/ConePyImp.cpp +++ b/src/Mod/Part/App/ConePyImp.cpp @@ -118,7 +118,7 @@ int ConePy::PyInit(PyObject* args, PyObject* kwds) PyObject *pCone; static const std::array keywords_c{"Cone", nullptr}; PyErr_Clear(); - if (Base::Wrapped_ParseTupleAndKeywords(args, kwds, "O!d", keywords_c, + if (Base::Wrapped_ParseTupleAndKeywords(args, kwds, "O!", keywords_c, &(ConePy::Type), &pCone)) { ConePy* pcCone = static_cast(pCone); Handle(Geom_ConicalSurface) pcone = Handle(Geom_ConicalSurface)::DownCast @@ -138,7 +138,6 @@ int ConePy::PyInit(PyObject* args, PyObject* kwds) PyErr_SetString(PyExc_TypeError, "Cone constructor accepts:\n" "-- empty parameter list\n" "-- Cone\n" - "-- Cone, Distance\n" "-- Point1, Point2, Radius1, Radius2\n" "-- Point1, Point2, Point3, Point4"); return -1; diff --git a/src/Mod/Part/App/DatumFeature.cpp b/src/Mod/Part/App/DatumFeature.cpp index 8d39d265fd..c24e3e2276 100644 --- a/src/Mod/Part/App/DatumFeature.cpp +++ b/src/Mod/Part/App/DatumFeature.cpp @@ -44,7 +44,7 @@ Datum::~Datum() = default; void Datum::onDocumentRestored() { // This seems to be the only way to make the ViewProvider display the datum feature - Support.touch(); + AttachmentSupport.touch(); Part::Feature::onDocumentRestored(); } @@ -83,8 +83,3 @@ App::DocumentObject *Datum::getSubObject(const char *subname, Base::Vector3d Datum::getBasePoint () const { return Placement.getValue().getPosition(); } - -void Datum::handleChangedPropertyName(Base::XMLReader &reader, const char* TypeName, const char* PropName) -{ - extHandleChangedPropertyName(reader, TypeName, PropName); // AttachExtension -} diff --git a/src/Mod/Part/App/DatumFeature.h b/src/Mod/Part/App/DatumFeature.h index c7fd739948..bc665cb92d 100644 --- a/src/Mod/Part/App/DatumFeature.h +++ b/src/Mod/Part/App/DatumFeature.h @@ -55,7 +55,6 @@ public: Base::Matrix4D *mat, bool transform, int depth) const override; protected: void onDocumentRestored() override; - void handleChangedPropertyName(Base::XMLReader &reader, const char* TypeName, const char* PropName) override; }; } //namespace Part diff --git a/src/Mod/Part/App/ExtrusionHelper.cpp b/src/Mod/Part/App/ExtrusionHelper.cpp index c6128cce1b..191d260dc5 100644 --- a/src/Mod/Part/App/ExtrusionHelper.cpp +++ b/src/Mod/Part/App/ExtrusionHelper.cpp @@ -41,10 +41,14 @@ #include #include +#include +#include +// #include #include "ExtrusionHelper.h" +#include "TopoShape.h" #include "BRepOffsetAPI_MakeOffsetFix.h" - +#include "Geometry.h" using namespace Part; @@ -477,3 +481,130 @@ void ExtrusionHelper::createTaperedPrismOffset(TopoDS_Wire sourceWire, } } + +void ExtrusionHelper::makeElementDraft(const ExtrusionParameters& params, + const TopoShape& _shape, + std::vector& drafts) +{ + double distanceFwd = tan(params.taperAngleFwd) * params.lengthFwd; + double distanceRev = tan(params.taperAngleRev) * params.lengthRev; + + gp_Vec vecFwd = gp_Vec(params.dir) * params.lengthFwd; + gp_Vec vecRev = gp_Vec(params.dir.Reversed()) * params.lengthRev; + + bool bFwd = fabs(params.lengthFwd) > Precision::Confusion(); + bool bRev = fabs(params.lengthRev) > Precision::Confusion(); + bool bMid = !bFwd || !bRev + || params.lengthFwd * params.lengthRev > 0.0; // include the source shape as loft section? + + TopoShape shape = _shape; + TopoShape sourceWire; + if (shape.isNull()) { + Standard_Failure::Raise("Not a valid shape"); + } + + if (params.solid && !shape.hasSubShape(TopAbs_FACE)) { + shape = shape.makeElementFace(nullptr, params.faceMakerClass.c_str()); + } + + if (shape.shapeType() == TopAbs_FACE) { + std::vector wires; + TopoShape outerWire = shape.splitWires(&wires, TopoShape::ReorientForward); + if (outerWire.isNull()) { + Standard_Failure::Raise("Missing outer wire"); + } + if (wires.empty()) { + shape = outerWire; + } + else { + unsigned pos = drafts.size(); + makeElementDraft(params, outerWire, drafts); + if (drafts.size() != pos + 1) { + Standard_Failure::Raise("Failed to make drafted extrusion"); + } + std::vector inner; + TopoShape innerWires(0); + innerWires.makeElementCompound( + wires, + "", + TopoShape::SingleShapeCompoundCreationPolicy::returnShape); + makeElementDraft(params, innerWires, inner); + if (inner.empty()) { + Standard_Failure::Raise("Failed to make drafted extrusion with inner hole"); + } + inner.insert(inner.begin(), drafts.back()); + drafts.back().makeElementCut(inner); + return; + } + } + + if (shape.shapeType() == TopAbs_WIRE) { + ShapeFix_Wire aFix; + aFix.Load(TopoDS::Wire(shape.getShape())); + aFix.FixReorder(); + aFix.FixConnected(); + aFix.FixClosed(); + sourceWire.setShape(aFix.Wire()); + sourceWire.Tag = shape.Tag; + sourceWire.mapSubElement(shape); + } + else if (shape.shapeType() == TopAbs_COMPOUND) { + for (auto& s : shape.getSubTopoShapes()) { + makeElementDraft(params, s, drafts); + } + } + else { + Standard_Failure::Raise("Only a wire or a face is supported"); + } + + if (!sourceWire.isNull()) { + std::vector list_of_sections; + if (bRev) { + TopoDS_Wire offsetWire; + createTaperedPrismOffset(TopoDS::Wire(sourceWire.getShape()), + vecRev, + distanceRev, + false, + offsetWire); + list_of_sections.push_back(TopoShape(offsetWire, sourceWire.Tag)); + } + + // next. Add source wire as middle section. Order is important. + if (bMid) { + list_of_sections.push_back(sourceWire); + } + + // finally. Forward extrusion offset wire. + if (bFwd) { + TopoDS_Wire offsetWire; + createTaperedPrismOffset(TopoDS::Wire(sourceWire.getShape()), + vecFwd, + distanceFwd, + false, + offsetWire); + list_of_sections.push_back(TopoShape(offsetWire, sourceWire.Tag)); + } + + try { +#if defined(__GNUC__) && defined(FC_OS_LINUX) + Base::SignalException se; +#endif + + // make loft + BRepOffsetAPI_ThruSections mkGenerator(params.solid ? Standard_True : Standard_False, + /*ruled=*/Standard_True); + for (auto& s : list_of_sections) { + mkGenerator.AddWire(TopoDS::Wire(s.getShape())); + } + + mkGenerator.Build(); + drafts.push_back(TopoShape(0).makeElementShape(mkGenerator, list_of_sections)); + } + catch (Standard_Failure&) { + throw; + } + catch (...) { + throw Base::CADKernelError("Unknown exception from BRepOffsetAPI_ThruSections"); + } + } +} diff --git a/src/Mod/Part/App/ExtrusionHelper.h b/src/Mod/Part/App/ExtrusionHelper.h index 90c24eab59..bff010a94d 100644 --- a/src/Mod/Part/App/ExtrusionHelper.h +++ b/src/Mod/Part/App/ExtrusionHelper.h @@ -34,6 +34,24 @@ namespace Part { +class TopoShape; + +/** + * @brief The ExtrusionParameters struct is supposed to be filled with final + * extrusion parameters, after resolving links, applying mode logic, + * reversing, etc., and be passed to extrudeShape. + */ +struct ExtrusionParameters +{ + gp_Dir dir; + double lengthFwd {0}; + double lengthRev {0}; + bool solid {false}; + double taperAngleFwd {0}; // in radians + double taperAngleRev {0}; + std::string faceMakerClass; +}; + class PartExport ExtrusionHelper { public: @@ -68,6 +86,10 @@ public: double offset, bool isSecond, TopoDS_Wire& result); + /** Same as makeDraft() with support of element mapping + */ + static void + makeElementDraft(const ExtrusionParameters& params, const TopoShape&, std::vector&); }; } //namespace Part diff --git a/src/Mod/Part/App/FaceMakerBullseye.cpp b/src/Mod/Part/App/FaceMakerBullseye.cpp index 1937ae69d8..72ac281225 100644 --- a/src/Mod/Part/App/FaceMakerBullseye.cpp +++ b/src/Mod/Part/App/FaceMakerBullseye.cpp @@ -71,7 +71,7 @@ void FaceMakerBullseye::Build_Essence() //validity check for (TopoDS_Wire& w : myWires) { if (!BRep_Tool::IsClosed(w)) - throw Base::ValueError("Wire is not closed."); + throw Base::ValueError(QT_TRANSLATE_NOOP("Exception", "Wire is not closed.")); } diff --git a/src/Mod/Part/App/FeatureChamfer.cpp b/src/Mod/Part/App/FeatureChamfer.cpp index 1ba61d65f3..45ee4f748a 100644 --- a/src/Mod/Part/App/FeatureChamfer.cpp +++ b/src/Mod/Part/App/FeatureChamfer.cpp @@ -32,6 +32,7 @@ #endif #include "FeatureChamfer.h" +#include "TopoShapeOpCode.h" using namespace Part; @@ -47,12 +48,14 @@ App::DocumentObjectExecReturn *Chamfer::execute() return new App::DocumentObjectExecReturn("No object linked"); try { + TopoShape baseTopoShape = Feature::getTopoShape(link); auto baseShape = Feature::getShape(link); BRepFilletAPI_MakeChamfer mkChamfer(baseShape); - TopTools_IndexedMapOfShape mapOfEdges; TopTools_IndexedDataMapOfShapeListOfShape mapEdgeFace; TopExp::MapShapesAndAncestors(baseShape, TopAbs_EDGE, TopAbs_FACE, mapEdgeFace); + TopTools_IndexedMapOfShape mapOfEdges; TopExp::MapShapes(baseShape, TopAbs_EDGE, mapOfEdges); +#ifndef FC_USE_TNP_FIX std::vector values = Edges.getValues(); for (const auto & value : values) { @@ -89,6 +92,39 @@ App::DocumentObjectExecReturn *Chamfer::execute() prop.touch(); return App::DocumentObject::StdReturn; +#else + const auto &vals = EdgeLinks.getSubValues(); + const auto &subs = EdgeLinks.getShadowSubs(); + if(subs.size()!=(size_t)Edges.getSize()) + return new App::DocumentObjectExecReturn("Edge link size mismatch"); + size_t i=0; + for(const auto &info : Edges.getValues()) { + auto &sub = subs[i]; + auto &ref = sub.first.size()?sub.first:vals[i]; + ++i; + // Toponaming project March 2024: Replaced this code because it wouldn't work: +// TopoDS_Shape edge; +// try { +// edge = baseTopoShape.getSubShape(ref.c_str()); +// }catch(...){} + auto id = Data::MappedName(ref.c_str()).toIndexedName().getIndex(); + const TopoDS_Edge& edge = TopoDS::Edge(mapOfEdges.FindKey(id)); + if(edge.IsNull()) + return new App::DocumentObjectExecReturn("Invalid edge link"); + double radius1 = info.radius1; + double radius2 = info.radius2; + const TopoDS_Face& face = TopoDS::Face(mapEdgeFace.FindFromKey(edge).First()); + mkChamfer.Add(radius1, radius2, TopoDS::Edge(edge), face); + } + + TopoDS_Shape shape = mkChamfer.Shape(); + if (shape.IsNull()) + return new App::DocumentObjectExecReturn("Resulting shape is null"); + + TopoShape res(0); + this->Shape.setValue(res.makeElementShape(mkChamfer,baseTopoShape,Part::OpCodes::Chamfer)); + return Part::Feature::execute(); +#endif } catch (Standard_Failure& e) { return new App::DocumentObjectExecReturn(e.GetMessageString()); diff --git a/src/Mod/Part/App/FeatureExtrusion.cpp b/src/Mod/Part/App/FeatureExtrusion.cpp index 53b72a5bf6..ae12b30f2c 100644 --- a/src/Mod/Part/App/FeatureExtrusion.cpp +++ b/src/Mod/Part/App/FeatureExtrusion.cpp @@ -127,9 +127,9 @@ bool Extrusion::fetchAxisLink(const App::PropertyLinkSub& axisLink, Base::Vector return true; } -Extrusion::ExtrusionParameters Extrusion::computeFinalParameters() +ExtrusionParameters Extrusion::computeFinalParameters() { - Extrusion::ExtrusionParameters result; + ExtrusionParameters result; Base::Vector3d dir; switch (this->DirMode.getValue()) { case dmCustom: @@ -229,11 +229,10 @@ Base::Vector3d Extrusion::calculateShapeNormal(const App::PropertyLink& shapeLin return Base::Vector3d(normal.X(), normal.Y(), normal.Z()); } -TopoShape Extrusion::extrudeShape(const TopoShape& source, const Extrusion::ExtrusionParameters& params) +void Extrusion::extrudeShape(TopoShape &result, const TopoShape &source, const ExtrusionParameters& params) { - TopoDS_Shape result; gp_Vec vec = gp_Vec(params.dir).Multiplied(params.lengthFwd + params.lengthRev);//total vector of extrusion - +#ifndef FC_USE_TNP_FIX if (std::fabs(params.taperAngleFwd) >= Precision::Angular() || std::fabs(params.taperAngleRev) >= Precision::Angular()) { //Tapered extrusion! @@ -306,20 +305,72 @@ TopoShape Extrusion::extrudeShape(const TopoShape& source, const Extrusion::Extr result = mkPrism.Shape(); } - if (result.IsNull()) + if (result.isNull()) throw NullShapeException("Result of extrusion is null shape."); - return TopoShape(result); +// return TopoShape(result); +#else + + // #0000910: Circles Extrude Only Surfaces, thus use BRepBuilderAPI_Copy + TopoShape myShape(source.makeElementCopy()); + + if (std::fabs(params.taperAngleFwd) >= Precision::Angular() + || std::fabs(params.taperAngleRev) >= Precision::Angular()) { + // Tapered extrusion! +#if defined(__GNUC__) && defined(FC_OS_LINUX) + Base::SignalException se; +#endif + std::vector drafts; + ExtrusionHelper::makeElementDraft(params, myShape, drafts); + if (drafts.empty()) { + Standard_Failure::Raise("Drafting shape failed"); + } + else { + result.makeElementCompound(drafts, + 0, + TopoShape::SingleShapeCompoundCreationPolicy::returnShape); + } + } + else { + // Regular (non-tapered) extrusion! + if (source.isNull()) { + Standard_Failure::Raise("Cannot extrude empty shape"); + } + + // apply reverse part of extrusion by shifting the source shape + if (fabs(params.lengthRev) > Precision::Confusion()) { + gp_Trsf mov; + mov.SetTranslation(gp_Vec(params.dir) * (-params.lengthRev)); + myShape = myShape.makeElementTransform(mov); + } + + // make faces from wires + if (params.solid) { + // test if we need to make faces from wires. If there are faces - we don't. + if (!myShape.hasSubShape(TopAbs_FACE)) { + if (!myShape.Hasher) { + myShape.Hasher = result.Hasher; + } + myShape = myShape.makeElementFace(nullptr, params.faceMakerClass.c_str()); + } + } + + // extrude! + result.makeElementPrism(myShape, vec); + } +#endif } App::DocumentObjectExecReturn* Extrusion::execute() { App::DocumentObject* link = Base.getValue(); - if (!link) + if (!link) { return new App::DocumentObjectExecReturn("No object linked"); + } try { - Extrusion::ExtrusionParameters params = computeFinalParameters(); - TopoShape result = extrudeShape(Feature::getShape(link), params); + ExtrusionParameters params = computeFinalParameters(); + TopoShape result(0); + extrudeShape(result, Feature::getTopoShape(link), params); this->Shape.setValue(result); return App::DocumentObject::StdReturn; } diff --git a/src/Mod/Part/App/FeatureExtrusion.h b/src/Mod/Part/App/FeatureExtrusion.h index 0101972b60..eb1c976f7a 100644 --- a/src/Mod/Part/App/FeatureExtrusion.h +++ b/src/Mod/Part/App/FeatureExtrusion.h @@ -28,7 +28,7 @@ #include "FaceMakerCheese.h" #include "PartFeature.h" - +#include "ExtrusionHelper.h" namespace Part { @@ -53,22 +53,6 @@ public: App::PropertyAngle TaperAngleRev; App::PropertyString FaceMakerClass; - - /** - * @brief The ExtrusionParameters struct is supposed to be filled with final - * extrusion parameters, after resolving links, applying mode logic, - * reversing, etc., and be passed to extrudeShape. - */ - struct ExtrusionParameters { - gp_Dir dir; - double lengthFwd{0}; - double lengthRev{0}; - bool solid{false}; - double taperAngleFwd{0}; //in radians - double taperAngleRev{0}; - std::string faceMakerClass; - }; - /** @name methods override feature */ //@{ /// recalculate the feature @@ -82,11 +66,11 @@ public: /** * @brief extrudeShape powers the extrusion feature. + * @param result: result of extrusion * @param source: the shape to be extruded * @param params: extrusion parameters - * @return result of extrusion */ - static TopoShape extrudeShape(const TopoShape& source, const ExtrusionParameters& params); + static void extrudeShape(TopoShape &result, const TopoShape &source, const ExtrusionParameters& params); /** * @brief fetchAxisLink: read AxisLink to obtain the direction and diff --git a/src/Mod/Part/App/FeatureFillet.cpp b/src/Mod/Part/App/FeatureFillet.cpp index 3fb6d696f0..d9a574fcc3 100644 --- a/src/Mod/Part/App/FeatureFillet.cpp +++ b/src/Mod/Part/App/FeatureFillet.cpp @@ -34,6 +34,7 @@ #include #include "FeatureFillet.h" +#include "TopoShapeOpCode.h" using namespace Part; @@ -48,15 +49,19 @@ App::DocumentObjectExecReturn *Fillet::execute() if (!link) return new App::DocumentObjectExecReturn("No object linked"); - auto baseShape = Feature::getShape(link); try { #if defined(__GNUC__) && defined (FC_OS_LINUX) Base::SignalException se; #endif + auto baseShape = Feature::getShape(link); + TopoShape baseTopoShape = Feature::getTopoShape(link); BRepFilletAPI_MakeFillet mkFillet(baseShape); TopTools_IndexedMapOfShape mapOfShape; TopExp::MapShapes(baseShape, TopAbs_EDGE, mapOfShape); + TopTools_IndexedMapOfShape mapOfEdges; + TopExp::MapShapes(baseShape, TopAbs_EDGE, mapOfEdges); +#ifndef FC_USE_TNP_FIX std::vector values = Edges.getValues(); for (const auto & value : values) { @@ -92,6 +97,38 @@ App::DocumentObjectExecReturn *Fillet::execute() prop.touch(); return App::DocumentObject::StdReturn; +#else + const auto &vals = EdgeLinks.getSubValues(); + const auto &subs = EdgeLinks.getShadowSubs(); + if(subs.size()!=(size_t)Edges.getSize()) + return new App::DocumentObjectExecReturn("Edge link size mismatch"); + size_t i=0; + for(const auto &info : Edges.getValues()) { + auto &sub = subs[i]; + auto &ref = sub.first.size()?sub.first:vals[i]; + ++i; + // Toponaming project March 2024: Replaced this code because it wouldn't work: +// TopoDS_Shape edge; +// try { +// edge = baseTopoShape.getSubShape(ref.c_str()); +// }catch(...){} + auto id = Data::MappedName(ref.c_str()).toIndexedName().getIndex(); + const TopoDS_Edge& edge = TopoDS::Edge(mapOfEdges.FindKey(id)); + if(edge.IsNull()) + return new App::DocumentObjectExecReturn("Invalid edge link"); + double radius1 = info.radius1; + double radius2 = info.radius2; + mkFillet.Add(radius1, radius2, TopoDS::Edge(edge)); + } + + TopoDS_Shape shape = mkFillet.Shape(); + if (shape.IsNull()) + return new App::DocumentObjectExecReturn("Resulting shape is null"); + + TopoShape res(0); + this->Shape.setValue(res.makeElementShape(mkFillet,baseTopoShape,Part::OpCodes::Fillet)); + return Part::Feature::execute(); +#endif } catch (Standard_Failure& e) { return new App::DocumentObjectExecReturn(e.GetMessageString()); diff --git a/src/Mod/Part/App/FeatureMirroring.cpp b/src/Mod/Part/App/FeatureMirroring.cpp index 9cd077c72c..3ceea6ea11 100644 --- a/src/Mod/Part/App/FeatureMirroring.cpp +++ b/src/Mod/Part/App/FeatureMirroring.cpp @@ -252,10 +252,11 @@ App::DocumentObjectExecReturn *Mirroring::execute() Base::Vector3d norm = Normal.getValue(); try { + gp_Ax2 ax2(gp_Pnt(base.x,base.y,base.z), gp_Dir(norm.x,norm.y,norm.z)); +#ifndef FC_USE_TNP_FIX const TopoDS_Shape& shape = Feature::getShape(link); if (shape.IsNull()) Standard_Failure::Raise(std::string(std::string(this->getFullLabel()) + ": Cannot mirror empty shape").c_str()); - gp_Ax2 ax2(gp_Pnt(base.x,base.y,base.z), gp_Dir(norm.x,norm.y,norm.z)); gp_Trsf mat; mat.SetMirror(ax2); TopLoc_Location loc = shape.Location(); @@ -264,6 +265,13 @@ App::DocumentObjectExecReturn *Mirroring::execute() BRepBuilderAPI_Transform mkTrf(shape, mat); this->Shape.setValue(mkTrf.Shape()); return App::DocumentObject::StdReturn; +#else + auto shape = Feature::getTopoShape(link); + if (shape.isNull()) + Standard_Failure::Raise("Cannot mirror empty shape"); + this->Shape.setValue(TopoShape(0).makeElementMirror(shape,ax2)); + return Part::Feature::execute(); +#endif } catch (Standard_Failure& e) { return new App::DocumentObjectExecReturn(e.GetMessageString()); diff --git a/src/Mod/Part/App/FeatureOffset.cpp b/src/Mod/Part/App/FeatureOffset.cpp index 095d75dd49..103b44b232 100644 --- a/src/Mod/Part/App/FeatureOffset.cpp +++ b/src/Mod/Part/App/FeatureOffset.cpp @@ -83,13 +83,22 @@ App::DocumentObjectExecReturn *Offset::execute() bool inter = Intersection.getValue(); bool self = SelfIntersection.getValue(); short mode = (short)Mode.getValue(); - short join = (short)Join.getValue(); bool fill = Fill.getValue(); +#ifndef FC_USE_TNP_FIX + short join = (short)Join.getValue(); const TopoShape& shape = Feature::getShape(source); if (fabs(offset) > 2*tol) this->Shape.setValue(shape.makeOffsetShape(offset, tol, inter, self, mode, join, fill)); else this->Shape.setValue(shape); +#else + auto shape = Feature::getTopoShape(source); + if(shape.isNull()) + return new App::DocumentObjectExecReturn("Invalid source link"); + auto join = static_cast(Join.getValue()); + this->Shape.setValue(TopoShape(0).makeElementOffset( + shape,offset,tol,inter,self,mode,join,fill ? FillType::fill : FillType::noFill)); +#endif return App::DocumentObject::StdReturn; } diff --git a/src/Mod/Part/App/FeaturePartCommon.cpp b/src/Mod/Part/App/FeaturePartCommon.cpp index 3d7632ccb8..b2363050e5 100644 --- a/src/Mod/Part/App/FeaturePartCommon.cpp +++ b/src/Mod/Part/App/FeaturePartCommon.cpp @@ -211,7 +211,7 @@ App::DocumentObjectExecReturn *MultiCommon::execute() shapes.push_back(sh); } - TopoShape res {}; + TopoShape res {0}; res.makeElementBoolean(Part::OpCodes::Common, shapes); if (res.isNull()) { throw Base::RuntimeError("Resulting shape is null"); diff --git a/src/Mod/Part/App/GeomPlate/BuildPlateSurfacePy.xml b/src/Mod/Part/App/GeomPlate/BuildPlateSurfacePy.xml index 7d64f73801..4575e85cd2 100644 --- a/src/Mod/Part/App/GeomPlate/BuildPlateSurfacePy.xml +++ b/src/Mod/Part/App/GeomPlate/BuildPlateSurfacePy.xml @@ -23,7 +23,7 @@ - + Sets the number of bounds @@ -85,12 +85,12 @@ - + Returns the 2D contour of the plate surface - + Returns the 3D contour of the plate surface diff --git a/src/Mod/Part/App/OpenCascadeAll.h b/src/Mod/Part/App/OpenCascadeAll.h index df7f32048c..6ca245d082 100644 --- a/src/Mod/Part/App/OpenCascadeAll.h +++ b/src/Mod/Part/App/OpenCascadeAll.h @@ -174,6 +174,8 @@ #include #include +#include +#include #include #include #include diff --git a/src/Mod/Part/App/Part2DObject.cpp b/src/Mod/Part/App/Part2DObject.cpp index 75dccb8d3d..ba3d40a3bd 100644 --- a/src/Mod/Part/App/Part2DObject.cpp +++ b/src/Mod/Part/App/Part2DObject.cpp @@ -75,7 +75,7 @@ App::DocumentObjectExecReturn *Part2DObject::execute() void Part2DObject::transformPlacement(const Base::Placement &transform) { - if (!Support.getValues().empty()) { + if (!AttachmentSupport.getValues().empty()) { //part->transformPlacement(transform); positionBySupport(); } else { @@ -254,33 +254,6 @@ void Part2DObject::Restore(Base::XMLReader &reader) Part::Feature::Restore(reader); } -void Part2DObject::handleChangedPropertyType(Base::XMLReader &reader, - const char * TypeName, - App::Property * prop) -{ - //override generic restoration to convert Support property from PropertyLinkSub to PropertyLinkSubList - if (prop->isDerivedFrom(App::PropertyLinkSubList::getClassTypeId())) { - //reading legacy Support - when the Support could only be a single flat face. - App::PropertyLinkSub tmp; - if (0 == strcmp(tmp.getTypeId().getName(),TypeName)) { - tmp.setContainer(this); - tmp.Restore(reader); - static_cast(prop)->setValue(tmp.getValue(), tmp.getSubValues()); - } - this->MapMode.setValue(Attacher::mmFlatFace); - } - else { - Part::Feature::handleChangedPropertyType(reader, TypeName, prop); - } -} - -void Part2DObject::handleChangedPropertyName(Base::XMLReader &reader, - const char * TypeName, - const char *PropName) -{ - extHandleChangedPropertyName(reader, TypeName, PropName); // AttachExtension -} - // Python Drawing feature --------------------------------------------------------- namespace App { diff --git a/src/Mod/Part/App/Part2DObject.h b/src/Mod/Part/App/Part2DObject.h index 0b9c909087..a22fd4a376 100644 --- a/src/Mod/Part/App/Part2DObject.h +++ b/src/Mod/Part/App/Part2DObject.h @@ -94,10 +94,6 @@ public: //@} void Restore(Base::XMLReader &reader) override; - -protected: - void handleChangedPropertyType(Base::XMLReader &reader, const char * TypeName, App::Property * prop) override; - void handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) override; }; using Part2DObjectPython = App::FeaturePythonT; diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index 2212f4695a..9c0cb0088c 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -29,7 +29,10 @@ # include # include # include +# include +# include # include +# include # include # include # include @@ -37,6 +40,7 @@ # include # include # include +# include # include # include # include @@ -56,6 +60,8 @@ #include #include #include +#include +#include #include #include #include @@ -114,59 +120,66 @@ PyObject *Feature::getPyObject() return Py::new_reference_to(PythonObject); } -App::DocumentObject *Feature::getSubObject(const char *subname, - PyObject **pyObj, Base::Matrix4D *pmat, bool transform, int depth) const +App::DocumentObject* Feature::getSubObject(const char* subname, + PyObject** pyObj, + Base::Matrix4D* pmat, + bool transform, + int depth) const { // having '.' inside subname means it is referencing some children object, // instead of any sub-element from ourself - if(subname && !Data::isMappedElement(subname) && strchr(subname,'.')) - return App::DocumentObject::getSubObject(subname,pyObj,pmat,transform,depth); + if (subname && !Data::isMappedElement(subname) && strchr(subname, '.')) { + return App::DocumentObject::getSubObject(subname, pyObj, pmat, transform, depth); + } Base::Matrix4D _mat; - auto &mat = pmat?*pmat:_mat; - if(transform) + auto& mat = pmat ? *pmat : _mat; + if (transform) { mat *= Placement.getValue().toMatrix(); + } - if(!pyObj) { + if (!pyObj) { // TopoShape::hasSubShape is kind of slow, let's cut outself some slack here. return const_cast(this); } try { TopoShape ts(Shape.getShape()); - bool doTransform = mat!=ts.getTransform(); - if(doTransform) + bool doTransform = mat != ts.getTransform(); + if (doTransform) { ts.setShape(ts.getShape().Located(TopLoc_Location())); - if(subname && *subname && !ts.isNull()) + } + if (subname && *subname && !ts.isNull()) { ts = ts.getSubShape(subname); - if(doTransform && !ts.isNull()) { + } + if (doTransform && !ts.isNull()) { static int sCopy = -1; - if(sCopy<0) { + if (sCopy < 0) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( - "User parameter:BaseApp/Preferences/Mod/Part/General"); - sCopy = hGrp->GetBool("CopySubShape",false)?1:0; + "User parameter:BaseApp/Preferences/Mod/Part/General"); + sCopy = hGrp->GetBool("CopySubShape", false) ? 1 : 0; } - bool copy = sCopy?true:false; - if(!copy) { + bool copy = sCopy ? true : false; + if (!copy) { // Work around OCC bug on transforming circular edge with an // offset surface. The bug probably affect other shape type, // too. - TopExp_Explorer exp(ts.getShape(),TopAbs_EDGE); - if(exp.More()) { + TopExp_Explorer exp(ts.getShape(), TopAbs_EDGE); + if (exp.More()) { auto edge = TopoDS::Edge(exp.Current()); exp.Next(); - if(!exp.More()) { + if (!exp.More()) { BRepAdaptor_Curve curve(edge); copy = curve.GetType() == GeomAbs_Circle; } } } - ts.transformShape(mat,copy,true); + ts.transformShape(mat, copy, true); } - *pyObj = Py::new_reference_to(shape2pyshape(ts)); + *pyObj = Py::new_reference_to(shape2pyshape(ts)); return const_cast(this); } - catch(Standard_Failure &e) { + catch (Standard_Failure& e) { // FIXME: Do not handle the exception here because it leads to a flood of irrelevant and // annoying error messages. // For example: https://forum.freecad.org/viewtopic.php?f=19&t=42216 @@ -178,16 +191,397 @@ App::DocumentObject *Feature::getSubObject(const char *subname, // Avoid name mangling str << e.DynamicType()->get_type_name() << " "; - if (msg) {str << msg;} - else {str << "No OCCT Exception Message";} + if (msg) { + str << msg; + } + else { + str << "No OCCT Exception Message"; + } str << ": " << getFullName(); - if (subname) + if (subname) { str << '.' << subname; + } FC_LOG(str.str()); return nullptr; } } +static std::vector> getElementSource(App::DocumentObject* owner, + TopoShape shape, + const Data::MappedName& name, + char type) +{ + std::set> tagSet; + std::vector> ret; + ret.emplace_back(0, name); + int depth = 0; + while (1) { + Data::MappedName original; + std::vector history; + // It is possible the name does not belong to the shape, e.g. when user + // changes modeling order in PartDesign. So we try to assign the + // document hasher here in case getElementHistory() needs to de-hash + if (!shape.Hasher && owner) { + shape.Hasher = owner->getDocument()->getStringHasher(); + } + long tag = shape.getElementHistory(ret.back().second, &original, &history); + if (!tag) { + break; + } + auto obj = owner; + App::Document* doc = nullptr; + if (owner) { + doc = owner->getDocument(); + for (;; ++depth) { + auto linked = owner->getLinkedObject(false, nullptr, false, depth); + if (linked == owner) { + break; + } + owner = linked; + if (owner->getDocument() != doc) { + doc = owner->getDocument(); + break; + } + } + // TODO: 02/24 Toponaming project: It appears that getElementOwner is always nullptr. + // if (owner->isDerivedFrom(App::GeoFeature::getClassTypeId())) { + // auto o = + // static_cast(owner)->getElementOwner(ret.back().second); + // if (o) + // doc = o->getDocument(); + // } + obj = doc->getObjectByID(tag < 0 ? -tag : tag); + if (type) { + for (auto& hist : history) { + if (shape.elementType(hist) != type) { + return ret; + } + } + } + } + owner = 0; + if (!obj) { + // Object maybe deleted, but it is still possible to extract the + // source element name from hasher table. + shape.setShape(TopoDS_Shape()); + doc = nullptr; + } + else { + shape = Part::Feature::getTopoShape(obj, 0, false, 0, &owner); + } + if (type && shape.elementType(original) != type) { + break; + } + + if (std::abs(tag) != ret.back().first && !tagSet.insert(std::make_pair(doc, tag)).second) { + // Because an object might be deleted, which may be a link/binder + // that points to an external object that contain element name + // using external hash table. We shall prepare for circular element + // map due to looking up in the wrong table. + if (FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) { + FC_WARN("circular element mapping"); + } + break; + } + ret.emplace_back(tag, original); + } + return ret; +} + +std::list Feature::getElementHistory(App::DocumentObject* feature, + const char* name, + bool recursive, + bool sameType) +{ + std::list ret; + TopoShape shape = getTopoShape(feature); + Data::IndexedName idx(name); + Data::MappedName element; + Data::MappedName prevElement; + if (idx) { + element = shape.getMappedName(idx, true); + } + else if (Data::isMappedElement(name)) { + element = Data::MappedName(Data::newElementName(name)); + } + else { + element = Data::MappedName(name); + } + char element_type = 0; + if (sameType) { + element_type = shape.elementType(element); + } + int depth = 0; + do { + Data::MappedName original; + ret.emplace_back(feature, element); + long tag = shape.getElementHistory(element, &original, &ret.back().intermediates); + + ret.back().index = shape.getIndexedName(element); + if (!ret.back().index && prevElement) { + ret.back().index = shape.getIndexedName(prevElement); + if (ret.back().index) { + ret.back().intermediates.insert(ret.back().intermediates.begin(), element); + ret.back().element = prevElement; + } + } + if (ret.back().intermediates.size()) { + prevElement = ret.back().intermediates.back(); + } + else { + prevElement = Data::MappedName(); + } + + App::DocumentObject* obj = nullptr; + if (tag) { + App::Document* doc = feature->getDocument(); + for (;; ++depth) { + auto linked = feature->getLinkedObject(false, nullptr, false, depth); + if (linked == feature) { + break; + } + feature = linked; + if (feature->getDocument() != doc) { + doc = feature->getDocument(); + break; + } + } + // TODO: 02/24 Toponaming project: It appears that getElementOwner is always nullptr. + // if(feature->isDerivedFrom(App::GeoFeature::getClassTypeId())) { + // auto owner = + // static_cast(feature)->getElementOwner(element); + // if(owner) + // doc = owner->getDocument(); + // } + obj = doc->getObjectByID(std::abs(tag)); + } + if (!recursive) { + ret.emplace_back(obj, original); + ret.back().tag = tag; + return ret; + } + if (!obj) { + break; + } + if (element_type) { + for (auto& hist : ret.back().intermediates) { + if (shape.elementType(hist) != element_type) { + return ret; + } + } + } + feature = obj; + shape = Feature::getTopoShape(feature); + element = original; + if (element_type && shape.elementType(original) != element_type) { + break; + } + } while (feature); + return ret; +} + +QVector Feature::getElementFromSource(App::DocumentObject* obj, + const char* subname, + App::DocumentObject* src, + const char* srcSub, + bool single) +{ + QVector res; + if (!obj || !src) { + return res; + } + + auto shape = getTopoShape(obj, + subname, + false, + nullptr, + nullptr, + true, + /*transform = */ false); + App::DocumentObject* owner = nullptr; + auto srcShape = getTopoShape(src, srcSub, false, nullptr, &owner); + int tagChanges; + Data::MappedElement element; + Data::IndexedName checkingSubname; + std::string sub = Data::noElementName(subname); + auto checkHistory = [&](const Data::MappedName& name, size_t, long, long tag) { + if (std::abs(tag) == owner->getID()) { + if (!tagChanges) { + tagChanges = 1; + } + } + else if (tagChanges && ++tagChanges > 3) { + // Once we found the tag, trace no more than 2 addition tag changes + // to limited the search depth. + return true; + } + if (name == element.name) { + std::pair objElement; + std::size_t len = sub.size(); +// checkingSubname.toString(sub); + checkingSubname.appendToStringBuffer(sub); + GeoFeature::resolveElement(obj, sub.c_str(), objElement); + sub.resize(len); + if (objElement.second.size()) { + res.push_back(Data::MappedElement(Data::MappedName(objElement.first), + Data::IndexedName(objElement.second.c_str()))); + return true; + } + } + return false; + }; + + // obtain both the old and new style element name + std::pair objElement; + GeoFeature::resolveElement(src, srcSub, objElement, false); + + element.index = Data::IndexedName(objElement.second.c_str()); + if (!objElement.first.empty()) { + // Strip prefix and indexed based name at the tail of the new style element name + auto mappedName = Data::newElementName(objElement.first.c_str()); + auto mapped = Data::isMappedElement(mappedName.c_str()); + if (mapped) { + element.name = Data::MappedName(mapped); + } + } + + // Translate the element name for datum + if (objElement.second == "Plane") { + objElement.second = "Face1"; + } + else if (objElement.second == "Line") { + objElement.second = "Edge1"; + } + else if (objElement.second == "Point") { + objElement.second = "Vertex1"; + } + + // Use the old style name to obtain the shape type + auto type = TopoShape::shapeType(Data::findElementName(objElement.second.c_str())); + // If the given shape has the same number of sub shapes as the source (e.g. + // a compound operation), then take a shortcut and assume the element index + // remains the same. But we still need to trace the shape history to + // confirm. + if (element.name && shape.countSubShapes(type) == srcShape.countSubShapes(type)) { + tagChanges = 0; + checkingSubname = element.index; + auto mapped = shape.getMappedName(element.index); + shape.traceElement(mapped, checkHistory); + if (res.size()) { + return res; + } + } + + // Try geometry search first + auto subShape = srcShape.getSubShape(objElement.second.c_str()); + std::vector names; + shape.findSubShapesWithSharedVertex(subShape, &names); + if (names.size()) { + for (auto& name : names) { + Data::MappedElement e; + e.index = Data::IndexedName(name.c_str()); + e.name = shape.getMappedName(e.index, true); + res.append(e); + if (single) { + break; + } + } + return res; + } + + if (!element.name) { + return res; + } + + // No shortcut, need to search every element of the same type. This may + // result in multiple matches, e.g. a compound of array of the same + // instance. + const char* shapetype = TopoShape::shapeName(type).c_str(); + for (int i = 0, count = shape.countSubShapes(type); i < count; ++i) { + checkingSubname = Data::IndexedName::fromConst(shapetype, i + 1); + auto mapped = shape.getMappedName(checkingSubname); + tagChanges = 0; + shape.traceElement(mapped, checkHistory); + if (single && res.size()) { + break; + } + } + return res; +} + +QVector Feature::getRelatedElements(App::DocumentObject* obj, + const char* name, + HistoryTraceType sameType, + bool withCache) +{ + auto owner = obj; + auto shape = getTopoShape(obj, nullptr, false, 0, &owner); + QVector ret; + Data::MappedElement mapped = shape.getElementName(name); + if (!mapped.name) { + return ret; + } + if (withCache && shape.getRelatedElementsCached(mapped.name, sameType, ret)) { + return ret; + } + + char element_type = shape.elementType(mapped.name); + TopAbs_ShapeEnum type = TopoShape::shapeType(element_type, true); + if (type == TopAbs_SHAPE) { + return ret; + } + + auto source = + getElementSource(owner, + shape, + mapped.name, + sameType == HistoryTraceType::followTypeChange ? element_type : 0); + for (auto& src : source) { + auto srcIndex = shape.getIndexedName(src.second); + if (srcIndex) { + ret.push_back(Data::MappedElement(src.second, srcIndex)); + shape.cacheRelatedElements(mapped.name, sameType, ret); + return ret; + } + } + + std::map> retMap; + + const char* shapetype = TopoShape::shapeName(type).c_str(); + std::ostringstream ss; + for (size_t i = 1; i <= shape.countSubShapes(type); ++i) { + Data::MappedElement related; + related.index = Data::IndexedName::fromConst(shapetype, i); + related.name = shape.getMappedName(related.index); + if (!related.name) { + continue; + } + auto src = + getElementSource(owner, + shape, + related.name, + sameType == HistoryTraceType::followTypeChange ? element_type : 0); + int idx = (int)source.size() - 1; + for (auto rit = src.rbegin(); idx >= 0 && rit != src.rend(); ++rit, --idx) { + // TODO: shall we ignore source tag when comparing? It could cause + // matching unrelated element, but it does help dealing with feature + // recording in PartDesign::Body. + if (rit->second != source[idx].second) { + ++idx; + break; + } + } + if (idx < (int)source.size()) { + retMap[idx].push_back(related); + } + } + if (retMap.size()) { + ret = retMap.begin()->second; + } + shape.cacheRelatedElements(mapped.name, sameType, ret); + return ret; +} + TopoDS_Shape Feature::getShape(const App::DocumentObject *obj, const char *subname, bool needSubElement, Base::Matrix4D *pmat, App::DocumentObject **powner, bool resolveLink, bool transform) @@ -195,180 +589,225 @@ TopoDS_Shape Feature::getShape(const App::DocumentObject *obj, const char *subna return getTopoShape(obj,subname,needSubElement,pmat,powner,resolveLink,transform,true).getShape(); } -struct ShapeCache { - - std::unordered_map ,TopoShape> > cache; - - bool inited = false; - void init() { - if(inited) - return; - inited = true; - //NOLINTBEGIN - App::GetApplication().signalDeleteDocument.connect( - std::bind(&ShapeCache::slotDeleteDocument, this, sp::_1)); - App::GetApplication().signalDeletedObject.connect( - std::bind(&ShapeCache::slotClear, this, sp::_1)); - App::GetApplication().signalChangedObject.connect( - std::bind(&ShapeCache::slotChanged, this, sp::_1,sp::_2)); - //NOLINTEND - } - - void slotDeleteDocument(const App::Document &doc) { - cache.erase(&doc); - } - - void slotChanged(const App::DocumentObject &obj, const App::Property &prop) { - const char *propName = prop.getName(); - if(!App::Property::isValidName(propName)) - return; - if(strcmp(propName,"Shape")==0 - || strcmp(propName,"Group")==0 - || strstr(propName,"Touched")) - slotClear(obj); - } - - void slotClear(const App::DocumentObject &obj) { - auto it = cache.find(obj.getDocument()); - if(it==cache.end()) - return; - auto &map = it->second; - for(auto it2=map.lower_bound(std::make_pair(&obj,std::string())); - it2!=map.end() && it2->first.first==&obj;) - { - it2 = map.erase(it2); - } - } - - bool getShape(const App::DocumentObject *obj, TopoShape &shape, const char *subname=nullptr) { - init(); - auto &entry = cache[obj->getDocument()]; - if(!subname) subname = ""; - auto it = entry.find(std::make_pair(obj,std::string(subname))); - if(it!=entry.end()) { - shape = it->second; - return !shape.isNull(); - } - return false; - } - - void setShape(const App::DocumentObject *obj, const TopoShape &shape, const char *subname=nullptr) { - init(); - if(!subname) subname = ""; - cache[obj->getDocument()][std::make_pair(obj,std::string(subname))] = shape; - } -}; -static ShapeCache _ShapeCache; +// Toponaming project March 2024: This method should be going away when we get to the python layer. void Feature::clearShapeCache() { - _ShapeCache.cache.clear(); +// _ShapeCache.cache.clear(); } -static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subname, - bool needSubElement, Base::Matrix4D *pmat, App::DocumentObject **powner, - bool resolveLink, bool noElementMap, std::vector &linkStack) +static TopoShape _getTopoShape(const App::DocumentObject* obj, + const char* subname, + bool needSubElement, + Base::Matrix4D* pmat, + App::DocumentObject** powner, + bool resolveLink, + bool noElementMap, + const std::set hiddens, + const App::DocumentObject* lastLink) { - (void) noElementMap; - TopoShape shape; - if(!obj) + if (!obj) { return shape; + } - PyObject *pyobj = nullptr; + PyObject* pyobj = nullptr; Base::Matrix4D mat; - if(powner) *powner = nullptr; + if (powner) { + *powner = nullptr; + } std::string _subname; auto subelement = Data::findElementName(subname); - if(!needSubElement && subname) { + if (!needSubElement && subname) { // strip out element name if not needed - if(subelement && *subelement) { - _subname = std::string(subname,subelement); + if (subelement && *subelement) { + _subname = std::string(subname, subelement); subname = _subname.c_str(); } } - if(_ShapeCache.getShape(obj,shape,subname)) { + auto canCache = [&](const App::DocumentObject* o) { + return !lastLink || (hiddens.empty() && !App::GeoFeatureGroupExtension::isNonGeoGroup(o)); + }; + + if (canCache(obj) && PropertyShapeCache::getShape(obj, shape, subname)) { + if (noElementMap) { + shape.resetElementMap(); + shape.Tag = 0; + if ( shape.Hasher ) { + shape.Hasher->clear(); + } + } } - App::DocumentObject *linked = nullptr; - App::DocumentObject *owner = nullptr; + App::DocumentObject* linked = nullptr; + App::DocumentObject* owner = nullptr; Base::Matrix4D linkMat; + App::StringHasherRef hasher; + long tag; { Base::PyGILStateLocker lock; - owner = obj->getSubObject(subname,shape.isNull()?&pyobj:nullptr,&mat,false); - if(!owner) + owner = obj->getSubObject(subname, shape.isNull() ? &pyobj : nullptr, &mat, false); + if (!owner) { return shape; - linked = owner->getLinkedObject(true,&linkMat,false); - if(pmat) { - if(resolveLink && obj!=owner) - *pmat = mat * linkMat; - else - *pmat = mat; } - if(!linked) + tag = owner->getID(); + hasher = owner->getDocument()->getStringHasher(); + linked = owner->getLinkedObject(true, &linkMat, false); + if (pmat) { + if (resolveLink && obj != owner) { + *pmat = mat * linkMat; + } + else { + *pmat = mat; + } + } + if (!linked) { linked = owner; - if(powner) - *powner = resolveLink?linked:owner; + } + if (powner) { + *powner = resolveLink ? linked : owner; + } - if(!shape.isNull()) + if (!shape.isNull()) { return shape; + } - if(pyobj && PyObject_TypeCheck(pyobj,&TopoShapePy::Type)) { + if (pyobj && PyObject_TypeCheck(pyobj, &TopoShapePy::Type)) { shape = *static_cast(pyobj)->getTopoShapePtr(); - if(!shape.isNull()) { - if(obj->getDocument() != linked->getDocument()) - _ShapeCache.setShape(obj,shape,subname); + if (!shape.isNull()) { + if (canCache(obj)) { + if (obj->getDocument() != linked->getDocument() + || mat.hasScale() != Base::ScaleType::NoScaling + || (linked != owner && linkMat.hasScale() != Base::ScaleType::NoScaling)) { + PropertyShapeCache::setShape(obj, shape, subname); + } + } + if (noElementMap) { + shape.resetElementMap(); + shape.Tag = 0; + if ( shape.Hasher ) { + shape.Hasher->clear(); + } + } Py_DECREF(pyobj); return shape; } } + else { + 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))); + _shape = builder.Shape(); + _shape.Infinite(Standard_True); + } + shape = TopoShape(tag, hasher, _shape); + } + else if (linked->isDerivedFrom(App::Plane::getClassTypeId())) { + static TopoDS_Shape _shape; + if (_shape.IsNull()) { + BRepBuilderAPI_MakeFace builder(gp_Pln(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1))); + _shape = builder.Shape(); + _shape.Infinite(Standard_True); + } + shape = TopoShape(tag, hasher, _shape); + } + else if (linked->isDerivedFrom(App::Placement::getClassTypeId())) { + auto element = Data::findElementName(subname); + if (element) { + if (boost::iequals("x", element) || boost::iequals("x-axis", element) + || boost::iequals("y", element) || boost::iequals("y-axis", element) + || boost::iequals("z", element) || boost::iequals("z-axis", element)) { + static TopoDS_Shape _shape; + if (_shape.IsNull()) { + BRepBuilderAPI_MakeEdge builder( + gp_Lin(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1))); + _shape = builder.Shape(); + _shape.Infinite(Standard_True); + } + shape = TopoShape(tag, hasher, _shape); + } + else if (boost::iequals("o", element) || boost::iequals("origin", element)) { + static TopoDS_Shape _shape; + if (_shape.IsNull()) { + BRepBuilderAPI_MakeVertex builder(gp_Pnt(0, 0, 0)); + _shape = builder.Shape(); + _shape.Infinite(Standard_True); + } + shape = TopoShape(tag, hasher, _shape); + } + } + if (shape.isNull()) { + static TopoDS_Shape _shape; + if (_shape.IsNull()) { + BRepBuilderAPI_MakeFace builder(gp_Pln(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1))); + _shape = builder.Shape(); + _shape.Infinite(Standard_True); + } + shape = TopoShape(tag, hasher, _shape); + } + } + if (!shape.isNull()) { + shape.transformShape(mat * linkMat, false, true); + return shape; + } + } Py_XDECREF(pyobj); } // nothing can be done if there is sub-element references - if(needSubElement && subelement && *subelement) + if (needSubElement && subelement && *subelement) { return shape; + } - bool scaled = false; - if(obj!=owner) { - if(_ShapeCache.getShape(owner,shape)) { - auto scaled = shape.transformShape(mat,false,true); - if(owner->getDocument()!=obj->getDocument()) { - // shape.reTagElementMap(obj->getID(),obj->getDocument()->getStringHasher()); - _ShapeCache.setShape(obj,shape,subname); - } else if(scaled) - _ShapeCache.setShape(obj,shape,subname); + if (obj != owner) { + if (canCache(owner) && PropertyShapeCache::getShape(owner, shape)) { + bool scaled = shape.transformShape(mat, false, true); + if (owner->getDocument() != obj->getDocument()) { + shape.reTagElementMap(obj->getID(), obj->getDocument()->getStringHasher()); + PropertyShapeCache::setShape(obj, shape, subname); + } + else if (scaled + || (linked != owner && linkMat.hasScale() != Base::ScaleType::NoScaling)) { + PropertyShapeCache::setShape(obj, shape, subname); + } } - if(!shape.isNull()) { + if (!shape.isNull()) { + if (noElementMap) { + shape.resetElementMap(); + shape.Tag = 0; + if ( shape.Hasher) { + shape.Hasher->clear(); + } + } return shape; } } + bool cacheable = true; + auto link = owner->getExtensionByType(true); - if(owner!=linked - && (!link || (!link->_ChildCache.getSize() - && link->getSubElements().size()<=1))) - { + if (owner != linked + && (!link || (!link->_ChildCache.getSize() && link->getSubElements().size() <= 1))) { // if there is a linked object, and there is no child cache (which is used // for special handling of plain group), obtain shape from the linked object - shape = Feature::getTopoShape(linked,nullptr,false,nullptr,nullptr,false,false); - if(shape.isNull()) + shape = Feature::getTopoShape(linked, nullptr, false, nullptr, nullptr, false, false); + if (shape.isNull()) { return shape; - if(owner==obj) - shape.transformShape(mat*linkMat,false,true); - else - shape.transformShape(linkMat,false,true); - - } else { - - if(link || owner->getExtensionByType(true)) - linkStack.push_back(owner); - + } + if (owner == obj) { + shape.transformShape(mat * linkMat, false, true); + } + else { + shape.transformShape(linkMat, false, true); + } + shape.reTagElementMap(tag, hasher); + } + else { // Construct a compound of sub objects std::vector shapes; @@ -378,107 +817,212 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna TopoShape baseShape; Base::Matrix4D baseMat; std::string op; - if(link && link->getElementCountValue()) { - linked = link->getTrueLinkedObject(false,&baseMat); - if(linked && linked!=owner) { - baseShape = Feature::getTopoShape(linked,nullptr,false,nullptr,nullptr,false,false); + if (link && link->getElementCountValue()) { + linked = link->getTrueLinkedObject(false, &baseMat); + if (linked && linked != owner) { + baseShape = + Feature::getTopoShape(linked, nullptr, false, nullptr, nullptr, false, false); + if (!link->getShowElementValue()) { + baseShape.reTagElementMap(owner->getID(), + owner->getDocument()->getStringHasher()); + } } } - for(auto &sub : owner->getSubObjects()) { - if(sub.empty()) continue; + for (auto& sub : owner->getSubObjects()) { + if (sub.empty()) { + continue; + } int visible; std::string childName; - App::DocumentObject *parent=nullptr; + App::DocumentObject* parent = nullptr; Base::Matrix4D mat = baseMat; - App::DocumentObject *subObj=nullptr; - if(sub.find('.')==std::string::npos) + App::DocumentObject* subObj = nullptr; + if (sub.find('.') == std::string::npos) { visible = 1; - else { - subObj = owner->resolve(sub.c_str(), &parent, &childName,nullptr,nullptr,&mat,false); - if(!parent || !subObj) - continue; - if(!linkStack.empty() - && parent->getExtensionByType(true,false)) - { - visible = linkStack.back()->isElementVisible(childName.c_str()); - }else - visible = parent->isElementVisible(childName.c_str()); } - if(visible==0) - continue; - TopoShape shape; - if(!subObj || baseShape.isNull()) { - shape = _getTopoShape(owner,sub.c_str(),true,nullptr,&subObj,false,false,linkStack); - if(shape.isNull()) + else { + subObj = + owner->resolve(sub.c_str(), &parent, &childName, nullptr, nullptr, &mat, false); + if (!parent || !subObj) { continue; - if(visible<0 && subObj && !subObj->Visibility.getValue()) - continue; - }else{ - if(link && !link->getShowElementValue()) - shape = baseShape.makeTransform(mat,(Data::POSTFIX_INDEX + childName).c_str()); + } + if (lastLink && App::GeoFeatureGroupExtension::isNonGeoGroup(parent)) { + visible = lastLink->isElementVisible(childName.c_str()); + } else { - shape = baseShape.makeTransform(mat); + visible = parent->isElementVisible(childName.c_str()); + } + } + if (visible == 0) { + continue; + } + + std::set nextHiddens = hiddens; + const App::DocumentObject* nextLink = lastLink; + // Toponaming project March 2024: This appears to be a non toponaming feature: +// if (!checkLinkVisibility(nextHiddens, true, nextLink, owner, sub.c_str())) { +// cacheable = false; +// continue; +// } + + TopoShape shape; + + bool doGetShape = (!subObj || baseShape.isNull()); + if (!doGetShape) { + auto type = mat.hasScale(); + if (type != Base::ScaleType::NoScaling && type != Base::ScaleType::Uniform) { + doGetShape = true; + } + } + if (doGetShape) { + shape = _getTopoShape(owner, + sub.c_str(), + true, + 0, + &subObj, + false, + false, + nextHiddens, + nextLink); + if (shape.isNull()) { + continue; + } + if (visible < 0 && subObj && !subObj->Visibility.getValue()) { + continue; + } + } + else { + if (link && !link->getShowElementValue()) { + shape = + baseShape.makeElementTransform(mat, + (Data::POSTFIX_INDEX + childName).c_str()); + } + else { + shape = baseShape.makeElementTransform(mat); + shape.reTagElementMap(subObj->getID(), + subObj->getDocument()->getStringHasher()); } } shapes.push_back(shape); } - if(!linkStack.empty() && linkStack.back()==owner) - linkStack.pop_back(); - - if(shapes.empty()) + if (shapes.empty()) { return shape; - - shape.makeCompound(shapes); + } + shape.Tag = tag; + shape.Hasher = hasher; + shape.makeElementCompound(shapes); } - _ShapeCache.setShape(owner,shape); + if (cacheable && canCache(owner)) { + PropertyShapeCache::setShape(owner, shape); + } - if(owner!=obj) { - scaled = shape.transformShape(mat,false,true); - if(owner->getDocument()!=obj->getDocument()) { - _ShapeCache.setShape(obj,shape,subname); - }else if(scaled) - _ShapeCache.setShape(obj,shape,subname); + if (owner != obj) { + bool scaled = shape.transformShape(mat, false, true); + if (owner->getDocument() != obj->getDocument()) { + shape.reTagElementMap(obj->getID(), obj->getDocument()->getStringHasher()); + scaled = true; // force cache + } + if (canCache(obj) && scaled) { + PropertyShapeCache::setShape(obj, shape, subname); + } + } + if (noElementMap) { + shape.resetElementMap(); + shape.Tag = 0; + if ( shape.Hasher ) { + shape.Hasher->clear(); + } } return shape; } -TopoShape Feature::getTopoShape(const App::DocumentObject *obj, const char *subname, - bool needSubElement, Base::Matrix4D *pmat, App::DocumentObject **powner, - bool resolveLink, bool transform, bool noElementMap) +TopoShape Feature::getTopoShape(const App::DocumentObject* obj, + const char* subname, + bool needSubElement, + Base::Matrix4D* pmat, + App::DocumentObject** powner, + bool resolveLink, + bool transform, + bool noElementMap) { - if(!obj || !obj->isAttachedToDocument()) - return {}; + if (!obj || !obj->getNameInDocument()) { + return TopoShape(); + } - std::vector linkStack; + const App::DocumentObject* lastLink = 0; + std::set hiddens; + // Toponaming project March 2024: This appears to be a non toponaming feature: +// if (!checkLinkVisibility(hiddens, false, lastLink, obj, subname)) { +// return TopoShape(); +// } // NOTE! _getTopoShape() always return shape without top level // transformation for easy shape caching, i.e. with `transform` set // to false. So we manually apply the top level transform if asked. + if (needSubElement && (!pmat || *pmat == Base::Matrix4D()) + && obj->isDerivedFrom(Part::Feature::getClassTypeId()) + && !obj->hasExtension(App::LinkBaseExtension::getExtensionClassTypeId())) { + // Some OCC shape making is very sensitive to shape transformation. So + // check here if a direct sub shape is required, and bypass all extra + // processing here. + if (subname && *subname && Data::findElementName(subname) == subname) { + TopoShape ts = static_cast(obj)->Shape.getShape(); + if (!transform) { + ts.setShape(ts.getShape().Located(TopLoc_Location()), false); + } + if (noElementMap) { + ts = ts.getSubShape(subname, true); + } + else { + ts = ts.getSubTopoShape(subname, true); + } + if (!ts.isNull()) { + if (powner) { + *powner = const_cast(obj); + } + if (pmat && transform) { + *pmat = static_cast(obj)->Placement.getValue().toMatrix(); + } + return ts; + } + } + } + Base::Matrix4D mat; - auto shape = _getTopoShape(obj, subname, needSubElement, &mat, - powner, resolveLink, noElementMap, linkStack); + auto shape = _getTopoShape(obj, + subname, + needSubElement, + &mat, + powner, + resolveLink, + noElementMap, + hiddens, + lastLink); Base::Matrix4D topMat; - if(pmat || transform) { + if (pmat || transform) { // Obtain top level transformation - if(pmat) + if (pmat) { topMat = *pmat; - if(transform) - obj->getSubObject(nullptr,nullptr,&topMat); + } + if (transform) { + obj->getSubObject(nullptr, nullptr, &topMat); + } // Apply the top level transformation - if(!shape.isNull()) - shape.transformShape(topMat,false,true); + if (!shape.isNull()) { + shape.transformShape(topMat, false, true); + } - if(pmat) + if (pmat) { *pmat = topMat * mat; + } } return shape; - } App::DocumentObject *Feature::getShapeOwner(const App::DocumentObject *obj, const char *subname) @@ -536,6 +1080,23 @@ TopLoc_Location Feature::getLocation() const return TopLoc_Location(trf); } +Feature* Feature::create(const TopoShape& shape, const char* name, App::Document* document) +{ + if (!name || !name[0]) { + name = "Shape"; + } + if (!document) { + document = App::GetApplication().getActiveDocument(); + if (!document) { + document = App::GetApplication().newDocument(); + } + } + auto res = static_cast(document->addObject("Part::Feature", name)); + res->Shape.setValue(shape); + res->purgeTouched(); + return res; +} + ShapeHistory Feature::buildHistory(BRepBuilderAPI_MakeShape& mkShape, TopAbs_ShapeEnum type, const TopoDS_Shape& newS, const TopoDS_Shape& oldS) { @@ -623,6 +1184,31 @@ const App::PropertyComplexGeoData* Feature::getPropertyOfGeometry() const return &Shape; } +bool Feature::isElementMappingDisabled(App::PropertyContainer* container) +{ +#ifdef FC_USE_TNP_FIX + return false; +#else + return true; +#endif + // TODO: March 2024 consider if any of this RT branch logic makes sense: +// if (!container) { +// return false; +// } +// auto prop = propDisableMapping(container, /*forced*/ false); +// if (prop && prop->getValue()) { +// return true; +// } +// if (auto obj = Base::freecad_dynamic_cast(container)) { +// if (auto doc = obj->getDocument()) { +// if (auto prop = propDisableMapping(doc, /*forced*/ false)) { +// return prop->getValue(); +// } +// } +// } +// return false; +} + // --------------------------------------------------------- PROPERTY_SOURCE(Part::FilletBase, Part::Feature) @@ -631,16 +1217,69 @@ FilletBase::FilletBase() { ADD_PROPERTY(Base,(nullptr)); ADD_PROPERTY(Edges,(0,0,0)); + ADD_PROPERTY_TYPE(EdgeLinks,(0), 0, + (App::PropertyType)(App::Prop_ReadOnly|App::Prop_Hidden),0); Edges.setSize(0); } short FilletBase::mustExecute() const { - if (Base.isTouched() || Edges.isTouched()) + if (Base.isTouched() || Edges.isTouched() || EdgeLinks.isTouched()) return 1; return 0; } +void FilletBase::onChanged(const App::Property *prop) { + if(getDocument() && !getDocument()->testStatus(App::Document::Restoring)) { + if(prop == &Edges || prop == &Base) { + if(!prop->testStatus(App::Property::User3)) + syncEdgeLink(); + } + } + Feature::onChanged(prop); +} + +void FilletBase::onDocumentRestored() { + if(EdgeLinks.getSubValues().empty()) + syncEdgeLink(); + Feature::onDocumentRestored(); +} + +void FilletBase::syncEdgeLink() { + if(!Base.getValue() || !Edges.getSize()) { + EdgeLinks.setValue(0); + return; + } + std::vector subs; + std::string sub("Edge"); + for(auto &info : Edges.getValues()) + subs.emplace_back(sub+std::to_string(info.edgeid)); + EdgeLinks.setValue(Base.getValue(),subs); +} + +void FilletBase::onUpdateElementReference(const App::Property *prop) { + if(prop!=&EdgeLinks || !getNameInDocument()) + return; + auto values = Edges.getValues(); + const auto &subs = EdgeLinks.getSubValues(); + for(size_t i=0;i=subs.size()) { + FC_WARN("fillet edge count mismatch in object " << getFullName()); + break; + } + int idx = 0; + sscanf(subs[i].c_str(),"Edge%d",&idx); + if(idx) + values[i].edgeid = idx; + else + FC_WARN("invalid fillet edge link '" << subs[i] << "' in object " + << getFullName()); + } + Edges.setStatus(App::Property::User3,true); + Edges.setValues(values); + Edges.setStatus(App::Property::User3,false); +} + // --------------------------------------------------------- PROPERTY_SOURCE(Part::FeatureExt, Part::Feature) diff --git a/src/Mod/Part/App/PartFeature.h b/src/Mod/Part/App/PartFeature.h index 5e377e6e55..f4888669ea 100644 --- a/src/Mod/Part/App/PartFeature.h +++ b/src/Mod/Part/App/PartFeature.h @@ -35,6 +35,11 @@ class gp_Dir; class BRepBuilderAPI_MakeShape; +namespace Data +{ +struct HistoryItem; +} + namespace Part { @@ -67,6 +72,34 @@ public: std::pair getElementName( const char *name, ElementNameType type=Normal) const override; + static std::list getElementHistory(App::DocumentObject *obj, + const char *name, bool recursive=true, bool sameType=false); + + static QVector + getRelatedElements(App::DocumentObject* obj, + const char* name, + HistoryTraceType sameType = HistoryTraceType::followTypeChange, + bool withCache = true); + + /** Obtain the element name from a feature based of the element name of its source feature + * + * @param obj: current feature + * @param subname: sub-object/element reference + * @param src: source feature + * @param srcSub: sub-object/element reference of the source + * @param single: if true, then return upon first match is found, or else + * return all matches. Multiple matches are possible for + * compound of multiple instances of the same source shape. + * + * @return Return a vector of pair of new style and old style element names. + */ + static QVector + getElementFromSource(App::DocumentObject *obj, + const char *subname, + App::DocumentObject *src, + const char *srcSub, + bool single = false); + TopLoc_Location getLocation() const; DocumentObject *getSubObject(const char *subname, PyObject **pyObj, @@ -110,6 +143,11 @@ public: return owner && owner->isDerivedFrom(getClassTypeId()); } + static Feature* + create(const TopoShape& shape, const char* name = nullptr, App::Document* document = nullptr); + + static bool isElementMappingDisabled(App::PropertyContainer *container); + protected: /// recompute only this object App::DocumentObjectExecReturn *recompute() override; @@ -137,8 +175,15 @@ public: App::PropertyLink Base; PropertyFilletEdges Edges; + App::PropertyLinkSub EdgeLinks; short mustExecute() const override; + void onUpdateElementReference(const App::Property *prop) override; + +protected: + void onDocumentRestored() override; + void onChanged(const App::Property *) override; + void syncEdgeLink(); }; using FeaturePython = App::FeaturePythonT; diff --git a/src/Mod/Part/App/PlateSurfacePy.xml b/src/Mod/Part/App/PlateSurfacePy.xml index 7de2361f4c..97480092ec 100644 --- a/src/Mod/Part/App/PlateSurfacePy.xml +++ b/src/Mod/Part/App/PlateSurfacePy.xml @@ -13,7 +13,7 @@ Constructor="true"> - + Represents a plate surface in FreeCAD. Plate surfaces can be defined by specifying points or curves as constraints, and they can also be approximated to B-spline surfaces using the makeApprox method. This class is commonly used in CAD modeling for creating surfaces that represent flat or curved plates, such as sheet metal components or structural elements. diff --git a/src/Mod/Part/App/PrimitiveFeature.cpp b/src/Mod/Part/App/PrimitiveFeature.cpp index 900fe17d81..773e5da1fe 100644 --- a/src/Mod/Part/App/PrimitiveFeature.cpp +++ b/src/Mod/Part/App/PrimitiveFeature.cpp @@ -116,11 +116,6 @@ void Primitive::Restore(Base::XMLReader &reader) Part::Feature::Restore(reader); } -void Primitive::handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) -{ - extHandleChangedPropertyName(reader, TypeName, PropName); // AttachExtension -} - void Primitive::handleChangedPropertyType(Base::XMLReader &reader, const char * TypeName, App::Property * prop) { // For #0001652 the property types of many primitive features have changed diff --git a/src/Mod/Part/App/PrimitiveFeature.h b/src/Mod/Part/App/PrimitiveFeature.h index ad4ba509c4..49dd4db804 100644 --- a/src/Mod/Part/App/PrimitiveFeature.h +++ b/src/Mod/Part/App/PrimitiveFeature.h @@ -49,7 +49,6 @@ public: protected: void Restore(Base::XMLReader &reader) override; void onChanged (const App::Property* prop) override; - void handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) override; void handleChangedPropertyType(Base::XMLReader &reader, const char * TypeName, App::Property * prop) override; }; diff --git a/src/Mod/Part/App/PropertyTopoShape.cpp b/src/Mod/Part/App/PropertyTopoShape.cpp index 4ecd86916e..a7e7786199 100644 --- a/src/Mod/Part/App/PropertyTopoShape.cpp +++ b/src/Mod/Part/App/PropertyTopoShape.cpp @@ -36,6 +36,7 @@ #endif // _PreComp_ #include +#include #include #include #include @@ -45,10 +46,15 @@ #include #include +#include "PartFeature.h" +#include "PartPyCXX.h" #include "PropertyTopoShape.h" #include "TopoShapePy.h" +#include "PartFeature.h" +FC_LOG_LEVEL_INIT("App", true, true) +namespace sp = std::placeholders; using namespace Part; TYPESYSTEM_SOURCE(Part::PropertyPartShape , App::PropertyComplexGeoData) @@ -61,14 +67,32 @@ void PropertyPartShape::setValue(const TopoShape& sh) { aboutToSetValue(); _Shape = sh; + auto obj = Base::freecad_dynamic_cast(getContainer()); + if(obj) { + auto tag = obj->getID(); + if(_Shape.Tag && tag!=_Shape.Tag) { + auto hasher = _Shape.Hasher?_Shape.Hasher:obj->getDocument()->getStringHasher(); + _Shape.reTagElementMap(tag,hasher); + } else + _Shape.Tag = obj->getID(); + if (!_Shape.Hasher && _Shape.hasChildElementMap()) { + _Shape.Hasher = obj->getDocument()->getStringHasher(); + _Shape.hashChildMaps(); + } + } hasSetValue(); + _Ver.clear(); } -void PropertyPartShape::setValue(const TopoDS_Shape& sh) +void PropertyPartShape::setValue(const TopoDS_Shape& sh, bool resetElementMap) { aboutToSetValue(); - _Shape.setShape(sh); + auto obj = dynamic_cast(getContainer()); + if(obj) + _Shape.Tag = obj->getID(); + _Shape.setShape(sh,resetElementMap); hasSetValue(); + _Ver.clear(); } const TopoDS_Shape& PropertyPartShape::getValue() const @@ -76,13 +100,26 @@ const TopoDS_Shape& PropertyPartShape::getValue() const return _Shape.getShape(); } -const TopoShape& PropertyPartShape::getShape() const +TopoShape PropertyPartShape::getShape() const { - return this->_Shape; + _Shape.initCache(-1); + auto res = _Shape; + // March, 2024 Toponaming project: There was originally an unused feature to disable + // elementMapping that has not been kept: + // if (Feature::isElementMappingDisabled(getContainer())) + // res.Tag = -1; + // else if (!res.Tag) { + if (!res.Tag) { + if (auto parent = Base::freecad_dynamic_cast(getContainer())) { + res.Tag = parent->getID(); + } + } + return res; } const Data::ComplexGeoData* PropertyPartShape::getComplexData() const { + _Shape.initCache(-1); return &(this->_Shape); } @@ -140,8 +177,23 @@ PyObject *PropertyPartShape::getPyObject() void PropertyPartShape::setPyObject(PyObject *value) { if (PyObject_TypeCheck(value, &(TopoShapePy::Type))) { - TopoShapePy *pcObject = static_cast(value); - setValue(*pcObject->getTopoShapePtr()); + auto shape = *static_cast(value)->getTopoShapePtr(); + auto owner = dynamic_cast(getContainer()); + if(owner && owner->getDocument()) { + if(shape.Tag || shape.getElementMapSize()) { + // We can't trust the meaning of the input shape tag, so we + // remap anyway + TopoShape res(owner->getID(),owner->getDocument()->getStringHasher(),shape.getShape()); + res.mapSubElement(shape); + shape = res; + }else{ + shape.Tag = owner->getID(); + if ( shape.Hasher ) { // TODO: This null guard added during TNP transition + shape.Hasher->clear(); + } + } + } + setValue(shape); } else { std::string error = std::string("type must be 'Shape', not "); @@ -153,20 +205,26 @@ void PropertyPartShape::setPyObject(PyObject *value) App::Property *PropertyPartShape::Copy() const { PropertyPartShape *prop = new PropertyPartShape(); - prop->_Shape = this->_Shape; - if (!_Shape.getShape().IsNull()) { - BRepBuilderAPI_Copy copy(_Shape.getShape()); - prop->_Shape.setShape(copy.Shape()); - } + // March, 2024 Toponaming project: There was originally a feature to enable making an element + // copy ( new geometry and map ) that has not been kept: +// if (PartParams::getShapePropertyCopy()) { +// // makeElementCopy() consume too much memory for complex geometry. +// prop->_Shape = this->_Shape.makeElementCopy(); +// } else +// prop->_Shape = this->_Shape; + prop->_Shape = this->_Shape; + prop->_Ver = this->_Ver; return prop; } void PropertyPartShape::Paste(const App::Property &from) { - aboutToSetValue(); - _Shape = dynamic_cast(from)._Shape; - hasSetValue(); + auto prop = Base::freecad_dynamic_cast(&from); + if(prop) { + setValue(prop->_Shape); + _Ver = prop->_Ver; + } } unsigned int PropertyPartShape::getMemSize () const @@ -188,6 +246,19 @@ void PropertyPartShape::getPaths(std::vector &paths) cons << App::ObjectIdentifier::Component::SimpleComponent(App::ObjectIdentifier::String("Volume"))); } +void PropertyPartShape::beforeSave() const +{ + _HasherIndex = 0; + _SaveHasher = false; + auto owner = Base::freecad_dynamic_cast(getContainer()); + if(owner && !_Shape.isNull() && _Shape.getElementMapSize()>0) { + auto ret = owner->getDocument()->addStringHasher(_Shape.Hasher); + _HasherIndex = ret.second; + _SaveHasher = ret.first; + _Shape.beforeSave(); + } +} + void PropertyPartShape::Save (Base::Writer &writer) const { if(!writer.isForceXML()) { @@ -205,6 +276,69 @@ void PropertyPartShape::Save (Base::Writer &writer) const } } +#ifdef NOT_YET_AND_MAYBE_NEVER +void PropertyPartShape::Save (Base::Writer &writer) const +{ + //See SaveDocFile(), RestoreDocFile() + writer.Stream() << writer.ind() << "(getContainer()); + if(owner && !_Shape.isNull() + && _Shape.getElementMapSize()>0 + && !_Shape.Hasher.isNull()) { + writer.Stream() << " HasherIndex=\"" << _HasherIndex << '"'; + if(_SaveHasher) + writer.Stream() << " SaveHasher=\"1\""; + } + std::string version; + // If exporting, do not export mapped element name, but still make a mark + if(owner) { + if(!owner->isExporting()) + version = _Ver.size()?_Ver:owner->getElementMapVersion(this); + }else + version = _Ver.size()?_Ver:_Shape.getElementMapVersion(); + writer.Stream() << " ElementMap=\"" << version << '"'; + + bool binary = writer.getMode("BinaryBrep"); + bool toXML = writer.getFileVersion()>1 && writer.isForceXML()>=(binary?3:2); + if(!toXML) { + writer.Stream() << " file=\"" + << writer.addFile(getFileName(binary?".bin":".brp"), this) + << "\"/>\n"; + } else if(binary) { + writer.Stream() << " binary=\"1\">\n"; + TopoShape shape; + shape.setShape(_Shape.getShape()); + shape.exportBinary(writer.beginCharStream(true)); + writer.endCharStream() << writer.ind() << "\n"; + } else { + writer.Stream() << " brep=\"1\">\n"; + _Shape.exportBrep(writer.beginCharStream(false)<<'\n'); + writer.endCharStream() << '\n' << writer.ind() << "\n"; + } + + if(_SaveHasher) { + if(!toXML) + _Shape.Hasher->setPersistenceFileName(getFileName(".Table").c_str()); + else + _Shape.Hasher->setPersistenceFileName(0); + _Shape.Hasher->Save(writer); + } + if(version.size()) { + if(!toXML) + _Shape.setPersistenceFileName(getFileName(".Map").c_str()); + else + _Shape.setPersistenceFileName(0); + _Shape.Save(writer); + } +} +#endif + +std::string PropertyPartShape::getElementMapVersion(bool restored) const { + if(restored) + return _Ver; + return PropertyComplexGeoData::getElementMapVersion(false); +} + void PropertyPartShape::Restore(Base::XMLReader &reader) { reader.readElement("Part"); @@ -216,6 +350,106 @@ void PropertyPartShape::Restore(Base::XMLReader &reader) } } +#ifdef NOT_YET_AND_MAYBE_NEVER +void PropertyPartShape::Restore(Base::XMLReader &reader) +{ + reader.readElement("Part"); + + auto owner = Base::freecad_dynamic_cast(getContainer()); + _Ver = "?"; + bool has_ver = reader.hasAttribute("ElementMap"); + if(has_ver) + _Ver = reader.getAttribute("ElementMap"); + + int hasher_idx = reader.getAttributeAsInteger("HasherIndex","-1"); + int save_hasher = reader.getAttributeAsInteger("SaveHasher",""); + + TopoDS_Shape sh; + + if(reader.hasAttribute("file")) { + std::string file = reader.getAttribute("file"); + if (!file.empty()) { + // initiate a file read + reader.addFile(file.c_str(),this); + } + } else if(reader.getAttributeAsInteger("binary","")) { + TopoShape shape; + shape.importBinary(reader.beginCharStream(true)); + sh = shape.getShape(); + } else if(reader.getAttributeAsInteger("brep","")) { + BRep_Builder builder; + BRepTools::Read(sh, reader.beginCharStream(false), builder); + } + + reader.readEndElement("Part"); + + if(owner && hasher_idx>=0) { + _Shape.Hasher = owner->getDocument()->getStringHasher(hasher_idx); + if(save_hasher) + _Shape.Hasher->Restore(reader); + } + + if(has_ver) { + // The file name here is not used for restore, but just a way to get + // more useful error message if something wrong when restoring + _Shape.setPersistenceFileName(getFileName().c_str()); + if(owner && owner->getDocument()->testStatus(App::Document::PartialDoc)) + _Shape.Restore(reader); + else if(_Ver == "?" || _Ver.empty()) { + // This indicate the shape is saved by legacy version without + // element map info. + if(owner) { + // This will ask user for recompute after import + owner->getDocument()->addRecomputeObject(owner); + } + }else{ + _Shape.Restore(reader); + if (owner ? owner->checkElementMapVersion(this, _Ver.c_str()) + : _Shape.checkElementMapVersion(_Ver.c_str())) { + auto ver = owner?owner->getElementMapVersion(this):_Shape.getElementMapVersion(); + if(!owner || !owner->getNameInDocument() || !_Shape.getElementMapSize()) { + _Ver = ver; + } else { + // version mismatch, signal for regenerating. + static const char *warnedDoc=0; + if(warnedDoc != owner->getDocument()->getName()) { + warnedDoc = owner->getDocument()->getName(); + FC_WARN("Recomputation required for document '" << warnedDoc + << "' on geo element version change in " << getFullName() + << ": " << _Ver << " -> " << ver); + } + owner->getDocument()->addRecomputeObject(owner); + } + } + } + } else if(owner && !owner->getDocument()->testStatus(App::Document::PartialDoc)) { + if(App::DocumentParams::getWarnRecomputeOnRestore()) { + FC_WARN("Pending recompute for generating element map: " << owner->getFullName()); + owner->getDocument()->addRecomputeObject(owner); + } + } + + if (!sh.IsNull() || !_Shape.isNull()) { + aboutToSetValue(); + _Shape.setShape(sh,false); + hasSetValue(); + } +} + +void PropertyPartShape::afterRestore() +{ + if (_Shape.isRestoreFailed()) { + // this cause GeoFeature::updateElementReference() to call + // PropertyLinkBase::updateElementReferences() with reverse = true, in + // order to try to regenerate the element map + _Ver = "?"; + } + else if (_Shape.getElementMapSize() == 0) + _Shape.Hasher->clear(); //reset(); + PropertyComplexGeoData::afterRestore(); +} +#endif + // The following function is copied from OCCT BRepTools.cxx and modified // to disable saving of triangulation // @@ -406,6 +640,88 @@ void PropertyPartShape::RestoreDocFile(Base::Reader &reader) // ------------------------------------------------------------------------- +ShapeHistory::ShapeHistory(BRepBuilderAPI_MakeShape& mkShape, TopAbs_ShapeEnum type, + const TopoDS_Shape& newS, const TopoDS_Shape& oldS) +{ + reset(mkShape,type,newS,oldS); +} + +void ShapeHistory::reset(BRepBuilderAPI_MakeShape& mkShape, TopAbs_ShapeEnum type, + const TopoDS_Shape& newS, const TopoDS_Shape& oldS) +{ + shapeMap.clear(); + this->type = type; + + TopTools_IndexedMapOfShape newM, oldM; + TopExp::MapShapes(newS, type, newM); // map containing all old objects of type "type" + TopExp::MapShapes(oldS, type, oldM); // map containing all new objects of type "type" + + // Look at all objects in the old shape and try to find the modified object in the new shape + for (int i=1; i<=oldM.Extent(); i++) { + bool found = false; + TopTools_ListIteratorOfListOfShape it; + // Find all new objects that are a modification of the old object (e.g. a face was resized) + for (it.Initialize(mkShape.Modified(oldM(i))); it.More(); it.Next()) { + found = true; + for (int j=1; j<=newM.Extent(); j++) { // one old object might create several new ones! + if (newM(j).IsPartner(it.Value())) { + shapeMap[i-1].push_back(j-1); // adjust indices to start at zero + break; + } + } + } + + // Find all new objects that were generated from an old object (e.g. a face generated from an edge) + for (it.Initialize(mkShape.Generated(oldM(i))); it.More(); it.Next()) { + found = true; + for (int j=1; j<=newM.Extent(); j++) { + if (newM(j).IsPartner(it.Value())) { + shapeMap[i-1].push_back(j-1); + break; + } + } + } + + if (!found) { + // Find all old objects that don't exist any more (e.g. a face was completely cut away) + if (mkShape.IsDeleted(oldM(i))) { + shapeMap[i-1] = std::vector(); + } + else { + // Mop up the rest (will this ever be reached?) + for (int j=1; j<=newM.Extent(); j++) { + if (newM(j).IsPartner(oldM(i))) { + shapeMap[i-1].push_back(j-1); + break; + } + } + } + } + } +} + +void ShapeHistory::join(const ShapeHistory& newH) +{ + ShapeHistory join; + + for (ShapeHistory::MapList::const_iterator it = shapeMap.begin(); it != shapeMap.end(); ++it) { + int old_shape_index = it->first; + if (it->second.empty()) + join.shapeMap[old_shape_index] = ShapeHistory::List(); + for (ShapeHistory::List::const_iterator jt = it->second.begin(); jt != it->second.end(); ++jt) { + ShapeHistory::MapList::const_iterator kt = newH.shapeMap.find(*jt); + if (kt != newH.shapeMap.end()) { + ShapeHistory::List& ary = join.shapeMap[old_shape_index]; + ary.insert(ary.end(), kt->second.begin(), kt->second.end()); + } + } + } + + shapeMap.swap(join.shapeMap); +} + +// ------------------------------------------------------------------------- + TYPESYSTEM_SOURCE(Part::PropertyShapeHistory , App::PropertyLists) PropertyShapeHistory::PropertyShapeHistory() = default; @@ -577,3 +893,135 @@ void PropertyFilletEdges::Paste(const Property &from) _lValueList = dynamic_cast(from)._lValueList; hasSetValue(); } + +// ------------------------------------------------------------------------- + +TYPESYSTEM_SOURCE(Part::PropertyShapeCache, App::Property); + +App::Property *PropertyShapeCache::Copy(void) const { + return new PropertyShapeCache(); +} + +void PropertyShapeCache::Paste(const App::Property &) { + cache.clear(); +} + +void PropertyShapeCache::Save (Base::Writer &) const +{ +} + +void PropertyShapeCache::Restore(Base::XMLReader &) +{ +} + +/** + * Make a new python List with a tuple for each cache entry containing the key and the shape + * @return the python list + */ +PyObject *PropertyShapeCache::getPyObject() { + Py::List res; + for(auto &v : cache) + res.append(Py::TupleN(Py::String(v.first),shape2pyshape(v.second))); + return Py::new_reference_to(res); +} + +/** + * Remove the cache entries for every element in the list + * @param value A python list of entry names + */ +void PropertyShapeCache::setPyObject(PyObject *value) { + if(!value) + return; + if(value == Py_None) { + cache.clear(); + return; + } + App::PropertyStringList prop; + prop.setPyObject(value); + for(const auto &sub : prop.getValues()) + cache.erase(sub); +} + +#define SHAPE_CACHE_NAME "_Part_ShapeCache" +/** + * Find or create the shape cache for a document object + * @param obj The document object + * @param create True if we should create the cache if it doesn't exist + * @return The shape cache, or null if we aren't creating and it doesn't exist + */ +PropertyShapeCache *PropertyShapeCache::get(const App::DocumentObject *obj, bool create) { + auto prop = Base::freecad_dynamic_cast( + obj->getDynamicPropertyByName(SHAPE_CACHE_NAME)); + if(prop && prop->getContainer()==obj) + return prop; + if(!create) + return 0; + + prop = static_cast( + const_cast(obj)->addDynamicProperty("Part::PropertyShapeCache", + SHAPE_CACHE_NAME,"Part","Shape cache", + App::Prop_NoPersist|App::Prop_Output|App::Prop_Hidden)); + if(!prop) + FC_ERR("Failed to add shape cache for " << obj->getFullName()); + else + prop->connChanged = const_cast(obj)->signalEarlyChanged.connect( + std::bind(&PropertyShapeCache::slotChanged,prop,sp::_1,sp::_2)); + return prop; +} + +/** + * Look up and return a shape in the cache + * @param obj The document object to look in + * @param shape The found shape is returned here + * @param subname The key to look up + * @return True if the name was found + */ +bool PropertyShapeCache::getShape(const App::DocumentObject *obj, TopoShape &shape, const char *subname) { +// March, 2024 Toponaming project: There was originally a feature to disable shape cache +// that has not been kept: +// if (PartParams::getDisableShapeCache()) +// return false; + auto prop = get(obj,false); + if(!prop) + return false; + if(!subname) subname = ""; + auto it = prop->cache.find(subname); + if(it!=prop->cache.end()) { + shape = it->second; + return !shape.isNull(); + } + return false; +} + +/** + * Find or create the property shape cache in a document object and then add an entry + * @param obj The Object + * @param shape The shape to cache + * @param subname The key to point at that shape + */ +void PropertyShapeCache::setShape( + const App::DocumentObject *obj, const TopoShape &shape, const char *subname) +{ +// March, 2024 Toponaming project: There was originally a feature to disable shape cache +// that has not been kept: +// if (PartParams::getDisableShapeCache()) +// return; + auto prop = get(obj,true); + if(!prop) + return; + if(!subname) subname = ""; + prop->cache[subname] = shape; +} + +void PropertyShapeCache::slotChanged(const App::DocumentObject &, const App::Property &prop) { + auto propName = prop.getName(); + if(!propName) return; + if(strcmp(propName,"Group")==0 || + strcmp(propName,"Shape")==0 || + strstr(propName,"Touched")!=0) + { + FC_LOG("clear shape cache on changed " << prop.getFullName()); + cache.clear(); + } +} + diff --git a/src/Mod/Part/App/PropertyTopoShape.h b/src/Mod/Part/App/PropertyTopoShape.h index 54c495fdc4..fd9bb42570 100644 --- a/src/Mod/Part/App/PropertyTopoShape.h +++ b/src/Mod/Part/App/PropertyTopoShape.h @@ -35,6 +35,7 @@ namespace Part { +class Feature; /** The part shape property class. * @author Werner Mayer */ @@ -51,10 +52,10 @@ public: /// set the part shape void setValue(const TopoShape&); /// set the part shape - void setValue(const TopoDS_Shape&); + void setValue(const TopoDS_Shape&, bool resetElementMap=true); /// get the part shape const TopoDS_Shape& getValue() const; - const TopoShape& getShape() const; + TopoShape getShape() const; const Data::ComplexGeoData* getComplexData() const override; //@} @@ -85,6 +86,8 @@ public: void Save (Base::Writer &writer) const override; void Restore(Base::XMLReader &reader) override; + virtual void beforeSave() const override; + void SaveDocFile (Base::Writer &writer) const override; void RestoreDocFile(Base::Reader &reader) override; @@ -96,6 +99,13 @@ public: /// Get valid paths for this property; used by auto completer void getPaths(std::vector & paths) const override; + virtual std::string getElementMapVersion(bool restored=false) const override; + void resetElementMapVersion() {_Ver.clear();} + +// virtual void afterRestore() override; + + friend class Feature; + private: void saveToFile(Base::Writer &writer) const; void loadFromFile(Base::Reader &reader); @@ -103,6 +113,9 @@ private: private: TopoShape _Shape; + std::string _Ver; + mutable int _HasherIndex = 0; + mutable bool _SaveHasher = false; }; struct PartExport ShapeHistory { @@ -115,6 +128,20 @@ struct PartExport ShapeHistory { TopAbs_ShapeEnum type; MapList shapeMap; + ShapeHistory() {} + /** + * Build a history of changes + * MakeShape: The operation that created the changes, e.g. BRepAlgoAPI_Common + * type: The type of object we are interested in, e.g. TopAbs_FACE + * newS: The new shape that was created by the operation + * oldS: The original shape prior to the operation + */ + ShapeHistory(BRepBuilderAPI_MakeShape& mkShape, TopAbs_ShapeEnum type, + const TopoDS_Shape& newS, const TopoDS_Shape& oldS); + void reset(BRepBuilderAPI_MakeShape& mkShape, TopAbs_ShapeEnum type, + const TopoDS_Shape& newS, const TopoDS_Shape& oldS); + void join(const ShapeHistory &newH); + }; class PartExport PropertyShapeHistory : public App::PropertyLists @@ -168,6 +195,20 @@ private: struct PartExport FilletElement { int edgeid; double radius1, radius2; + + FilletElement(int id=0,double r1=1.0,double r2=1.0) + :edgeid(id),radius1(r1),radius2(r2) + {} + + bool operator<(const FilletElement &other) const { + return edgeid < other.edgeid; + } + + bool operator==(const FilletElement &other) const { + return edgeid == other.edgeid + && radius1 == other.radius1 + && radius2 == other.radius2; + } }; class PartExport PropertyFilletEdges : public App::PropertyLists @@ -215,6 +256,34 @@ private: std::vector _lValueList; }; + +class PartExport PropertyShapeCache: public App::Property { + TYPESYSTEM_HEADER_WITH_OVERRIDE(); +public: + virtual App::Property *Copy(void) const override; + + virtual void Paste(const App::Property &) override; + + virtual PyObject *getPyObject() override; + + virtual void setPyObject(PyObject *value) override; + + virtual void Save (Base::Writer &writer) const override; + + virtual void Restore(Base::XMLReader &reader) override; + + static PropertyShapeCache *get(const App::DocumentObject *obj, bool create); + static bool getShape(const App::DocumentObject *obj, TopoShape &shape, const char *subname=0); + static void setShape(const App::DocumentObject *obj, const TopoShape &shape, const char *subname=0); + +private: + void slotChanged(const App::DocumentObject &, const App::Property &prop); + +private: + std::unordered_map cache; + boost::signals2::scoped_connection connChanged; +}; + } //namespace Part diff --git a/src/Mod/Part/App/RectangularTrimmedSurfacePy.xml b/src/Mod/Part/App/RectangularTrimmedSurfacePy.xml index 5dcea588bd..f6672af013 100644 --- a/src/Mod/Part/App/RectangularTrimmedSurfacePy.xml +++ b/src/Mod/Part/App/RectangularTrimmedSurfacePy.xml @@ -32,7 +32,7 @@ necessarily have the same orientation as the basis surface. - + Represents the basis surface from which the trimmed surface is derived. diff --git a/src/Mod/Part/App/ShapeFix/ShapeFix_EdgePy.xml b/src/Mod/Part/App/ShapeFix/ShapeFix_EdgePy.xml index 69d3ec4f7b..602230b643 100644 --- a/src/Mod/Part/App/ShapeFix/ShapeFix_EdgePy.xml +++ b/src/Mod/Part/App/ShapeFix/ShapeFix_EdgePy.xml @@ -25,7 +25,7 @@ (e.g., after import from IGES) Returns: True, if does not match, removed (status DONE) False, (status OK) if matches or (status FAIL) if no pcurve, - nothing done + nothing done. @@ -33,13 +33,12 @@ Removes 3d curve of the edge if it does not match the vertices Returns: True, if does not match, removed (status DONE) False, (status OK) if matches or (status FAIL) if no 3d curve, - nothing done - + nothing done. - Adds pcurve(s) of the edge if missing (by projecting 3d curve) + Adds pcurve(s) of the edge if missing (by projecting 3d curve) Parameter isSeam indicates if the edge is a seam. The parameter 'prec' defines the precision for calculations. If it is 0 (default), the tolerance of the edge is taken. @@ -55,7 +54,7 @@ DONE1: Pcurve was added DONE2: specific case of pcurve going through degenerated point on sphere encountered during projection (see class - ShapeConstruct_ProjectCurveOnSurface for more info) + ShapeConstruct_ProjectCurveOnSurface for more info). @@ -67,24 +66,24 @@ Status : OK : 3d curve exists FAIL1: BRepLib::BuildCurve3d() has failed - DONE1: 3d curve was added + DONE1: 3d curve was added. - Increases the tolerances of the edge vertices to comprise + Increases the tolerances of the edge vertices to comprise the ends of 3d curve and pcurve on the given face (first method) or all pcurves stored in an edge (second one) Returns: True, if tolerances have been increased, otherwise False Status: OK : the original tolerances have not been changed DONE1: the tolerance of first vertex has been increased - DONE2: the tolerance of last vertex has been increased + DONE2: the tolerance of last vertex has been increased. - Fixes edge if pcurve is directed opposite to 3d curve + Fixes edge if pcurve is directed opposite to 3d curve Check is done by call to the function ShapeAnalysis_Edge::CheckCurve3dWithPCurve() Warning: For seam edge this method will check and fix the pcurve in only @@ -94,7 +93,7 @@ Status: OK - pcurve OK, nothing done FAIL1 - no pcurve FAIL2 - no 3d curve - DONE1 - pcurve was reversed + DONE1 - pcurve was reversed. @@ -108,7 +107,7 @@ its 3d curve. If deviation > tolerance, the tolerance of edge is increased to a value of deviation. If deviation < tolerance nothing happens. - + If flag SameParameter is not set, this method chooses the best variant (one that has minimal tolerance), either a. only after computing deviation (as above) or @@ -116,7 +115,7 @@ and computing deviation (as above). If 'tolerance' > 0, it is used as parameter for BRepLib::SameParameter, otherwise, tolerance of the edge is used. - + Use : Is to be called after all pcurves and 3d curve of the edge are correctly computed Remark : SameParameter flag is always set to True after this method @@ -130,7 +129,7 @@ DONE3 - edge was modified by BRepLib::SameParameter() to SameParameter DONE4 - not used anymore DONE5 - if the edge resulting from BRepLib has been chosen, i.e. variant b. above - (only for edges with not set SameParameter) + (only for edges with not set SameParameter). diff --git a/src/Mod/Part/App/TopoShape.cpp b/src/Mod/Part/App/TopoShape.cpp index b303f2ad50..b25190f94c 100644 --- a/src/Mod/Part/App/TopoShape.cpp +++ b/src/Mod/Part/App/TopoShape.cpp @@ -172,6 +172,7 @@ #include #include "TopoShape.h" +#include "BRepMesh.h" #include "BRepOffsetAPI_MakeOffsetFix.h" #include "CrossSection.h" #include "encodeFilename.h" @@ -335,50 +336,20 @@ Data::Segment* TopoShape::getSubElement(const char* Type, unsigned long n) const return new ShapeSegment(getSubShape(temp.c_str())); } -TopoDS_Shape TopoShape::getSubShape(const char* Type, bool silent) const -{ - auto res = shapeTypeAndIndex(Type); - return getSubShape(res.first,res.second,silent); +// Type can be (should be?) a subshape name, not a type, E.G. Edge3 +TopoDS_Shape TopoShape::getSubShape(const char* Type, bool silent) const { + TopoShape s(*this); + s.Tag = 0; + return s.getSubTopoShape(Type,silent).getShape(); } -TopoDS_Shape TopoShape::getSubShape(TopAbs_ShapeEnum type, int index, bool silent) const -{ - if(index <= 0) { - if(silent) - return {}; - // TODO: Is this message clear? Should we complain about the negative index instead - Standard_Failure::Raise("Unsupported sub-shape type"); - } - - if (this->_Shape.IsNull()) { - if(silent) - return {}; - Standard_Failure::Raise("Cannot get sub-shape from empty shape"); - } - - try { - if(type == TopAbs_SHAPE) { - int i=1; - for(TopoDS_Iterator it(_Shape);it.More();it.Next(),++i) { - if(i == index) - return it.Value(); - } - } else { - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(this->_Shape, type, anIndices); - if(index <= anIndices.Extent()) - return anIndices.FindKey(index); - } - } catch(Standard_Failure &) { - if(silent) - return {}; - throw; - } - if(!silent) - Standard_Failure::Raise("Index out of bound"); - return {}; +TopoDS_Shape TopoShape::getSubShape(TopAbs_ShapeEnum type, int idx, bool silent) const { + TopoShape s(*this); + s.Tag = 0; + return s.getSubTopoShape(type,idx,silent).getShape(); } + unsigned long TopoShape::countSubShapes(const char* Type) const { if(!Type) @@ -556,44 +527,44 @@ PyObject * TopoShape::getPyObject() { Base::PyObjectBase* prop = nullptr; if (_Shape.IsNull()) { - prop = new TopoShapePy(new TopoShape(_Shape)); + prop = new TopoShapePy(new TopoShape(*this)); } else { TopAbs_ShapeEnum type = _Shape.ShapeType(); switch (type) { case TopAbs_COMPOUND: - prop = new TopoShapeCompoundPy(new TopoShape(_Shape)); + prop = new TopoShapeCompoundPy(new TopoShape(*this)); break; case TopAbs_COMPSOLID: - prop = new TopoShapeCompSolidPy(new TopoShape(_Shape)); + prop = new TopoShapeCompSolidPy(new TopoShape(*this)); break; case TopAbs_SOLID: - prop = new TopoShapeSolidPy(new TopoShape(_Shape)); + prop = new TopoShapeSolidPy(new TopoShape(*this)); break; case TopAbs_SHELL: - prop = new TopoShapeShellPy(new TopoShape(_Shape)); + prop = new TopoShapeShellPy(new TopoShape(*this)); break; case TopAbs_FACE: - prop = new TopoShapeFacePy(new TopoShape(_Shape)); + prop = new TopoShapeFacePy(new TopoShape(*this)); break; case TopAbs_WIRE: - prop = new TopoShapeWirePy(new TopoShape(_Shape)); + prop = new TopoShapeWirePy(new TopoShape(*this)); break; case TopAbs_EDGE: - prop = new TopoShapeEdgePy(new TopoShape(_Shape)); + prop = new TopoShapeEdgePy(new TopoShape(*this)); break; case TopAbs_VERTEX: - prop = new TopoShapeVertexPy(new TopoShape(_Shape)); + prop = new TopoShapeVertexPy(new TopoShape(*this)); break; case TopAbs_SHAPE: default: - prop = new TopoShapePy(new TopoShape(_Shape)); + prop = new TopoShapePy(new TopoShape(*this)); break; } } - prop->setNotTracking(); + prop->setNotTracking(); // TODO: Does this still belong here? return prop; } @@ -609,6 +580,14 @@ void TopoShape::setPyObject(PyObject* obj) } } +//void TopoShape::operator = (const TopoShape& sh) +//{ +// if (this != &sh) { +// this->Tag = sh.Tag; +// this->_Shape = sh._Shape; +// } +//} + void TopoShape::convertTogpTrsf(const Base::Matrix4D& mtrx, gp_Trsf& trsf) { trsf.SetValues(mtrx[0][0],mtrx[0][1],mtrx[0][2],mtrx[0][3], @@ -3359,118 +3338,12 @@ void TopoShape::getDomains(std::vector& domains) const } } -namespace Part { -struct MeshVertex -{ - Standard_Real x,y,z; - Standard_Integer i; - - MeshVertex(Standard_Real X, Standard_Real Y, Standard_Real Z) - : x(X),y(Y),z(Z),i(0) - { - } - explicit MeshVertex(const Base::Vector3d& p) - : x(p.x),y(p.y),z(p.z),i(0) - { - } - - Base::Vector3d toPoint() const - { return Base::Vector3d(x,y,z); } - - bool operator < (const MeshVertex &v) const - { - if (fabs ( this->x - v.x) >= MESH_MIN_PT_DIST) - return this->x < v.x; - if (fabs ( this->y - v.y) >= MESH_MIN_PT_DIST) - return this->y < v.y; - if (fabs ( this->z - v.z) >= MESH_MIN_PT_DIST) - return this->z < v.z; - return false; // points are considered to be equal - } - -private: - // use the same value as used inside the Mesh module - static const double MESH_MIN_PT_DIST; -}; -} - -const double MeshVertex::MESH_MIN_PT_DIST = 10 * std::numeric_limits::epsilon(); - void TopoShape::getFacesFromDomains(const std::vector& domains, std::vector& points, std::vector& faces) const { - std::set vertices; - Standard_Real x1, y1, z1; - Standard_Real x2, y2, z2; - Standard_Real x3, y3, z3; - - for (const auto & domain : domains) { - for (std::vector::const_iterator jt = domain.facets.begin(); jt != domain.facets.end(); ++jt) { - x1 = domain.points[jt->I1].x; - y1 = domain.points[jt->I1].y; - z1 = domain.points[jt->I1].z; - - x2 = domain.points[jt->I2].x; - y2 = domain.points[jt->I2].y; - z2 = domain.points[jt->I2].z; - - x3 = domain.points[jt->I3].x; - y3 = domain.points[jt->I3].y; - z3 = domain.points[jt->I3].z; - - TopoShape::Facet face; - std::set::iterator vIt; - - // 1st vertex - MeshVertex v1(x1,y1,z1); - vIt = vertices.find(v1); - if (vIt == vertices.end()) { - v1.i = vertices.size(); - face.I1 = v1.i; - vertices.insert(v1); - } - else { - face.I1 = vIt->i; - } - - // 2nd vertex - MeshVertex v2(x2,y2,z2); - vIt = vertices.find(v2); - if (vIt == vertices.end()) { - v2.i = vertices.size(); - face.I2 = v2.i; - vertices.insert(v2); - } - else { - face.I2 = vIt->i; - } - - // 3rd vertex - MeshVertex v3(x3,y3,z3); - vIt = vertices.find(v3); - if (vIt == vertices.end()) { - v3.i = vertices.size(); - face.I3 = v3.i; - vertices.insert(v3); - } - else { - face.I3 = vIt->i; - } - - // make sure that we don't insert invalid facets - if (face.I1 != face.I2 && - face.I2 != face.I3 && - face.I3 != face.I1) - faces.push_back(face); - } - } - - std::vector meshPoints; - meshPoints.resize(vertices.size()); - for (const auto & vertex : vertices) - meshPoints[vertex.i] = vertex.toPoint(); - points.swap(meshPoints); + BRepMesh mesh; + mesh.getFacesFromDomains(domains, points, faces); } double TopoShape::getAccuracy() const @@ -4084,6 +3957,7 @@ TopoShape &TopoShape::makeRefine(const TopoShape &shape, const char *op, RefineF return *this; } +// TODO: Does the toponaming branch version of this method need to be here? bool TopoShape::findPlane(gp_Pln &pln, double tol) const { if(_Shape.IsNull()) return false; diff --git a/src/Mod/Part/App/TopoShape.h b/src/Mod/Part/App/TopoShape.h index 89c55a3940..a7f0ebe048 100644 --- a/src/Mod/Part/App/TopoShape.h +++ b/src/Mod/Part/App/TopoShape.h @@ -220,14 +220,15 @@ enum class CheckScale checkScale }; -enum class Copy +enum class CopyType { noCopy, copy }; /// Filling style when making a BSpline face -enum FillingStyle { +enum FillingStyle +{ /// The style with the flattest patches stretch, /// A rounded style of patch with less depth than those of Curved @@ -236,6 +237,30 @@ enum FillingStyle { curved, }; +enum class CoordinateSystem +{ + relativeToSpine, + global +}; + +enum class Spine +{ + notOn, + on +}; + +enum class FillType +{ + noFill, + fill +}; + +enum class OpenResult +{ + noOpenResult, + allowOpenResult +}; + /** The representation for a CAD Shape */ // NOLINTNEXTLINE cppcoreguidelines-special-member-functions @@ -869,6 +894,171 @@ public: return TopoShape(0,Hasher).makeElementThickSolid(*this,faces,offset,tol,intersection,selfInter, offsetMode,join,op); } + /** Make a 3D offset of a given shape + * + * @param source: source shape + * @param offset: distance to offset + * @param tol: tolerance criterion for coincidence in generated shapes + * @param intersection: whether to check intersection in all generated parallel + * (OCCT document states the option is not fully implemented) + * @param selfInter: whether to eliminate self intersection + * (OCCT document states the option is not implemented) + * @param offsetMode: defines the construction type of parallels applied to free edges + * (OCCT document states the option is not implemented) + * @param join: join type. Only support JoinType::Arc and JoinType::Intersection. + * @param fill: whether to build a solid by fill the offset + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return The original content of this TopoShape is discarded and replaced + * with the new shape. The function returns the TopoShape itself as + * a self reference so that multiple operations can be carried out + * for the same shape in the same line of code. + */ + TopoShape& makeElementOffset(const TopoShape& source, + double offset, + double tol, + bool intersection = false, + bool selfInter = false, + short offsetMode = 0, + JoinType join = JoinType::arc, + FillType fill = FillType::noFill, + const char* op = nullptr); + + /** Make a 3D offset of this shape + * + * @param offset: distance to offset + * @param tol: tolerance criterion for coincidence in generated shapes + * @param intersection: whether to check intersection in all generated parallel + * (OCCT document states the option is not fully implemented) + * @param selfInter: whether to eliminate self intersection + * (OCCT document states the option is not implemented) + * @param offsetMode: defines the construction type of parallels applied to free edges + * (OCCT document states the option is not implemented) + * @param fill: whether to build a solid by fill the offset + * @param join: join type. Only support JoinType::Arc and JoinType::Intersection. + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return Return the new shape. The TopoShape itself is not modified. + */ + TopoShape makeElementOffset(double offset, + double tol, + bool intersection = false, + bool selfInter = false, + short offsetMode = 0, + JoinType join = JoinType::arc, + FillType fill = FillType::noFill, + const char* op = nullptr) const + { + return TopoShape(0, Hasher).makeElementOffset(*this, + offset, + tol, + intersection, + selfInter, + offsetMode, + join, + fill, + op); + } + + /** Make a 2D offset of a given shape + * + * @param source: source shape of edge, wire, face, or compound + * @param offset: distance to offset + * @param allowOpenResult: whether to allow open edge/wire + * @param join: join type. Only support JoinType::Arc and JoinType::Intersection. + * @param intersection: if true, then offset all non-compound shape + * together to deal with possible intersection after + * expanding the shape. If false, then offset each + * shape separately. + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return The original content of this TopoShape is discarded and replaced + * with the new shape. The function returns the TopoShape itself as + * a self reference so that multiple operations can be carried out + * for the same shape in the same line of code. + */ + TopoShape& makeElementOffset2D(const TopoShape& source, + double offset, + JoinType join = JoinType::arc, + FillType fill = FillType::noFill, + OpenResult allowOpenResult = OpenResult::allowOpenResult, + bool intersection = false, + const char* op = nullptr); + /** Make a 2D offset of a given shape + * + * @param source: source shape of edge, wire, face, or compound + * @param offset: distance to offset + * @param allowOpenResult: whether to allow open edge/wire + * @param join: join type. Only support JoinType::Arc and JoinType::Intersection. + * @param intersection: if true, then offset all non-compound shape + * together to deal with possible intersection after + * expanding the shape. If false, then offset each + * shape separately. + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return Return the new shape. The TopoShape itself is not modified. + */ + TopoShape makeElementOffset2D(double offset, + JoinType join = JoinType::arc, + FillType fill = FillType::noFill, + OpenResult allowOpenResult = OpenResult::allowOpenResult, + bool intersection = false, + const char* op = nullptr) const + { + return TopoShape(0, Hasher) + .makeElementOffset2D(*this, offset, join, fill, allowOpenResult, intersection, op); + } + + /** Make a 2D offset of face with separate control for outer and inner (hole) wires + * + * @param source: source shape of any type, but only faces inside will be used + * @param offset: distance to offset for outer wires of the faces + * @param innerOffset: distance to offset for inner wires of the faces + * @param join: join type of outer wire. Only support JoinType::Arc and JoinType::Intersection. + * @param innerJoin: join type of inner wire. Only support JoinType::Arc and + * JoinType::Intersection. + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return The original content of this TopoShape is discarded and replaced + * with the new shape. The function returns the TopoShape itself as + * a self reference so that multiple operations can be carried out + * for the same shape in the same line of code. + */ + TopoShape& makeElementOffsetFace(const TopoShape& source, + double offset, + double innerOffset, + JoinType join = JoinType::arc, + JoinType innerJoin = JoinType::arc, + const char* op = nullptr); + + /** Make a 2D offset of face with separate control for outer and inner (hole) wires + * + * @param source: source shape of any type, but only faces inside will be used + * @param offset: distance to offset for outer wires of the faces + * @param innerOffset: distance to offset for inner wires of the faces + * @param join: join type of outer wire. Only support JoinType::Arc and JoinType::Intersection. + * @param innerJoin: join type of inner wire. Only support JoinType::Arc and + * JoinType::Intersection. + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return Return the new shape. The TopoShape itself is not modified. + */ + TopoShape makeElementOffsetFace(double offset, + double innerOffset, + JoinType join = JoinType::arc, + JoinType innerJoin = JoinType::arc, + const char* op = nullptr) const + { + return TopoShape(0, Hasher) + .makeElementOffsetFace(*this, offset, innerOffset, join, innerJoin, op); + } + /** Make revolved shell around a basis shape @@ -1227,6 +1417,14 @@ public: void copyElementMap(const TopoShape & topoShape, const char *op=nullptr); bool canMapElement(const TopoShape &other) const; + void cacheRelatedElements(const Data::MappedName & name, + HistoryTraceType sameType, + const QVector & names) const; + + bool getRelatedElementsCached(const Data::MappedName & name, + HistoryTraceType sameType, + QVector &names) const; + void mapSubElement(const TopoShape &other,const char *op=nullptr, bool forceHasher=false); void mapSubElement(const std::vector &shapes, const char *op=nullptr); void mapSubElementsTo(std::vector& shapes, const char* op = nullptr) const; @@ -1234,8 +1432,8 @@ public: void flushElementMap() const override; - virtual Data::ElementMapPtr resetElementMap( - Data::ElementMapPtr elementMap=Data::ElementMapPtr()); + Data::ElementMapPtr resetElementMap( + Data::ElementMapPtr elementMap=Data::ElementMapPtr()) override; /** Helper class to return the generated and modified shape given an input shape * @@ -1257,6 +1455,64 @@ public: return _res; } }; + /** Make an evolved shape + * + * An evolved shape is built from a planar spine (face or wire) and a + * profile (wire). The evolved shape is the unlooped sweep (pipe) of the + * profile along the spine. Self-intersections are removed. + * Note that the underlying OCCT method is very finicky about parameters and + * make throw "Unimplemented" exceptions for various types. + * + * @param spine: the spine shape, must be planar face or wire + * @param profile: the profile wire, must be planar, or a line segment + * @param join: the join type (only support Arc at the moment) + * @param axeProf: determine the coordinate system for the profile + * @param solid: whether to make a solid + * @param profOnSpine: whether the profile is connect with the spine + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return The original content of this TopoShape is discarded and replaced + * with the new shape. The function returns the TopoShape itself as + * a self reference so that multiple operations can be carried out + * for the same shape in the same line of code. + */ + TopoShape& makeElementEvolve(const TopoShape& spine, + const TopoShape& profile, + JoinType join = JoinType::arc, + CoordinateSystem = CoordinateSystem::global, + MakeSolid solid = MakeSolid::noSolid, + Spine profOnSpine = Spine::notOn, + double tol = 0.0, + const char* op = nullptr); + + /** Make an evolved shape using this shape as spine + * + * An evolved shape is built from a planar spine (face or wire) and a + * profile (wire). The evolved shape is the unlooped sweep (pipe) of the + * profile along the spine. Self-intersections are removed. + * + * @param profile: the profile wire, must be planar, or a line segment + * @param join: the join type (only support Arc at the moment) + * @param axeProf: determine the coordinate system for the profile + * @param solid: whether to make a solid + * @param profOnSpine: whether the profile is connect with the spine + * @param op: optional string to be encoded into topo naming for indicating + * the operation + * + * @return Return the new shape. The TopoShape itself is not modified. + */ + TopoShape makeElementEvolve(const TopoShape& profile, + JoinType join = JoinType::arc, + CoordinateSystem axeProf = CoordinateSystem::global, + MakeSolid solid = MakeSolid::noSolid, + Spine profOnSpine = Spine::notOn, + double tol = 0.0, + const char* op = nullptr) + { + return TopoShape(0, Hasher) + .makeElementEvolve(*this, profile, join, axeProf, solid, profOnSpine, tol, op); + } /** Make an loft that is a shell or solid passing through a set of sections in a given sequence * @@ -1473,7 +1729,7 @@ public: TopoShape& makeElementGTransform(const TopoShape& source, const Base::Matrix4D& mat, const char* op = nullptr, - Copy copy = Copy::noCopy); + CopyType copy = CopyType::noCopy); /** Make a new shape with transformation that may contain non-uniform scaling * @@ -1489,7 +1745,7 @@ public: */ TopoShape makeElementGTransform(const Base::Matrix4D& mat, const char* op = nullptr, - Copy copy = Copy::noCopy) const + CopyType copy = CopyType::noCopy) const { return TopoShape(Tag, Hasher).makeElementGTransform(*this, mat, op, copy); } @@ -1779,7 +2035,7 @@ public: const Base::Matrix4D& mat, const char* op = nullptr, CheckScale checkScale = CheckScale::noScaleCheck, - Copy copy = Copy::noCopy); + CopyType copy = CopyType::noCopy); /** Make a new shape with transformation * @@ -1802,7 +2058,7 @@ public: const Base::Matrix4D& mat, const char* op = nullptr, CheckScale checkScale = CheckScale::noScaleCheck, - Copy copy = Copy::noCopy) + CopyType copy = CopyType::noCopy) { _makeElementTransform(source, mat, op, checkScale, copy); return *this; @@ -1826,7 +2082,7 @@ public: TopoShape makeElementTransform(const Base::Matrix4D& mat, const char* op = nullptr, CheckScale checkScale = CheckScale::noScaleCheck, - Copy copy = Copy::noCopy) const + CopyType copy = CopyType::noCopy) { return TopoShape(Tag, Hasher).makeElementTransform(*this, mat, op, checkScale, copy); } @@ -1847,7 +2103,7 @@ public: TopoShape& makeElementTransform(const TopoShape& shape, const gp_Trsf& trsf, const char* op = nullptr, - Copy copy = Copy::noCopy); + CopyType copy = CopyType::noCopy); /** Make a new shape with transformation * @@ -1861,7 +2117,7 @@ public: * modified */ TopoShape - makeElementTransform(const gp_Trsf& trsf, const char* op = nullptr, Copy copy = Copy::noCopy) + makeElementTransform(const gp_Trsf& trsf, const char* op = nullptr, CopyType copy = CopyType::noCopy) { return TopoShape(Tag, Hasher).makeElementTransform(*this, trsf, op, copy); } diff --git a/src/Mod/Part/App/TopoShapeExpansion.cpp b/src/Mod/Part/App/TopoShapeExpansion.cpp index 3faf12ffe9..cce20f8e4a 100644 --- a/src/Mod/Part/App/TopoShapeExpansion.cpp +++ b/src/Mod/Part/App/TopoShapeExpansion.cpp @@ -48,20 +48,23 @@ #include #include #include +#include #include #include #include +#include #include #include #include #include +#include #include #include -#include #include #include #include #include +#include #include #include #include @@ -97,8 +100,12 @@ #include "TopoShapeMapper.h" #include "FaceMaker.h" #include "Geometry.h" +#include "BRepOffsetAPI_MakeOffsetFix.h" +#include #include +#include +#include FC_LOG_LEVEL_INIT("TopoShape", true, true) // NOLINT @@ -265,7 +272,7 @@ TopoDS_Shape TopoShape::located(const TopoDS_Shape& tds, const gp_Trsf& transfer return moved(sCopy, transfer); } -void TopoShape::operator = (const TopoShape& sh) +void TopoShape::operator=(const TopoShape& sh) { if (this != &sh) { this->setShape(sh._Shape, true); @@ -764,9 +771,15 @@ void TopoShape::mapSubElementTypeForShape(const TopoShape& other, } } char elementType {shapeName(type)[0]}; + + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + if (!elementMap()) { - resetElementMap(); // TODO: Should never happen, but does while code is in transit + resetElementMap(std::make_shared()); } + std::ostringstream ss; elementMap()->encodeElementName(elementType, name, ss, &sids, Tag, op, other.Tag); elementMap()->setElementName(element, name, Tag, &sids); @@ -802,6 +815,7 @@ void TopoShape::mapSubElementForShape(const TopoShape& other, const char* op) void TopoShape::mapSubElement(const TopoShape& other, const char* op, bool forceHasher) { +#ifndef FC_USE_TNP_FIX if (!canMapElement(other)) { return; } @@ -819,6 +833,115 @@ void TopoShape::mapSubElement(const TopoShape& other, const char* op, bool force } mapSubElementForShape(other, op); +#else + if (!canMapElement(other)) { + return; + } + + if (!getElementMapSize(false) && this->_Shape.IsPartner(other._Shape)) { + if (!this->Hasher) { + this->Hasher = other.Hasher; + } + copyElementMap(other, op); + return; + } + + bool warned = false; + static const std::array types = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; + + auto checkHasher = [this](const TopoShape& other) { + if (Hasher) { + if (other.Hasher != Hasher) { + if (!getElementMapSize(false)) { + if (FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) { + FC_WARN("hasher mismatch"); + } + } + else { + // FC_THROWM(Base::RuntimeError, "hasher mismatch"); + FC_ERR("hasher mismatch"); + } + Hasher = other.Hasher; + } + } + else { + Hasher = other.Hasher; + } + }; + + for (auto type : types) { + auto& shapeMap = _cache->getAncestry(type); + auto& otherMap = other._cache->getAncestry(type); + if (!shapeMap.count() || !otherMap.count()) { + continue; + } + if (!forceHasher && other.Hasher) { + forceHasher = true; + checkHasher(other); + } + const char* shapetype = shapeName(type).c_str(); + std::ostringstream ss; + + bool forward; + int count; + if (otherMap.count() <= shapeMap.count()) { + forward = true; + count = otherMap.count(); + } + else { + forward = false; + count = shapeMap.count(); + } + for (int k = 1; k <= count; ++k) { + int i, idx; + if (forward) { + i = k; + idx = shapeMap.find(_Shape, otherMap.find(other._Shape, k)); + if (!idx) { + continue; + } + } + else { + idx = k; + i = otherMap.find(other._Shape, shapeMap.find(_Shape, k)); + if (!i) { + continue; + } + } + Data::IndexedName element = Data::IndexedName::fromConst(shapetype, idx); + for (auto& v : + other.getElementMappedNames(Data::IndexedName::fromConst(shapetype, i), true)) { + auto& name = v.first; + auto& sids = v.second; + if (sids.size()) { + if (!Hasher) { + Hasher = sids[0].getHasher(); + } + else if (!sids[0].isFromSameHasher(Hasher)) { + if (!warned) { + warned = true; + FC_WARN("hasher mismatch"); + } + sids.clear(); + } + } + ss.str(""); + + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + + if (!elementMap()) { + resetElementMap(std::make_shared()); + } + + elementMap()->encodeElementName(shapetype[0], name, ss, &sids, Tag, op, other.Tag); + elementMap()->setElementName(element, name, Tag, &sids); + } + } + } + +#endif } void TopoShape::mapSubElementsTo(std::vector& shapes, const char* op) const @@ -880,6 +1003,7 @@ void TopoShape::mapCompoundSubElements(const std::vector& shapes, con void TopoShape::mapSubElement(const std::vector& shapes, const char* op) { +#ifndef FC_USE_TNP_FIX if (shapes.empty()) { return; } @@ -892,6 +1016,59 @@ void TopoShape::mapSubElement(const std::vector& shapes, const char* mapSubElement(shape, op); } } +#else + if (shapes.empty()) { + return; + } + + if (shapeType(true) == TopAbs_COMPOUND) { + int count = 0; + for (auto& s : shapes) { + if (s.isNull()) { + continue; + } + if (!getSubShape(TopAbs_SHAPE, ++count, true).IsPartner(s._Shape)) { + count = 0; + break; + } + } + if (count) { + std::vector children; + children.reserve(count * 3); + TopAbs_ShapeEnum types[] = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; + for (unsigned i = 0; i < sizeof(types) / sizeof(types[0]); ++i) { + int offset = 0; + for (auto& s : shapes) { + if (s.isNull()) { + continue; + } + int count = s.countSubShapes(types[i]); + if (!count) { + continue; + } + children.emplace_back(); + auto& child = children.back(); + child.indexedName = + Data::IndexedName::fromConst(shapeName(types[i]).c_str(), 1); + child.offset = offset; + offset += count; + child.count = count; + child.elementMap = s.elementMap(); + child.tag = s.Tag; + if (op) { + child.postfix = op; + } + } + } + setMappedChildElements(children); + return; + } + } + + for (auto& shape : shapes) { + mapSubElement(shape, op); + } +#endif } std::vector TopoShape::getSubShapes(TopAbs_ShapeEnum type, @@ -1501,6 +1678,15 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, } } Data::MappedName other_name = other_key.name; + + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + + if (!elementMap()) { + resetElementMap(std::make_shared()); + } + elementMap()->encodeElementName(*other_info.shapetype, other_name, ss2, @@ -1553,6 +1739,15 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, ss << abs(first_info.index); } ss << postfix; + + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + + if (!elementMap()) { + resetElementMap(std::make_shared()); + } + elementMap() ->encodeElementName(element[0], first_name, ss, &sids, Tag, op, first_key.tag); elementMap()->setElementName(element, first_name, Tag, &sids); @@ -1643,6 +1838,15 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, if (nameInfo.index > 1) { ss << nameInfo.index; } + + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + + if (!elementMap()) { + resetElementMap(std::make_shared()); + } + elementMap()->encodeElementName(indexedName[0], newName, ss, &sids, Tag, op); elementMap()->setElementName(indexedName, newName, Tag, &sids); } @@ -1740,6 +1944,15 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, ss << lowerPostfix() << sids.back().toString(); } } + + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + + if (!elementMap()) { + resetElementMap(std::make_shared()); + } + elementMap()->encodeElementName(element[0], newName, ss, &sids, Tag, op); elementMap()->setElementName(element, newName, Tag, &sids); } @@ -1857,6 +2070,89 @@ TopoShape TopoShape::getSubTopoShape(TopAbs_ShapeEnum type, int idx, bool silent return shapeMap.getTopoShape(*this, idx); } +TopoShape& TopoShape::makeElementEvolve(const TopoShape& spine, + const TopoShape& profile, + JoinType join, + CoordinateSystem axeProf, + MakeSolid solid, + Spine profOnSpine, + double tol, + const char* op) +{ + if (!op) { + op = Part::OpCodes::Evolve; + } + if (tol == 0.0) { + tol = 1e-6; + } + + GeomAbs_JoinType joinType; + switch (join) { + case JoinType::tangent: + joinType = GeomAbs_Tangent; + break; + case JoinType::intersection: + joinType = GeomAbs_Intersection; + break; + default: + joinType = GeomAbs_Arc; + break; + } + + TopoDS_Shape spineShape; + if (spine.countSubShapes(TopAbs_FACE) > 0) { + spineShape = spine.getSubShape(TopAbs_FACE, 1); + } + else if (spine.countSubShapes(TopAbs_WIRE) > 0) { + spineShape = spine.getSubShape(TopAbs_WIRE, 1); + } + else if (spine.countSubShapes(TopAbs_EDGE) > 0) { + spineShape = + BRepBuilderAPI_MakeWire(TopoDS::Edge(spine.getSubShape(TopAbs_EDGE, 1))).Wire(); + } + if (spineShape.IsNull() || !BRepBuilderAPI_FindPlane(spineShape).Found()) { + FC_THROWM(Base::CADKernelError, "Expect the spine to be a planar wire or face"); + } + + TopoDS_Shape profileShape; + if (profile.countSubShapes(TopAbs_FACE) > 0 || profile.countSubShapes(TopAbs_WIRE) > 0) { + profileShape = profile.getSubShape(TopAbs_WIRE, 1); + } + else if (profile.countSubShapes(TopAbs_EDGE) > 0) { + profileShape = + BRepBuilderAPI_MakeWire(TopoDS::Edge(profile.getSubShape(TopAbs_EDGE, 1))).Wire(); + } + if (profileShape.IsNull() || !BRepBuilderAPI_FindPlane(profileShape).Found()) { + if (profileShape.IsNull() || profile.countSubShapes(TopAbs_EDGE) > 1 + || !profile.getSubTopoShape(TopAbs_EDGE, 1).isLinearEdge()) { + FC_THROWM(Base::CADKernelError, + "Expect the the profile to be a planar wire or a face or a line"); + } + } + if (spineShape.ShapeType() == TopAbs_FACE) { + BRepOffsetAPI_MakeEvolved maker( + TopoDS::Face(spineShape), + TopoDS::Wire(profileShape), + joinType, + axeProf == CoordinateSystem::global ? Standard_True : Standard_False, + solid == MakeSolid::makeSolid ? Standard_True : Standard_False, + profOnSpine == Spine::on ? Standard_True : Standard_False, + tol); + return makeElementShape(maker, {spine, profile}, op); + } + else { + BRepOffsetAPI_MakeEvolved maker( + TopoDS::Wire(spineShape), + TopoDS::Wire(profileShape), + joinType, + axeProf == CoordinateSystem::global ? Standard_True : Standard_False, + solid == MakeSolid::makeSolid ? Standard_True : Standard_False, + profOnSpine == Spine::on ? Standard_True : Standard_False, + tol); + return makeElementShape(maker, {spine, profile}, op); + } +} + TopoShape& TopoShape::makeElementRuledSurface(const std::vector& shapes, int orientation, const char* op) @@ -2143,6 +2439,538 @@ TopoShape& TopoShape::makeElementPipeShell(const std::vector& shapes, return makeElementShape(mkPipeShell, shapes, op); } +TopoShape& TopoShape::makeElementOffset(const TopoShape& shape, + double offset, + double tol, + bool intersection, + bool selfInter, + short offsetMode, + JoinType join, + FillType fill, + const char* op) +{ + if (!op) { + op = Part::OpCodes::Offset; + } + + BRepOffsetAPI_MakeOffsetShape mkOffset; + mkOffset.PerformByJoin(shape.getShape(), + offset, + tol, + BRepOffset_Mode(offsetMode), + intersection ? Standard_True : Standard_False, + selfInter ? Standard_True : Standard_False, + GeomAbs_JoinType(join)); + + if (!mkOffset.IsDone()) { + FC_THROWM(Base::CADKernelError, "BRepOffsetAPI_MakeOffsetShape not done"); + } + + TopoShape res(Tag, Hasher); + res.makeElementShape(mkOffset, shape, op); + if (shape.hasSubShape(TopAbs_SOLID) && !res.hasSubShape(TopAbs_SOLID)) { + try { + res = res.makeElementSolid(); + } + catch (Standard_Failure& e) { + FC_WARN("failed to make solid: " << e.GetMessageString()); + } + } + if (fill == FillType::noFill) { + *this = res; + return *this; + } + + // get perimeter wire of original shape. + // Wires returned seem to have edges in connection order. + ShapeAnalysis_FreeBoundsProperties freeCheck(shape.getShape()); + freeCheck.Perform(); + if (freeCheck.NbClosedFreeBounds() < 1) { + FC_THROWM(Base::CADKernelError, "no closed bounds"); + } + + BRep_Builder builder; + std::vector shapes; + for (int index = 1; index <= freeCheck.NbClosedFreeBounds(); ++index) { + TopoShape originalWire(shape.Tag, + shape.Hasher, + freeCheck.ClosedFreeBound(index)->FreeBound()); + originalWire.mapSubElement(shape); + const BRepAlgo_Image& img = mkOffset.MakeOffset().OffsetEdgesFromShapes(); + + // build offset wire. + TopoDS_Wire offsetWire; + builder.MakeWire(offsetWire); + for (const auto& s : originalWire.getSubShapes(TopAbs_EDGE)) { + if (!img.HasImage(s)) { + FC_THROWM(Base::CADKernelError, "no image for shape"); + } + const TopTools_ListOfShape& currentImage = img.Image(s); + TopTools_ListIteratorOfListOfShape listIt; + int edgeCount(0); + TopoDS_Edge mappedEdge; + for (listIt.Initialize(currentImage); listIt.More(); listIt.Next()) { + if (listIt.Value().ShapeType() != TopAbs_EDGE) { + continue; + } + edgeCount++; + mappedEdge = TopoDS::Edge(listIt.Value()); + } + + if (edgeCount != 1) { + std::ostringstream stream; + stream << "wrong edge count: " << edgeCount << std::endl; + FC_THROWM(Base::CADKernelError, stream.str().c_str()); + } + builder.Add(offsetWire, mappedEdge); + } + std::vector wires; + wires.push_back(originalWire); + wires.push_back(TopoShape(Tag, Hasher, offsetWire)); + wires.back().mapSubElement(res); + + // It would be nice if we could get thruSections to build planar faces + // in all areas possible, so we could run through refine. I tried setting + // ruled to standard_true, but that didn't have the desired affect. + BRepOffsetAPI_ThruSections aGenerator; + aGenerator.AddWire(TopoDS::Wire(originalWire.getShape())); + aGenerator.AddWire(offsetWire); + aGenerator.Build(); + if (!aGenerator.IsDone()) { + FC_THROWM(Base::CADKernelError, "ThruSections failed"); + } + + shapes.push_back(TopoShape(Tag, Hasher).makeElementShape(aGenerator, wires)); + } + + TopoShape perimeterCompound(Tag, Hasher); + perimeterCompound.makeElementCompound(shapes, op); + + // still had to sew. not using the passed in parameter for sew. + // Sew has it's own default tolerance. Opinions? + BRepBuilderAPI_Sewing sewTool; + sewTool.Add(shape.getShape()); + sewTool.Add(perimeterCompound.getShape()); + sewTool.Add(res.getShape()); + sewTool.Perform(); // Perform Sewing + + TopoDS_Shape outputShape = sewTool.SewedShape(); + if ((outputShape.ShapeType() == TopAbs_SHELL) && (outputShape.Closed())) { + BRepBuilderAPI_MakeSolid solidMaker(TopoDS::Shell(outputShape)); + if (solidMaker.IsDone()) { + TopoDS_Solid temp = solidMaker.Solid(); + // contrary to the occ docs the return value OrientCloseSolid doesn't + // indicate whether the shell was open or not. It returns true with an + // open shell and we end up with an invalid solid. + if (BRepLib::OrientClosedSolid(temp)) { + outputShape = temp; + } + } + } + + shapes.clear(); + shapes.push_back(shape); + shapes.push_back(res); + shapes.push_back(perimeterCompound); + *this = TopoShape(Tag, Hasher) + .makeShapeWithElementMap(outputShape, MapperSewing(sewTool), shapes, op); + return *this; +} + +TopoShape& TopoShape::makeElementOffsetFace(const TopoShape& shape, + double offset, + double innerOffset, + JoinType joinType, + JoinType innerJoinType, + const char* op) +{ + if (std::abs(innerOffset) < Precision::Confusion() + && std::abs(offset) < Precision::Confusion()) { + *this = shape; + return *this; + } + + if (shape.isNull()) { + FC_THROWM(Base::ValueError, "makeOffsetFace: input shape is null!"); + } + if (!shape.hasSubShape(TopAbs_FACE)) { + FC_THROWM(Base::ValueError, "makeOffsetFace: no face found"); + } + + std::vector res; + for (auto& face : shape.getSubTopoShapes(TopAbs_FACE)) { + std::vector wires; + TopoShape outerWire = face.splitWires(&wires, ReorientForward); + if (wires.empty()) { + res.push_back(makeElementOffset2D(face, + offset, + joinType, + FillType::noFill, + OpenResult::noOpenResult, + false, + op)); + continue; + } + if (outerWire.isNull()) { + FC_THROWM(Base::CADKernelError, "makeOffsetFace: missing outer wire!"); + } + + if (std::abs(offset) > Precision::Confusion()) { + outerWire = outerWire.makeElementOffset2D(offset, + joinType, + FillType::noFill, + OpenResult::noOpenResult, + false, + op); + } + + if (std::abs(innerOffset) > Precision::Confusion()) { + TopoShape innerWires(0, Hasher); + innerWires.makeElementCompound(wires, + "", + SingleShapeCompoundCreationPolicy::returnShape); + innerWires = innerWires.makeElementOffset2D(innerOffset, + innerJoinType, + FillType::noFill, + OpenResult::noOpenResult, + true, + op); + wires = innerWires.getSubTopoShapes(TopAbs_WIRE); + } + wires.push_back(outerWire); + gp_Pln pln; + res.push_back(TopoShape(0, Hasher).makeElementFace(wires, + nullptr, + nullptr, + face.findPlane(pln) ? &pln : nullptr)); + } + return makeElementCompound(res, "", SingleShapeCompoundCreationPolicy::returnShape); +} + +TopoShape& TopoShape::makeElementOffset2D(const TopoShape& shape, + double offset, + JoinType joinType, + FillType fill, + OpenResult allowOpenResult, + bool intersection, + const char* op) +{ + if (!op) { + op = Part::OpCodes::Offset2D; + } + + if (shape.isNull()) { + FC_THROWM(Base::ValueError, "makeOffset2D: input shape is null!"); + } + if (allowOpenResult == OpenResult::allowOpenResult && OCC_VERSION_HEX < 0x060900) { + FC_THROWM(Base::AttributeError, "openResult argument is not supported on OCC < 6.9.0."); + } + + // OUTLINE OF MAKEOFFSET2D + // * Prepare shapes to process + // ** if _Shape is a compound, recursively call this routine for all subcompounds + // ** if intrsection, dump all non-compound children into shapes to process; otherwise call this + // routine recursively for all children + // ** if _shape isn't a compound, dump it straight to shapes to process + // * Test for shape types, and convert them all to wires + // * find plane + // * OCC call (BRepBuilderAPI_MakeOffset) + // * postprocessing (facemaking): + // ** convert offset result back to faces, if inputs were faces + // ** OR do offset filling: + // *** for closed wires, simply feed source wires + offset wires to smart facemaker + // *** for open wires, try to connect source anf offset result by creating new edges (incomplete + // implementation) + // ** actual call to FaceMakerBullseye, unified for all facemaking. + + std::vector shapesToProcess; + std::vector shapesToReturn; + SingleShapeCompoundCreationPolicy outputPolicy = SingleShapeCompoundCreationPolicy::returnShape; + if (shape.getShape().ShapeType() == TopAbs_COMPOUND) { + if (!intersection) { + // simply recursively process the children, independently + expandCompound(shape, shapesToProcess); + outputPolicy = SingleShapeCompoundCreationPolicy::forceCompound; + } + else { + // collect non-compounds from this compound for collective offset. Process other shapes + // independently. + for (auto& s : shape.getSubTopoShapes()) { + if (s.getShape().ShapeType() == TopAbs_COMPOUND) { + // recursively process subcompounds + shapesToReturn.push_back(TopoShape(Tag, Hasher) + .makeElementOffset2D(s, + offset, + joinType, + fill, + allowOpenResult, + intersection, + op)); + outputPolicy = SingleShapeCompoundCreationPolicy::forceCompound; + } + else { + shapesToProcess.push_back(s); + } + } + } + } + else { + shapesToProcess.push_back(shape); + } + + if (shapesToProcess.size() > 0) { + TopoShape res(Tag, Hasher); + + // although 2d offset supports offsetting a face directly, it seems there is + // no way to do a collective offset of multiple faces. So, we are doing it + // by getting all wires from the faces, and applying offsets to them, and + // reassembling the faces later. + std::vector sourceWires; + bool haveWires = false; + bool haveFaces = false; + for (auto& s : shapesToProcess) { + const auto& sh = s.getShape(); + switch (sh.ShapeType()) { + case TopAbs_EDGE: + sourceWires.push_back(s.makeElementWires()); + haveWires = true; + break; + case TopAbs_WIRE: + sourceWires.push_back(s); + haveWires = true; + break; + case TopAbs_FACE: { + auto outerWire = s.splitWires(&sourceWires); + sourceWires.push_back(outerWire); + haveFaces = true; + } break; + default: + FC_THROWM(Base::TypeError, + "makeOffset2D: input shape is not an edge, wire or face or compound " + "of those."); + break; + } + } + if (haveWires && haveFaces) { + FC_THROWM( + Base::TypeError, + "makeOffset2D: collective offset of a mix of wires and faces is not supported"); + } + if (haveFaces) { + allowOpenResult = OpenResult::noOpenResult; + } + + // find plane. + gp_Pln workingPlane; + if (!TopoShape() + .makeElementCompound(sourceWires, + "", + SingleShapeCompoundCreationPolicy::returnShape) + .findPlane(workingPlane)) { + FC_THROWM(Base::CADKernelError, "makeOffset2D: wires are nonplanar or noncoplanar"); + } + + // do the offset.. + TopoShape offsetShape; + if (fabs(offset) > Precision::Confusion()) { + BRepOffsetAPI_MakeOffsetFix mkOffset(GeomAbs_JoinType(joinType), + allowOpenResult == OpenResult::allowOpenResult); + for (auto& w : sourceWires) { + mkOffset.AddWire(TopoDS::Wire(w.getShape())); + } + try { +#if defined(__GNUC__) && defined(FC_OS_LINUX) + Base::SignalException se; +#endif + mkOffset.Perform(offset); + } + catch (Standard_Failure&) { + throw; + } + catch (...) { + FC_THROWM(Base::CADKernelError, + "BRepOffsetAPI_MakeOffset has crashed! (Unknown exception caught)"); + } + if (mkOffset.Shape().IsNull()) { + FC_THROWM(NullShapeException, "makeOffset2D: result of offsetting is null!"); + } + + // Copying shape to fix strange orientation behavior, OCC7.0.0. See bug #2699 + // http://www.freecadweb.org/tracker/view.php?id=2699 + offsetShape = shape.makeElementShape(mkOffset, op).makeElementCopy(); + } + else { + offsetShape = TopoShape(Tag, Hasher) + .makeElementCompound(sourceWires, + 0, + SingleShapeCompoundCreationPolicy::returnShape); + } + + std::vector offsetWires; + // interestingly, if wires are removed, empty compounds are returned by MakeOffset (as of + // OCC 7.0.0) so, we just extract all nesting + expandCompound(offsetShape, offsetWires); + if (offsetWires.empty()) { + FC_THROWM(Base::CADKernelError, "makeOffset2D: offset result has no wires."); + } + + std::vector wiresForMakingFaces; + if (fill == FillType::noFill) { + if (haveFaces) { + wiresForMakingFaces.insert(wiresForMakingFaces.end(), + offsetWires.begin(), + offsetWires.end()); + } + else { + shapesToReturn.insert(shapesToReturn.end(), offsetWires.begin(), offsetWires.end()); + } + } + else { + // fill offset + if (fabs(offset) < Precision::Confusion()) { + FC_THROWM(Base::ValueError, + "makeOffset2D: offset distance is zero. Can't fill offset."); + } + + // filling offset. There are three major cases to consider: + // 1. source wires and result wires are closed (simplest) -> make face + // from source wire + offset wire + // + // 2. source wire is open, but offset wire is closed (if not + // allowOpenResult). -> throw away source wire and make face right from + // offset result. + // + // 3. source and offset wire are both open (note that there may be + // closed islands in offset result) -> need connecting offset result to + // source wire with new edges + + // first, lets split apart closed and open wires. + std::vector closedWires; + std::vector openWires; + for (auto& w : sourceWires) { + if (BRep_Tool::IsClosed(TopoDS::Wire(w.getShape()))) { + closedWires.push_back(w); + } + else { + openWires.push_back(w); + } + } + for (auto& w : offsetWires) { + if (BRep_Tool::IsClosed(TopoDS::Wire(w.getShape()))) { + closedWires.push_back(w); + } + else { + openWires.push_back(w); + } + } + + wiresForMakingFaces.insert(wiresForMakingFaces.end(), + closedWires.begin(), + closedWires.end()); + if (allowOpenResult == OpenResult::noOpenResult || openWires.size() == 0) { + // just ignore all open wires + } + else { + // We need to connect open wires to form closed wires. + + // for now, only support offsetting one open wire -> there should be exactly two + // open wires for connecting + if (openWires.size() != 2) { + FC_THROWM(Base::CADKernelError, + "makeOffset2D: collective offset with filling of multiple wires is " + "not supported yet."); + } + + TopoShape openWire1 = openWires.front(); + TopoShape openWire2 = openWires.back(); + + // find open vertices + BRepTools_WireExplorer xp; + xp.Init(TopoDS::Wire(openWire1.getShape())); + TopoDS_Vertex v1 = xp.CurrentVertex(); + for (; xp.More(); xp.Next()) {}; + TopoDS_Vertex v2 = xp.CurrentVertex(); + + // find open vertices + xp.Init(TopoDS::Wire(openWire2.getShape())); + TopoDS_Vertex v3 = xp.CurrentVertex(); + for (; xp.More(); xp.Next()) {}; + TopoDS_Vertex v4 = xp.CurrentVertex(); + + // check + if (v1.IsNull()) { + FC_THROWM(NullShapeException, "v1 is null"); + } + if (v2.IsNull()) { + FC_THROWM(NullShapeException, "v2 is null"); + } + if (v3.IsNull()) { + FC_THROWM(NullShapeException, "v3 is null"); + } + if (v4.IsNull()) { + FC_THROWM(NullShapeException, "v4 is null"); + } + + // assemble new wire + + // we want the connection order to be + // v1 -> openWire1 -> v2 -> (new edge) -> v4 -> openWire2(rev) -> v3 -> (new edge) + // -> v1 let's check if it's the case. If not, we reverse one wire and swap its + // endpoints. + + if (fabs(gp_Vec(BRep_Tool::Pnt(v2), BRep_Tool::Pnt(v3)).Magnitude() - fabs(offset)) + <= BRep_Tool::Tolerance(v2) + BRep_Tool::Tolerance(v3)) { + openWire2._Shape.Reverse(); + std::swap(v3, v4); + v3.Reverse(); + v4.Reverse(); + } + else if ((fabs(gp_Vec(BRep_Tool::Pnt(v2), BRep_Tool::Pnt(v4)).Magnitude() + - fabs(offset)) + <= BRep_Tool::Tolerance(v2) + BRep_Tool::Tolerance(v4))) { + // orientation is as expected, nothing to do + } + else { + FC_THROWM( + Base::CADKernelError, + "makeOffset2D: fill offset: failed to establish open vertex relationship."); + } + + // now directions of open wires are aligned. Finally. make new wire! + BRepBuilderAPI_MakeWire mkWire; + // add openWire1 + BRepTools_WireExplorer it; + for (it.Init(TopoDS::Wire(openWire1.getShape())); it.More(); it.Next()) { + mkWire.Add(it.Current()); + } + // add first joining edge + mkWire.Add(BRepBuilderAPI_MakeEdge(v2, v4).Edge()); + // add openWire2, in reverse order + openWire2._Shape.Reverse(); + for (it.Init(TopoDS::Wire(openWire2.getShape())); it.More(); it.Next()) { + mkWire.Add(it.Current()); + } + // add final joining edge + mkWire.Add(BRepBuilderAPI_MakeEdge(v3, v1).Edge()); + + mkWire.Build(); + + wiresForMakingFaces.push_back( + TopoShape(Tag, Hasher).makeElementShape(mkWire, openWires, op)); + } + } + + // make faces + if (wiresForMakingFaces.size() > 0) { + TopoShape face(0, Hasher); + face.makeElementFace(wiresForMakingFaces, nullptr, nullptr, &workingPlane); + expandCompound(face, shapesToReturn); + } + } + + return makeElementCompound(shapesToReturn, op, outputPolicy); +} + TopoShape& TopoShape::makeElementThickSolid(const TopoShape& shape, const std::vector& faces, double offset, @@ -2189,16 +3017,6 @@ TopoShape& TopoShape::makeElementThickSolid(const TopoShape& shape, } remFace.Append(face.getShape()); } -#if OCC_VERSION_HEX < 0x070200 - BRepOffsetAPI_MakeThickSolid mkThick(shape.getShape(), - remFace, - offset, - tol, - BRepOffset_Mode(offsetMode), - intersection ? Standard_True : Standard_False, - selfInter ? Standard_True : Standard_False, - GeomAbs_JoinType(join)); -#else BRepOffsetAPI_MakeThickSolid mkThick; mkThick.MakeThickSolidByJoin(shape.getShape(), remFace, @@ -2208,7 +3026,6 @@ TopoShape& TopoShape::makeElementThickSolid(const TopoShape& shape, intersection ? Standard_True : Standard_False, selfInter ? Standard_True : Standard_False, GeomAbs_JoinType(join)); -#endif return makeElementShape(mkThick, shape, op); } @@ -2225,11 +3042,7 @@ TopoShape& TopoShape::makeElementWires(const std::vector& shapes, if (shapes.size() == 1) { return makeElementWires(shapes[0], op, tol, policy, output); } - return makeElementWires(TopoShape(Tag).makeElementCompound(shapes), - op, - tol, - policy, - output); + return makeElementWires(TopoShape(Tag).makeElementCompound(shapes), op, tol, policy, output); } @@ -2524,7 +3337,7 @@ bool TopoShape::_makeElementTransform(const TopoShape& shape, const Base::Matrix4D& mat, const char* op, CheckScale checkScale, - Copy copy) + CopyType copy) { if (checkScale == CheckScale::checkScale) { auto scaleType = mat.hasScale(); @@ -2540,18 +3353,17 @@ bool TopoShape::_makeElementTransform(const TopoShape& shape, TopoShape& TopoShape::makeElementTransform(const TopoShape& shape, const gp_Trsf& trsf, const char* op, - Copy copy) + CopyType copy) { - if (copy == Copy::noCopy) { + if (copy == CopyType::noCopy) { // OCCT checks the ScaleFactor against gp::Resolution() which is DBL_MIN!!! - // No scaling is 1 as in 1:1 - const bool scaling = Abs(Abs(trsf.ScaleFactor()) - 1) > Precision::Confusion(); - const bool negative_scaling = - trsf.ScaleFactor() * trsf.HVectorialPart().Determinant() < 0.0; - copy = negative_scaling || scaling ? Copy::copy : Copy::noCopy; + copy = trsf.ScaleFactor() * trsf.HVectorialPart().Determinant() < 0. + || Abs(Abs(trsf.ScaleFactor()) - 1) > Precision::Confusion() + ? CopyType::copy + : CopyType::noCopy; } TopoShape tmp(shape); - if (copy == Copy::copy) { + if (copy == CopyType::copy) { if (shape.isNull()) { FC_THROWM(NullShapeException, "Null input shape"); } @@ -2586,7 +3398,7 @@ TopoShape& TopoShape::makeElementTransform(const TopoShape& shape, TopoShape& TopoShape::makeElementGTransform(const TopoShape& shape, const Base::Matrix4D& mat, const char* op, - Copy copy) + CopyType copy) { if (shape.isNull()) { FC_THROWM(NullShapeException, "Null input shape"); @@ -2609,7 +3421,7 @@ TopoShape& TopoShape::makeElementGTransform(const TopoShape& shape, // geometric transformation TopoShape tmp(shape); - BRepBuilderAPI_GTransform mkTrf(shape.getShape(), matrix, copy == Copy::copy); + BRepBuilderAPI_GTransform mkTrf(shape.getShape(), matrix, copy == CopyType::copy); tmp.setShape(mkTrf.Shape(), false); if (op || (shape.Tag && shape.Tag != Tag)) { setShape(tmp._Shape); @@ -2714,18 +3526,20 @@ struct MapperThruSections: MapperMaker } }; -struct MapperPrism: MapperMaker { +struct MapperPrism: MapperMaker +{ std::unordered_map vertexMap; ShapeMapper::ShapeMap edgeMap; - MapperPrism(BRepFeat_MakePrism &maker, const TopoShape &upTo) - :MapperMaker(maker) + MapperPrism(BRepFeat_MakePrism& maker, const TopoShape& upTo) + : MapperMaker(maker) { (void)upTo; std::vector shapes; - for(TopTools_ListIteratorOfListOfShape it(maker.FirstShape());it.More();it.Next()) + for (TopTools_ListIteratorOfListOfShape it(maker.FirstShape()); it.More(); it.Next()) { shapes.push_back(it.Value()); + } if (shapes.size()) { // It seems that BRepFeat_MakePrism::newEdges() does not return @@ -2735,18 +3549,21 @@ struct MapperPrism: MapperMaker { // i.e. the bottom profile, and add all edges that shares a // vertex with the profiles as new edges. - std::unordered_set edgeSet; + std::unordered_set edgeSet; TopoShape bottom; - bottom.makeElementCompound(shapes, nullptr, TopoShape::SingleShapeCompoundCreationPolicy::returnShape); + bottom.makeElementCompound(shapes, + nullptr, + TopoShape::SingleShapeCompoundCreationPolicy::returnShape); TopoShape shape(maker.Shape()); - for (auto &vertex : bottom.getSubShapes(TopAbs_VERTEX)) { - for (auto &e : shape.findAncestorsShapes(vertex, TopAbs_EDGE)) { + for (auto& vertex : bottom.getSubShapes(TopAbs_VERTEX)) { + for (auto& e : shape.findAncestorsShapes(vertex, TopAbs_EDGE)) { // Make sure to not visit the the same edge twice. // And check only edge that are not found in the bottom profile if (!edgeSet.insert(e).second && !bottom.findShape(e)) { auto otherVertex = TopExp::FirstVertex(TopoDS::Edge(e)); - if (otherVertex.IsSame(vertex)) + if (otherVertex.IsSame(vertex)) { otherVertex = TopExp::LastVertex(TopoDS::Edge(e)); + } vertexMap[vertex] = otherVertex; } } @@ -2758,37 +3575,44 @@ struct MapperPrism: MapperMaker { // corresponding edges in the top profile, what an extra criteria // for disambiguation. That is, the pair of edges (bottom and top) // must belong to the same face. - for (auto &edge : bottom.getSubShapes(TopAbs_EDGE)) { + for (auto& edge : bottom.getSubShapes(TopAbs_EDGE)) { std::vector indices; auto first = TopExp::FirstVertex(TopoDS::Edge(edge)); auto last = TopExp::LastVertex(TopoDS::Edge(edge)); auto itFirst = vertexMap.find(first); auto itLast = vertexMap.find(last); - if (itFirst == vertexMap.end() || itLast ==vertexMap.end()) + if (itFirst == vertexMap.end() || itLast == vertexMap.end()) { continue; + } std::vector faces; - for (int idx : shape.findAncestors(edge, TopAbs_FACE)) + for (int idx : shape.findAncestors(edge, TopAbs_FACE)) { faces.push_back(shape.getSubTopoShape(TopAbs_FACE, idx)); - if (faces.empty()) + } + if (faces.empty()) { continue; + } for (int idx : shape.findAncestors(itFirst->second, TopAbs_EDGE)) { auto e = shape.getSubTopoShape(TopAbs_EDGE, idx); - if (!e.findShape(itLast->second)) + if (!e.findShape(itLast->second)) { continue; - for (auto &face : faces) { - if (!face.findShape(e.getShape())) + } + for (auto& face : faces) { + if (!face.findShape(e.getShape())) { continue; - auto &entry = edgeMap[edge]; - if (entry.shapeSet.insert(e.getShape()).second) + } + auto& entry = edgeMap[edge]; + if (entry.shapeSet.insert(e.getShape()).second) { entry.shapes.push_back(e.getShape()); + } } } } } } - virtual const std::vector &generated(const TopoDS_Shape &s) const override { + virtual const std::vector& generated(const TopoDS_Shape& s) const override + { _res.clear(); - switch(s.ShapeType()) { + switch (s.ShapeType()) { case TopAbs_VERTEX: { auto it = vertexMap.find(s); if (it != vertexMap.end()) { @@ -2799,9 +3623,10 @@ struct MapperPrism: MapperMaker { } case TopAbs_EDGE: { auto it = edgeMap.find(s); - if (it != edgeMap.end()) - return it->second.shapes; - break; + if (it != edgeMap.end()) { + return it->second.shapes; + } + break; } default: break; @@ -3004,7 +3829,7 @@ TopoShape& TopoShape::makeElementFilledFace(const std::vector& _shape // TODO: This method does not appear to ever be called in the codebase, and it is probably // broken, because using TopoShape() with no parameters means the result will not have an // element Map. -//TopoShape& TopoShape::makeElementSolid(const std::vector& shapes, const char* op) +// TopoShape& TopoShape::makeElementSolid(const std::vector& shapes, const char* op) //{ // return makeElementSolid(TopoShape().makeElementCompound(shapes), op); //} @@ -3256,9 +4081,7 @@ TopoShape& TopoShape::makeElementGeneralFuse(const std::vector& _shap if (tol > 0.0) { mkGFA.SetFuzzyValue(tol); } -#if OCC_VERSION_HEX >= 0x070000 mkGFA.SetNonDestructive(Standard_True); -#endif mkGFA.Build(); if (!mkGFA.IsDone()) { FC_THROWM(Base::CADKernelError, "GeneralFuse failed"); @@ -3306,22 +4129,25 @@ TopoShape& TopoShape::makeElementShape(BRepBuilderAPI_MakeShape& mkShape, { TopoDS_Shape shape; // OCCT 7.3.x requires calling Solid() and not Shape() to function correctly - if ( typeid(mkShape) == typeid(BRepPrimAPI_MakeHalfSpace) ) { + if (typeid(mkShape) == typeid(BRepPrimAPI_MakeHalfSpace)) { shape = static_cast(mkShape).Solid(); - } else { + } + else { shape = mkShape.Shape(); } return makeShapeWithElementMap(shape, MapperMaker(mkShape), shapes, op); } -TopoShape &TopoShape::makeElementShape(BRepFeat_MakePrism &mkShape, - const std::vector &sources, - const TopoShape &upTo, - const char *op) +TopoShape& TopoShape::makeElementShape(BRepFeat_MakePrism& mkShape, + const std::vector& sources, + const TopoShape& upTo, + const char* op) { - if(!op) op = Part::OpCodes::Prism; + if (!op) { + op = Part::OpCodes::Prism; + } MapperPrism mapper(mkShape, upTo); - makeShapeWithElementMap(mkShape.Shape(),mapper,sources,op); + makeShapeWithElementMap(mkShape.Shape(), mapper, sources, op); return *this; } @@ -3407,7 +4233,7 @@ TopoShape& TopoShape::makeElementPrism(const TopoShape& base, const gp_Vec& vec, // TODO: This code was transferred in Feb 2024 as part of the toponaming project, but appears to be // unused. It is potentially useful if debugged. -//TopoShape& TopoShape::makeElementPrismUntil(const TopoShape& _base, +// TopoShape& TopoShape::makeElementPrismUntil(const TopoShape& _base, // const TopoShape& profile, // const TopoShape& supportFace, // const TopoShape& __uptoface, @@ -3476,9 +4302,9 @@ TopoShape& TopoShape::makeElementPrism(const TopoShape& base, const gp_Vec& vec, // } // // if (remove_limits) { -// // Note: Using an unlimited face every time gives unnecessary failures for concave faces -// TopLoc_Location loc = face.Location(); -// BRepAdaptor_Surface adapt(face, Standard_False); +// // Note: Using an unlimited face every time gives unnecessary failures for concave +// faces TopLoc_Location loc = face.Location(); BRepAdaptor_Surface adapt(face, +// Standard_False); // // use the placement of the adapter, not of the upToFace // loc = TopLoc_Location(adapt.Trsf()); // BRepBuilderAPI_MakeFace mkFace(adapt.Surface().Surface(), Precision::Confusion()); @@ -3540,7 +4366,7 @@ TopoShape& TopoShape::makeElementPrism(const TopoShape& base, const gp_Vec& vec, // // DO NOT include uptoface for element mapping. Because OCCT // // BRepFeat_MakePrism will report all top extruded face being // // modified by the uptoface. If there are more than one face in -// // the profile, this will cause uncessary duplicated element +// // the profile, this will cause unnecessary duplicated element // // mapped name. And will also disrupte element history tracing // // back to the profile sketch. // // @@ -4011,7 +4837,7 @@ TopoShape& TopoShape::makeElementBSplineFace(const std::vector& input } unsigned ind = 0; for (auto& edge : newEdges) { - if ( ind < edges.size() ) { + if (ind < edges.size()) { edge.resetElementMap(edges[ind++].elementMap()); } } @@ -4092,6 +4918,15 @@ Data::MappedName TopoShape::setElementComboName(const Data::IndexedName& element ss << marker << sids.back().toString(); } } + + // Originally in ComplexGeoData::setElementName + // LinkStable/src/App/ComplexGeoData.cpp#L1631 + // No longer possible after map separated in ElementMap.cpp + + if (!elementMap()) { + resetElementMap(std::make_shared()); + } + elementMap()->encodeElementName(element[0], newName, ss, &sids, Tag, op); return elementMap()->setElementName(element, newName, Tag, &sids); } @@ -4856,15 +5691,36 @@ TopoShape& TopoShape::makeElementBoolean(const char* maker, return *this; } -bool TopoShape::isSame(const Data::ComplexGeoData &_other) const +bool TopoShape::isSame(const Data::ComplexGeoData& _other) const { - if(!_other.isDerivedFrom(TopoShape::getClassTypeId())) + if (!_other.isDerivedFrom(TopoShape::getClassTypeId())) { return false; + } - const auto &other = static_cast(_other); - return Tag == other.Tag - && Hasher == other.Hasher - && _Shape.IsEqual(other._Shape); + const auto& other = static_cast(_other); + return Tag == other.Tag && Hasher == other.Hasher && _Shape.IsEqual(other._Shape); +} +void TopoShape::cacheRelatedElements(const Data::MappedName& name, + HistoryTraceType sameType, + const QVector& names) const +{ + initCache(); + _cache->insertRelation(ShapeRelationKey(name, sameType), names); +} + +bool TopoShape::getRelatedElementsCached(const Data::MappedName& name, + HistoryTraceType sameType, + QVector& names) const +{ + if (!_cache) { + return false; + } + auto it = _cache->relations.find(ShapeRelationKey(name, sameType)); + if (it == _cache->relations.end()) { + return false; + } + names = it->second; + return true; } } // namespace Part diff --git a/src/Mod/Part/App/TopoShapePyImp.cpp b/src/Mod/Part/App/TopoShapePyImp.cpp index ce449d5714..0b768ebce6 100644 --- a/src/Mod/Part/App/TopoShapePyImp.cpp +++ b/src/Mod/Part/App/TopoShapePyImp.cpp @@ -67,6 +67,7 @@ #endif #include +#include #include #include #include @@ -85,6 +86,7 @@ #include #include #include +#include #include #include #include @@ -105,6 +107,26 @@ using namespace Part; #define M_PI_2 1.57079632679489661923 /* pi/2 */ #endif +#ifdef FC_USE_TNP_FIX +static Py_hash_t _TopoShapeHash(PyObject *self) { + if (!self) { + PyErr_SetString(PyExc_TypeError, "descriptor 'hash' of 'Part.TopoShape' object needs an argument"); + return 0; + } + if (!static_cast(self)->isValid()) { + PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!"); + return 0; + } + return static_cast(self)->getTopoShapePtr()->getShape().HashCode(INT_MAX); +} + +struct TopoShapePyInit { + TopoShapePyInit() { + TopoShapePy::Type.tp_hash = _TopoShapeHash; + } +} _TopoShapePyInit; +#endif + // returns a string which represents the object e.g. when printed in python std::string TopoShapePy::representation() const { @@ -120,18 +142,68 @@ PyObject *TopoShapePy::PyMake(struct _typeobject *, PyObject *, PyObject *) // return new TopoShapePy(new TopoShape); } -int TopoShapePy::PyInit(PyObject* args, PyObject*) +int TopoShapePy::PyInit(PyObject* args, PyObject* keywds) { - PyObject *pcObj=nullptr; - if (!PyArg_ParseTuple(args, "|O", &pcObj)) +#ifdef FC_USE_TNP_FIX + static char* kwlist[] = {"shape", "op", "tag", "hasher", nullptr}; + long tag = 0; + PyObject* pyHasher = nullptr; + const char* op = nullptr; + PyObject* pcObj = nullptr; + if (!PyArg_ParseTupleAndKeywords(args, + keywds, + "|OsiO!", + kwlist, + &pcObj, + &op, + &tag, + &App::StringHasherPy::Type, + &pyHasher)) { return -1; + } + auto& self = *getTopoShapePtr(); + self.Tag = tag; + if (pyHasher) { + self.Hasher = static_cast(pyHasher)->getStringHasherPtr(); + } + auto shapes = getPyShapes(pcObj); + PY_TRY + { + if (shapes.size() == 1 && !op) { + auto s = shapes.front(); + if (self.Tag) { + if ((s.Tag && self.Tag != s.Tag) + || (self.Hasher && s.getElementMapSize() && self.Hasher != s.Hasher)) { + s.reTagElementMap(self.Tag, self.Hasher); + } + else { + s.Tag = self.Tag; + s.Hasher = self.Hasher; + } + } + self = s; + } + else if (shapes.size()) { + if (!op) { + op = Part::OpCodes::Fuse; + } + self.makeElementBoolean(op, shapes); + } + } + _PY_CATCH_OCC(return (-1)) +#else + PyObject* pcObj = nullptr; + if (!PyArg_ParseTuple(args, "|O", &pcObj)) { + return -1; + } auto shapes = getPyShapes(pcObj); if (pcObj) { TopoShape shape; - PY_TRY { - if (PyObject_TypeCheck(pcObj,&TopoShapePy::Type)) { + PY_TRY + { + if (PyObject_TypeCheck(pcObj, &TopoShapePy::Type)) { shape = *static_cast(pcObj)->getTopoShapePtr(); } else { @@ -139,8 +211,8 @@ int TopoShapePy::PyInit(PyObject* args, PyObject*) bool first = true; for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { if (PyObject_TypeCheck((*it).ptr(), &(Part::GeometryPy::Type))) { - TopoDS_Shape sh = static_cast((*it).ptr())-> - getGeometryPtr()->toShape(); + TopoDS_Shape sh = + static_cast((*it).ptr())->getGeometryPtr()->toShape(); if (first) { first = false; shape.setShape(sh); @@ -152,11 +224,11 @@ int TopoShapePy::PyInit(PyObject* args, PyObject*) } } } - _PY_CATCH_OCC(return(-1)) + _PY_CATCH_OCC(return (-1)) getTopoShapePtr()->setShape(shape.getShape()); } - + #endif return 0; } diff --git a/src/Mod/Part/Gui/CommandFilter.cpp b/src/Mod/Part/Gui/CommandFilter.cpp index 66a9207a36..0d29803f11 100644 --- a/src/Mod/Part/Gui/CommandFilter.cpp +++ b/src/Mod/Part/Gui/CommandFilter.cpp @@ -124,33 +124,33 @@ void PartCmdSelectFilter::languageChange() Gui::Command* vertexSelection = rcCmdMgr.getCommandByName("Part_VertexSelection"); if (vertexSelection) { QAction* cmd0 = act[0]; - cmd0->setText(QApplication::translate("View_SelectionFilter", vertexSelection->getMenuText())); - cmd0->setToolTip(QApplication::translate("View_SelectionFilter", vertexSelection->getToolTipText())); - cmd0->setStatusTip(QApplication::translate("View_SelectionFilter", vertexSelection->getStatusTip())); + cmd0->setText(QApplication::translate("PartCmdVertexSelection", vertexSelection->getMenuText())); + cmd0->setToolTip(QApplication::translate("PartCmdVertexSelection", vertexSelection->getToolTipText())); + cmd0->setStatusTip(QApplication::translate("PartCmdVertexSelection", vertexSelection->getStatusTip())); } Gui::Command* edgeSelection = rcCmdMgr.getCommandByName("Part_EdgeSelection"); if (edgeSelection) { QAction* cmd1 = act[1]; - cmd1->setText(QApplication::translate("View_SelectionFilter", edgeSelection->getMenuText())); - cmd1->setToolTip(QApplication::translate("View_SelectionFilter", edgeSelection->getToolTipText())); - cmd1->setStatusTip(QApplication::translate("View_SelectionFilter", edgeSelection->getStatusTip())); + cmd1->setText(QApplication::translate("PartCmdEdgeSelection", edgeSelection->getMenuText())); + cmd1->setToolTip(QApplication::translate("PartCmdEdgeSelection", edgeSelection->getToolTipText())); + cmd1->setStatusTip(QApplication::translate("PartCmdEdgeSelection", edgeSelection->getStatusTip())); } Gui::Command* faceSelection = rcCmdMgr.getCommandByName("Part_FaceSelection"); if (faceSelection) { QAction* cmd1 = act[2]; - cmd1->setText(QApplication::translate("View_SelectionFilter", faceSelection->getMenuText())); - cmd1->setToolTip(QApplication::translate("View_SelectionFilter", faceSelection->getToolTipText())); - cmd1->setStatusTip(QApplication::translate("View_SelectionFilter", faceSelection->getStatusTip())); + cmd1->setText(QApplication::translate("PartCmdFaceSelection", faceSelection->getMenuText())); + cmd1->setToolTip(QApplication::translate("PartCmdFaceSelection", faceSelection->getToolTipText())); + cmd1->setStatusTip(QApplication::translate("PartCmdFaceSelection", faceSelection->getStatusTip())); } Gui::Command* removeSelection = rcCmdMgr.getCommandByName("Part_RemoveSelectionGate"); if (removeSelection) { QAction* cmd2 = act[3]; - cmd2->setText(QApplication::translate("View_SelectionFilter", removeSelection->getMenuText())); - cmd2->setToolTip(QApplication::translate("View_SelectionFilter", removeSelection->getToolTipText())); - cmd2->setStatusTip(QApplication::translate("View_SelectionFilter", removeSelection->getStatusTip())); + cmd2->setText(QApplication::translate("PartCmdRemoveSelectionGate", removeSelection->getMenuText())); + cmd2->setToolTip(QApplication::translate("PartCmdRemoveSelectionGate", removeSelection->getToolTipText())); + cmd2->setStatusTip(QApplication::translate("PartCmdRemoveSelectionGate", removeSelection->getStatusTip())); } } diff --git a/src/Mod/Part/Gui/DlgFilletEdges.cpp b/src/Mod/Part/Gui/DlgFilletEdges.cpp index 28971ff8df..706a76c208 100644 --- a/src/Mod/Part/Gui/DlgFilletEdges.cpp +++ b/src/Mod/Part/Gui/DlgFilletEdges.cpp @@ -70,6 +70,7 @@ #include "SoBrepFaceSet.h" #include "SoBrepPointSet.h" +FC_LOG_LEVEL_INIT("Part", true, true) using namespace PartGui; namespace sp = std::placeholders; @@ -592,6 +593,16 @@ void DlgFilletEdges::setupFillet(const std::vector& objs) { App::DocumentObject* base = d->fillet->Base.getValue(); const std::vector& e = d->fillet->Edges.getValues(); + const auto &subs = d->fillet->EdgeLinks.getShadowSubs(); + if(subs.size()!=e.size()) { + FC_ERR("edge link size mismatch"); + return; + } + std::set subSet; + for(auto &sub : subs) + subSet.insert(sub.first.empty()?sub.second:sub.first); + + std::string tmp; std::vector::const_iterator it = std::find(objs.begin(), objs.end(), base); if (it != objs.end()) { // toggle visibility @@ -613,6 +624,40 @@ void DlgFilletEdges::setupFillet(const std::vector& objs) std::vector subElements; QStandardItemModel *model = qobject_cast(ui->treeView->model()); bool block = model->blockSignals(true); // do not call toggleCheckState + auto baseShape = Part::Feature::getTopoShape(base); + std::set elements; + for(size_t i=0;igetFullName() << "." << ref); + + for(auto &mapped : Part::Feature::getRelatedElements(base,ref.c_str())) { + tmp.clear(); + if(!subSet.insert(mapped.index.appendToStringBuffer(tmp)).second + || !subSet.insert(mapped.name.toString(0)).second) + continue; + FC_WARN("guess element reference: " << ref << " -> " << mapped.index); + elements.emplace(mapped.index.getIndex(),e[i].radius1,e[i].radius2); + } + } + for (const auto & et : e) { std::vector::iterator it = std::find(d->edge_ids.begin(), d->edge_ids.end(), et.edgeid); if (it != d->edge_ids.end()) { diff --git a/src/Mod/Part/Gui/DlgProjectionOnSurface.cpp b/src/Mod/Part/Gui/DlgProjectionOnSurface.cpp index c45a9841e4..1baf8ccb54 100644 --- a/src/Mod/Part/Gui/DlgProjectionOnSurface.cpp +++ b/src/Mod/Part/Gui/DlgProjectionOnSurface.cpp @@ -22,25 +22,25 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #endif #include @@ -60,81 +60,79 @@ using namespace PartGui; ////////////////////////////////////////////////////////////////////////// -class DlgProjectionOnSurface::EdgeSelection : public Gui::SelectionFilterGate +class DlgProjectionOnSurface::EdgeSelection: public Gui::SelectionFilterGate { public: - bool canSelect; + bool canSelect = false; - EdgeSelection() - : Gui::SelectionFilterGate(nullPointer()) - { - canSelect = false; - } - ~EdgeSelection() override = default; + EdgeSelection() + : Gui::SelectionFilterGate(nullPointer()) + {} - bool allow(App::Document* /*pDoc*/, App::DocumentObject* iPObj, const char* sSubName) override - { - Part::Feature* aPart = dynamic_cast(iPObj); - if (!aPart) - return false; - if (!sSubName) - return false; - std::string subName(sSubName); - if (subName.empty()) - return false; + bool allow(App::Document* /*pDoc*/, App::DocumentObject* iPObj, const char* sSubName) override + { + auto aPart = dynamic_cast(iPObj); + if (!aPart) { + return false; + } + if (!sSubName) { + return false; + } + std::string subName(sSubName); + if (subName.empty()) { + return false; + } - auto subShape = aPart->Shape.getShape().getSubShape(sSubName); - if (subShape.IsNull()) - return false; - auto type = subShape.ShapeType(); - if (type != TopAbs_EDGE) - return false; - return true; - } + auto subShape = aPart->Shape.getShape().getSubShape(sSubName); + if (subShape.IsNull()) { + return false; + } + auto type = subShape.ShapeType(); + return (type == TopAbs_EDGE); + } }; ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// -class DlgProjectionOnSurface::FaceSelection : public Gui::SelectionFilterGate +class DlgProjectionOnSurface::FaceSelection: public Gui::SelectionFilterGate { public: - bool canSelect; + bool canSelect = false; - FaceSelection() - : Gui::SelectionFilterGate(nullPointer()) - { - canSelect = false; - } - ~FaceSelection() override = default; + FaceSelection() + : Gui::SelectionFilterGate(nullPointer()) + {} - bool allow(App::Document* /*pDoc*/, App::DocumentObject* iPObj, const char* sSubName) override - { - Part::Feature* aPart = dynamic_cast(iPObj); - if (!aPart) - return false; - if (!sSubName) - return false; - std::string subName(sSubName); - if (subName.empty()) - return false; + bool allow(App::Document* /*pDoc*/, App::DocumentObject* iPObj, const char* sSubName) override + { + auto aPart = dynamic_cast(iPObj); + if (!aPart) { + return false; + } + if (!sSubName) { + return false; + } + std::string subName(sSubName); + if (subName.empty()) { + return false; + } - auto subShape = aPart->Shape.getShape().getSubShape(sSubName, true); - if (subShape.IsNull()) - return false; - auto type = subShape.ShapeType(); - if (type != TopAbs_FACE) - return false; - return true; - } + auto subShape = aPart->Shape.getShape().getSubShape(sSubName, true); + if (subShape.IsNull()) { + return false; + } + auto type = subShape.ShapeType(); + return (type == TopAbs_FACE); + } }; ////////////////////////////////////////////////////////////////////////// -DlgProjectionOnSurface::DlgProjectionOnSurface(QWidget *parent) - : QWidget(parent) - , ui(new Ui::DlgProjectionOnSurface) - , m_projectionObjectName(tr("Projection Object")) - , filterEdge(nullptr) - , filterFace(nullptr) +DlgProjectionOnSurface::DlgProjectionOnSurface(QWidget* parent) + : QWidget(parent) + , ui(new Ui::DlgProjectionOnSurface) + , m_projectionObjectName(tr("Projection Object")) + , filterEdge(nullptr) + , filterFace(nullptr) { ui->setupUi(this); setupConnections(); @@ -160,16 +158,15 @@ DlgProjectionOnSurface::DlgProjectionOnSurface(QWidget *parent) disable_ui_elements(m_guiObjectVec, ui->pushButtonAddProjFace); m_partDocument = App::GetApplication().getActiveDocument(); - if (!m_partDocument) - { - throw Base::ValueError(QString(tr("Have no active document!!!")).toUtf8()); + if (!m_partDocument) { + throw Base::ValueError(QString(tr("Have no active document!!!")).toUtf8()); } this->attachDocument(m_partDocument); m_partDocument->openTransaction("Project on surface"); - m_projectionObject = dynamic_cast(m_partDocument->addObject("Part::Feature", "Projection Object")); - if (!m_projectionObject) - { - throw Base::ValueError(QString(tr("Can not create a projection object!!!")).toUtf8()); + m_projectionObject = dynamic_cast( + m_partDocument->addObject("Part::Feature", "Projection Object")); + if (!m_projectionObject) { + throw Base::ValueError(QString(tr("Can not create a projection object!!!")).toUtf8()); } m_projectionObject->Label.setValue(std::string(m_projectionObjectName.toUtf8()).c_str()); onRadioButtonShowAllClicked(); @@ -178,965 +175,1013 @@ DlgProjectionOnSurface::DlgProjectionOnSurface(QWidget *parent) DlgProjectionOnSurface::~DlgProjectionOnSurface() { - delete ui; - for (const auto& it : m_projectionSurfaceVec) - { - try { - higlight_object(it.partFeature, it.partName, false, 0); + delete ui; + for (const auto& it : m_projectionSurfaceVec) { + try { + higlight_object(it.partFeature, it.partName, false, 0); + } + catch (Standard_NoSuchObject& e) { + Base::Console().Warning("DlgProjectionOnSurface::~DlgProjectionOnSurface: %s", + e.GetMessageString()); + } + auto vp = dynamic_cast( + Gui::Application::Instance->getViewProvider(it.partFeature)); + if (vp) { + vp->Selectable.setValue(it.is_selectable); + vp->Transparency.setValue(it.transparency); + } } - catch (Standard_NoSuchObject& e) { - Base::Console().Warning("DlgProjectionOnSurface::~DlgProjectionOnSurface: %s", e.GetMessageString()); + for (const auto& it : m_shapeVec) { + try { + higlight_object(it.partFeature, it.partName, false, 0); + } + catch (Standard_NoSuchObject& e) { + Base::Console().Warning("DlgProjectionOnSurface::~DlgProjectionOnSurface: %s", + e.GetMessageString()); + } } - PartGui::ViewProviderPartExt* vp = dynamic_cast(Gui::Application::Instance->getViewProvider(it.partFeature)); - if (vp) - { - vp->Selectable.setValue(it.is_selectable); - vp->Transparency.setValue(it.transparency); - } - } - for (const auto& it : m_shapeVec) - { - try { - higlight_object(it.partFeature, it.partName, false, 0); - } - catch (Standard_NoSuchObject& e) { - Base::Console().Warning("DlgProjectionOnSurface::~DlgProjectionOnSurface: %s", e.GetMessageString()); - } - } - Gui::Selection().rmvSelectionGate(); + Gui::Selection().rmvSelectionGate(); } void PartGui::DlgProjectionOnSurface::setupConnections() { - connect(ui->pushButtonAddFace, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonAddFaceClicked); - connect(ui->pushButtonAddEdge, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonAddEdgeClicked); - connect(ui->pushButtonGetCurrentCamDir, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonGetCurrentCamDirClicked); - connect(ui->pushButtonDirX, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonDirXClicked); - connect(ui->pushButtonDirY, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonDirYClicked); - connect(ui->pushButtonDirZ, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonDirZClicked); - connect(ui->pushButtonAddProjFace, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonAddProjFaceClicked); - connect(ui->radioButtonShowAll, &QRadioButton::clicked, - this, &DlgProjectionOnSurface::onRadioButtonShowAllClicked); - connect(ui->radioButtonFaces, &QRadioButton::clicked, - this, &DlgProjectionOnSurface::onRadioButtonFacesClicked); - connect(ui->radioButtonEdges, &QRadioButton::clicked, - this, &DlgProjectionOnSurface::onRadioButtonEdgesClicked); - connect(ui->doubleSpinBoxExtrudeHeight, qOverload(&QDoubleSpinBox::valueChanged), - this, &DlgProjectionOnSurface::onDoubleSpinBoxExtrudeHeightValueChanged); - connect(ui->pushButtonAddWire, &QPushButton::clicked, - this, &DlgProjectionOnSurface::onPushButtonAddWireClicked); - connect(ui->doubleSpinBoxSolidDepth, qOverload(&QDoubleSpinBox::valueChanged), - this, &DlgProjectionOnSurface::onDoubleSpinBoxSolidDepthValueChanged); + connect(ui->pushButtonAddFace, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonAddFaceClicked); + connect(ui->pushButtonAddEdge, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonAddEdgeClicked); + connect(ui->pushButtonGetCurrentCamDir, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonGetCurrentCamDirClicked); + connect(ui->pushButtonDirX, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonDirXClicked); + connect(ui->pushButtonDirY, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonDirYClicked); + connect(ui->pushButtonDirZ, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonDirZClicked); + connect(ui->pushButtonAddProjFace, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonAddProjFaceClicked); + connect(ui->radioButtonShowAll, + &QRadioButton::clicked, + this, + &DlgProjectionOnSurface::onRadioButtonShowAllClicked); + connect(ui->radioButtonFaces, + &QRadioButton::clicked, + this, + &DlgProjectionOnSurface::onRadioButtonFacesClicked); + connect(ui->radioButtonEdges, + &QRadioButton::clicked, + this, + &DlgProjectionOnSurface::onRadioButtonEdgesClicked); + connect(ui->doubleSpinBoxExtrudeHeight, + qOverload(&QDoubleSpinBox::valueChanged), + this, + &DlgProjectionOnSurface::onDoubleSpinBoxExtrudeHeightValueChanged); + connect(ui->pushButtonAddWire, + &QPushButton::clicked, + this, + &DlgProjectionOnSurface::onPushButtonAddWireClicked); + connect(ui->doubleSpinBoxSolidDepth, + qOverload(&QDoubleSpinBox::valueChanged), + this, + &DlgProjectionOnSurface::onDoubleSpinBoxSolidDepthValueChanged); } void PartGui::DlgProjectionOnSurface::slotDeletedDocument(const App::Document& Doc) { - if (m_partDocument == &Doc) { - m_partDocument = nullptr; - m_projectionObject = nullptr; - } + if (m_partDocument == &Doc) { + m_partDocument = nullptr; + m_projectionObject = nullptr; + } } void PartGui::DlgProjectionOnSurface::slotDeletedObject(const App::DocumentObject& Obj) { - if (m_projectionObject == &Obj) { - m_projectionObject = nullptr; - } + if (m_projectionObject == &Obj) { + m_projectionObject = nullptr; + } } void PartGui::DlgProjectionOnSurface::apply() { - if (m_partDocument) - m_partDocument->commitTransaction(); + if (m_partDocument) { + m_partDocument->commitTransaction(); + } } void PartGui::DlgProjectionOnSurface::reject() { - if (m_partDocument) - m_partDocument->abortTransaction(); + if (m_partDocument) { + m_partDocument->abortTransaction(); + } } void PartGui::DlgProjectionOnSurface::onPushButtonAddFaceClicked() { - if ( ui->pushButtonAddFace->isChecked() ) - { - m_currentSelection = "add_face"; - disable_ui_elements(m_guiObjectVec, ui->pushButtonAddFace); - if (!filterFace) - { - filterFace = new FaceSelection(); - Gui::Selection().addSelectionGate(filterFace); + if (ui->pushButtonAddFace->isChecked()) { + m_currentSelection = "add_face"; + disable_ui_elements(m_guiObjectVec, ui->pushButtonAddFace); + if (!filterFace) { + filterFace = new FaceSelection(); + Gui::Selection().addSelectionGate(filterFace); + } + } + else { + m_currentSelection = ""; + enable_ui_elements(m_guiObjectVec, nullptr); + Gui::Selection().rmvSelectionGate(); + filterFace = nullptr; } - } - else - { - m_currentSelection = ""; - enable_ui_elements(m_guiObjectVec, nullptr); - Gui::Selection().rmvSelectionGate(); - filterFace = nullptr; - } } void PartGui::DlgProjectionOnSurface::onPushButtonAddEdgeClicked() { - if (ui->pushButtonAddEdge->isChecked()) - { - m_currentSelection = "add_edge"; - disable_ui_elements(m_guiObjectVec, ui->pushButtonAddEdge); - if (!filterEdge) - { - filterEdge = new EdgeSelection(); - Gui::Selection().addSelectionGate(filterEdge); + if (ui->pushButtonAddEdge->isChecked()) { + m_currentSelection = "add_edge"; + disable_ui_elements(m_guiObjectVec, ui->pushButtonAddEdge); + if (!filterEdge) { + filterEdge = new EdgeSelection(); + Gui::Selection().addSelectionGate(filterEdge); + } + ui->radioButtonEdges->setChecked(true); + onRadioButtonEdgesClicked(); + } + else { + m_currentSelection = ""; + enable_ui_elements(m_guiObjectVec, nullptr); + Gui::Selection().rmvSelectionGate(); + filterEdge = nullptr; } - ui->radioButtonEdges->setChecked(true); - onRadioButtonEdgesClicked(); - } - else - { - m_currentSelection = ""; - enable_ui_elements(m_guiObjectVec, nullptr); - Gui::Selection().rmvSelectionGate(); - filterEdge = nullptr; - } } void PartGui::DlgProjectionOnSurface::onPushButtonGetCurrentCamDirClicked() { - get_camera_direction(); + get_camera_direction(); } void PartGui::DlgProjectionOnSurface::onPushButtonDirXClicked() { - set_xyz_dir_spinbox(ui->doubleSpinBoxDirX); + set_xyz_dir_spinbox(ui->doubleSpinBoxDirX); } void PartGui::DlgProjectionOnSurface::onPushButtonDirYClicked() { - set_xyz_dir_spinbox(ui->doubleSpinBoxDirY); + set_xyz_dir_spinbox(ui->doubleSpinBoxDirY); } void PartGui::DlgProjectionOnSurface::onPushButtonDirZClicked() { - set_xyz_dir_spinbox(ui->doubleSpinBoxDirZ); + set_xyz_dir_spinbox(ui->doubleSpinBoxDirZ); } void PartGui::DlgProjectionOnSurface::onSelectionChanged(const Gui::SelectionChanges& msg) { - if (msg.Type == Gui::SelectionChanges::AddSelection) - { - if ( m_currentSelection == "add_face" || m_currentSelection == "add_edge" || m_currentSelection == "add_wire") - { - store_current_selected_parts(m_shapeVec, 0xff00ff00); - create_projection_wire(m_shapeVec); - create_projection_face_from_wire(m_shapeVec); - create_face_extrude(m_shapeVec); - show_projected_shapes(m_shapeVec); - } - else if (m_currentSelection == "add_projection_surface") - { - m_projectionSurfaceVec.clear(); - store_current_selected_parts(m_projectionSurfaceVec, 0xffff0000); - if (!m_projectionSurfaceVec.empty()) - { - PartGui::ViewProviderPartExt* vp = dynamic_cast(Gui::Application::Instance->getViewProvider(m_projectionSurfaceVec.back().partFeature)); - if (vp) - { - vp->Selectable.setValue(false); - vp->Transparency.setValue(90); + if (msg.Type == Gui::SelectionChanges::AddSelection) { + if (m_currentSelection == "add_face" || m_currentSelection == "add_edge" + || m_currentSelection == "add_wire") { + store_current_selected_parts(m_shapeVec, 0xff00ff00); + create_projection_wire(m_shapeVec); + create_projection_face_from_wire(m_shapeVec); + create_face_extrude(m_shapeVec); + show_projected_shapes(m_shapeVec); } - } + else if (m_currentSelection == "add_projection_surface") { + m_projectionSurfaceVec.clear(); + store_current_selected_parts(m_projectionSurfaceVec, 0xffff0000); + if (!m_projectionSurfaceVec.empty()) { + auto vp = dynamic_cast( + Gui::Application::Instance->getViewProvider( + m_projectionSurfaceVec.back().partFeature)); + if (vp) { + vp->Selectable.setValue(false); + vp->Transparency.setValue(90); + } + } - ui->pushButtonAddProjFace->setChecked(false); - onPushButtonAddProjFaceClicked(); + ui->pushButtonAddProjFace->setChecked(false); + onPushButtonAddProjFaceClicked(); + } } - } } void PartGui::DlgProjectionOnSurface::get_camera_direction() { - auto mainWindow = Gui::getMainWindow(); + auto mainWindow = Gui::getMainWindow(); - auto mdiObject = dynamic_cast(mainWindow->activeWindow()); - if (!mdiObject) - return; - auto camerRotation = mdiObject->getViewer()->getCameraOrientation(); - - SbVec3f lookAt(0, 0, -1); - camerRotation.multVec(lookAt, lookAt); - - float valX, valY, valZ; - lookAt.getValue(valX, valY, valZ); - - ui->doubleSpinBoxDirX->setValue(valX); - ui->doubleSpinBoxDirY->setValue(valY); - ui->doubleSpinBoxDirZ->setValue(valZ); -} - -void PartGui::DlgProjectionOnSurface::store_current_selected_parts(std::vector& iStoreVec, const unsigned int iColor) -{ - if (!m_partDocument) - return; - std::vector selObj = Gui::Selection().getSelectionEx(); - if (!selObj.empty()) - { - for (auto it = selObj.begin(); it != selObj.end(); ++it) - { - auto aPart = dynamic_cast(it->getObject()); - if (!aPart) continue; - - if (aPart) - { - SShapeStore currentShapeStore; - currentShapeStore.inputShape = aPart->Shape.getShape().getShape(); - currentShapeStore.partFeature = aPart; - currentShapeStore.partName = aPart->getNameInDocument(); - - PartGui::ViewProviderPartExt* vp = dynamic_cast(Gui::Application::Instance->getViewProvider(aPart)); - if (vp) - { - currentShapeStore.is_selectable = vp->Selectable.getValue(); - currentShapeStore.transparency = vp->Transparency.getValue(); - } - if (!it->getSubNames().empty() ) - { - auto parentShape = currentShapeStore.inputShape; - for (const auto & itName : selObj.front().getSubNames()) - { - auto currentShape = aPart->Shape.getShape().getSubShape(itName.c_str()); - - transform_shape_to_global_position(currentShape, aPart); - - currentShapeStore.inputShape = currentShape; - currentShapeStore.partName = itName; - auto store = store_part_in_vector(currentShapeStore, iStoreVec); - higlight_object(aPart, itName, store, iColor); - store_wire_in_vector(currentShapeStore, parentShape, iStoreVec, iColor); - } - } - else - { - transform_shape_to_global_position(currentShapeStore.inputShape,currentShapeStore.partFeature); - auto store = store_part_in_vector(currentShapeStore, iStoreVec); - higlight_object(aPart, aPart->Shape.getName(), store, iColor); - } - Gui::Selection().clearSelection(m_partDocument->getName()); - Gui::Selection().rmvPreselect(); - } - } - } -} - -bool PartGui::DlgProjectionOnSurface::store_part_in_vector(SShapeStore& iCurrentShape, std::vector& iStoreVec) -{ - if (iCurrentShape.inputShape.IsNull()) - return false; - auto currentType = iCurrentShape.inputShape.ShapeType(); - for ( auto it = iStoreVec.begin(); it != iStoreVec.end(); ++it) - { - if ( currentType == TopAbs_FACE ) - { - if (it->aFace.IsSame(iCurrentShape.inputShape)) - { - iStoreVec.erase(it); - return false; - } - } - else if ( currentType == TopAbs_EDGE ) - { - if (it->aEdge.IsSame(iCurrentShape.inputShape)) - { - iStoreVec.erase(it); - return false; - } - } - } - - if (currentType == TopAbs_FACE) - { - iCurrentShape.aFace = TopoDS::Face(iCurrentShape.inputShape); - } - else if (currentType == TopAbs_EDGE) - { - iCurrentShape.aEdge = TopoDS::Edge(iCurrentShape.inputShape); - } - - auto valX = ui->doubleSpinBoxDirX->value(); - auto valY = ui->doubleSpinBoxDirY->value(); - auto valZ = ui->doubleSpinBoxDirZ->value(); - - iCurrentShape.aProjectionDir = gp_Dir(valX, valY, valZ); - if ( !m_projectionSurfaceVec.empty() ) - { - iCurrentShape.surfaceToProject = m_projectionSurfaceVec.front().aFace; - } - iStoreVec.push_back(iCurrentShape); - return true; -} - -void PartGui::DlgProjectionOnSurface::create_projection_wire(std::vector& iCurrentShape) -{ - try - { - if (iCurrentShape.empty()) + auto mdiObject = dynamic_cast(mainWindow->activeWindow()); + if (!mdiObject) { return; - for ( auto &itCurrentShape : iCurrentShape ) - { - if (m_projectionSurfaceVec.empty()) continue;; - if (!itCurrentShape.aProjectedEdgeVec.empty()) continue;; - if (!itCurrentShape.aProjectedFace.IsNull()) continue;; - if (!itCurrentShape.aProjectedWireVec.empty()) continue;; - - if (!itCurrentShape.aFace.IsNull()) - { - get_all_wire_from_face(itCurrentShape); - for (const auto& itWire : itCurrentShape.aWireVec) - { - BRepProj_Projection aProjection(itWire, itCurrentShape.surfaceToProject, itCurrentShape.aProjectionDir); - double minDistance = std::numeric_limits::max(); - TopoDS_Wire wireToTake; - for ( ; aProjection.More(); aProjection.Next() ) - { - auto it = aProjection.Current(); - BRepExtrema_DistShapeShape distanceMeasure(it, itCurrentShape.aFace); - distanceMeasure.Perform(); - auto currentDistance = distanceMeasure.Value(); - if ( currentDistance > minDistance ) continue; - wireToTake = it; - minDistance = currentDistance; - } - auto aWire = sort_and_heal_wire(wireToTake, itCurrentShape.surfaceToProject); - itCurrentShape.aProjectedWireVec.push_back(aWire); - } - } - else if (!itCurrentShape.aEdge.IsNull()) - { - BRepProj_Projection aProjection(itCurrentShape.aEdge, itCurrentShape.surfaceToProject, itCurrentShape.aProjectionDir); - double minDistance = std::numeric_limits::max(); - TopoDS_Wire wireToTake; - for (; aProjection.More(); aProjection.Next()) - { - auto it = aProjection.Current(); - BRepExtrema_DistShapeShape distanceMeasure(it, itCurrentShape.aEdge); - distanceMeasure.Perform(); - auto currentDistance = distanceMeasure.Value(); - if (currentDistance > minDistance) continue; - wireToTake = it; - minDistance = currentDistance; - } - for (TopExp_Explorer aExplorer(wireToTake, TopAbs_EDGE); aExplorer.More(); aExplorer.Next()) - { - itCurrentShape.aProjectedEdgeVec.push_back(TopoDS::Edge(aExplorer.Current())); - } - } - } - } - catch (const Standard_Failure& error) - { - std::stringstream ssOcc; - error.Print(ssOcc); - throw Base::ValueError(ssOcc.str().c_str()); - } + auto camerRotation = mdiObject->getViewer()->getCameraOrientation(); + + SbVec3f lookAt(0, 0, -1); + camerRotation.multVec(lookAt, lookAt); + + float valX {}; + float valY {}; + float valZ {}; + lookAt.getValue(valX, valY, valZ); + + ui->doubleSpinBoxDirX->setValue(valX); + ui->doubleSpinBoxDirY->setValue(valY); + ui->doubleSpinBoxDirZ->setValue(valZ); } -TopoDS_Shape PartGui::DlgProjectionOnSurface::create_compound(const std::vector& iShapeVec) +void PartGui::DlgProjectionOnSurface::store_current_selected_parts( + std::vector& iStoreVec, + unsigned int iColor) { - if (iShapeVec.empty()) - return {}; - - TopoDS_Compound aCompound; - TopoDS_Builder aBuilder; - aBuilder.MakeCompound(aCompound); - - for (const auto& it : iShapeVec) - { - if ( m_currentShowType == "edges" ) - { - for (const auto& it2 : it.aProjectedEdgeVec) - { - aBuilder.Add(aCompound, it2); - } - for (const auto& it2 : it.aProjectedWireVec) - { - aBuilder.Add(aCompound, it2); - } - continue; - } - else if ( m_currentShowType == "faces" ) - { - if (it.aProjectedFace.IsNull()) - { - for (const auto& it2 : it.aProjectedWireVec) - { - if (!it2.IsNull()) - { - aBuilder.Add(aCompound, it2); - } - } - } - else aBuilder.Add(aCompound, it.aProjectedFace); - continue; - } - else if ( m_currentShowType == "all" ) - { - if (!it.aProjectedSolid.IsNull()) - { - aBuilder.Add(aCompound, it.aProjectedSolid); - } - else if ( !it.aProjectedFace.IsNull() ) - { - aBuilder.Add(aCompound, it.aProjectedFace); - } - else if (!it.aProjectedWireVec.empty()) - { - for (const auto& itWire : it.aProjectedWireVec ) - { - if ( itWire.IsNull() ) continue; - aBuilder.Add(aCompound, itWire); - } - } - else if (!it.aProjectedEdgeVec.empty()) - { - for (const auto& itEdge : it.aProjectedEdgeVec) - { - if (itEdge.IsNull()) continue; - aBuilder.Add(aCompound, itEdge); - } - } - } - } - return TopoDS_Shape(std::move(aCompound)); -} - -void PartGui::DlgProjectionOnSurface::show_projected_shapes(const std::vector& iShapeStoreVec) -{ - if (!m_projectionObject) - return; - auto aCompound = create_compound(iShapeStoreVec); - if ( aCompound.IsNull() ) - { - if (!m_partDocument) + if (!m_partDocument) { return; - m_projectionObject->Shape.setValue(TopoDS_Shape()); - return; - } - auto currentPlacement = m_projectionObject->Placement.getValue(); - m_projectionObject->Shape.setValue(aCompound); - m_projectionObject->Placement.setValue(currentPlacement); + } + std::vector selObj = Gui::Selection().getSelectionEx(); + if (!selObj.empty()) { + for (auto it = selObj.begin(); it != selObj.end(); ++it) { + auto aPart = dynamic_cast(it->getObject()); + if (!aPart) { + continue; + } - //set color - PartGui::ViewProviderPartExt* vp = dynamic_cast(Gui::Application::Instance->getViewProvider(m_projectionObject)); - if (vp) - { - vp->LineColor.setValue(0x8ae23400); - vp->ShapeColor.setValue(0x8ae23400); - vp->PointColor.setValue(0x8ae23400); - vp->Transparency.setValue(0); - } + if (aPart) { + SShapeStore currentShapeStore; + currentShapeStore.inputShape = aPart->Shape.getShape().getShape(); + currentShapeStore.partFeature = aPart; + currentShapeStore.partName = aPart->getNameInDocument(); + + auto vp = dynamic_cast( + Gui::Application::Instance->getViewProvider(aPart)); + if (vp) { + currentShapeStore.is_selectable = vp->Selectable.getValue(); + currentShapeStore.transparency = vp->Transparency.getValue(); + } + if (!it->getSubNames().empty()) { + auto parentShape = currentShapeStore.inputShape; + for (const auto& itName : selObj.front().getSubNames()) { + auto currentShape = aPart->Shape.getShape().getSubShape(itName.c_str()); + + transform_shape_to_global_position(currentShape, aPart); + + currentShapeStore.inputShape = currentShape; + currentShapeStore.partName = itName; + auto store = store_part_in_vector(currentShapeStore, iStoreVec); + higlight_object(aPart, itName, store, iColor); + store_wire_in_vector(currentShapeStore, parentShape, iStoreVec, iColor); + } + } + else { + transform_shape_to_global_position(currentShapeStore.inputShape, + currentShapeStore.partFeature); + auto store = store_part_in_vector(currentShapeStore, iStoreVec); + higlight_object(aPart, aPart->Shape.getName(), store, iColor); + } + Gui::Selection().clearSelection(m_partDocument->getName()); + Gui::Selection().rmvPreselect(); + } + } + } } -void PartGui::DlgProjectionOnSurface::disable_ui_elements(const std::vector& iObjectVec, QWidget* iExceptThis) +bool PartGui::DlgProjectionOnSurface::store_part_in_vector(SShapeStore& iCurrentShape, + std::vector& iStoreVec) { - for ( auto it : iObjectVec ) - { - if ( !it ) continue; - if ( it == iExceptThis ) continue; - it->setDisabled(true); - } + if (iCurrentShape.inputShape.IsNull()) { + return false; + } + auto currentType = iCurrentShape.inputShape.ShapeType(); + for (auto it = iStoreVec.begin(); it != iStoreVec.end(); ++it) { + if (currentType == TopAbs_FACE) { + if (it->aFace.IsSame(iCurrentShape.inputShape)) { + iStoreVec.erase(it); + return false; + } + } + else if (currentType == TopAbs_EDGE) { + if (it->aEdge.IsSame(iCurrentShape.inputShape)) { + iStoreVec.erase(it); + return false; + } + } + } + + if (currentType == TopAbs_FACE) { + iCurrentShape.aFace = TopoDS::Face(iCurrentShape.inputShape); + } + else if (currentType == TopAbs_EDGE) { + iCurrentShape.aEdge = TopoDS::Edge(iCurrentShape.inputShape); + } + + auto valX = ui->doubleSpinBoxDirX->value(); + auto valY = ui->doubleSpinBoxDirY->value(); + auto valZ = ui->doubleSpinBoxDirZ->value(); + + iCurrentShape.aProjectionDir = gp_Dir(valX, valY, valZ); + if (!m_projectionSurfaceVec.empty()) { + iCurrentShape.surfaceToProject = m_projectionSurfaceVec.front().aFace; + } + iStoreVec.push_back(iCurrentShape); + return true; } -void PartGui::DlgProjectionOnSurface::enable_ui_elements(const std::vector& iObjectVec, QWidget* iExceptThis) +void PartGui::DlgProjectionOnSurface::create_projection_wire( + std::vector& iCurrentShape) { - for (auto it : iObjectVec) - { - if (!it) continue; - if (it == iExceptThis) continue; - it->setEnabled(true); - } + try { + if (iCurrentShape.empty()) { + return; + } + for (auto& itCurrentShape : iCurrentShape) { + if (m_projectionSurfaceVec.empty()) { + continue; + }; + if (!itCurrentShape.aProjectedEdgeVec.empty()) { + continue; + }; + if (!itCurrentShape.aProjectedFace.IsNull()) { + continue; + }; + if (!itCurrentShape.aProjectedWireVec.empty()) { + continue; + }; + + if (!itCurrentShape.aFace.IsNull()) { + get_all_wire_from_face(itCurrentShape); + for (const auto& itWire : itCurrentShape.aWireVec) { + BRepProj_Projection aProjection(itWire, + itCurrentShape.surfaceToProject, + itCurrentShape.aProjectionDir); + double minDistance = std::numeric_limits::max(); + TopoDS_Wire wireToTake; + for (; aProjection.More(); aProjection.Next()) { + auto it = aProjection.Current(); + BRepExtrema_DistShapeShape distanceMeasure(it, itCurrentShape.aFace); + distanceMeasure.Perform(); + auto currentDistance = distanceMeasure.Value(); + if (currentDistance > minDistance) { + continue; + } + wireToTake = it; + minDistance = currentDistance; + } + auto aWire = sort_and_heal_wire(wireToTake, itCurrentShape.surfaceToProject); + itCurrentShape.aProjectedWireVec.push_back(aWire); + } + } + else if (!itCurrentShape.aEdge.IsNull()) { + BRepProj_Projection aProjection(itCurrentShape.aEdge, + itCurrentShape.surfaceToProject, + itCurrentShape.aProjectionDir); + double minDistance = std::numeric_limits::max(); + TopoDS_Wire wireToTake; + for (; aProjection.More(); aProjection.Next()) { + auto it = aProjection.Current(); + BRepExtrema_DistShapeShape distanceMeasure(it, itCurrentShape.aEdge); + distanceMeasure.Perform(); + auto currentDistance = distanceMeasure.Value(); + if (currentDistance > minDistance) { + continue; + } + wireToTake = it; + minDistance = currentDistance; + } + for (TopExp_Explorer aExplorer(wireToTake, TopAbs_EDGE); aExplorer.More(); + aExplorer.Next()) { + itCurrentShape.aProjectedEdgeVec.push_back(TopoDS::Edge(aExplorer.Current())); + } + } + } + } + catch (const Standard_Failure& error) { + std::stringstream ssOcc; + error.Print(ssOcc); + throw Base::ValueError(ssOcc.str().c_str()); + } } -void PartGui::DlgProjectionOnSurface::higlight_object(Part::Feature* iCurrentObject, const std::string& iShapeName, bool iHighlight, const unsigned int iColor) +TopoDS_Shape +PartGui::DlgProjectionOnSurface::create_compound(const std::vector& iShapeVec) { - if (!iCurrentObject) - return; - auto partenShape = iCurrentObject->Shape.getShape().getShape(); - auto subShape = iCurrentObject->Shape.getShape().getSubShape(iShapeName.c_str(), true); - - TopoDS_Shape currentShape = subShape; - if (subShape.IsNull()) currentShape = partenShape; - - auto currentShapeType = currentShape.ShapeType(); - TopTools_IndexedMapOfShape anIndices; - TopExp::MapShapes(partenShape, currentShapeType, anIndices); - if (anIndices.IsEmpty()) - return; - if (!anIndices.Contains(currentShape)) - return; - auto index = anIndices.FindIndex(currentShape); - - //set color - PartGui::ViewProviderPartExt* vp = dynamic_cast(Gui::Application::Instance->getViewProvider(iCurrentObject)); - if (vp) - { - std::vector colors; - App::Color defaultColor; - if (currentShapeType == TopAbs_FACE) - { - colors = vp->DiffuseColor.getValues(); - defaultColor = vp->ShapeColor.getValue(); - } - else if ( currentShapeType == TopAbs_EDGE ) - { - colors = vp->LineColorArray.getValues(); - defaultColor = vp->LineColor.getValue(); + if (iShapeVec.empty()) { + return {}; } - if ( static_cast(colors.size()) != anIndices.Extent() ) - { - colors.resize(anIndices.Extent(), defaultColor); + TopoDS_Compound aCompound; + TopoDS_Builder aBuilder; + aBuilder.MakeCompound(aCompound); + + for (const auto& it : iShapeVec) { + if (m_currentShowType == "edges") { + for (const auto& it2 : it.aProjectedEdgeVec) { + aBuilder.Add(aCompound, it2); + } + for (const auto& it2 : it.aProjectedWireVec) { + aBuilder.Add(aCompound, it2); + } + } + else if (m_currentShowType == "faces") { + if (it.aProjectedFace.IsNull()) { + for (const auto& it2 : it.aProjectedWireVec) { + if (!it2.IsNull()) { + aBuilder.Add(aCompound, it2); + } + } + } + else { + aBuilder.Add(aCompound, it.aProjectedFace); + } + } + else if (m_currentShowType == "all") { + if (!it.aProjectedSolid.IsNull()) { + aBuilder.Add(aCompound, it.aProjectedSolid); + } + else if (!it.aProjectedFace.IsNull()) { + aBuilder.Add(aCompound, it.aProjectedFace); + } + else if (!it.aProjectedWireVec.empty()) { + for (const auto& itWire : it.aProjectedWireVec) { + if (itWire.IsNull()) { + continue; + } + aBuilder.Add(aCompound, itWire); + } + } + else if (!it.aProjectedEdgeVec.empty()) { + for (const auto& itEdge : it.aProjectedEdgeVec) { + if (itEdge.IsNull()) { + continue; + } + aBuilder.Add(aCompound, itEdge); + } + } + } + } + return {std::move(aCompound)}; +} + +void PartGui::DlgProjectionOnSurface::show_projected_shapes( + const std::vector& iShapeStoreVec) +{ + if (!m_projectionObject) { + return; + } + auto aCompound = create_compound(iShapeStoreVec); + if (aCompound.IsNull()) { + if (!m_partDocument) { + return; + } + m_projectionObject->Shape.setValue(TopoDS_Shape()); + return; + } + auto currentPlacement = m_projectionObject->Placement.getValue(); + m_projectionObject->Shape.setValue(aCompound); + m_projectionObject->Placement.setValue(currentPlacement); + + // set color + auto vp = dynamic_cast( + Gui::Application::Instance->getViewProvider(m_projectionObject)); + if (vp) { + const unsigned int color = 0x8ae23400; + vp->LineColor.setValue(color); + vp->ShapeColor.setValue(color); + vp->PointColor.setValue(color); + vp->Transparency.setValue(0); + } +} + +void PartGui::DlgProjectionOnSurface::disable_ui_elements(const std::vector& iObjectVec, + QWidget* iExceptThis) +{ + for (auto it : iObjectVec) { + if (!it) { + continue; + } + if (it == iExceptThis) { + continue; + } + it->setDisabled(true); + } +} + +void PartGui::DlgProjectionOnSurface::enable_ui_elements(const std::vector& iObjectVec, + QWidget* iExceptThis) +{ + for (auto it : iObjectVec) { + if (!it) { + continue; + } + if (it == iExceptThis) { + continue; + } + it->setEnabled(true); + } +} + +void PartGui::DlgProjectionOnSurface::higlight_object(Part::Feature* iCurrentObject, + const std::string& iShapeName, + bool iHighlight, + unsigned int iColor) +{ + if (!iCurrentObject) { + return; + } + auto partenShape = iCurrentObject->Shape.getShape().getShape(); + auto subShape = iCurrentObject->Shape.getShape().getSubShape(iShapeName.c_str(), true); + + TopoDS_Shape currentShape = subShape; + if (subShape.IsNull()) { + currentShape = partenShape; } - if ( iHighlight ) - { - App::Color aColor; - aColor.setPackedValue(iColor); - colors.at(index - 1) = aColor; + auto currentShapeType = currentShape.ShapeType(); + TopTools_IndexedMapOfShape anIndices; + TopExp::MapShapes(partenShape, currentShapeType, anIndices); + if (anIndices.IsEmpty()) { + return; } - else - { - colors.at(index - 1) = defaultColor; + if (!anIndices.Contains(currentShape)) { + return; } - if (currentShapeType == TopAbs_FACE) - { - vp->DiffuseColor.setValues(colors); + auto index = anIndices.FindIndex(currentShape); + + // set color + auto vp = dynamic_cast( + Gui::Application::Instance->getViewProvider(iCurrentObject)); + if (vp) { + std::vector colors; + App::Color defaultColor; + if (currentShapeType == TopAbs_FACE) { + colors = vp->DiffuseColor.getValues(); + defaultColor = vp->ShapeColor.getValue(); + } + else if (currentShapeType == TopAbs_EDGE) { + colors = vp->LineColorArray.getValues(); + defaultColor = vp->LineColor.getValue(); + } + + if (static_cast(colors.size()) != anIndices.Extent()) { + colors.resize(anIndices.Extent(), defaultColor); + } + + if (iHighlight) { + App::Color aColor; + aColor.setPackedValue(iColor); + colors.at(index - 1) = aColor; + } + else { + colors.at(index - 1) = defaultColor; + } + if (currentShapeType == TopAbs_FACE) { + vp->DiffuseColor.setValues(colors); + } + else if (currentShapeType == TopAbs_EDGE) { + vp->LineColorArray.setValues(colors); + } } - else if (currentShapeType == TopAbs_EDGE) - { - vp->LineColorArray.setValues(colors); - } - } } void PartGui::DlgProjectionOnSurface::get_all_wire_from_face(SShapeStore& ioCurrentSahpe) { - auto outerWire = ShapeAnalysis::OuterWire(ioCurrentSahpe.aFace); - ioCurrentSahpe.aWireVec.push_back(outerWire); - for (TopExp_Explorer aExplorer(ioCurrentSahpe.aFace, TopAbs_WIRE); aExplorer.More(); aExplorer.Next()) - { - auto currentWire = TopoDS::Wire(aExplorer.Current()); - if (currentWire.IsSame(outerWire)) continue; - ioCurrentSahpe.aWireVec.push_back(currentWire); - } -} - -void PartGui::DlgProjectionOnSurface::create_projection_face_from_wire(std::vector& iCurrentShape) -{ - try - { - if (iCurrentShape.empty()) - return; - - for ( auto &itCurrentShape : iCurrentShape ) - { - if (itCurrentShape.aFace.IsNull()) continue;; - if (itCurrentShape.aProjectedWireVec.empty()) continue;; - if (!itCurrentShape.aProjectedFace.IsNull()) continue;; - - auto surface = BRep_Tool::Surface(itCurrentShape.surfaceToProject); - - //create a wire of all edges in parametric space on the surface of the face to projected - // --> otherwise BRepBuilderAPI_MakeFace can not make a face from the wire! - for (const auto& itWireVec : itCurrentShape.aProjectedWireVec) - { - std::vector edgeVec; - for (TopExp_Explorer aExplorer(itWireVec, TopAbs_EDGE); aExplorer.More(); aExplorer.Next()) - { - auto currentEdge = TopoDS::Edge(aExplorer.Current()); - edgeVec.push_back(currentEdge); + auto outerWire = ShapeAnalysis::OuterWire(ioCurrentSahpe.aFace); + ioCurrentSahpe.aWireVec.push_back(outerWire); + for (TopExp_Explorer aExplorer(ioCurrentSahpe.aFace, TopAbs_WIRE); aExplorer.More(); + aExplorer.Next()) { + auto currentWire = TopoDS::Wire(aExplorer.Current()); + if (currentWire.IsSame(outerWire)) { + continue; } - if (edgeVec.empty()) continue; - - std::vector edgeInParametricSpaceVec; - for (auto itEdge : edgeVec) - { - Standard_Real first, last; - auto currentCurve = BRep_Tool::CurveOnSurface(TopoDS::Edge(itEdge), itCurrentShape.surfaceToProject, first, last); - if (!currentCurve) continue; - auto edgeInParametricSpace = BRepBuilderAPI_MakeEdge(currentCurve, surface, first,last).Edge(); - edgeInParametricSpaceVec.push_back(edgeInParametricSpace); - } - auto aWire = sort_and_heal_wire(edgeInParametricSpaceVec, itCurrentShape.surfaceToProject); - itCurrentShape.aProjectedWireInParametricSpaceVec.push_back(aWire); - } - - // try to create a face from the wires - // the first wire is the otherwise - // the following wires are the inside wires - BRepBuilderAPI_MakeFace faceMaker; - bool first = true; - for (auto itWireVec : itCurrentShape.aProjectedWireInParametricSpaceVec) - { - if (first) - { - first = false; - // change the wire direction, otherwise no face is created - auto currentWire = TopoDS::Wire(itWireVec.Reversed()); - if (itCurrentShape.surfaceToProject.Orientation() == TopAbs_REVERSED) currentWire = itWireVec; - faceMaker = BRepBuilderAPI_MakeFace(surface, currentWire); - ShapeFix_Face fix(faceMaker.Face()); - fix.Perform(); - auto aFace = fix.Face(); - BRepCheck_Analyzer aChecker(aFace); - if (!aChecker.IsValid()) - { - faceMaker = BRepBuilderAPI_MakeFace(surface, TopoDS::Wire(currentWire.Reversed())); - } - } - else - { - // make a copy of the current face maker - // if the face fails just try again with the copy - TopoDS_Face tempCopy = BRepBuilderAPI_MakeFace(faceMaker.Face()).Face(); - faceMaker.Add(TopoDS::Wire(itWireVec.Reversed())); - ShapeFix_Face fix(faceMaker.Face()); - fix.Perform(); - auto aFace = fix.Face(); - BRepCheck_Analyzer aChecker(aFace); - if (!aChecker.IsValid()) - { - faceMaker = BRepBuilderAPI_MakeFace(tempCopy); - faceMaker.Add(TopoDS::Wire(itWireVec)); - } - } - } - //auto doneFlag = faceMaker.IsDone(); - //auto error = faceMaker.Error(); - itCurrentShape.aProjectedFace = faceMaker.Face(); + ioCurrentSahpe.aWireVec.push_back(currentWire); } - } - catch (const Standard_Failure& error) - { - std::stringstream ssOcc; - error.Print(ssOcc); - throw Base::ValueError(ssOcc.str().c_str()); - } } -TopoDS_Wire PartGui::DlgProjectionOnSurface::sort_and_heal_wire(const TopoDS_Shape& iShape, const TopoDS_Face& iFaceToProject) +void PartGui::DlgProjectionOnSurface::create_projection_face_from_wire( + std::vector& iCurrentShape) { - std::vector aEdgeVec; - for (TopExp_Explorer aExplorer(iShape, TopAbs_EDGE); aExplorer.More(); aExplorer.Next()) - { - auto anEdge = TopoDS::Edge(aExplorer.Current()); - aEdgeVec.push_back(anEdge); - } - return sort_and_heal_wire(aEdgeVec, iFaceToProject); + try { + if (iCurrentShape.empty()) { + return; + } + + for (auto& itCurrentShape : iCurrentShape) { + if (itCurrentShape.aFace.IsNull()) { + continue; + }; + if (itCurrentShape.aProjectedWireVec.empty()) { + continue; + }; + if (!itCurrentShape.aProjectedFace.IsNull()) { + continue; + }; + + auto surface = BRep_Tool::Surface(itCurrentShape.surfaceToProject); + + // create a wire of all edges in parametric space on the surface of the face to + // projected + // --> otherwise BRepBuilderAPI_MakeFace can not make a face from the wire! + for (const auto& itWireVec : itCurrentShape.aProjectedWireVec) { + std::vector edgeVec; + for (TopExp_Explorer aExplorer(itWireVec, TopAbs_EDGE); aExplorer.More(); + aExplorer.Next()) { + auto currentEdge = TopoDS::Edge(aExplorer.Current()); + edgeVec.push_back(currentEdge); + } + if (edgeVec.empty()) { + continue; + } + + std::vector edgeInParametricSpaceVec; + for (auto itEdge : edgeVec) { + Standard_Real first {}; + Standard_Real last {}; + auto currentCurve = BRep_Tool::CurveOnSurface(TopoDS::Edge(itEdge), + itCurrentShape.surfaceToProject, + first, + last); + if (!currentCurve) { + continue; + } + auto edgeInParametricSpace = + BRepBuilderAPI_MakeEdge(currentCurve, surface, first, last).Edge(); + edgeInParametricSpaceVec.push_back(edgeInParametricSpace); + } + auto aWire = + sort_and_heal_wire(edgeInParametricSpaceVec, itCurrentShape.surfaceToProject); + itCurrentShape.aProjectedWireInParametricSpaceVec.push_back(aWire); + } + + // try to create a face from the wires + // the first wire is the otherwise + // the following wires are the inside wires + BRepBuilderAPI_MakeFace faceMaker; + bool first = true; + for (auto itWireVec : itCurrentShape.aProjectedWireInParametricSpaceVec) { + if (first) { + first = false; + // change the wire direction, otherwise no face is created + auto currentWire = TopoDS::Wire(itWireVec.Reversed()); + if (itCurrentShape.surfaceToProject.Orientation() == TopAbs_REVERSED) { + currentWire = itWireVec; + } + faceMaker = BRepBuilderAPI_MakeFace(surface, currentWire); + ShapeFix_Face fix(faceMaker.Face()); + fix.Perform(); + auto aFace = fix.Face(); + BRepCheck_Analyzer aChecker(aFace); + if (!aChecker.IsValid()) { + faceMaker = + BRepBuilderAPI_MakeFace(surface, TopoDS::Wire(currentWire.Reversed())); + } + } + else { + // make a copy of the current face maker + // if the face fails just try again with the copy + TopoDS_Face tempCopy = BRepBuilderAPI_MakeFace(faceMaker.Face()).Face(); + faceMaker.Add(TopoDS::Wire(itWireVec.Reversed())); + ShapeFix_Face fix(faceMaker.Face()); + fix.Perform(); + auto aFace = fix.Face(); + BRepCheck_Analyzer aChecker(aFace); + if (!aChecker.IsValid()) { + faceMaker = BRepBuilderAPI_MakeFace(tempCopy); + faceMaker.Add(TopoDS::Wire(itWireVec)); + } + } + } + // auto doneFlag = faceMaker.IsDone(); + // auto error = faceMaker.Error(); + itCurrentShape.aProjectedFace = faceMaker.Face(); + } + } + catch (const Standard_Failure& error) { + std::stringstream ssOcc; + error.Print(ssOcc); + throw Base::ValueError(ssOcc.str().c_str()); + } } -TopoDS_Wire PartGui::DlgProjectionOnSurface::sort_and_heal_wire(const std::vector& iEdgeVec, const TopoDS_Face& iFaceToProject) +TopoDS_Wire PartGui::DlgProjectionOnSurface::sort_and_heal_wire(const TopoDS_Shape& iShape, + const TopoDS_Face& iFaceToProject) { - // try to sort and heal all wires -// if the wires are not clean making a face will fail! - ShapeAnalysis_FreeBounds shapeAnalyzer; - Handle(TopTools_HSequenceOfShape) shapeList = new TopTools_HSequenceOfShape; - Handle(TopTools_HSequenceOfShape) aWireHandle; - Handle(TopTools_HSequenceOfShape) aWireWireHandle; + std::vector aEdgeVec; + for (TopExp_Explorer aExplorer(iShape, TopAbs_EDGE); aExplorer.More(); aExplorer.Next()) { + auto anEdge = TopoDS::Edge(aExplorer.Current()); + aEdgeVec.push_back(anEdge); + } + return sort_and_heal_wire(aEdgeVec, iFaceToProject); +} - for (const auto& it : iEdgeVec) - { - shapeList->Append(it); - } +TopoDS_Wire +PartGui::DlgProjectionOnSurface::sort_and_heal_wire(const std::vector& iEdgeVec, + const TopoDS_Face& iFaceToProject) +{ + // try to sort and heal all wires + // if the wires are not clean making a face will fail! + ShapeAnalysis_FreeBounds shapeAnalyzer; + Handle(TopTools_HSequenceOfShape) shapeList = new TopTools_HSequenceOfShape; + Handle(TopTools_HSequenceOfShape) aWireHandle; + Handle(TopTools_HSequenceOfShape) aWireWireHandle; - shapeAnalyzer.ConnectEdgesToWires(shapeList, 0.0001, false, aWireHandle); - shapeAnalyzer.ConnectWiresToWires(aWireHandle, 0.0001, false, aWireWireHandle); - if (!aWireWireHandle) - return {}; - for (auto it = 1; it <= aWireWireHandle->Length(); ++it) - { - auto aShape = TopoDS::Wire(aWireWireHandle->Value(it)); - ShapeFix_Wire aWireRepair(aShape, iFaceToProject, 0.0001); - aWireRepair.FixAddCurve3dMode() = 1; - aWireRepair.FixAddPCurveMode() = 1; - aWireRepair.Perform(); - //return aWireRepair.Wire(); - ShapeFix_Wireframe aWireFramFix(aWireRepair.Wire()); - auto retVal = aWireFramFix.FixWireGaps(); - retVal = aWireFramFix.FixSmallEdges(); - Q_UNUSED(retVal); - return TopoDS::Wire(aWireFramFix.Shape()); - } - return {}; + for (const auto& it : iEdgeVec) { + shapeList->Append(it); + } + + const double tolerance = 0.0001; + ShapeAnalysis_FreeBounds::ConnectEdgesToWires(shapeList, tolerance, false, aWireHandle); + ShapeAnalysis_FreeBounds::ConnectWiresToWires(aWireHandle, tolerance, false, aWireWireHandle); + if (!aWireWireHandle) { + return {}; + } + for (auto it = 1; it <= aWireWireHandle->Length(); ++it) { + auto aShape = TopoDS::Wire(aWireWireHandle->Value(it)); + ShapeFix_Wire aWireRepair(aShape, iFaceToProject, tolerance); + aWireRepair.FixAddCurve3dMode() = 1; + aWireRepair.FixAddPCurveMode() = 1; + aWireRepair.Perform(); + // return aWireRepair.Wire(); + ShapeFix_Wireframe aWireFramFix(aWireRepair.Wire()); + aWireFramFix.FixWireGaps(); + aWireFramFix.FixSmallEdges(); + return TopoDS::Wire(aWireFramFix.Shape()); + } + return {}; } void PartGui::DlgProjectionOnSurface::create_face_extrude(std::vector& iCurrentShape) { - try - { - if (iCurrentShape.empty()) - return; + try { + if (iCurrentShape.empty()) { + return; + } - auto height = ui->doubleSpinBoxExtrudeHeight->value(); + auto height = ui->doubleSpinBoxExtrudeHeight->value(); - for ( auto &itCurrentShape : iCurrentShape ) - { - if (itCurrentShape.aProjectedFace.IsNull()) continue;; - if (itCurrentShape.extrudeValue == height) continue;; + for (auto& itCurrentShape : iCurrentShape) { + if (itCurrentShape.aProjectedFace.IsNull()) { + continue; + } + if (itCurrentShape.extrudeValue == height) { + continue; + } - itCurrentShape.extrudeValue = height; - if (height == 0) - { - itCurrentShape.aProjectedSolid.Nullify(); - } - else - { - gp_Vec directionToExtrude(itCurrentShape.aProjectionDir.XYZ()); - directionToExtrude.Reverse(); - directionToExtrude.Multiply(height); - BRepPrimAPI_MakePrism extrude(itCurrentShape.aProjectedFace, directionToExtrude); - itCurrentShape.aProjectedSolid = extrude.Shape(); - } + itCurrentShape.extrudeValue = height; + if (height == 0) { + itCurrentShape.aProjectedSolid.Nullify(); + } + else { + gp_Vec directionToExtrude(itCurrentShape.aProjectionDir.XYZ()); + directionToExtrude.Reverse(); + directionToExtrude.Multiply(height); + BRepPrimAPI_MakePrism extrude(itCurrentShape.aProjectedFace, directionToExtrude); + itCurrentShape.aProjectedSolid = extrude.Shape(); + } + } + } + catch (const Standard_Failure& error) { + std::stringstream ssOcc; + error.Print(ssOcc); + throw Base::ValueError(ssOcc.str().c_str()); } - } - catch (const Standard_Failure& error) - { - std::stringstream ssOcc; - error.Print(ssOcc); - throw Base::ValueError(ssOcc.str().c_str()); - } } -void PartGui::DlgProjectionOnSurface::store_wire_in_vector(const SShapeStore& iCurrentShape, const TopoDS_Shape& iParentShape, std::vector& iStoreVec, const unsigned int iColor) +void PartGui::DlgProjectionOnSurface::store_wire_in_vector(const SShapeStore& iCurrentShape, + const TopoDS_Shape& iParentShape, + std::vector& iStoreVec, + unsigned int iColor) { - if (m_currentSelection != "add_wire") - return; - if (iParentShape.IsNull()) - return; - if (iCurrentShape.inputShape.IsNull()) - return; - auto currentType = iCurrentShape.inputShape.ShapeType(); - if (currentType != TopAbs_EDGE) - return; - - std::vector aWireVec; - for (TopExp_Explorer aExplorer(iParentShape, TopAbs_WIRE); aExplorer.More(); aExplorer.Next()) - { - aWireVec.push_back(TopoDS::Wire(aExplorer.Current())); - } - - std::vector edgeVec; - for (const auto& it : aWireVec ) - { - bool edgeExists = false; - for (TopExp_Explorer aExplorer(it, TopAbs_EDGE); aExplorer.More(); aExplorer.Next()) - { - auto currentEdge = TopoDS::Edge(aExplorer.Current()); - edgeVec.push_back(currentEdge); - if (currentEdge.IsSame(iCurrentShape.inputShape)) edgeExists = true; - } - if (edgeExists) break; - edgeVec.clear(); - } - - if (edgeVec.empty()) - return; - TopTools_IndexedMapOfShape indexMap; - TopExp::MapShapes(iParentShape, TopAbs_EDGE, indexMap); - if (indexMap.IsEmpty()) - return; - - for (const auto& it : edgeVec ) - { - if ( it.IsSame(iCurrentShape.inputShape)) continue; - if (!indexMap.Contains(it)) + if (m_currentSelection != "add_wire") { return; - auto index = indexMap.FindIndex(it); - auto newEdgeObject = iCurrentShape; - newEdgeObject.inputShape = it; - newEdgeObject.partName = "Edge" + std::to_string(index); + } + if (iParentShape.IsNull()) { + return; + } + if (iCurrentShape.inputShape.IsNull()) { + return; + } + auto currentType = iCurrentShape.inputShape.ShapeType(); + if (currentType != TopAbs_EDGE) { + return; + } - auto store = store_part_in_vector(newEdgeObject, iStoreVec); - higlight_object(newEdgeObject.partFeature, newEdgeObject.partName, store, iColor); - } + std::vector aWireVec; + for (TopExp_Explorer aExplorer(iParentShape, TopAbs_WIRE); aExplorer.More(); aExplorer.Next()) { + aWireVec.push_back(TopoDS::Wire(aExplorer.Current())); + } + + std::vector edgeVec; + for (const auto& it : aWireVec) { + bool edgeExists = false; + for (TopExp_Explorer aExplorer(it, TopAbs_EDGE); aExplorer.More(); aExplorer.Next()) { + auto currentEdge = TopoDS::Edge(aExplorer.Current()); + edgeVec.push_back(currentEdge); + if (currentEdge.IsSame(iCurrentShape.inputShape)) { + edgeExists = true; + } + } + if (edgeExists) { + break; + } + edgeVec.clear(); + } + + if (edgeVec.empty()) { + return; + } + TopTools_IndexedMapOfShape indexMap; + TopExp::MapShapes(iParentShape, TopAbs_EDGE, indexMap); + if (indexMap.IsEmpty()) { + return; + } + + for (const auto& it : edgeVec) { + if (it.IsSame(iCurrentShape.inputShape)) { + continue; + } + if (!indexMap.Contains(it)) { + return; + } + auto index = indexMap.FindIndex(it); + auto newEdgeObject = iCurrentShape; + newEdgeObject.inputShape = it; + newEdgeObject.partName = "Edge" + std::to_string(index); + + auto store = store_part_in_vector(newEdgeObject, iStoreVec); + higlight_object(newEdgeObject.partFeature, newEdgeObject.partName, store, iColor); + } } void PartGui::DlgProjectionOnSurface::set_xyz_dir_spinbox(QDoubleSpinBox* icurrentSpinBox) { - auto currentVal = icurrentSpinBox->value(); - auto newVal = 0.0; - if (currentVal != 1.0 && currentVal != -1.0) - { - newVal = -1; - } - else if (currentVal == 1.0) - { - newVal = -1; - } - else if (currentVal == -1.0) - { - newVal = 1; - } - ui->doubleSpinBoxDirX->setValue(0); - ui->doubleSpinBoxDirY->setValue(0); - ui->doubleSpinBoxDirZ->setValue(0); - icurrentSpinBox->setValue(newVal); + auto currentVal = icurrentSpinBox->value(); + auto newVal = 0.0; + if (currentVal != 1.0 && currentVal != -1.0) { + newVal = -1; + } + else if (currentVal == 1.0) { + newVal = -1; + } + else if (currentVal == -1.0) { + newVal = 1; + } + ui->doubleSpinBoxDirX->setValue(0); + ui->doubleSpinBoxDirY->setValue(0); + ui->doubleSpinBoxDirZ->setValue(0); + icurrentSpinBox->setValue(newVal); } -void PartGui::DlgProjectionOnSurface::transform_shape_to_global_position(TopoDS_Shape& ioShape, Part::Feature* iPart) +void PartGui::DlgProjectionOnSurface::transform_shape_to_global_position(TopoDS_Shape& ioShape, + Part::Feature* iPart) { - auto currentPos = iPart->Placement.getValue().getPosition(); - auto currentRotation = iPart->Placement.getValue().getRotation(); - auto globalPlacement = iPart->globalPlacement(); - auto globalPosition = globalPlacement.getPosition(); - auto globalRotation = globalPlacement.getRotation(); + auto currentPos = iPart->Placement.getValue().getPosition(); + auto currentRotation = iPart->Placement.getValue().getRotation(); + auto globalPlacement = iPart->globalPlacement(); + auto globalPosition = globalPlacement.getPosition(); + auto globalRotation = globalPlacement.getRotation(); - if (currentRotation != globalRotation) - { - auto newRotation = globalRotation; - newRotation *= currentRotation.invert(); + if (currentRotation != globalRotation) { + auto newRotation = globalRotation; + newRotation *= currentRotation.invert(); - gp_Trsf aAngleTransform; - Base::Vector3d rotationAxes; - double rotationAngle; - newRotation.getRawValue(rotationAxes, rotationAngle); - aAngleTransform.SetRotation(gp_Ax1(gp_Pnt(currentPos.x, currentPos.y, currentPos.z), gp_Dir(rotationAxes.x, rotationAxes.y, rotationAxes.z)), rotationAngle); - ioShape = BRepBuilderAPI_Transform(ioShape, aAngleTransform, true).Shape(); - } + gp_Trsf aAngleTransform; + Base::Vector3d rotationAxes; + double rotationAngle {}; + newRotation.getRawValue(rotationAxes, rotationAngle); + aAngleTransform.SetRotation(gp_Ax1(gp_Pnt(currentPos.x, currentPos.y, currentPos.z), + gp_Dir(rotationAxes.x, rotationAxes.y, rotationAxes.z)), + rotationAngle); + ioShape = BRepBuilderAPI_Transform(ioShape, aAngleTransform, true).Shape(); + } - if (currentPos != globalPosition) - { - gp_Trsf aPosTransform; - aPosTransform.SetTranslation(gp_Pnt(currentPos.x, currentPos.y, currentPos.z), gp_Pnt(globalPosition.x, globalPosition.y, globalPosition.z)); - ioShape = BRepBuilderAPI_Transform(ioShape, aPosTransform, true).Shape(); - } + if (currentPos != globalPosition) { + gp_Trsf aPosTransform; + aPosTransform.SetTranslation(gp_Pnt(currentPos.x, currentPos.y, currentPos.z), + gp_Pnt(globalPosition.x, globalPosition.y, globalPosition.z)); + ioShape = BRepBuilderAPI_Transform(ioShape, aPosTransform, true).Shape(); + } } void PartGui::DlgProjectionOnSurface::onPushButtonAddProjFaceClicked() { - if (ui->pushButtonAddProjFace->isChecked()) - { - m_currentSelection = "add_projection_surface"; - disable_ui_elements(m_guiObjectVec, ui->pushButtonAddProjFace); - if (!filterFace) - { - filterFace = new FaceSelection(); - Gui::Selection().addSelectionGate(filterFace); + if (ui->pushButtonAddProjFace->isChecked()) { + m_currentSelection = "add_projection_surface"; + disable_ui_elements(m_guiObjectVec, ui->pushButtonAddProjFace); + if (!filterFace) { + filterFace = new FaceSelection(); + Gui::Selection().addSelectionGate(filterFace); + } + } + else { + m_currentSelection = ""; + enable_ui_elements(m_guiObjectVec, nullptr); + Gui::Selection().rmvSelectionGate(); + filterFace = nullptr; } - } - else - { - m_currentSelection = ""; - enable_ui_elements(m_guiObjectVec, nullptr); - Gui::Selection().rmvSelectionGate(); - filterFace = nullptr; - } } void PartGui::DlgProjectionOnSurface::onRadioButtonShowAllClicked() { - m_currentShowType = "all"; - show_projected_shapes(m_shapeVec); + m_currentShowType = "all"; + show_projected_shapes(m_shapeVec); } void PartGui::DlgProjectionOnSurface::onRadioButtonFacesClicked() { - m_currentShowType = "faces"; - show_projected_shapes(m_shapeVec); + m_currentShowType = "faces"; + show_projected_shapes(m_shapeVec); } void PartGui::DlgProjectionOnSurface::onRadioButtonEdgesClicked() { - m_currentShowType = "edges"; - show_projected_shapes(m_shapeVec); + m_currentShowType = "edges"; + show_projected_shapes(m_shapeVec); } void PartGui::DlgProjectionOnSurface::onDoubleSpinBoxExtrudeHeightValueChanged(double arg1) { - Q_UNUSED(arg1); - create_face_extrude(m_shapeVec); - show_projected_shapes(m_shapeVec); + Q_UNUSED(arg1); + create_face_extrude(m_shapeVec); + show_projected_shapes(m_shapeVec); } void PartGui::DlgProjectionOnSurface::onPushButtonAddWireClicked() { - if (ui->pushButtonAddWire->isChecked()) - { - m_currentSelection = "add_wire"; - disable_ui_elements(m_guiObjectVec, ui->pushButtonAddWire); - if (!filterEdge) - { - filterEdge = new EdgeSelection(); - Gui::Selection().addSelectionGate(filterEdge); + if (ui->pushButtonAddWire->isChecked()) { + m_currentSelection = "add_wire"; + disable_ui_elements(m_guiObjectVec, ui->pushButtonAddWire); + if (!filterEdge) { + filterEdge = new EdgeSelection(); + Gui::Selection().addSelectionGate(filterEdge); + } + ui->radioButtonEdges->setChecked(true); + onRadioButtonEdgesClicked(); + } + else { + m_currentSelection = ""; + enable_ui_elements(m_guiObjectVec, nullptr); + Gui::Selection().rmvSelectionGate(); + filterEdge = nullptr; } - ui->radioButtonEdges->setChecked(true); - onRadioButtonEdgesClicked(); - } - else - { - m_currentSelection = ""; - enable_ui_elements(m_guiObjectVec, nullptr); - Gui::Selection().rmvSelectionGate(); - filterEdge = nullptr; - } } void PartGui::DlgProjectionOnSurface::onDoubleSpinBoxSolidDepthValueChanged(double arg1) { - auto valX = ui->doubleSpinBoxDirX->value(); - auto valY = ui->doubleSpinBoxDirY->value(); - auto valZ = ui->doubleSpinBoxDirZ->value(); + auto valX = ui->doubleSpinBoxDirX->value(); + auto valY = ui->doubleSpinBoxDirY->value(); + auto valZ = ui->doubleSpinBoxDirZ->value(); - auto valueToMove = arg1 - m_lastDepthVal; - Base::Vector3d vectorToMove(valX, valY, valZ); - vectorToMove *= valueToMove; + auto valueToMove = arg1 - m_lastDepthVal; + Base::Vector3d vectorToMove(valX, valY, valZ); + vectorToMove *= valueToMove; - auto placment = m_projectionObject->Placement.getValue(); - placment.move(vectorToMove); - m_projectionObject->Placement.setValue(placment); + auto placment = m_projectionObject->Placement.getValue(); + placment.move(vectorToMove); + m_projectionObject->Placement.setValue(placment); - m_lastDepthVal = ui->doubleSpinBoxSolidDepth->value(); + m_lastDepthVal = ui->doubleSpinBoxSolidDepth->value(); } // --------------------------------------- TaskProjectionOnSurface::TaskProjectionOnSurface() + : widget(new DlgProjectionOnSurface()) + , taskbox(new Gui::TaskView::TaskBox(Gui::BitmapFactory().pixmap("Part_ProjectionOnSurface"), + widget->windowTitle(), + true, + nullptr)) { - widget = new DlgProjectionOnSurface(); - taskbox = new Gui::TaskView::TaskBox( - Gui::BitmapFactory().pixmap("Part_ProjectionOnSurface"), - widget->windowTitle(), true, nullptr); - taskbox->groupLayout()->addWidget(widget); - Content.push_back(taskbox); + taskbox->groupLayout()->addWidget(widget); + Content.push_back(taskbox); } bool TaskProjectionOnSurface::accept() { - widget->apply(); - return true; - //return (widget->result() == QDialog::Accepted); + widget->apply(); + return true; } bool TaskProjectionOnSurface::reject() { - widget->reject(); - return true; + widget->reject(); + return true; } void TaskProjectionOnSurface::clicked(int id) { - if (id == QDialogButtonBox::Apply) { - try { - widget->apply(); + if (id == QDialogButtonBox::Apply) { + try { + widget->apply(); + } + catch (Base::AbortException&) { + } } - catch (Base::AbortException&) { - - }; - } } #include "moc_DlgProjectionOnSurface.cpp" diff --git a/src/Mod/Part/Gui/DlgProjectionOnSurface.h b/src/Mod/Part/Gui/DlgProjectionOnSurface.h index ec1cd285b0..4a4f6c10bc 100644 --- a/src/Mod/Part/Gui/DlgProjectionOnSurface.h +++ b/src/Mod/Part/Gui/DlgProjectionOnSurface.h @@ -36,22 +36,24 @@ #include -namespace PartGui { +namespace PartGui +{ - class Ui_DlgProjectionOnSurface; +class Ui_DlgProjectionOnSurface; - namespace Ui { - class DlgProjectionOnSurface; - } +namespace Ui +{ +class DlgProjectionOnSurface; +} -class DlgProjectionOnSurface : public QWidget, - public Gui::SelectionObserver, - public App::DocumentObserver +class DlgProjectionOnSurface: public QWidget, + public Gui::SelectionObserver, + public App::DocumentObserver { Q_OBJECT public: - explicit DlgProjectionOnSurface(QWidget *parent = nullptr); + explicit DlgProjectionOnSurface(QWidget* parent = nullptr); ~DlgProjectionOnSurface() override; void apply(); @@ -74,57 +76,64 @@ private: void onDoubleSpinBoxSolidDepthValueChanged(double arg1); private: + struct SShapeStore + { + TopoDS_Shape inputShape; + TopoDS_Face surfaceToProject; + gp_Dir aProjectionDir; + TopoDS_Face aFace; + TopoDS_Edge aEdge; + std::vector aWireVec; + std::vector aProjectedWireVec; + std::vector aProjectedEdgeVec; + std::vector aProjectedWireInParametricSpaceVec; + TopoDS_Face aProjectedFace; + TopoDS_Shape aProjectedSolid; + Part::Feature* partFeature = nullptr; + std::string partName; + bool is_selectable = false; + long transparency = 0; + double extrudeValue = 0.0; + }; - struct SShapeStore - { - TopoDS_Shape inputShape; - TopoDS_Face surfaceToProject; - gp_Dir aProjectionDir; - TopoDS_Face aFace; - TopoDS_Edge aEdge; - std::vector aWireVec; - std::vector aProjectedWireVec; - std::vector aProjectedEdgeVec; - std::vector aProjectedWireInParametricSpaceVec; - TopoDS_Face aProjectedFace; - TopoDS_Shape aProjectedSolid; - Part::Feature* partFeature = nullptr; - std::string partName; - bool is_selectable = false; - long transparency = 0; - float extrudeValue = 0.0f; - }; - - //from Gui::SelectionObserver - void onSelectionChanged(const Gui::SelectionChanges& msg) override; + // from Gui::SelectionObserver + void onSelectionChanged(const Gui::SelectionChanges& msg) override; - void get_camera_direction(); - void store_current_selected_parts(std::vector& iStoreVec, const unsigned int iColor); - bool store_part_in_vector(SShapeStore& iCurrentShape, std::vector& iStoreVec); - void create_projection_wire(std::vector& iCurrentShape); - TopoDS_Shape create_compound(const std::vector& iShapeVec); - void show_projected_shapes(const std::vector& iShapeStoreVec); - void disable_ui_elements(const std::vector& iObjectVec, QWidget* iExceptThis); - void enable_ui_elements(const std::vector& iObjectVec, QWidget* iExceptThis); - void higlight_object(Part::Feature* iCurrentObject, const std::string& iShapeName, bool iHighlight, const unsigned int iColor); - void get_all_wire_from_face(SShapeStore& ioCurrentSahpe); - void create_projection_face_from_wire(std::vector& iCurrentShape); - TopoDS_Wire sort_and_heal_wire(const TopoDS_Shape& iShape, const TopoDS_Face& iFaceToProject); - TopoDS_Wire sort_and_heal_wire(const std::vector& iEdgeVec, const TopoDS_Face& iFaceToProject); - void create_face_extrude(std::vector& iCurrentShape); - void store_wire_in_vector(const SShapeStore& iCurrentShape, const TopoDS_Shape& iParentShape, std::vector& iStoreVec, const unsigned int iColor); - void set_xyz_dir_spinbox(QDoubleSpinBox* icurrentSpinBox); - void transform_shape_to_global_position(TopoDS_Shape& ioShape, Part::Feature* iPart); + void get_camera_direction(); + void store_current_selected_parts(std::vector& iStoreVec, + unsigned int iColor); + bool store_part_in_vector(SShapeStore& iCurrentShape, std::vector& iStoreVec); + void create_projection_wire(std::vector& iCurrentShape); + TopoDS_Shape create_compound(const std::vector& iShapeVec); + void show_projected_shapes(const std::vector& iShapeStoreVec); + void disable_ui_elements(const std::vector& iObjectVec, QWidget* iExceptThis); + void enable_ui_elements(const std::vector& iObjectVec, QWidget* iExceptThis); + void higlight_object(Part::Feature* iCurrentObject, + const std::string& iShapeName, + bool iHighlight, + unsigned int iColor); + void get_all_wire_from_face(SShapeStore& ioCurrentSahpe); + void create_projection_face_from_wire(std::vector& iCurrentShape); + TopoDS_Wire sort_and_heal_wire(const TopoDS_Shape& iShape, const TopoDS_Face& iFaceToProject); + TopoDS_Wire sort_and_heal_wire(const std::vector& iEdgeVec, + const TopoDS_Face& iFaceToProject); + void create_face_extrude(std::vector& iCurrentShape); + void store_wire_in_vector(const SShapeStore& iCurrentShape, + const TopoDS_Shape& iParentShape, + std::vector& iStoreVec, + unsigned int iColor); + void set_xyz_dir_spinbox(QDoubleSpinBox* icurrentSpinBox); + void transform_shape_to_global_position(TopoDS_Shape& ioShape, Part::Feature* iPart); private: - /** Checks if the given document is about to be closed */ - void slotDeletedDocument(const App::Document& Doc) override; - /** Checks if the given object is about to be removed. */ - void slotDeletedObject(const App::DocumentObject& Obj) override; + /** Checks if the given document is about to be closed */ + void slotDeletedDocument(const App::Document& Doc) override; + /** Checks if the given object is about to be removed. */ + void slotDeletedObject(const App::DocumentObject& Obj) override; private: - Ui::DlgProjectionOnSurface *ui; + Ui::DlgProjectionOnSurface* ui; std::vector m_shapeVec; std::vector m_projectionSurfaceVec; @@ -134,9 +143,9 @@ private: std::vector m_guiObjectVec; const QString m_projectionObjectName; - Part::Feature* m_projectionObject; - App::Document* m_partDocument; - float m_lastDepthVal; + Part::Feature* m_projectionObject = nullptr; + App::Document* m_partDocument = nullptr; + double m_lastDepthVal; class EdgeSelection; EdgeSelection* filterEdge; @@ -145,28 +154,28 @@ private: FaceSelection* filterFace; }; -class TaskProjectionOnSurface : public Gui::TaskView::TaskDialog +class TaskProjectionOnSurface: public Gui::TaskView::TaskDialog { - Q_OBJECT + Q_OBJECT public: - TaskProjectionOnSurface(); + TaskProjectionOnSurface(); public: - bool accept() override; - bool reject() override; - void clicked(int) override; + bool accept() override; + bool reject() override; + void clicked(int id) override; - QDialogButtonBox::StandardButtons getStandardButtons() const override - { - return QDialogButtonBox::Ok | QDialogButtonBox::Cancel; - } + QDialogButtonBox::StandardButtons getStandardButtons() const override + { + return QDialogButtonBox::Ok | QDialogButtonBox::Cancel; + } private: - DlgProjectionOnSurface* widget; - Gui::TaskView::TaskBox* taskbox; + DlgProjectionOnSurface* widget = nullptr; + Gui::TaskView::TaskBox* taskbox = nullptr; }; -} // namespace PartGui -#endif // PARTGUI_DLGPROJECTIONONSURFACE_H +} // namespace PartGui +#endif // PARTGUI_DLGPROJECTIONONSURFACE_H diff --git a/src/Mod/Part/Gui/Resources/translations/Part.ts b/src/Mod/Part/Gui/Resources/translations/Part.ts index 09abae22d3..0ea45b1ed3 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part.ts @@ -4942,66 +4942,66 @@ only created cuts will be visible - - - + + + Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: - + In z-direction: - + Around x-axis: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset - + Flip sides @@ -5621,8 +5621,8 @@ in the 3D view for the sweep path. - + Edit %1 @@ -5713,20 +5713,20 @@ Do you want to continue? - + Face - + Edge - + Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_be.ts b/src/Mod/Part/Gui/Resources/translations/Part_be.ts index 7726472a08..72dbdb026a 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_be.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_be.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Перасячэнне дзвюх граней. @@ -4973,31 +4973,31 @@ only created cuts will be visible Па напрамку x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Заўвага: Размяшчэнне выяўляецца ў лакальнай сістэме каардынат прымацаванага аб'екту. - + In y-direction: Па напрамку y: - + In z-direction: Па напрамку z: - + Around x-axis: Вакол восі x: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5006,12 +5006,12 @@ of object being attached. прымацаванага аб'екту. - + Around y-axis: Вакол восі y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5020,12 +5020,12 @@ of object being attached. прымацаванага аб'екту. - + Around z-axis: Вакол восі z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5034,12 +5034,12 @@ of object being attached. прымацаванага аб'екту. - + Flip side of attachment and offset Павярнуць бок мацавання і зрушэння - + Flip sides Павярнуць бакі @@ -5670,8 +5670,8 @@ in the 3D view for the sweep path. - + Edit %1 Змяніць %1 @@ -5763,20 +5763,20 @@ Do you want to continue? Без абраных спасылак - + Face Грань - + Edge Рабро - + Vertex Vertex @@ -6890,7 +6890,8 @@ A 'Compound Filter' can be used to extract the remaining pieces. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Фігура павінна быць ломанай лініяй, рабром ці складовай. +Было абрана нешта іншае. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ca.ts b/src/Mod/Part/Gui/Resources/translations/Part_ca.ts index e80fd3250d..90f76605b6 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_ca.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_ca.ts @@ -4974,31 +4974,31 @@ només seran visibles els talls creats En direcciòx: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Nota: La ubicació s'expressa en el sistema de coordenades local de l'objecte que s'adjunta. - + In y-direction: En direcciò y: - + In z-direction: En direcciò z: - + Around x-axis: Al voltant de l'eix X: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5007,12 +5007,12 @@ Nota: La ubicació s'expressa en el sistema de coordenades local de l'objecte que s'adjunta. - + Around y-axis: Al voltant de l'eix y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5021,12 +5021,12 @@ Nota: La ubicació s'expressa en el sistema de coordenades local de l'objecte que s'adjunta. - + Around z-axis: Al voltant de l'eix Z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5035,12 +5035,12 @@ Nota: La ubicació s'expressa en el sistema de coordenades local de l'objecte que s'adjunta. - + Flip side of attachment and offset Invertir de costat l'adjunt i desplassar - + Flip sides Dos cares @@ -5662,8 +5662,8 @@ in the 3D view for the sweep path. - + Edit %1 Editar %1 @@ -5755,20 +5755,20 @@ Do you want to continue? Cap referència seleccionat - + Face Cara - + Edge Vora - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_cs.ts b/src/Mod/Part/Gui/Resources/translations/Part_cs.ts index 38273373ea..fef579c26c 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_cs.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_cs.ts @@ -4980,30 +4980,30 @@ budou viditelné pouze vytvořené řezy Ve směru x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Poznámka: Umístění je určeno v lokálním souřadnicovém systému připojeného objektu. - + In y-direction: Ve směru y: - + In z-direction: Ve směru z: - + Around x-axis: Kolem osy x: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5011,12 +5011,12 @@ of object being attached. Poznámka: Umístění je určeno v lokálním souřadnicovém systému připojeného objektu. - + Around y-axis: Kolem osy y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5024,12 +5024,12 @@ of object being attached. Poznámka: Umístění je určeno v lokálním souřadnicovém systému připojeného objektu. - + Around z-axis: Kolem osy z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5037,12 +5037,12 @@ of object being attached. Poznámka: Umístění je určeno v lokálním souřadnicovém systému připojeného objektu. - + Flip side of attachment and offset Překlopí stranu přípojení a odsadí - + Flip sides Otočit strany @@ -5672,8 +5672,8 @@ in the 3D view for the sweep path. - + Edit %1 Upravit %1 @@ -5765,20 +5765,20 @@ Chcete pokračovat? Není vybrána reference - + Face Plocha - + Edge Hrana - + Vertex Vrchol diff --git a/src/Mod/Part/Gui/Resources/translations/Part_de.ts b/src/Mod/Part/Gui/Resources/translations/Part_de.ts index 80df42e3f7..cedffc73bd 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_de.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_de.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Schnittstelle von zwei Flächen. @@ -1641,12 +1641,12 @@ X-, Y- und Z-Komponenten zerlegt wird. Defeaturing - Merkmal entfernen + Formelement entfernen Remove feature from a shape - Merkmal aus einer Form entfernen + Entfernt ein Formelement aus einer Form @@ -2313,7 +2313,7 @@ der Projektion. Defeaturing - Merkmal entfernen + Formelement entfernen @@ -4977,30 +4977,30 @@ nur die beschnittenen Objeke sichtbar In x-Richtung: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Hinweis: Die Positionierung wird im lokalen Koordinatensystem des befestigten Objekts dargestellt. - + In y-direction: In y-Richtung: - + In z-direction: In z-Richtung: - + Around x-axis: Um die x-Achse: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5008,12 +5008,12 @@ of object being attached. Hinweis: Die Positionierung wird im lokalen Koordinatensystem des befestigten Objekts dargestellt. - + Around y-axis: Um die y-Achse: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5021,12 +5021,12 @@ of object being attached. Hinweis: Die Positionierung wird im lokalen Koordinatensystem des befestigten Objekts dargestellt. - + Around z-axis: Um die z-Achse: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5034,12 +5034,12 @@ of object being attached. Hinweis: Die Positionierung wird im lokalen Koordinatensystem des befestigten Objekts dargestellt. - + Flip side of attachment and offset Tausche die Seiten der Befestigung und Versatz - + Flip sides Seiten spiegeln @@ -5666,8 +5666,8 @@ für den Austragungspfad in der 3D-Ansicht auswählen. - + Edit %1 %1 bearbeiten @@ -5758,20 +5758,20 @@ Do you want to continue? Keine ausgewählten Referenzen - + Face Fläche - + Edge Kante - + Vertex Knoten @@ -6884,7 +6884,7 @@ Ein 'Verbundfilter' kann verwendet werden, um die restlichen Stücke zu extrahie Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Form muss ein Kantenzug, eine Kante oder ein Verbund sein. Etwas anderes wurde ausgewählt. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_el.ts b/src/Mod/Part/Gui/Resources/translations/Part_el.ts index a8261202ca..68aa1faf60 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_el.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_el.ts @@ -4977,31 +4977,31 @@ only created cuts will be visible Σε κατεύθυνση x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: Σε κατεύθυνση y: - + In z-direction: Σε κατεύθυνση z: - + Around x-axis: Γύρω από τον άξονα X: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5010,12 +5010,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Γύρω από τον άξονα Υ: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5024,12 +5024,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Γύρω από τον άξονα Ζ: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5038,12 +5038,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Αντιστροφή πλευρών @@ -5670,8 +5670,8 @@ in the 3D view for the sweep path. - + Edit %1 Επεξεργασία %1 @@ -5764,20 +5764,20 @@ Do you want to continue? Δεν επιλέχθηκε κανένα αντικείμενο αναφοράς - + Face Όψη - + Edge Ακμή - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_es-AR.ts b/src/Mod/Part/Gui/Resources/translations/Part_es-AR.ts index 983281eaa7..02d30bc920 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_es-AR.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_es-AR.ts @@ -442,7 +442,7 @@ Posición. Funciona en objetos con ubicaciones y aristas de elipse/parábola/hip Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Intersección de dos caras. @@ -4981,31 +4981,31 @@ solo los cortes creados serán visibles En dirección x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Nota: La ubicación se expresa en el sistema de coordenadas local del objeto que se adjunta. - + In y-direction: En dirección y: - + In z-direction: En la dirección z: - + Around x-axis: Alrededor del eje x: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5014,12 +5014,12 @@ Nota: La ubicación se expresa en el sistema local de coordenadas del objeto que se adjunta. - + Around y-axis: Alrededor del eje y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5028,12 +5028,12 @@ Nota: La ubicación se expresa en el sistema local de coordenadas del objeto que se adjunta. - + Around z-axis: Alrededor del eje z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5042,12 +5042,12 @@ Nota: La ubicación se expresa en el sistema local de coordenadas del objeto que se adjunta. - + Flip side of attachment and offset Voltear el lado del adjunto y el desplazamiento - + Flip sides Invertir lados @@ -5674,8 +5674,8 @@ in the 3D view for the sweep path. - + Edit %1 Editar %1 @@ -5767,20 +5767,20 @@ Do you want to continue? Ninguna referencia seleccionada - + Face Cara - + Edge Arista - + Vertex Vértice @@ -6393,7 +6393,7 @@ para filtrado de colisión o distancia. Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Haga clic en 'Continuar' para crear la función de todos modos, o 'Abortar' para cancelar. + Haga clic en 'Continuar' para crear la característica de todos modos, o 'Abortar' para cancelar. @@ -6418,7 +6418,7 @@ Creará un 'Filtro Compuesto' para cada forma. Bad selection - Selección incorrecta + Mala selección @@ -6894,7 +6894,7 @@ Un 'Filtro Compuesto' se puede utilizar para extraer las piezas restantes. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + La forma debe ser un alambre, una arista o un compuesto. Se ha suministrado otra cosa. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_es-ES.ts b/src/Mod/Part/Gui/Resources/translations/Part_es-ES.ts index 649cac7dce..c25f30c834 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_es-ES.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_es-ES.ts @@ -442,7 +442,7 @@ Posición. Funciona en objetos con ubicaciones y bordes de elipse / parábola / Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Intersección de dos caras. @@ -4978,31 +4978,31 @@ solo los cortes creados serán visibles En dirección x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Nota: La ubicación se expresa en el sistema de coordenadas local del objeto que se adjunta. - + In y-direction: En dirección y: - + In z-direction: En la dirección z: - + Around x-axis: Alrededor del eje x: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5011,12 +5011,12 @@ Nota: La ubicación se expresa en el sistema local de coordenadas del objeto que se adjunta. - + Around y-axis: Alrededor del eje y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5025,12 +5025,12 @@ Nota: La ubicación se expresa en el sistema local de coordenadas del objeto que se adjunta. - + Around z-axis: Alrededor del eje z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5039,12 +5039,12 @@ Nota: La ubicación se expresa en el sistema local de coordenadas del objeto que se adjunta. - + Flip side of attachment and offset Voltear el lado del adjunto y el desplazamiento - + Flip sides Voltear caras @@ -5358,9 +5358,9 @@ Comprobación de operaciones booleanas individuales: %n invalid shapes. - + + %n forma inválida. %n formas inválidas. - %n invalid shapes. @@ -5669,8 +5669,8 @@ in the 3D view for the sweep path. - + Edit %1 Editar %1 @@ -5762,20 +5762,20 @@ Do you want to continue? Ninguna referencia seleccionada - + Face Cara - + Edge Arista - + Vertex Vértice @@ -6889,7 +6889,7 @@ Un 'Filtro Compuesto' se puede utilizar para extraer las piezas restantes. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + La forma debe ser un alambre, una arista o un compuesto. Se ha suministrado otra cosa. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_eu.ts b/src/Mod/Part/Gui/Resources/translations/Part_eu.ts index 76fde5022e..1a73bc5732 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_eu.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_eu.ts @@ -4981,30 +4981,30 @@ sortutako mozketak soilik daude ikusgai X norabidean: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Oharra: Kokapena eransten den objektuaren koordenatu-sistema lokalean adierazten da. - + In y-direction: Y norabidean: - + In z-direction: Z norabidean: - + Around x-axis: X ardatzaren inguruan: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5012,12 +5012,12 @@ of object being attached. Oharra: Kokapena eransten den objektuarenkoordenatu-sistema lokalean adierazten da. - + Around y-axis: Y ardatzaren inguruan: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5026,12 +5026,12 @@ Oharra: Kokapena eransten den objektuaren koordenatu-sistema lokalean adierazten da. - + Around z-axis: Z ardatzaren inguruan: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5040,12 +5040,12 @@ Oharra: Kokapena eransten den objektuaren koordenatu-sistema lokalean adierazten da. - + Flip side of attachment and offset Irauli eranskinaren aldea eta desplazatu - + Flip sides Irauli aldeak @@ -5674,8 +5674,8 @@ in the 3D view for the sweep path. - + Edit %1 Editatu %1 @@ -5766,20 +5766,20 @@ Do you want to continue? Ez da erreferentziarik hautatu - + Face Aurpegia - + Edge Ertza - + Vertex Erpina diff --git a/src/Mod/Part/Gui/Resources/translations/Part_fi.ts b/src/Mod/Part/Gui/Resources/translations/Part_fi.ts index c8cabc5d34..a9f23e86dd 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_fi.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_fi.ts @@ -4983,31 +4983,31 @@ only created cuts will be visible In x-direction: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: In y-direction: - + In z-direction: In z-direction: - + Around x-axis: Around x-axis: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5016,12 +5016,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Around y-axis: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5030,12 +5030,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Around z-axis: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5044,12 +5044,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Vaihda puolet @@ -5678,8 +5678,8 @@ reuna tai lanka, jota pitkin reitin pyyhkäisy tehdään. - + Edit %1 Muokkaa %1 @@ -5771,20 +5771,20 @@ Haluatko jatkaa? Ei viittausta valittuna - + Face Tahko - + Edge Reuna - + Vertex Kärkipiste diff --git a/src/Mod/Part/Gui/Resources/translations/Part_fr.ts b/src/Mod/Part/Gui/Resources/translations/Part_fr.ts index 185b25bb80..6201fd4ac1 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_fr.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_fr.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Intersection de deux faces. @@ -4970,30 +4970,30 @@ seules les coupes créées seront visibles Dans la direction X : - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Remarque : le placement est exprimé dans le système de coordonnées local de l'objet à rattacher. - + In y-direction: Dans la direction Y : - + In z-direction: Dans la direction Z : - + Around x-axis: Autour de l'axe X : - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5001,12 +5001,12 @@ of object being attached. Remarque : le placement est exprimé dans le système de coordonnées local de l'objet à ancrer. - + Around y-axis: Autour de l'axe Y : - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5014,12 +5014,12 @@ of object being attached. Remarque : le placement est exprimé dans le système de coordonnées local de l'objet à rattacher. - + Around z-axis: Autour de l'axe Z : - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5027,12 +5027,12 @@ of object being attached. Remarque : le placement est exprimé dans le système de coordonnées local de l'objet à rattacher. - + Flip side of attachment and offset Inverser le côté de l'ancrage et du décalage - + Flip sides Inverser les côtés @@ -5673,8 +5673,8 @@ in the 3D view for the sweep path. - + Edit %1 Éditer %1 @@ -5766,20 +5766,20 @@ Voulez-vous continuer ? Aucune référence sélectionnée - + Face Face - + Edge Arête - + Vertex Sommet @@ -6888,7 +6888,7 @@ Un "filtre composé" peut être utilisé pour extraire les morceaux restants. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + La forme doit être une polyligne, une arête ou un composé. Un autre élément a été fourni. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_gl.ts b/src/Mod/Part/Gui/Resources/translations/Part_gl.ts index 067bcad3cc..18cb2cdd36 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_gl.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_gl.ts @@ -4975,31 +4975,31 @@ only created cuts will be visible In x-direction: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: In y-direction: - + In z-direction: In z-direction: - + Around x-axis: Around x-axis: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5008,12 +5008,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Around y-axis: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5022,12 +5022,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Around z-axis: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5036,12 +5036,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Faces opostas @@ -5669,8 +5669,8 @@ in the 3D view for the sweep path. - + Edit %1 Editar %1 @@ -5761,20 +5761,20 @@ Do you want to continue? Ningunha referencia escolmada - + Face Face - + Edge Bordo - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_hr.ts b/src/Mod/Part/Gui/Resources/translations/Part_hr.ts index 6bfcfcae70..3ea943eb96 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_hr.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_hr.ts @@ -4996,31 +4996,31 @@ bit će vidljivi samo stvoreni rezovi U smjeru X: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Napomena: Položaj je izražen u lokalnom koordinatnom sustavu predmeta koji se pridružuje. - + In y-direction: U smjeru Y: - + In z-direction: U smjeru Z: - + Around x-axis: Oko x-osi: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5029,12 +5029,12 @@ Napomena: Položaj je izražen u lokalnom koordinatnom sustavu predmeta koji se pridružuje. - + Around y-axis: Oko y-osi: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5043,12 +5043,12 @@ Napomena: Položaj je izražen u lokalnom koordinatnom sustavu predmeta koji se pridružuje. - + Around z-axis: Oko z-osi: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5057,14 +5057,14 @@ Napomena: Položaj je izražen u lokalnom koordinatnom sustavu predmeta koji se pridružuje. - + Flip side of attachment and offset Obrnuta strana pridruženja i pomak - + Flip sides Prebaci strane @@ -5696,8 +5696,8 @@ u 3D pogledu kao putanju za zamah. - + Edit %1 Uređivanje %1 @@ -5788,20 +5788,20 @@ Do you want to continue? Referenca još nije postavljena - + Face Površina - + Edge Rub - + Vertex Vrh diff --git a/src/Mod/Part/Gui/Resources/translations/Part_hu.ts b/src/Mod/Part/Gui/Resources/translations/Part_hu.ts index 089e85ef58..2dfef7ead6 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_hu.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_hu.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Két felület metszéspontja. @@ -4980,31 +4980,31 @@ only created cuts will be visible X irányban: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Megjegyzés: Az elhelyezést a csatolt tárgy helyi koordináta rendszerében fejezzük ki. - + In y-direction: Y irányban: - + In z-direction: Z irányban: - + Around x-axis: Az x tengely körül: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5013,12 +5013,12 @@ Megjegyzés: Az elhelyezést a csatolt tárgy helyi koordináta rendszerében fejezzük ki. - + Around y-axis: Az y tengely körül: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5027,12 +5027,12 @@ Megjegyzés: Az elhelyezést a csatolt tárgy helyi koordináta rendszerében fejezzük ki. - + Around z-axis: Az z tengely körül: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5041,12 +5041,12 @@ Megjegyzés: Az elhelyezést a csatolt tárgy helyi koordináta rendszerében fejezzük ki. - + Flip side of attachment and offset A rögzítés és az eltolás oldalának átfordítása - + Flip sides Oldalak megfordítása @@ -5672,8 +5672,8 @@ in the 3D view for the sweep path. - + Edit %1 %1 szerkesztése @@ -5764,20 +5764,20 @@ Do you want to continue? Nincs kijelölt hivatkozás - + Face Felület - + Edge Él - + Vertex Végpont @@ -6889,7 +6889,7 @@ A fennmaradó darabok kivonására az 'összetevő szűrő' használható. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Az alakzatnak drótnak, élnek vagy összetettnek kell lennie. Valami mást szállítottak. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_id.ts b/src/Mod/Part/Gui/Resources/translations/Part_id.ts index a571efdaba..f25247deae 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_id.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_id.ts @@ -5092,31 +5092,31 @@ only created cuts will be visible In x-direction: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: In y-direction: - + In z-direction: In z-direction: - + Around x-axis: Around x-axis: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5125,12 +5125,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Around y-axis: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5139,12 +5139,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Around z-axis: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5153,12 +5153,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Flip sisi @@ -5786,8 +5786,8 @@ di 3D pandangan untuk menyapu jalan. - + Edit %1 Edit %1 @@ -5878,20 +5878,20 @@ Do you want to continue? Tidak ada referensi yang dipilih - + Face Menghadapi - + Edge Tepi - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_it.ts b/src/Mod/Part/Gui/Resources/translations/Part_it.ts index 3dfa279cfd..470d51c0d9 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_it.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_it.ts @@ -4978,31 +4978,31 @@ saranno visibili solo i tagli creati In direzione x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Nota: il posizionamento è espresso nel sistema di coordinate locali dell'oggetto da allegare. - + In y-direction: In direzione y: - + In z-direction: In direzione z: - + Around x-axis: Intorno all'asse x: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5011,12 +5011,12 @@ Nota: il posizionamento è espresso nel sistema di coordinate locali dell'oggetto da allegare. - + Around y-axis: Intorno all'asse y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5025,12 +5025,12 @@ Nota: il posizionamento è espresso nel sistema di coordinate locali dell'oggetto da associare. - + Around z-axis: Intorno all'asse z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5039,12 +5039,12 @@ Nota: il posizionamento è espresso nel sistema di coordinate locali dell'oggetto da associare. - + Flip side of attachment and offset Capovolge il lato dell'associazione e offset - + Flip sides Capovolgi le facce @@ -5672,8 +5672,8 @@ in the 3D view for the sweep path. - + Edit %1 Edita %1 @@ -5764,20 +5764,20 @@ Do you want to continue? Nessun riferimento selezionato - + Face Faccia - + Edge Bordo - + Vertex Vertice diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ja.ts b/src/Mod/Part/Gui/Resources/translations/Part_ja.ts index 08a9337619..cc1c3ad1d6 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_ja.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_ja.ts @@ -4972,31 +4972,31 @@ only created cuts will be visible X 方向: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. 注記: 配置は、アタッチされているオブジェクトのローカル座標系 で表されます。 - + In y-direction: Y 方向: - + In z-direction: Z 方向: - + Around x-axis: X軸周り: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5004,12 +5004,12 @@ of object being attached. 注: 配置は、アタッチされているオブジェクトのローカル空間で表されます。 - + Around y-axis: Y軸周り: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5017,12 +5017,12 @@ of object being attached. 注: 配置は、アタッチされているオブジェクトのローカル空間で表されます。 - + Around z-axis: Z軸周り: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5030,12 +5030,12 @@ of object being attached. 注: 配置は、アタッチされているオブジェクトのローカル空間で表されます。 - + Flip side of attachment and offset アタッチメントの側面の反転とオフセット - + Flip sides 面を反転 @@ -5658,8 +5658,8 @@ in the 3D view for the sweep path. - + Edit %1 %1を編集 @@ -5750,20 +5750,20 @@ Do you want to continue? 参照が選択されていません。 - + Face - + Edge エッジ - + Vertex 頂点 diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ka.ts b/src/Mod/Part/Gui/Resources/translations/Part_ka.ts index faf3479853..c0e4bdcd94 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_ka.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_ka.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + ორი სიბრტყის თანაკვეთა. @@ -4979,31 +4979,31 @@ only created cuts will be visible X მიმართულებით: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. შენიშვნა: მდებარეობა გამოიხატება მისამაგრებელი ობიექტის ლოკალურ კოორდინატების სისტემაში. - + In y-direction: Y მიმართულებით: - + In z-direction: Z მიმართულებით: - + Around x-axis: X ღერძის გარშემო: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5011,12 +5011,12 @@ of object being attached. შენიშვნა: მდებარეობა გამოიხატება მისამაგრებელი ობიექტის ლოკალურ კოორდინატების სისტემაში. - + Around y-axis: Y ღერძის გარშემო: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5024,12 +5024,12 @@ of object being attached. შენიშვნა: მდებარეობა გამოიხატება მისამაგრებელი ობიექტის ლოკალურ კოორდინატების სისტემაში. - + Around z-axis: Z ღერძის გარშემო: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5037,12 +5037,12 @@ of object being attached. შენიშვნა: მდებარეობა გამოიხატება მისამაგრებელი ობიექტის ლოკალურ კოორდინატების სისტემაში. - + Flip side of attachment and offset მიმაგრების გადაბრუნების კუთხე და წანაცვლება - + Flip sides გვერდებისთვის ადგილის გაცვლა @@ -5669,8 +5669,8 @@ in the 3D view for the sweep path. - + Edit %1 %1-ის ჩასწორება @@ -5762,20 +5762,20 @@ Do you want to continue? მიბმა არჩეული არაა - + Face სიბრტყე - + Edge წიბო - + Vertex Vertex @@ -6889,7 +6889,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + მოხაზულობა უნდა იყოს პოლიხაზი, წიბო ან გადაბმა. მოწოდებულია რაღაც სხვა. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ko.ts b/src/Mod/Part/Gui/Resources/translations/Part_ko.ts index b75c3b8636..a63bf18b33 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_ko.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_ko.ts @@ -4982,31 +4982,31 @@ only created cuts will be visible In x-direction: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: In y-direction: - + In z-direction: In z-direction: - + Around x-axis: Around x-axis: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5015,12 +5015,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Around y-axis: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5029,12 +5029,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Around z-axis: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5043,12 +5043,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Flip sides @@ -5675,8 +5675,8 @@ in the 3D view for the sweep path. - + Edit %1 Edit %1 @@ -5767,20 +5767,20 @@ Do you want to continue? No reference selected - + Face 면 선택 - + Edge 모서리 - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_nl.ts b/src/Mod/Part/Gui/Resources/translations/Part_nl.ts index 69006daf7d..8abd1d8ac7 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_nl.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_nl.ts @@ -121,7 +121,7 @@ Wire Attacher reference type - Draad + Polygonale lijn @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Snijlijn van twee vlakken. @@ -1195,7 +1195,7 @@ Set the color of each individual face of the selected object. - Set the color of each individual face of the selected object. + Stel de kleur in van elk afzonderlijk vlak van het geselecteerde object. @@ -1804,12 +1804,12 @@ into its X, Y, and Z components. Make face from wires - Maak vlak vanuit draden + Maak vlak vanuit polygonale lijnen Make face from set of wires (e.g. from a sketch) - Maak een vlak vanuit een draadset (bijv. vanuit een schets) + Maak een vlak vanuit een set polygonale lijnen (bijv. vanuit een schets) @@ -1956,10 +1956,8 @@ into its X, Y, and Z components. onto a face of another object. The camera view determines the direction of projection. - Project edges, wires, or faces of one object -onto a face of another object. -The camera view determines the direction -of projection. + Projecteer randen, polygonale lijnen, of vlakken van één object op een vlak van een ander object. +Het camerabeeld bepaalt de richting van de projectie. @@ -2026,12 +2024,12 @@ of projection. Create ruled surface - Maak een geregeerd oppervlak aan + Maak een regeloppervlak aan Create a ruled surface from either two Edges or two wires - Maak een geregeerd oppervlak vanuit twee randen of twee draden + Maak een regeloppervlak vanuit twee randen of twee polygonale lijnen @@ -2294,7 +2292,7 @@ of projection. Create ruled surface - Maak een geregeerd oppervlak aan + Maak een regeloppervlak aan @@ -2344,7 +2342,7 @@ of projection. Wire - Draad + Polygonale lijn @@ -2901,7 +2899,7 @@ If both lengths are zero, magnitude of direction is used. If checked, extruding closed wires will give solids, not shells. - Indien aangevinkt, zullen de geëxtrudeerde gesloten draden volumemodellen geven, niet schillen. + Indien aangevinkt, zullen de geëxtrudeerde gesloten polygonale lijnen volumemodellen geven, niet schillen. @@ -3913,7 +3911,7 @@ during file reading (slower but higher details). Add wire - Voeg draad toe + Voeg polygonale lijn toe @@ -4063,7 +4061,7 @@ during file reading (slower but higher details). If checked, revolving wires will produce solids. If not, revolving a wire yields a shell. - Indien aangevinkt, zullen de wentelende draden volumemodellen produceren. Zo niet, levert de wentelende draad een schil op. + Indien aangevinkt, zullen de wentelende polygonale lijnen volumemodellen produceren. Zo niet, levert de wentelende polygonale lijn een schil op. @@ -4501,7 +4499,7 @@ the sketch plane's normal vector will be used At least two vertices, edges, wires or faces are required. - Minstens twee eindpunten, randen, draden of vlakken zijn vereist. + Ten minste twee hoekpunten, randen, polygonale lijnen of vlakken zijn vereist. @@ -4511,7 +4509,7 @@ the sketch plane's normal vector will be used Vertex/Edge/Wire/Face - Eindpunt/Rand/Draad/Vlak + Eindpunt/Rand/Polygonale lijn/Vlak @@ -4878,7 +4876,7 @@ only created cuts will be visible At least one edge or wire is required. - Minstens één rand of draad is vereist. + Minstens één rand of polygonale lijn is vereist. @@ -4982,31 +4980,31 @@ only created cuts will be visible In x-richting: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: In y-richting: - + In z-direction: In z-richting: - + Around x-axis: Rond de x-as: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5015,12 +5013,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Rond de y-as: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5029,12 +5027,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Rond de z-as: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5043,12 +5041,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Zijden spiegelen @@ -5541,7 +5539,7 @@ by dragging a selection rectangle in the 3D view Wire from edges - Draad vanuit randen + Polygonale lijn van randen @@ -5615,8 +5613,7 @@ by dragging a selection rectangle in the 3D view Select one or more profiles and select an edge or wire in the 3D view for the sweep path. - Selecteer een of meer profielen en selecteer een rand of draad -in de 3D-weergave voor het veegpad. + Selecteer een of meer profielen en selecteer een rand of poygonale lijn in de 3D-weergave voor het veegpad. @@ -5677,8 +5674,8 @@ in de 3D-weergave voor het veegpad. - + Edit %1 Bewerken %1 @@ -5761,7 +5758,7 @@ Wilt u doorgaan? You have to select either two edges or two wires. - Je moet of twee randen of twee draden selecteren. + Je moet of twee randen of twee polygonale lijnen selecteren. @@ -5770,20 +5767,20 @@ Wilt u doorgaan? Geen referentie geselecteerd - + Face Vlak - + Edge Rand - + Vertex Vertex @@ -5810,7 +5807,7 @@ Wilt u doorgaan? Wire - Draad + Polygonale lijn @@ -5900,7 +5897,7 @@ Wilt u doorgaan? Empty Wire - Lege Draad + Lege Polygonale lijn @@ -5910,7 +5907,7 @@ Wilt u doorgaan? Self Intersecting Wire - Zelf kruisende draad + Zelf kruisende polygonale lijn @@ -5930,12 +5927,12 @@ Wilt u doorgaan? Intersecting Wires - Kruisende draden + Kruisende Polygonale lijnen Invalid Imbrication Of Wires - Ongeldige imbricatie van de draden + Ongeldige nesting van de polygonale lijnen @@ -6562,7 +6559,7 @@ It will create a 'Compound Filter' for each shape. Wires - Draden + Polygonale lijnen @@ -6897,7 +6894,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Vorm moet een polygonale lijn, rand of samenstelling zijn. Iets anders was ingevoerd. @@ -6910,7 +6907,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Makes separate plane face from every wire independently. No support for holes; wires can be on different planes. - Maakt een afzonderlijk planair vlak vanuit elke draad. Geen ondersteuning voor gaten; de draden kunnen zich op verschillende vlakken bevinden. + Maakt een afzonderlijk plenair vlak vanuit elke polygonale lijn. Geen ondersteuning voor gaten; de polygonale lijnen kunnen zich op verschillende vlakken bevinden. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_pl.ts b/src/Mod/Part/Gui/Resources/translations/Part_pl.ts index c8ae3f721e..f26fb0684f 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_pl.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_pl.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Przecięcie dwóch powierzchni. @@ -4982,30 +4982,30 @@ only created cuts will be visible W kierunku x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Uwaga: Umiejscowienie jest wyrażone w lokalnym układzie współrzędnych dołączanego obiektu. - + In y-direction: W kierunku y: - + In z-direction: W kierunku z: - + Around x-axis: Wokół osi X: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5014,12 +5014,12 @@ Uwaga: Umiejscowienie jest wyrażone w lokalnym układzie współrzędnych dołączanego obiektu. - + Around y-axis: Wokół osi Y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5028,12 +5028,12 @@ Uwaga: Umiejscowienie jest wyrażone w lokalnym układzie współrzędnych dołączanego obiektu. - + Around z-axis: Wokół osi Z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5042,12 +5042,12 @@ Uwaga: Umiejscowienie jest wyrażone w lokalnym układzie współrzędnych dołączanego obiektu. - + Flip side of attachment and offset Odwróć stronę dołączenia i przesunięcie - + Flip sides Odwróć strony @@ -5676,8 +5676,8 @@ in the 3D view for the sweep path. - + Edit %1 Edytuj %1 @@ -5768,20 +5768,20 @@ Do you want to continue? Nie wybrano odniesienia - + Face Powierzchnia - + Edge Krawędź - + Vertex Wierzchołek @@ -6897,7 +6897,7 @@ Oznacza to, że nakładające się na siebie objętości kształtów zostaną us Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Kształt musi być polilinią, krawędzią lub złożeniem. Wybrano coś innego. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.ts b/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.ts index c757a3fcb4..80a62599d6 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.ts @@ -4966,30 +4966,30 @@ only created cuts will be visible Na direção X: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Nota: As coordenadas da posição são relacionadas ao sistema local de coordenadas do objeto a ser anexado. - + In y-direction: Na direção Y: - + In z-direction: Na direção Z: - + Around x-axis: Em torno do eixo X: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -4997,12 +4997,12 @@ of object being attached. Nota: As coordenadas da posição são relacionadas ao sistema local de coordenadas do objeto a ser anexado. - + Around y-axis: Em torno do eixo Y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5010,12 +5010,12 @@ of object being attached. Nota: As coordenadas da posição são relacionadas ao sistema local de coordenadas do objeto a ser anexado. - + Around z-axis: Em torno do eixo Z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5023,12 +5023,12 @@ of object being attached. Nota: As coordenadas da posição são relacionadas ao sistema local de coordenadas do objeto a ser anexado. - + Flip side of attachment and offset Inverter o lado do anexo e do deslocamento - + Flip sides Inverter os lados @@ -5656,8 +5656,8 @@ in the 3D view for the sweep path. - + Edit %1 Editar %1 @@ -5749,20 +5749,20 @@ Deseja continuar? Nenhuma referência selecionada - + Face Face - + Edge Aresta - + Vertex Vértice diff --git a/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.ts b/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.ts index 9c3a6462a5..58bc42307e 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.ts @@ -4975,31 +4975,31 @@ only created cuts will be visible In x-direction: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: In y-direction: - + In z-direction: In z-direction: - + Around x-axis: Around x-axis: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5008,12 +5008,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Around y-axis: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5022,12 +5022,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Around z-axis: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5036,12 +5036,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Inverter os lados @@ -5669,8 +5669,8 @@ in the 3D view for the sweep path. - + Edit %1 Edite %1 @@ -5761,20 +5761,20 @@ Do you want to continue? Nenhuma referência selecionada - + Face Face - + Edge Borda - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ro.ts b/src/Mod/Part/Gui/Resources/translations/Part_ro.ts index 34a389a99c..8fb27a6893 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_ro.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_ro.ts @@ -4978,31 +4978,31 @@ doar comenzile create vor fi vizibile În direcția x: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Notă: Plasamentul este exprimat în sistemul local de coordonate al obiectului care este atașat. - + In y-direction: În orientarea-y: - + In z-direction: În „z-direcție”: - + Around x-axis: În jurul axei x: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5011,12 +5011,12 @@ Notă: Plasamentul este exprimat în sistemul local coordonat obiectului ce este ataşat. - + Around y-axis: În jurul axei y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5025,12 +5025,12 @@ Notă: Plasamentul este exprimat în sistemul local coordonat obiectului de ataşat. - + Around z-axis: În jurul axei z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5039,12 +5039,12 @@ Notă: Plasamentul este exprimat în sistemul local coordonat obiectului ce este ataşat. - + Flip side of attachment and offset Întoarce o parte a atașamentului și a ofsetului - + Flip sides Întoarce fața @@ -5675,8 +5675,8 @@ in vizualizarea 3D pentru calea maturarii. - + Edit %1 Editare %1 @@ -5767,20 +5767,20 @@ Do you want to continue? Nicio referință selecționată - + Face Faţă - + Edge Margine - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ru.ts b/src/Mod/Part/Gui/Resources/translations/Part_ru.ts index 0ea710f4ec..369eb77751 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_ru.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_ru.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Пересечение двух граней. @@ -4980,31 +4980,31 @@ only created cuts will be visible По оси X: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Примечание: Размещение выражается в локальной системе координат прикрепленного объекта. - + In y-direction: По оси Y: - + In z-direction: По оси Z: - + Around x-axis: Вокруг оси X: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5013,12 +5013,12 @@ of object being attached. прикрепленного объекта. - + Around y-axis: Вокруг оси Y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5027,12 +5027,12 @@ of object being attached. прикрепленного объекта. - + Around z-axis: Вокруг оси Z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5041,12 +5041,12 @@ of object being attached. прикрепленного объекта. - + Flip side of attachment and offset Отразить сторону крепления и смещения (Flip) - + Flip sides Поменять стороны @@ -5673,8 +5673,8 @@ in the 3D view for the sweep path. - + Edit %1 Редактировать %1 @@ -5765,20 +5765,20 @@ Do you want to continue? Не выбрано ни одного ориентира - + Face Грань - + Edge Ребро - + Vertex Вершина @@ -6898,7 +6898,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Форма должна представлять собой проволоку, кромку или соединение. Что-то еще было поставлено. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sl.ts b/src/Mod/Part/Gui/Resources/translations/Part_sl.ts index 2cec047913..98a5a3cbdd 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_sl.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_sl.ts @@ -4983,31 +4983,31 @@ bodo prikazane le prerezne ploskve V smeri X: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Opomba: Postavitev je izražena v lastnem koordinatnem sistemu predmeta, ki je pripet. - + In y-direction: V smeri Y: - + In z-direction: V smeri Y: - + Around x-axis: Okoli osi x: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5016,12 +5016,12 @@ Opomba: Postavitev je izražena v lastnem koordinatnem sistemu predmeta, ki se pripenja. - + Around y-axis: Okoli osi y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5030,12 +5030,12 @@ Opomba: Postavitev je izražena v lastnem koordinatnem sistemu predmeta, ki se pripenja. - + Around z-axis: Okoli osi z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5044,12 +5044,12 @@ Opomba: Postavitev je izražena v lastnem koordinatnem sistemu predmeta, ki se pripenja. - + Flip side of attachment and offset Preobrni stran pripetka in ga odmakni - + Flip sides Obrni stranice @@ -5679,8 +5679,8 @@ in the 3D view for the sweep path. - + Edit %1 Uredi %1 @@ -5772,20 +5772,20 @@ Ali želite nadaljevati? Noben sklic ni izbran - + Face Ploskev - + Edge Rob - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sr-CS.ts b/src/Mod/Part/Gui/Resources/translations/Part_sr-CS.ts index b0366c5022..4fce3ed0d8 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_sr-CS.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_sr-CS.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Presek dve stranice. @@ -4978,31 +4978,31 @@ only created cuts will be visible Po osi X: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Napomena: Položaj je izražen u lokalnom koordinatnom sistemu objekta na koji se pridružuje. - + In y-direction: Po osi Y: - + In z-direction: Po osi Z: - + Around x-axis: Oko x-ose: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5011,12 +5011,12 @@ Napomena: Položaj je izražen u lokalnom koordinatnom sistemu objekta na koji se pridružuje. - + Around y-axis: Oko y-ose: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5025,12 +5025,12 @@ Napomena: Položaj je izražen u lokalnom koordinatnom sistemu objekta na koji se pridružuje. - + Around z-axis: Oko z-ose: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5039,12 +5039,12 @@ Napomena: Položaj je izražen u lokalnom koordinatnom sistemu objekta na koji se pridružuje. - + Flip side of attachment and offset Obrni stranu prodruživanja i odmaka - + Flip sides Obrni strane @@ -5673,8 +5673,8 @@ in the 3D view for the sweep path. - + Edit %1 Uredi %1 @@ -5766,20 +5766,20 @@ Da li želiš da nastaviš? Nije izabrana referenca - + Face Stranica - + Edge Ivica - + Vertex Vertex @@ -6893,7 +6893,7 @@ Ova bulova logička operacija uklanja sve delove objekata koji se preklapaju. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Oblik mora da bude žica, ivica ili sastavljeni objekat. Nešto drugo je obezbeđeno. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sr.ts b/src/Mod/Part/Gui/Resources/translations/Part_sr.ts index 94080a9bf7..8417952b2f 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_sr.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_sr.ts @@ -441,7 +441,7 @@ Intersection of two faces. AttachmentLine mode tooltip - Intersection of two faces. + Пресек две странице. @@ -4977,31 +4977,31 @@ only created cuts will be visible По оси X: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Напомена: Положај је изражен у локалном координатном систему објекта на који се придружује. - + In y-direction: По оси Y: - + In z-direction: По оси Z: - + Around x-axis: Око x-осе: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5010,12 +5010,12 @@ of object being attached. објекта на који се придружује. - + Around y-axis: Око y-осе: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5024,12 +5024,12 @@ of object being attached. објекта на који се придружује. - + Around z-axis: Око z-осе: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5038,12 +5038,12 @@ of object being attached. објекта на који се придружује. - + Flip side of attachment and offset Обрни страну продруживања и одмака - + Flip sides Обрни стране @@ -5672,8 +5672,8 @@ in the 3D view for the sweep path. - + Edit %1 Уреди %1 @@ -5765,20 +5765,20 @@ Do you want to continue? Није изабрана референца - + Face Страница - + Edge Ивица - + Vertex Vertex @@ -6892,7 +6892,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Shape must be a wire, edge or compound. Something else was supplied. - Shape must be a wire, edge or compound. Something else was supplied. + Облик мора да буде жица, ивица или састављени објекат. Нешто друго је обезбеђено. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.ts b/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.ts index 90c46626b6..a1c88ac122 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.ts @@ -4982,31 +4982,31 @@ only created cuts will be visible I x-riktning: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: I y-riktning: - + In z-direction: I z-riktning: - + Around x-axis: Runt x-axeln: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5015,12 +5015,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Runt y-axeln: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5029,12 +5029,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Runt z-axeln: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5043,12 +5043,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Vänd sidor @@ -5676,8 +5676,8 @@ in the 3D view for the sweep path. - + Edit %1 Redigera %1 @@ -5769,20 +5769,20 @@ Vill du fortsätta? Ingen referens markerad - + Face Yta - + Edge Kant - + Vertex Hörn diff --git a/src/Mod/Part/Gui/Resources/translations/Part_tr.ts b/src/Mod/Part/Gui/Resources/translations/Part_tr.ts index 2a646c21f0..66caee4796 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_tr.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_tr.ts @@ -4967,30 +4967,30 @@ yalnızca oluşturulan kesimler görünür X yönünde: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Not: Yerleşim, eklenen nesnenin yerel koordinat sisteminde ifade edilir. - + In y-direction: Y yönünde: - + In z-direction: Z yönünde: - + Around x-axis: X ekseni etrafında: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -4998,12 +4998,12 @@ of object being attached. Not: Yerleşim, eklenen nesnenin yerel koordinat sisteminde ifade edilir. - + Around y-axis: Y ekseni etrafında: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5011,12 +5011,12 @@ of object being attached. Not: Yerleşim, eklenen nesnenin yerel koordinat sisteminde ifade edilir. - + Around z-axis: Z ekseni etrafında: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5024,12 +5024,12 @@ of object being attached. Not: Yerleşim, eklenen nesnenin yerel koordinat sisteminde ifade edilir. - + Flip side of attachment and offset Eklentinin ters tarafı ve ekMiktar - + Flip sides Yönlerini çevirin @@ -5655,8 +5655,8 @@ bir veya daha fazla profil seçin ilave kenar veya tel seçin. - + Edit %1 %1'i düzenle @@ -5748,20 +5748,20 @@ Devam etmek istiyor musun? Seçilen referans yok - + Face Yüz - + Edge Kenar - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_uk.ts b/src/Mod/Part/Gui/Resources/translations/Part_uk.ts index 8445376b62..78a058c9dc 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_uk.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_uk.ts @@ -4983,31 +4983,31 @@ only created cuts will be visible У напрямку осі X: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Примітка: Розміщення відноситься до локальної системи координат приєднаного об’єкта. - + In y-direction: У напрямку осі Y: - + In z-direction: У напрямку осі Z: - + Around x-axis: Навколо осі X: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5016,12 +5016,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Навколо осі Y: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5030,12 +5030,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Навколо осі Z: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5044,12 +5044,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Перевернути сторони @@ -5680,8 +5680,8 @@ in the 3D view for the sweep path. - + Edit %1 Редагувати %1 @@ -5772,20 +5772,20 @@ Do you want to continue? Не вибрано орієнтира - + Face Грань - + Edge Ребро - + Vertex Вершина diff --git a/src/Mod/Part/Gui/Resources/translations/Part_val-ES.ts b/src/Mod/Part/Gui/Resources/translations/Part_val-ES.ts index 5633a0cc48..ed79b05b70 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_val-ES.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_val-ES.ts @@ -4975,31 +4975,31 @@ only created cuts will be visible In x-direction: - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: In y-direction: - + In z-direction: In z-direction: - + Around x-axis: Around x-axis: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5008,12 +5008,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: Around y-axis: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5022,12 +5022,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: Around z-axis: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5036,12 +5036,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset Flip side of attachment and offset - + Flip sides Inverteix les cares @@ -5669,8 +5669,8 @@ in the 3D view for the sweep path. - + Edit %1 Edita %1 @@ -5761,20 +5761,20 @@ Do you want to continue? No s'ha seleccionat cap referència. - + Face Cara - + Edge Aresta - + Vertex Vertex diff --git a/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.ts b/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.ts index b7f92e4a6b..fc9cc7723c 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.ts @@ -4974,31 +4974,31 @@ only created cuts will be visible X方向 - - - + + + Note: The placement is expressed in local coordinate system of object being attached. Note: The placement is expressed in local coordinate system of object being attached. - + In y-direction: Y方向 - + In z-direction: Z方向 - + Around x-axis: 环绕x轴: - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5007,12 +5007,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around y-axis: 环绕y轴: - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5021,12 +5021,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Around z-axis: 环绕z轴: - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5035,12 +5035,12 @@ Note: The placement is expressed in local coordinate system of object being attached. - + Flip side of attachment and offset 附加和偏移的反面 - + Flip sides 翻转面 @@ -5667,8 +5667,8 @@ in the 3D view for the sweep path. - + Edit %1 编辑 %1 @@ -5759,20 +5759,20 @@ Do you want to continue? 没有参照被选中 - + Face - + Edge - + Vertex 顶点 diff --git a/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.ts b/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.ts index 9d306feba5..5bb8a60e9e 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.ts @@ -4959,30 +4959,30 @@ only created cuts will be visible 在x軸方向 - - - + + + Note: The placement is expressed in local coordinate system of object being attached. 注意:附加物件的位置是以其本地座標系統表示的。 - + In y-direction: 在y軸方向 - + In z-direction: 在z軸方向 - + Around x-axis: 環繞x軸 - + Rotation around the x-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -4990,12 +4990,12 @@ of object being attached. 注意:附加物件的位置是以其本地座標系統表示的。 - + Around y-axis: 環繞y軸 - + Rotation around the y-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5003,12 +5003,12 @@ of object being attached. 注意:附加物件的位置是以其本地座標系統表示的。 - + Around z-axis: 環繞z軸 - + Rotation around the z-axis Note: The placement is expressed in local coordinate system of object being attached. @@ -5016,12 +5016,12 @@ of object being attached. 注意:附加物件的位置是以其本地座標系統表示的。 - + Flip side of attachment and offset 翻轉附件的一側並偏移 - + Flip sides 翻面 @@ -5642,8 +5642,8 @@ in the 3D view for the sweep path. - + Edit %1 編輯 %1 @@ -5735,20 +5735,20 @@ Do you want to continue? 尚未選擇參考之物件 - + Face - + Edge - + Vertex Vertex diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index 3d44ef3bc4..a0e0e7d236 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -89,8 +89,8 @@ const QString makeRefString(const App::DocumentObject* obj, const std::string& s void TaskAttacher::makeRefStrings(std::vector& refstrings, std::vector& refnames) { Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); - std::vector refs = pcAttach->Support.getValues(); - refnames = pcAttach->Support.getSubValues(); + std::vector refs = pcAttach->AttachmentSupport.getValues(); + refnames = pcAttach->AttachmentSupport.getSubValues(); for (size_t r = 0; r < 4; r++) { if ((r < refs.size()) && (refs[r])) { @@ -172,7 +172,7 @@ TaskAttacher::TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidge // Get the feature data Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); - std::vector refnames = pcAttach->Support.getSubValues(); + std::vector refnames = pcAttach->AttachmentSupport.getSubValues(); ui->checkBoxFlip->setChecked(pcAttach->MapReversed.getValue()); std::vector refstrings; @@ -203,7 +203,7 @@ TaskAttacher::TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidge this->iActiveRef = 0; else this->iActiveRef = -1; - if (pcAttach->Support.getSize() == 0){ + if (pcAttach->AttachmentSupport.getSize() == 0){ autoNext = true; } else { autoNext = false; @@ -279,7 +279,7 @@ void TaskAttacher::updateReferencesUI() Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); - std::vector refs = pcAttach->Support.getValues(); + std::vector refs = pcAttach->AttachmentSupport.getValues(); completed = false; // Get hints for further required references... @@ -363,8 +363,8 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) // Note: The validity checking has already been done in ReferenceSelection.cpp Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); - std::vector refs = pcAttach->Support.getValues(); - std::vector refnames = pcAttach->Support.getSubValues(); + 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; @@ -401,7 +401,7 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) //bool error = false; try { - pcAttach->Support.setValues(refs, refnames); + pcAttach->AttachmentSupport.setValues(refs, refnames); updateListOfModes(); eMapMode mmode = getActiveMapMode();//will be mmDeactivated, if selected or if no modes are available if(mmode == mmDeactivated){ @@ -572,8 +572,8 @@ void TaskAttacher::onRefName(const QString& text, unsigned idx) // Reference was removed // Update the reference list Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); - std::vector refs = pcAttach->Support.getValues(); - std::vector refnames = pcAttach->Support.getSubValues(); + std::vector refs = pcAttach->AttachmentSupport.getValues(); + std::vector refnames = pcAttach->AttachmentSupport.getSubValues(); std::vector newrefs; std::vector newrefnames; for (size_t r = 0; r < refs.size(); r++) { @@ -582,7 +582,7 @@ void TaskAttacher::onRefName(const QString& text, unsigned idx) newrefnames.push_back(refnames[r]); } } - pcAttach->Support.setValues(newrefs, newrefnames); + pcAttach->AttachmentSupport.setValues(newrefs, newrefnames); updateListOfModes(); pcAttach->MapMode.setValue(getActiveMapMode()); selectMapMode(getActiveMapMode()); @@ -665,8 +665,8 @@ void TaskAttacher::onRefName(const QString& text, unsigned idx) } Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); - std::vector refs = pcAttach->Support.getValues(); - std::vector refnames = pcAttach->Support.getSubValues(); + std::vector refs = pcAttach->AttachmentSupport.getValues(); + std::vector refnames = pcAttach->AttachmentSupport.getSubValues(); if (idx < refs.size()) { refs[idx] = obj; refnames[idx] = subElement; @@ -674,7 +674,7 @@ void TaskAttacher::onRefName(const QString& text, unsigned idx) refs.push_back(obj); refnames.emplace_back(subElement); } - pcAttach->Support.setValues(refs, refnames); + pcAttach->AttachmentSupport.setValues(refs, refnames); updateListOfModes(); pcAttach->MapMode.setValue(getActiveMapMode()); selectMapMode(getActiveMapMode()); @@ -697,7 +697,7 @@ void TaskAttacher::updateRefButton(int idx) } Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); - std::vector refs = pcAttach->Support.getValues(); + std::vector refs = pcAttach->AttachmentSupport.getValues(); int numrefs = refs.size(); bool enable = true; @@ -792,7 +792,7 @@ void TaskAttacher::updateListOfModes() this->lastSuggestResult.bestFitMode = mmDeactivated; size_t lastValidModeItemIndex = mmDummy_NumberOfModes; - if (pcAttach->Support.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 @@ -976,8 +976,8 @@ void TaskAttacher::visibilityAutomation(bool opening_not_closing) "_tv_%4.hide(dep_features)\n" "del(dep_features)\n" "if not tvObj.isDerivedFrom('PartDesign::CoordinateSystem'):\n" - "\t\tif len(tvObj.Support) > 0:\n" - "\t\t\t_tv_%4.show([lnk[0] for lnk in tvObj.Support])\n" + "\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()), @@ -1059,7 +1059,7 @@ TaskDlgAttacher::TaskDlgAttacher(Gui::ViewProviderDocumentObject *ViewProvider, setDocumentName(ViewProvider->getDocument()->getDocument()->getName()); if(createBox) { - parameter = new TaskAttacher(ViewProvider); + parameter = new TaskAttacher(ViewProvider, nullptr, QString(), tr("Attachment")); Content.push_back(parameter); } } @@ -1103,7 +1103,7 @@ bool TaskDlgAttacher::accept() Gui::cmdAppObjectArgs(obj, "MapReversed = %s", pcAttach->MapReversed.getValue() ? "True" : "False"); - Gui::cmdAppObjectArgs(obj, "Support = %s", pcAttach->Support.getPyReprString().c_str()); + Gui::cmdAppObjectArgs(obj, "AttachmentSupport = %s", pcAttach->AttachmentSupport.getPyReprString().c_str()); Gui::cmdAppObjectArgs(obj, "MapPathParameter = %f", pcAttach->MapPathParameter.getValue()); diff --git a/src/Mod/Part/Gui/TaskAttacher.h b/src/Mod/Part/Gui/TaskAttacher.h index 49a0de4ea8..8cb5192c00 100644 --- a/src/Mod/Part/Gui/TaskAttacher.h +++ b/src/Mod/Part/Gui/TaskAttacher.h @@ -56,9 +56,9 @@ public: using VisibilityFunction = std::function; - explicit TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidget *parent = nullptr, - QString picture = QString(), - QString text = QString::fromLatin1("Attachment"), VisibilityFunction func = 0); + explicit TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidget *parent, + QString picture, + QString text, VisibilityFunction func = 0); ~TaskAttacher() override; bool getFlip() const; diff --git a/src/Mod/Part/Gui/TaskCheckGeometry.cpp b/src/Mod/Part/Gui/TaskCheckGeometry.cpp index 4599219825..fb0333edb6 100644 --- a/src/Mod/Part/Gui/TaskCheckGeometry.cpp +++ b/src/Mod/Part/Gui/TaskCheckGeometry.cpp @@ -678,13 +678,13 @@ int TaskCheckGeometryResults::goBOPSingleCheck(const TopoDS_Shape& shapeIn, Resu BOPCheck.CurveOnSurfaceMode() = curveOnSurfaceMode; #ifdef FC_DEBUG - Base::TimeInfo start_time; + Base::TimeElapsed start_time; #endif BOPCheck.Perform(); #ifdef FC_DEBUG - float bopAlgoTime = Base::TimeInfo::diffTimeF(start_time,Base::TimeInfo()); + float bopAlgoTime = Base::TimeElapsed::diffTimeF(start_time, Base::TimeElapsed()); std::cout << std::endl << "BopAlgo check time is: " << bopAlgoTime << std::endl << std::endl; #endif diff --git a/src/Mod/Part/Gui/TaskDimension.cpp b/src/Mod/Part/Gui/TaskDimension.cpp index a733465e24..8812d4dbb9 100644 --- a/src/Mod/Part/Gui/TaskDimension.cpp +++ b/src/Mod/Part/Gui/TaskDimension.cpp @@ -1416,9 +1416,9 @@ PartGui::SteppedSelection::SteppedSelection(const uint& buttonCountIn, QWidget* for (uint index = 0; index < buttonCountIn; ++index) { ButtonIconPairType tempPair; - QString text = QObject::tr("Selection "); + QString text = QObject::tr("Selection"); std::ostringstream stream; - stream << text.toStdString() << ((index < 10) ? "0" : "") << index + 1; + stream << text.toStdString() << " " << ((index < 10) ? "0" : "") << index + 1; QString buttonText = QString::fromStdString(stream.str()); QPushButton *button = new QPushButton(buttonText, this); button->setCheckable(true); diff --git a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp index 0113f87c1c..8607253ba7 100644 --- a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp +++ b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp @@ -95,7 +95,7 @@ void ViewProviderAttachExtension::extensionUpdateData(const App::Property* prop) auto* attach = getExtendedViewProvider()->getObject()->getExtensionByType(); if(attach) { - if( prop == &(attach->Support) || + if( prop == &(attach->AttachmentSupport) || prop == &(attach->MapMode) || prop == &(attach->MapPathParameter) || prop == &(attach->MapReversed) || diff --git a/src/Mod/Part/Gui/ViewProviderExt.cpp b/src/Mod/Part/Gui/ViewProviderExt.cpp index 8b425d3b99..e0fd102b58 100644 --- a/src/Mod/Part/Gui/ViewProviderExt.cpp +++ b/src/Mod/Part/Gui/ViewProviderExt.cpp @@ -921,7 +921,7 @@ void ViewProviderPartExt::updateVisual() } // time measurement and book keeping - Base::TimeInfo start_time; + Base::TimeElapsed start_time; int numTriangles=0,numNodes=0,numNorms=0,numFaces=0,numEdges=0,numLines=0; std::set faceEdges; @@ -1281,7 +1281,7 @@ void ViewProviderPartExt::updateVisual() # ifdef FC_DEBUG // printing some information - Base::Console().Log("ViewProvider update time: %f s\n",Base::TimeInfo::diffTimeF(start_time,Base::TimeInfo())); + Base::Console().Log("ViewProvider update time: %f s\n",Base::TimeElapsed::diffTimeF(start_time,Base::TimeElapsed())); Base::Console().Log("Shape tria info: Faces:%d Edges:%d Nodes:%d Triangles:%d IdxVec:%d\n",numFaces,numEdges,numNodes,numTriangles,numLines); # else (void)numEdges; diff --git a/src/Mod/Part/Gui/ViewProviderGridExtension.cpp b/src/Mod/Part/Gui/ViewProviderGridExtension.cpp index 0b0332e74a..561503ced7 100644 --- a/src/Mod/Part/Gui/ViewProviderGridExtension.cpp +++ b/src/Mod/Part/Gui/ViewProviderGridExtension.cpp @@ -551,7 +551,7 @@ bool ViewProviderGridExtension::extensionHandleChangedPropertyType(Base::XMLRead return true; } - return false; + return Gui::ViewProviderExtension::extensionHandleChangedPropertyType(reader, TypeName, prop); } namespace Gui { diff --git a/src/Mod/Part/TestPartApp.py b/src/Mod/Part/TestPartApp.py index 6694f26a45..1031c71b80 100644 --- a/src/Mod/Part/TestPartApp.py +++ b/src/Mod/Part/TestPartApp.py @@ -170,7 +170,9 @@ class PartTestBSplineCurve(unittest.TestCase): box.getElement("InvalidName") with self.assertRaises(ValueError): box.getElement("Face6_abc") - with self.assertRaises(Part.OCCError): + # getSubTopoShape now catches this before it gets to OCC, so the error changes: + # with self.assertRaises(Part.OCCError): + with self.assertRaises(IndexError): box.getElement("Face7") def tearDown(self): diff --git a/src/Mod/PartDesign/App/DatumLine.cpp b/src/Mod/PartDesign/App/DatumLine.cpp index 3df3883635..e0ab4a8914 100644 --- a/src/Mod/PartDesign/App/DatumLine.cpp +++ b/src/Mod/PartDesign/App/DatumLine.cpp @@ -62,7 +62,7 @@ Line::Line() myShape.Infinite(Standard_True); Shape.setValue(myShape); - Support.touch(); + AttachmentSupport.touch(); } Line::~Line() = default; diff --git a/src/Mod/PartDesign/App/Feature.cpp b/src/Mod/PartDesign/App/Feature.cpp index d679acd352..d6e9a31dc8 100644 --- a/src/Mod/PartDesign/App/Feature.cpp +++ b/src/Mod/PartDesign/App/Feature.cpp @@ -54,12 +54,13 @@ PROPERTY_SOURCE(PartDesign::Feature,Part::Feature) Feature::Feature() { ADD_PROPERTY(BaseFeature,(nullptr)); - ADD_PROPERTY(Suppressed,(false)); ADD_PROPERTY_TYPE(_Body,(nullptr),"Base",(App::PropertyType)( App::Prop_ReadOnly|App::Prop_Hidden|App::Prop_Output|App::Prop_Transient),0); Placement.setStatus(App::Property::Hidden, true); BaseFeature.setStatus(App::Property::Hidden, true); - Suppressed.setStatus(App::Property::Hidden, true); + + App::SuppressibleExtension::initExtension(this); + Suppressed.setStatus(App::Property::Status::Hidden, true); //Todo: remove when TNP fixed } App::DocumentObjectExecReturn* Feature::recompute() diff --git a/src/Mod/PartDesign/App/Feature.h b/src/Mod/PartDesign/App/Feature.h index 2c471992a5..8c47700333 100644 --- a/src/Mod/PartDesign/App/Feature.h +++ b/src/Mod/PartDesign/App/Feature.h @@ -25,6 +25,7 @@ #define PARTDESIGN_Feature_H #include +#include #include #include @@ -44,7 +45,7 @@ class Body; * Base class of all PartDesign features. * This kind of features only produce solids or fail. */ -class PartDesignExport Feature : public Part::Feature +class PartDesignExport Feature : public Part::Feature, public App::SuppressibleExtension { PROPERTY_HEADER_WITH_OVERRIDE(PartDesign::Feature); @@ -55,8 +56,6 @@ public: App::PropertyLink BaseFeature; App::PropertyLinkHidden _Body; - App::PropertyBool Suppressed; - App::DocumentObjectExecReturn* recompute() override; short mustExecute() const override; diff --git a/src/Mod/PartDesign/App/FeatureBoolean.cpp b/src/Mod/PartDesign/App/FeatureBoolean.cpp index 3df796e4e3..50451cd2a7 100644 --- a/src/Mod/PartDesign/App/FeatureBoolean.cpp +++ b/src/Mod/PartDesign/App/FeatureBoolean.cpp @@ -57,7 +57,8 @@ Boolean::Boolean() this->Refine.setValue(hGrp->GetBool("RefineModel", false)); ADD_PROPERTY_TYPE(UsePlacement,(0),"Part Design",(App::PropertyType)(App::Prop_None),"Apply the placement of the second ( tool ) object"); this->UsePlacement.setValue(false); - initExtension(this); + + App::GeoFeatureGroupExtension::initExtension(this); } short Boolean::mustExecute() const diff --git a/src/Mod/PartDesign/App/FeaturePrimitive.cpp b/src/Mod/PartDesign/App/FeaturePrimitive.cpp index d07b36d390..1e8b743a8f 100644 --- a/src/Mod/PartDesign/App/FeaturePrimitive.cpp +++ b/src/Mod/PartDesign/App/FeaturePrimitive.cpp @@ -147,11 +147,6 @@ void FeaturePrimitive::onChanged(const App::Property* prop) FeatureAddSub::onChanged(prop); } -void FeaturePrimitive::handleChangedPropertyName(Base::XMLReader &reader, const char* TypeName, const char* PropName) -{ - extHandleChangedPropertyName(reader, TypeName, PropName); // AttachExtension -} - // suppress warning about tp_print for Py3.8 #if defined(__clang__) # pragma clang diagnostic push diff --git a/src/Mod/PartDesign/App/FeaturePrimitive.h b/src/Mod/PartDesign/App/FeaturePrimitive.h index 9b08c4bc37..1a8233228d 100644 --- a/src/Mod/PartDesign/App/FeaturePrimitive.h +++ b/src/Mod/PartDesign/App/FeaturePrimitive.h @@ -61,7 +61,6 @@ public: return PartDesign::FeatureAddSub::execute(); } protected: - void handleChangedPropertyName(Base::XMLReader &reader, const char* TypeName, const char* PropName) override; //make the boolean ops with the primitives provided by the derived features App::DocumentObjectExecReturn* execute(const TopoDS_Shape& primitiveShape); Type primitiveType = Box; diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index f42506297a..373cc9a476 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -99,7 +99,7 @@ void ProfileBased::positionByPrevious() else { //no base. Use either Sketch support's placement, or sketch's placement itself. Part::Part2DObject* sketch = getVerifiedSketch(); - App::DocumentObject* support = sketch->Support.getValue(); + App::DocumentObject* support = sketch->AttachmentSupport.getValue(); if (support && support->isDerivedFrom(App::GeoFeature::getClassTypeId())) { this->Placement.setValue(static_cast(support)->Placement.getValue()); } @@ -307,13 +307,13 @@ const TopoDS_Face ProfileBased::getSupportFace() const TopoDS_Face ProfileBased::getSupportFace(const Part::Part2DObject* sketch) const { - if (sketch && sketch->MapMode.getValue() == Attacher::mmFlatFace && sketch->Support.getValue()) { - const auto& Support = sketch->Support; - App::DocumentObject* ref = Support.getValue(); + if (sketch && sketch->MapMode.getValue() == Attacher::mmFlatFace && sketch->AttachmentSupport.getValue()) { + const auto& AttachmentSupport = sketch->AttachmentSupport; + App::DocumentObject* ref = AttachmentSupport.getValue(); Part::Feature* part = dynamic_cast(ref); if (part) { - const std::vector& sub = Support.getSubValues(); + const std::vector& sub = AttachmentSupport.getSubValues(); assert(sub.size() == 1); if (sub.at(0).empty()) { @@ -385,7 +385,7 @@ Part::Feature* ProfileBased::getBaseObject(bool silent) const Part::Part2DObject* sketch = getVerifiedSketch(silent); const char* err = nullptr; - App::DocumentObject* spt = sketch->Support.getValue(); + App::DocumentObject* spt = sketch->AttachmentSupport.getValue(); if (spt) { if (spt->isDerivedFrom(Part::Feature::getClassTypeId())) { rv = static_cast(spt); diff --git a/src/Mod/PartDesign/Gui/Command.cpp b/src/Mod/PartDesign/Gui/Command.cpp index f0d575d3c7..c85ae15533 100644 --- a/src/Mod/PartDesign/Gui/Command.cpp +++ b/src/Mod/PartDesign/Gui/Command.cpp @@ -129,12 +129,12 @@ void UnifiedDatumCommand(Gui::Command &cmd, Base::Type type, std::string name) //test if current selection fits a mode. if (support.getSize() > 0) { Part::AttachExtension* pcDatum = Feat->getExtensionByType(); - pcDatum->attacher().references.Paste(support); + pcDatum->attacher().setReferences(support); SuggestResult sugr; pcDatum->attacher().suggestMapModes(sugr); if (sugr.message == Attacher::SuggestResult::srOK) { - //fits some mode. Populate support property. - FCMD_OBJ_CMD(Feat,"Support = " << support.getPyReprString()); + //fits some mode. Populate AttachmentSupport property. + FCMD_OBJ_CMD(Feat,"AttachmentSupport = " << support.getPyReprString()); FCMD_OBJ_CMD(Feat,"MapMode = '" << AttachEngine::getModeName(sugr.bestFitMode) << "'"); } else { QMessageBox::information(Gui::getMainWindow(),QObject::tr("Invalid selection"), QObject::tr("There are no attachment modes that fit selected objects. Select something else.")); diff --git a/src/Mod/PartDesign/Gui/CommandBody.cpp b/src/Mod/PartDesign/Gui/CommandBody.cpp index a8c032837e..38b6f99596 100644 --- a/src/Mod/PartDesign/Gui/CommandBody.cpp +++ b/src/Mod/PartDesign/Gui/CommandBody.cpp @@ -271,7 +271,7 @@ void CmdPartDesignBody::activated(int iMsg) App::Plane* plane = static_cast(features.front()); std::string supportString = Gui::Command::getObjectCmd(plane,"(",", [''])"); - FCMD_OBJ_CMD(baseFeature,"Support = " << supportString); + FCMD_OBJ_CMD(baseFeature,"AttachmentSupport = " << supportString); FCMD_OBJ_CMD(baseFeature,"MapMode = '" << Attacher::AttachEngine::getModeName(Attacher::mmFlatFace) << "'"); Gui::Command::updateActive(); }; diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign.ts index 558184cbee..fd2101369b 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign.ts @@ -877,8 +877,8 @@ so that self intersection is avoided. - + Make copy @@ -903,8 +903,8 @@ so that self intersection is avoided. - + Add a Body @@ -934,22 +934,22 @@ so that self intersection is avoided. - + Mirrored - + Make LinearPattern - + PolarPattern - + Scaled @@ -2040,73 +2040,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - - - - - Remove feature - - - - - List can be reordered by dragging - - - - + Direction - + Reverse direction - + Mode - + Overall Length - - + + Offset - + Length - + Occurrences - - OK - - - - - Update view - - - - - Remove - - - - + Error @@ -2167,115 +2137,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - - - - - Remove feature - - - - - List can be reordered by dragging - - - - + Plane - - OK - - - - - Update view - - - - - Remove - - - - + Error PartDesignGui::TaskMultiTransformParameters - - - Add feature - - - Remove feature - - - - - List can be reordered by dragging - - - - Transformations - - Update view + + OK - - Remove - - - - + Edit - + Delete - + Add mirrored transformation - + Add linear pattern - + Add polar pattern - + Add scaled transformation - + Move up - + Move down @@ -2727,77 +2647,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - - - - - Remove feature - - - - - List can be reordered by dragging - - - - + Axis - + Reverse direction - + Mode - + Overall Angle - + Offset Angle - + Angle - + Offset - + Occurrences - - OK - - - - - Update view - - - - - Remove - - - - + Error @@ -2933,40 +2823,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - - - - - Remove feature - - - - + Factor - + Occurrences - - - OK - - - - - Update view - - - - - Remove - - PartDesignGui::TaskShapeBinder @@ -3087,62 +2952,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + + + + Normal sketch axis - + Vertical sketch axis - + Horizontal sketch axis - - + + Construction line %1 - + Base X axis - + Base Y axis - + Base Z axis - - + + Select reference... - + Base XY plane - + Base YZ plane - + Base XZ plane + + + Add feature + + + + + Remove feature + + + + + List can be reordered by dragging + + + + + Update view + + PartDesignGui::ViewProviderChamfer @@ -3436,28 +3326,28 @@ click again to end selection + + + + + + + - - - - - - - A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? @@ -3719,14 +3609,14 @@ This may lead to unexpected results. + - Vertical sketch axis + - Horizontal sketch axis @@ -3778,15 +3668,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr - - + + Edit %1 - + Set colors... @@ -4696,83 +4586,83 @@ over 90: larger hole radius at the bottom - + Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body - + Base shape is null - + Tool shape is null - + Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid - + Cut out failed - + Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. @@ -4835,8 +4725,8 @@ over 90: larger hole radius at the bottom - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4844,14 +4734,14 @@ over 90: larger hole radius at the bottom - + Creating a face from sketch failed - + Revolve axis intersects the sketch @@ -4861,14 +4751,14 @@ over 90: larger hole radius at the bottom - + Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. @@ -4917,47 +4807,47 @@ Intersecting sketch entities in a sketch are not allowed. - + Error: Could not build - - - + + + Error: Result is not a solid - + Error: There is nothing to subtract - - - + + + Error: Result has multiple solids - + Error: Adding the helix failed - + Error: Intersecting the helix failed - + Error: Subtracting the helix failed - + Error: Could not create face from sketch @@ -5027,15 +4917,15 @@ Intersecting sketch entities in a sketch are not allowed. - + Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_be.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_be.ts index 4f4300adc4..fc2d540cb7 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_be.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_be.ts @@ -884,8 +884,8 @@ False = унутраная шасцярня Стварыць дублікат - + Make copy Зрабіць копію @@ -910,8 +910,8 @@ False = унутраная шасцярня Стварыць лагічную аперацыю - + Add a Body Дадаць цела @@ -941,22 +941,22 @@ False = унутраная шасцярня Рухаць аб'ект унутры дрэва - + Mirrored Сiметрыя - + Make LinearPattern Зрабіць Лінейны шаблон - + PolarPattern Палярны шаблон - + Scaled Маштабны @@ -2056,73 +2056,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Дадаць элемент - - - - Remove feature - Выдаліць элемент - - - - List can be reordered by dragging - Спіс можна парадкаваць перацягваннем - - - + Direction Напрамак - + Reverse direction Развярнуць напрамак - + Mode Рэжым - + Overall Length Агульная даўжыня - - + + Offset Зрушэнне - + Length Даўжыня - + Occurrences Выступы - - OK - OK - - - - Update view - Абнавіць выгляд - - - - Remove - Выдаліць - - - + Error Памылка @@ -2183,115 +2153,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Дадаць элемент - - - - Remove feature - Выдаліць элемент - - - - List can be reordered by dragging - Спіс можна парадкаваць перацягваннем - - - + Plane Плоскасць - - OK - OK - - - - Update view - Абнавіць выгляд - - - - Remove - Выдаліць - - - + Error Памылка PartDesignGui::TaskMultiTransformParameters - - - Add feature - Дадаць элемент - - Remove feature - Выдаліць элемент - - - - List can be reordered by dragging - Спіс можна парадкаваць перацягваннем - - - Transformations Пераўтварэнні - - Update view - Абнавіць выгляд + + OK + OK - - Remove - Выдаліць - - - + Edit Змяніць - + Delete Выдаліць - + Add mirrored transformation Дадаць сіметрычнае пераўтварэнне - + Add linear pattern Дадаць лінейны шаблон - + Add polar pattern Дадаць палярны шаблон - + Add scaled transformation Дадаць маштабнае пераўтварэнне - + Move up Рухаць уверх - + Move down Рухаць уніз @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Дадаць элемент - - - - Remove feature - Выдаліць элемент - - - - List can be reordered by dragging - Спіс можна парадкаваць перацягваннем - - - + Axis Вось - + Reverse direction Развярнуць напрамак - + Mode Рэжым - + Overall Angle Агульны вугал - + Offset Angle Вугал зрушэння - + Angle Вугал - + Offset Зрушэнне - + Occurrences Выступы - - OK - OK - - - - Update view - Абнавіць выгляд - - - - Remove - Выдаліць - - - + Error Памылка @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Дадаць элемент - - - - Remove feature - Выдаліць элемент - - - + Factor Каэфіцыент - + Occurrences Выступы - - - OK - OK - - - - Update view - Абнавіць выгляд - - - - Remove - Выдаліць - PartDesignGui::TaskShapeBinder @@ -3108,62 +2973,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Выдаліць + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Вертыкальная вось эскізу - + Horizontal sketch axis Гарызантальная вось эскізу - - + + Construction line %1 Будаўнічая лінія %1 - + Base X axis Асноўная вось X - + Base Y axis Асноўная вось Y - + Base Z axis Асноўная вось Z - - + + Select reference... Select reference... - + Base XY plane Асноўная плоскасць XY - + Base YZ plane Асноўная плоскасць YZ - + Base XZ plane Асноўная плоскасць XZ + + + Add feature + Дадаць элемент + + + + Remove feature + Выдаліць элемент + + + + List can be reordered by dragging + Спіс можна парадкаваць перацягваннем + + + + Update view + Абнавіць выгляд + PartDesignGui::ViewProviderChamfer @@ -3457,28 +3347,28 @@ click again to end selection Калі ласка, спачатку стварыце плоскасць, альбо абярыце грань на эскізе + + + + + + + - - - - - - - A dialog is already open in the task panel На панэлі задач дыялогавае акно ўжо адчыненае + + + + + + + - - - - - - - Do you want to close this dialog? Ці жадаеце вы зачыніць дыялогавае акно? @@ -3746,14 +3636,14 @@ This may lead to unexpected results. Немагчыма стварыць элемент адымання без даступнага асноўнага элементу + - Vertical sketch axis Vertical sketch axis + - Horizontal sketch axis Horizontal sketch axis @@ -3807,15 +3697,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Каб ужыць гэты элемент, ён павінен належаць да аб'екту дэталі ў дакуменце. - - + + Edit %1 Змяніць %1 - + Set colors... Задаць колеры... @@ -4734,83 +4624,83 @@ over 90: larger hole radius at the bottom Асноўны элемент мае пустую фігуру - + Cannot do boolean cut without BaseFeature Немагчыма выканаць лагічнае выразанне без асноўнага элементу - - + + Cannot do boolean with anything but Part::Feature and its derivatives Немагчыма зрабіць лагічную аперацыю ні з чым, акрамя Дэталі::Элементу (Part::Feature) і яе вытворнай - + Cannot do boolean operation with invalid base shape Немагчыма зрабіць лагічную аперацыю з хібнай асноўнай фігурай - + Cannot do boolean on feature which is not in a body Немагчыма зрабіць лагічную аперацыю для элемента, якога няма ў целе - + Base shape is null Асноўнай фігура пустая - + Tool shape is null Фігура інструмента пустая - + Fusion of tools failed Зліццё інструментаў не атрымалася - - - - - + - + + + + + Resulting shape is not a solid Выніковая фігура атрымалася не суцэльным целам - + Cut out failed Выразаць не атрымалася - + Common operation failed Агульная аперацыя завяршылася няўдачай - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Вынік змяшчае некалькі суцэльных цел: у бягучы час гэтае не падтрымліваецца. @@ -4873,8 +4763,8 @@ over 90: larger hole radius at the bottom Вугал пазу занадта малы - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4884,14 +4774,14 @@ over 90: larger hole radius at the bottom - абраны эскіз не належыць да бягучага Цела. - + Creating a face from sketch failed Не атрымалася стварыць грань з эскізу - + Revolve axis intersects the sketch Вось вярчэння перасякае эскіз @@ -4901,14 +4791,14 @@ over 90: larger hole radius at the bottom Не атрымалася выразаць асноўны элемент - + Could not revolve the sketch! Не атрымалася павярнуць эскіз! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Не атрымалася стварыць грань з эскізу. @@ -4958,47 +4848,47 @@ Intersecting sketch entities in a sketch are not allowed. Памылка: грань павінна быць плоскай - + Error: Could not build Памылка: не атрымалася пабудаваць - - - + + + Error: Result is not a solid Памылка: вынік не суцэльнае цела - + Error: There is nothing to subtract Памылка: адымаць няма чаго - - - + + + Error: Result has multiple solids Памылка: вынік змяшчае некалькі суцэльных цел - + Error: Adding the helix failed Памылка: не атрымалася дадаць спіраль - + Error: Intersecting the helix failed Памылка: не атрымалася перасякаваць спіраль - + Error: Subtracting the helix failed Памылка: не атрымалася адняць спіраль - + Error: Could not create face from sketch Памылка: не атрымалася стварыць грань з эскізу @@ -5068,15 +4958,15 @@ Intersecting sketch entities in a sketch are not allowed. Памылка: не атрымалася дадаць разьбу - + Boolean operation failed Лагічная аперацыя завяршылася няўдачай - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Не атрымалася стварыць грань з эскізу. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.ts index d5cdd16a60..1e31bca2cd 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.ts @@ -883,8 +883,8 @@ de manera que s'evita l'autointersecció. Crea un clon - + Make copy Fer còpia @@ -909,8 +909,8 @@ de manera que s'evita l'autointersecció. Crea booleà - + Add a Body Afegiu un cos @@ -940,22 +940,22 @@ de manera que s'evita l'autointersecció. Mou un objecte dins de l'arbre - + Mirrored Reflectit - + Make LinearPattern Fer Patró Lineal - + PolarPattern Patró Polar - + Scaled Escalat @@ -2057,73 +2057,43 @@ clica altre cop per finalitzar la selecció PartDesignGui::TaskLinearPatternParameters - - Add feature - Afegir paràmetre - - - - Remove feature - Eliminar cara - - - - List can be reordered by dragging - La llista es pot reordenar arrossegant - - - + Direction Direcció - + Reverse direction Reverse direction - + Mode Modus - + Overall Length Overall Length - - + + Offset Equidistancia (ofset) - + Length Longitud - + Occurrences Ocurrències - - OK - D'acord - - - - Update view - Actualització vista - - - - Remove - Elimina - - - + Error Error @@ -2184,115 +2154,65 @@ clica altre cop per finalitzar la selecció PartDesignGui::TaskMirroredParameters - - Add feature - Afegir paràmetre - - - - Remove feature - Eliminar cara - - - - List can be reordered by dragging - La llista es pot reordenar arrossegant - - - + Plane Pla - - OK - D'acord - - - - Update view - Actualització vista - - - - Remove - Elimina - - - + Error Error PartDesignGui::TaskMultiTransformParameters - - - Add feature - Afegir paràmetre - - Remove feature - Eliminar cara - - - - List can be reordered by dragging - La llista es pot reordenar arrossegant - - - Transformations Transformacions - - Update view - Actualització vista + + OK + D'acord - - Remove - Elimina - - - + Edit Edita - + Delete Elimina - + Add mirrored transformation Afegir la transformació de reflexió - + Add linear pattern Afegir patró lineal - + Add polar pattern Afegeix un patró polar - + Add scaled transformation Afegir transformació escalada - + Move up Mou amunt - + Move down Mou avall @@ -2747,77 +2667,47 @@ mesurada al llarg de la direcció especificada PartDesignGui::TaskPolarPatternParameters - - Add feature - Afegir paràmetre - - - - Remove feature - Eliminar cara - - - - List can be reordered by dragging - La llista es pot reordenar arrossegant - - - + Axis Eix - + Reverse direction Reverse direction - + Mode Modus - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Angle - + Offset Equidistancia (ofset) - + Occurrences Ocurrències - - OK - D'acord - - - - Update view - Actualització vista - - - - Remove - Elimina - - - + Error Error @@ -2953,40 +2843,15 @@ mesurada al llarg de la direcció especificada PartDesignGui::TaskScaledParameters - - Add feature - Afegir paràmetre - - - - Remove feature - Eliminar cara - - - + Factor Factor - + Occurrences Ocurrències - - - OK - D'acord - - - - Update view - Actualització vista - - - - Remove - Elimina - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ clica altre cop per finalitzar la selecció PartDesignGui::TaskTransformedParameters - + + Remove + Elimina + + + Normal sketch axis Eix normal al croquis - + Vertical sketch axis Eix vertical de croquis - + Horizontal sketch axis Eix horitzontal de croquis - - + + Construction line %1 Construcció línia %1 - + Base X axis Eix base X - + Base Y axis Eix base Y - + Base Z axis Eix base Z - - + + Select reference... Seleccioneu referència... - + Base XY plane Base pla XY - + Base YZ plane Pla YZ base - + Base XZ plane Base pla XZ + + + Add feature + Afegir paràmetre + + + + Remove feature + Eliminar cara + + + + List can be reordered by dragging + La llista es pot reordenar arrossegant + + + + Update view + Actualització vista + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ clica altre cop per finalitzar la selecció Si us plau, crear un plànol primer o seleccioneu una cara a esbossar + + + + + + + - - - - - - - A dialog is already open in the task panel A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? Do you want to close this dialog? @@ -3746,14 +3636,14 @@ Això pot portar a resultats inesperats. No és possible crear un pla Sustractiu sense una base pla disponible + - Vertical sketch axis Eix vertical de croquis + - Horizontal sketch axis Eix horitzontal de croquis @@ -3807,15 +3697,15 @@ Si teniu un document antic amb objectes PartDesign sense cos, utilitzeu la funci Per utilitzar aquesta característica cal que pertanyen a un objecte de part del document. - - + + Edit %1 Editar %1 - + Set colors... Conjunts de colors... @@ -4734,83 +4624,83 @@ més de 90: radi de forat més gran a la part inferior BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4873,8 +4763,8 @@ més de 90: radi de forat més gran a la part inferior Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4884,14 +4774,14 @@ més de 90: radi de forat més gran a la part inferior - l'esbós seleccionat no pertany al Cos actiu. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4901,14 +4791,14 @@ més de 90: radi de forat més gran a la part inferior Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4958,47 +4848,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5068,15 +4958,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.ts index e3a1144b90..727abf0ef6 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.ts @@ -883,8 +883,8 @@ aby se zabránilo sebe. Vytvořit klon - + Make copy Vytvořit kopii @@ -909,8 +909,8 @@ aby se zabránilo sebe. Použít booleovské operace - + Add a Body Přidat těleso @@ -940,22 +940,22 @@ aby se zabránilo sebe. Přesunout objekt dovnitř stromu - + Mirrored Zrcadlit - + Make LinearPattern Vytvořit lineární pole - + PolarPattern Kruhové pole - + Scaled Změna měřítka @@ -2057,73 +2057,43 @@ klikněte znovu pro ukončení výběru PartDesignGui::TaskLinearPatternParameters - - Add feature - Přidat prvek - - - - Remove feature - Odstranit prvek - - - - List can be reordered by dragging - Seznam lze přeřadit přetažením - - - + Direction Směr - + Reverse direction Obrátit směr - + Mode Způsob - + Overall Length Celková délka - - + + Offset Odstup - + Length Délka - + Occurrences Počet výskytů - - OK - OK - - - - Update view - Aktualizovat zobrazení - - - - Remove - Odstranit - - - + Error Chyba @@ -2184,115 +2154,65 @@ klikněte znovu pro ukončení výběru PartDesignGui::TaskMirroredParameters - - Add feature - Přidat prvek - - - - Remove feature - Odstranit prvek - - - - List can be reordered by dragging - Seznam lze přeřadit přetažením - - - + Plane Rovina - - OK - OK - - - - Update view - Aktualizovat zobrazení - - - - Remove - Odstranit - - - + Error Chyba PartDesignGui::TaskMultiTransformParameters - - - Add feature - Přidat prvek - - Remove feature - Odstranit prvek - - - - List can be reordered by dragging - Seznam lze přeřadit přetažením - - - Transformations Transformace - - Update view - Aktualizovat zobrazení + + OK + OK - - Remove - Odstranit - - - + Edit Upravit - + Delete Odstranit - + Add mirrored transformation Přidat zrcadlovou transformaci - + Add linear pattern Přidat lineární pole - + Add polar pattern Přidat kruhové pole - + Add scaled transformation Přidat transformaci měřítka - + Move up Posunout nahorů - + Move down Posunout dolů @@ -2747,77 +2667,47 @@ měřena ve stanoveném směru PartDesignGui::TaskPolarPatternParameters - - Add feature - Přidat prvek - - - - Remove feature - Odstranit prvek - - - - List can be reordered by dragging - Seznam lze přeřadit přetažením - - - + Axis Osa - + Reverse direction Obrátit směr - + Mode Způsob - + Overall Angle Celkový úhel - + Offset Angle Úhel odstupu - + Angle Úhel - + Offset Odstup - + Occurrences Počet výskytů - - OK - OK - - - - Update view - Aktualizovat zobrazení - - - - Remove - Odstranit - - - + Error Chyba @@ -2953,40 +2843,15 @@ měřena ve stanoveném směru PartDesignGui::TaskScaledParameters - - Add feature - Přidat prvek - - - - Remove feature - Odstranit prvek - - - + Factor měřítko - + Occurrences Počet výskytů - - - OK - OK - - - - Update view - Aktualizovat zobrazení - - - - Remove - Odstranit - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ klikněte znovu pro ukončení výběru PartDesignGui::TaskTransformedParameters - + + Remove + Odstranit + + + Normal sketch axis Normálová osa roviny náčrtu - + Vertical sketch axis Svislá skicovací osa - + Horizontal sketch axis Vodorovná skicovací osa - - + + Construction line %1 Konstrukční čára %1 - + Base X axis Základní osa X - + Base Y axis Základní osa Y - + Base Z axis Základní osa Z - - + + Select reference... Vyber referenci... - + Base XY plane Základní rovina XY - + Base YZ plane Základní rovina YZ - + Base XZ plane Základní rovina XZ + + + Add feature + Přidat prvek + + + + Remove feature + Odstranit prvek + + + + List can be reordered by dragging + Seznam lze přeřadit přetažením + + + + Update view + Aktualizovat zobrazení + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ klikněte znovu pro ukončení výběru Nejprve vytvořte rovinu nebo vyberte plochu, na kterou chcete vytvořit náčrt + + + + + + + - - - - - - - A dialog is already open in the task panel Dialog je opravdu otevřen v panelu úloh + + + + + + + - - - - - - - Do you want to close this dialog? Chcete zavřít tento dialog? @@ -3748,14 +3638,14 @@ To může vést k neočekávaným výsledkům. Není možné vytvořit odečtový prvek bez základního prvku + - Vertical sketch axis Svislá skicovací osa + - Horizontal sketch axis Vodorovná skicovací osa @@ -3809,15 +3699,15 @@ Pokud máte starší dokument s objekty PartDesignu bez tělesa, použijte funkc Pro použití tohoto prvku je potřebné, aby patřil k objektu díl v dokumentu. - - + + Edit %1 Upravit %1 - + Set colors... Nastavení barev... @@ -4737,83 +4627,83 @@ nad 90: větší poloměr díry ve spodní části Základní prvek má prázdný tvar - + Cannot do boolean cut without BaseFeature Booleovský řez nelze provést bez základního prvku - - + + Cannot do boolean with anything but Part::Feature and its derivatives Boolean nelze provést s ničím jiným než prvkem dílu a její derivací - + Cannot do boolean operation with invalid base shape Booleovskou operaci nelze provést s neplatným základním tvarem - + Cannot do boolean on feature which is not in a body Boolean nelze provést na prvku, který není v tělesu - + Base shape is null Základní tvar je null - + Tool shape is null Nástroj tvaru je null - + Fusion of tools failed Sloučení nástrojů se nezdařilo - - - - - + - + + + + + Resulting shape is not a solid Výsledný tvar není plné těleso - + Cut out failed Výřez se nezdařil - + Common operation failed Operace průniku selhala - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Výsledek se skládá z více těles: to není v současné době podporováno. @@ -4876,8 +4766,8 @@ nad 90: větší poloměr díry ve spodní části Úhel drážky příliš malý - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4888,14 +4778,14 @@ nad 90: větší poloměr díry ve spodní části - vybraný náčrt nepatří k aktivnímu tělesu. - + Creating a face from sketch failed Vytvoření plochy z náčrtu selhalo - + Revolve axis intersects the sketch Osa otáčení protíná náčrt @@ -4905,14 +4795,14 @@ nad 90: větší poloměr díry ve spodní části Výřez zakladního prvku selhal - + Could not revolve the sketch! Nelze otočit náčrt! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Nelze vytvořit plochu z náčrtu. @@ -4962,47 +4852,47 @@ Protínání entit náčrtu v náčrtu není povoleno. Chyba: Plocha musí být rovinná - + Error: Could not build Chyba: Nelze vytvořit - - - + + + Error: Result is not a solid Chyba: Výsledek není plné těleso - + Error: There is nothing to subtract Chyba: Není co odečíst - - - + + + Error: Result has multiple solids Chyba: Výsledek se skládá z více těles - + Error: Adding the helix failed Chyba: Přidání šroubovice selhalo - + Error: Intersecting the helix failed Chyba: Protínání šroubovice selhalo - + Error: Subtracting the helix failed Šroubovice: Odečtení šroubovice selhalo - + Error: Could not create face from sketch Chyba: Nelze vytvořit plochu z náčrtu @@ -5072,15 +4962,15 @@ Protínání entit náčrtu v náčrtu není povoleno. Chyba: Přidání závitu selhalo - + Boolean operation failed Booleovská operace selhala - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Nelze vytvořit plochu z náčrtu. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts index f567155442..29400dac88 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts @@ -883,8 +883,8 @@ damit eine Selbstdurchdringung vermieden wird. Klon erstellen - + Make copy Kopie erstellen @@ -909,8 +909,8 @@ damit eine Selbstdurchdringung vermieden wird. Boolean erstellen - + Add a Body Einen Körper hinzufügen @@ -940,22 +940,22 @@ damit eine Selbstdurchdringung vermieden wird. Objekt innerhalb des Baumes verschieben - + Mirrored Spiegeln - + Make LinearPattern Lineares Muster erstellen - + PolarPattern Polares Muster - + Scaled skaliert @@ -2056,73 +2056,43 @@ erneut klicken um die Auswahl zu beenden PartDesignGui::TaskLinearPatternParameters - - Add feature - Element hinzufügen - - - - Remove feature - Element entfernen - - - - List can be reordered by dragging - Die Liste kann durch Ziehen neu sortiert werden - - - + Direction Richtung - + Reverse direction Richtung umkehren - + Mode Modus - + Overall Length Gesamtlänge - - + + Offset Versetzen - + Length Länge - + Occurrences Vorkommen - - OK - OK - - - - Update view - Ansicht aktualisieren - - - - Remove - Entfernen - - - + Error Fehler @@ -2167,7 +2137,7 @@ erneut klicken um die Auswahl zu beenden Update view - Ansicht aktualisieren + Ansicht aktualisieren @@ -2183,115 +2153,65 @@ erneut klicken um die Auswahl zu beenden PartDesignGui::TaskMirroredParameters - - Add feature - Element hinzufügen - - - - Remove feature - Element entfernen - - - - List can be reordered by dragging - Die Liste kann durch Ziehen neu sortiert werden - - - + Plane Ebene - - OK - OK - - - - Update view - Ansicht aktualisieren - - - - Remove - Entfernen - - - + Error Fehlermeldungen PartDesignGui::TaskMultiTransformParameters - - - Add feature - Element hinzufügen - - Remove feature - Element entfernen - - - - List can be reordered by dragging - Die Liste kann durch Ziehen neu sortiert werden - - - Transformations Transformationen - - Update view - Ansicht aktualisieren + + OK + OK - - Remove - Entfernen - - - + Edit Bearbeiten - + Delete Löschen - + Add mirrored transformation Spiegelung hinzufügen - + Add linear pattern Lineares Muster hinzufügen - + Add polar pattern Polares Muster hinzufügen - + Add scaled transformation Skalierte Transformation hinzufügen - + Move up Nach oben verschieben - + Move down Nach unten verschieben @@ -2496,7 +2416,7 @@ entlang der angegebenen Richtung gemessen Update view - Ansicht aktualisieren + Ansicht aktualisieren @@ -2746,77 +2666,47 @@ entlang der angegebenen Richtung gemessen PartDesignGui::TaskPolarPatternParameters - - Add feature - Element hinzufügen - - - - Remove feature - Element entfernen - - - - List can be reordered by dragging - Die Liste kann durch Ziehen neu sortiert werden - - - + Axis Achse - + Reverse direction Umgekehrte Richtung - + Mode Modus - + Overall Angle Gesamtwinkel - + Offset Angle Versatzwinkel - + Angle Winkel - + Offset Versetzen - + Occurrences Vorkommen - - OK - OK - - - - Update view - Ansicht aktualisieren - - - - Remove - Entfernen - - - + Error Fehler @@ -2911,7 +2801,7 @@ entlang der angegebenen Richtung gemessen Update view - Ansicht aktualisieren + Ansicht aktualisieren @@ -2952,40 +2842,15 @@ entlang der angegebenen Richtung gemessen PartDesignGui::TaskScaledParameters - - Add feature - Element hinzufügen - - - - Remove feature - Element entfernen - - - + Factor Faktor - + Occurrences Vorkommen - - - OK - OK - - - - Update view - Ansicht aktualisieren - - - - Remove - Entfernen - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ Nochmaliges Klicken beendet den Auswahl-Modus. PartDesignGui::TaskTransformedParameters - + + Remove + Entfernen + + + Normal sketch axis Senkrecht zur Skizze - + Vertical sketch axis Vertikale Skizzenachse - + Horizontal sketch axis Horizontale Skizzenachse - - + + Construction line %1 Konstruktionslinie %1 - + Base X axis Basis X-Achse - + Base Y axis Basis Y-Achse - + Base Z axis Basis Z-Achse - - + + Select reference... Referenz auswählen... - + Base XY plane XY-Basis-Ebene - + Base YZ plane YZ-Basis-Ebene - + Base XZ plane XZ-Basis-Ebene + + + Add feature + Element hinzufügen + + + + Remove feature + Element entfernen + + + + List can be reordered by dragging + Die Liste kann durch Ziehen neu sortiert werden + + + + Update view + Ansicht aktualisieren + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ Nochmaliges Klicken beendet den Auswahl-Modus. Zum Erzeugen einer Skizze zuerst eine Ebene im Koordinatensystem oder auf einem Körper wählen + + + + + + + - - - - - - - A dialog is already open in the task panel Es ist bereits ein Dialog in der Aufgabenleiste geöffnet + + + + + + + - - - - - - - Do you want to close this dialog? Möchten Sie diesen Dialog zu schließen? @@ -3745,14 +3635,14 @@ This may lead to unexpected results. Es ist nicht möglich, ein abzuziehendes Objekt ohne ein Basisobjekt zu erstellen + - Vertical sketch axis Vertikale Skizzenachse + - Horizontal sketch axis Horizontale Skizzenachse @@ -3807,15 +3697,15 @@ Bitte aktivieren (Doppelklick) Sie einen oder erstellen einen neuen Körper.Um diese Funktion verwenden zu können, muss es Teil einer Baugruppe im Dokument sein. - - + + Edit %1 %1 bearbeiten - + Set colors... Farben festlegen... @@ -4254,7 +4144,7 @@ Achtung, die Berechnung kann einige Zeit dauern! Update view - Ansicht aktualisieren + Ansicht aktualisieren @@ -4734,83 +4624,83 @@ unter 90: kleinerer Bohrungsradius an der Unterseite Das BaseFeature enthält eine leere Form - + Cannot do boolean cut without BaseFeature Eine boolesche Differenz (Beschnitt) ohne BaseFeature ist nicht möglich - - + + Cannot do boolean with anything but Part::Feature and its derivatives Boolesche Verknüpfungen können nur mit Part::Feature-Objekten und ihren Derivaten durchgeführt werden - + Cannot do boolean operation with invalid base shape Boolesche Verknüpfungen können nicht mit ungültigem base shape durchgeführt werden - + Cannot do boolean on feature which is not in a body Eine boolesche Verknüpfung kann nicht an einem Formelement ausgeführt werden, das sich nicht in einem Körper befindet - + Base shape is null Grundform ist NULL - + Tool shape is null Werkzeugform ist NULL - + Fusion of tools failed Fusion der Werkzeuge fehlgeschlagen - - - - - + - + + + + + Resulting shape is not a solid Die resultierende Form ist kein Festkörper - + Cut out failed Ausschnitt fehlgeschlagen - + Common operation failed Vereinigung fehlgeschlagen - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Das Ergebnis enthält mehrere Festkörper: Dies wird derzeit leider nicht unterstützt. @@ -4873,8 +4763,8 @@ unter 90: kleinerer Bohrungsradius an der Unterseite Winkel der Nut zu klein - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4884,14 +4774,14 @@ unter 90: kleinerer Bohrungsradius an der Unterseite - Die gewählte Skizze gehört nicht zum aktiven Körper. - + Creating a face from sketch failed Es konnte keine Fläche aus der Skizze erstellt werden - + Revolve axis intersects the sketch Die Drehachse schneidet die Skizze @@ -4901,14 +4791,14 @@ unter 90: kleinerer Bohrungsradius an der Unterseite Das Ausschneiden des Basis-Formelements ist fehlgeschlagen - + Could not revolve the sketch! Konnte die Skizze nicht drehen! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Konnte keine Fläche aus der Skizze erstellen. @@ -4958,47 +4848,47 @@ Skizzenobjekte dürfen einander nicht schneiden. Fehler: Fläche muss eben sein - + Error: Could not build Fehler: Konnte leider keine Helix erstellen - - - + + + Error: Result is not a solid Fehler: Ergebnis ist kein Festkörper - + Error: There is nothing to subtract Fehler: Es gibt nichts zum Abziehen - - - + + + Error: Result has multiple solids Fehler: Ergebnis besteht aus mehreren Festkörpern - + Error: Adding the helix failed Fehler: Konnte Wendel nicht hinzufügen - + Error: Intersecting the helix failed Fehler: Überschneidung mit der Helix ist leider fehlgeschlagen - + Error: Subtracting the helix failed Fehler: Konnte Wendel nicht abziehen - + Error: Could not create face from sketch Fehler: Konnte keine Fläche aus Skizze erzeugen @@ -5068,15 +4958,15 @@ Skizzenobjekte dürfen einander nicht schneiden. Fehler: Konnte das Gewinde nicht hinzufügen - + Boolean operation failed Boolesche Operation fehlgeschlagen - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Es konnte keine Fläche aus der Skizze erstellt werden. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.ts index fdb2f5a621..dd835e60f0 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.ts @@ -882,8 +882,8 @@ so that self intersection is avoided. Create Clone - + Make copy Δημιουργία αντιγράφου @@ -908,8 +908,8 @@ so that self intersection is avoided. Create Boolean - + Add a Body Add a Body @@ -939,22 +939,22 @@ so that self intersection is avoided. Move an object inside tree - + Mirrored Κατοπτρισμένο - + Make LinearPattern Δημιουργήστε γραμμικό μοτίβο - + PolarPattern Κυκλικό Μοτίβο - + Scaled Υπό κλίμακα @@ -2056,73 +2056,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Προσθέστε χαρακτηριστικό - - - - Remove feature - Αφαιρέστε χαρακτηριστικό - - - - List can be reordered by dragging - Η λίστα μπορεί να αναδιαταχθεί με σύρσιμο - - - + Direction Κατεύθυνση - + Reverse direction Αντίστροφη κατεύθυνση - + Mode Λειτουργία - + Overall Length Overall Length - - + + Offset Μετατοπίστε - + Length Μήκος - + Occurrences Επαναλήψεις - - OK - ΟΚ - - - - Update view - Ανανέωση προβολής - - - - Remove - Αφαίρεση - - - + Error Σφάλμα @@ -2183,115 +2153,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Προσθέστε χαρακτηριστικό - - - - Remove feature - Αφαιρέστε χαρακτηριστικό - - - - List can be reordered by dragging - Η λίστα μπορεί να αναδιαταχθεί με σύρσιμο - - - + Plane Επίπεδο - - OK - ΟΚ - - - - Update view - Ανανέωση προβολής - - - - Remove - Αφαίρεση - - - + Error Σφάλμα PartDesignGui::TaskMultiTransformParameters - - - Add feature - Προσθέστε χαρακτηριστικό - - Remove feature - Αφαιρέστε χαρακτηριστικό - - - - List can be reordered by dragging - Η λίστα μπορεί να αναδιαταχθεί με σύρσιμο - - - Transformations Μετατοπισμοί - - Update view - Ανανέωση προβολής + + OK + ΟΚ - - Remove - Αφαίρεση - - - + Edit Επεξεργασία - + Delete Διαγραφή - + Add mirrored transformation Προσθήκη αντικατοπτρισμένης μετατόπισης - + Add linear pattern Προσθέστε γραμμικό μοτίβο - + Add polar pattern Προσθήκη κυκλικού μοτίβου - + Add scaled transformation Προσθέστε μετατόπιση κλίμακας - + Move up Μετακίνηση πάνω - + Move down Μετακίνηση κάτω @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Προσθέστε χαρακτηριστικό - - - - Remove feature - Αφαιρέστε χαρακτηριστικό - - - - List can be reordered by dragging - Η λίστα μπορεί να αναδιαταχθεί με σύρσιμο - - - + Axis Άξονας - + Reverse direction Αντίστροφη κατεύθυνση - + Mode Λειτουργία - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Γωνία - + Offset Μετατοπίστε - + Occurrences Επαναλήψεις - - OK - ΟΚ - - - - Update view - Ανανέωση προβολής - - - - Remove - Αφαίρεση - - - + Error Σφάλμα @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Προσθέστε χαρακτηριστικό - - - - Remove feature - Αφαιρέστε χαρακτηριστικό - - - + Factor Παράγοντας - + Occurrences Επαναλήψεις - - - OK - ΟΚ - - - - Update view - Ανανέωση προβολής - - - - Remove - Αφαίρεση - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Αφαίρεση + + + Normal sketch axis Κανονικός άξονας σκίτσου - + Vertical sketch axis Κάθετος άξονας σκίτσου - + Horizontal sketch axis Οριζόντιος άξονας σκίτσου - - + + Construction line %1 Γραμμή κατασκευής %1 - + Base X axis Άξονας X βάσης - + Base Y axis Άξονας Y βάσης - + Base Z axis Άξονας Z βάσης - - + + Select reference... Επιλογή αναφοράς... - + Base XY plane Επίπεδο XY βάσης - + Base YZ plane Επίπεδο YZ βάσης - + Base XZ plane Επίπεδο XZ βάσης + + + Add feature + Προσθέστε χαρακτηριστικό + + + + Remove feature + Αφαιρέστε χαρακτηριστικό + + + + List can be reordered by dragging + Η λίστα μπορεί να αναδιαταχθεί με σύρσιμο + + + + Update view + Ανανέωση προβολής + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ click again to end selection Παρακαλώ δημιουργήστε πρώτα ένα επίπεδο ή επιλέξτε την όψη πάνω στην οποία θα δημιουργήσετε σκαρίφημα + + + + + + + - - - - - - - A dialog is already open in the task panel A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? Do you want to close this dialog? @@ -3747,14 +3637,14 @@ This may lead to unexpected results. Δεν είναι εφικτό να δημιουργήσετε αφαιρετικό χαρακτηριστικό χωρίς κάποιο διαθέσιμο χαρακτηριστικό βάσης + - Vertical sketch axis Κάθετος άξονας σκίτσου + - Horizontal sketch axis Οριζόντιος άξονας σκίτσου @@ -3808,15 +3698,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Προκειμένου να χρησιμοποιήσετε αυτό το χαρακτηριστικό θα πρέπει να ανήκει σε κάποιο εξάρτημα που βρίσκεται στο έγγραφο. - - + + Edit %1 Επεξεργασία %1 - + Set colors... Ορίστε χρώματα... @@ -4736,83 +4626,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4875,8 +4765,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ over 90: larger hole radius at the bottom - the selected sketch does not belong to the active Body. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4904,14 +4794,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4961,47 +4851,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5071,15 +4961,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-AR.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-AR.ts index 63b27723a3..0347e6108a 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-AR.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-AR.ts @@ -883,8 +883,8 @@ False=engranaje interno Clona - + Make copy Copia @@ -909,8 +909,8 @@ False=engranaje interno Crear Booleano - + Add a Body Añadir un Cuerpo @@ -940,22 +940,22 @@ False=engranaje interno Mover un objeto dentro del árbol - + Mirrored Simetría - + Make LinearPattern Hacer Patrón Lineal - + PolarPattern Patrón Polar - + Scaled Escalado @@ -2057,73 +2057,43 @@ haga clic de nuevo para finalizar la selección PartDesignGui::TaskLinearPatternParameters - - Add feature - Agregar operación - - - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - + Direction Sentido - + Reverse direction Invertir dirección - + Mode Modo - + Overall Length Longitud total - - + + Offset Desfase - + Length Longitud - + Occurrences Apariciones - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Eliminar - - - + Error Error @@ -2184,115 +2154,65 @@ haga clic de nuevo para finalizar la selección PartDesignGui::TaskMirroredParameters - - Add feature - Agregar operación - - - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - + Plane Plano - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Eliminar - - - + Error Error PartDesignGui::TaskMultiTransformParameters - - - Add feature - Agregar operación - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - Transformations Transformaciones - - Update view - Actualizar vista + + OK + Aceptar - - Remove - Eliminar - - - + Edit Editar - + Delete Eliminar - + Add mirrored transformation Agregar transformación de simetría - + Add linear pattern Agregar patrón lineal - + Add polar pattern Agregar patrón polar - + Add scaled transformation Agregar transformación de escalado - + Move up Subir - + Move down Bajar @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Agregar operación - - - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - + Axis Eje - + Reverse direction Invertir dirección - + Mode Modo - + Overall Angle Ángulo general - + Offset Angle Ángulo de desplazamiento - + Angle Ángulo - + Offset Desfase - + Occurrences Apariciones - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Eliminar - - - + Error Error @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Agregar operación - - - - Remove feature - Eliminar operación - - - + Factor Factor - + Occurrences Apariciones - - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Eliminar - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ haga clic de nuevo para finalizar la selección PartDesignGui::TaskTransformedParameters - + + Remove + Eliminar + + + Normal sketch axis Normal al boceto - + Vertical sketch axis Eje vertical del croquis - + Horizontal sketch axis Eje horizontal del croquis - - + + Construction line %1 Línea de construcción %1 - + Base X axis Eje X base - + Base Y axis Eje Y base - + Base Z axis Eje Z base - - + + Select reference... Seleccione referencia... - + Base XY plane Plano XY base - + Base YZ plane Plano YZ base - + Base XZ plane Plano XZ base + + + Add feature + Agregar operación + + + + Remove feature + Eliminar operación + + + + List can be reordered by dragging + La lista puede ser reordenada arrastrando + + + + Update view + Actualizar vista + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ haga clic de nuevo para finalizar la selección Por favor, crea un plano primero o selecciona una cara para croquizar + + + + + + + - - - - - - - A dialog is already open in the task panel Un diálogo ya está abierto en el panel de tareas + + + + + + + - - - - - - - Do you want to close this dialog? ¿Desea cerrar este diálogo? @@ -3747,14 +3637,14 @@ Esto puede conducir a resultados inesperados. No es posible crear una operación sustractiva sin una operación base disponible + - Vertical sketch axis Eje vertical del croquis + - Horizontal sketch axis Eje horizontal del croquis @@ -3808,15 +3698,15 @@ Si tienes un documento heredado con objetos DiseñoDePieza sin un Cuerpo, utiliz Para poder utilizar esta operación necesita pertenecer a un objeto de pieza en el documento. - - + + Edit %1 Editar %1 - + Set colors... Establecer colores... @@ -4699,12 +4589,12 @@ más de 90: radio de agujero más grande en la parte inferior Shaft design wizard... - Asistente de diseño de ejes... + Asistente de diseño de eje... Start the shaft design wizard - Inicia el asistente de diseño de ejes + Iniciar el asistente de diseño de ejes @@ -4735,83 +4625,83 @@ más de 90: radio de agujero más grande en la parte inferior BaseFeature tiene una forma vacía - + Cannot do boolean cut without BaseFeature No se puede hacer el corte booleano sin la BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives No se puede hacer booleano con nada más que Part::Feature y sus derivados - + Cannot do boolean operation with invalid base shape No se puede realizar la operación booleana con forma base inválida - + Cannot do boolean on feature which is not in a body No se puede hacer booleano en una característica que no está en un cuerpo - + Base shape is null La forma base es nula - + Tool shape is null Forma de herramienta es nula - + Fusion of tools failed Fusión de herramientas fallida - - - - - + - + + + + + Resulting shape is not a solid La forma resultante no es un sólido - + Cut out failed Fallo al cortar - + Common operation failed Operación común fallida - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. El resultado tiene múltiples sólidos: esto no está soportado actualmente. @@ -4874,8 +4764,8 @@ más de 90: radio de agujero más grande en la parte inferior Ángulo de ranura demasiado pequeño - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4886,14 +4776,14 @@ más de 90: radio de agujero más grande en la parte inferior - el croquis seleccionado no pertenece al Cuerpo activo. - + Creating a face from sketch failed Fallo al crear una cara a partir del croquis - + Revolve axis intersects the sketch Eje de revolución interseca el croquis @@ -4903,14 +4793,14 @@ más de 90: radio de agujero más grande en la parte inferior Recorte de función base fallido - + Could not revolve the sketch! No se pudo revolucionar el croquis! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. No se pudo crear la cara a partir del croquis. @@ -4960,47 +4850,47 @@ No se permiten las entidades de croquis intersectas en un croquis. Error: La cara debe ser planar - + Error: Could not build Error: No se pudo construir - - - + + + Error: Result is not a solid Error: El resultado no es un sólido - + Error: There is nothing to subtract Error: No hay nada que restar - - - + + + Error: Result has multiple solids Error: El resultado tiene múltiples sólidos - + Error: Adding the helix failed Error: Error al añadir la hélice - + Error: Intersecting the helix failed Error: Fallo al intersecar la hélice - + Error: Subtracting the helix failed Error: Error al restar la hélice - + Error: Could not create face from sketch Error: No se pudo crear la cara a partir del croquis @@ -5070,15 +4960,15 @@ No se permiten las entidades de croquis intersectas en un croquis. Error: Error al añadir la rosca - + Boolean operation failed Operación booleana fallida - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. No se pudo crear la cara a partir del croquis. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.ts index 5c11620c4b..b6e47e2f49 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.ts @@ -883,8 +883,8 @@ para que se evite la auto intersección. Crear Clon - + Make copy Hacer copia @@ -909,8 +909,8 @@ para que se evite la auto intersección. Crear Booleano - + Add a Body Añadir un Cuerpo @@ -940,22 +940,22 @@ para que se evite la auto intersección. Mover un objeto dentro del árbol - + Mirrored Simetría - + Make LinearPattern Hacer Patrón Lineal - + PolarPattern Patrón Polar - + Scaled Escalado @@ -2057,73 +2057,43 @@ haga clic de nuevo para finalizar la selección PartDesignGui::TaskLinearPatternParameters - - Add feature - Añadir una caracteristica - - - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - + Direction Dirección - + Reverse direction Invertir dirección - + Mode Modo - + Overall Length Longitud total - - + + Offset Desplazamiento - + Length Longitud - + Occurrences Apariciones - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Quitar - - - + Error Error @@ -2184,115 +2154,65 @@ haga clic de nuevo para finalizar la selección PartDesignGui::TaskMirroredParameters - - Add feature - Añadir una caracteristica - - - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - + Plane Plano - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Quitar - - - + Error Error PartDesignGui::TaskMultiTransformParameters - - - Add feature - Añadir una caracteristica - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - Transformations Transformaciones - - Update view - Actualizar vista + + OK + Aceptar - - Remove - Quitar - - - + Edit Editar - + Delete Borrar - + Add mirrored transformation Añadir transformación de simetría - + Add linear pattern Añadir patrón lineal - + Add polar pattern Añadir patrón polar - + Add scaled transformation Añadir transformación escalada - + Move up Mover hacia arriba - + Move down Mover hacia abajo @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Añadir una caracteristica - - - - Remove feature - Eliminar operación - - - - List can be reordered by dragging - La lista puede ser reordenada arrastrando - - - + Axis Eje - + Reverse direction Invertir dirección - + Mode Modo - + Overall Angle Ángulo general - + Offset Angle Ángulo de desplazamiento - + Angle Ángulo - + Offset Desplazamiento - + Occurrences Apariciones - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Quitar - - - + Error Error @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Añadir una caracteristica - - - - Remove feature - Eliminar operación - - - + Factor Factor - + Occurrences Apariciones - - - OK - Aceptar - - - - Update view - Actualizar vista - - - - Remove - Quitar - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ haga clic de nuevo para finalizar la selección PartDesignGui::TaskTransformedParameters - + + Remove + Quitar + + + Normal sketch axis Normal al boceto - + Vertical sketch axis Eje vertical del croquis - + Horizontal sketch axis Eje horizontal del croquis - - + + Construction line %1 Línea de construcción %1 - + Base X axis Eje X base - + Base Y axis Eje Y base - + Base Z axis Eje Z base - - + + Select reference... Seleccione referencia... - + Base XY plane Plano XY base - + Base YZ plane Plano YZ base - + Base XZ plane Plano XZ base + + + Add feature + Añadir una caracteristica + + + + Remove feature + Eliminar operación + + + + List can be reordered by dragging + La lista puede ser reordenada arrastrando + + + + Update view + Actualizar vista + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ haga clic de nuevo para finalizar la selección Por favor, crea un plano primero o selecciona una cara para croquizar + + + + + + + - - - - - - - A dialog is already open in the task panel Un diálogo ya está abierto en el panel de tareas + + + + + + + - - - - - - - Do you want to close this dialog? ¿Desea cerrar este diálogo? @@ -3743,14 +3633,14 @@ This may lead to unexpected results. No es posible crear una función de resta sin una base característica disponible + - Vertical sketch axis Eje vertical del croquis + - Horizontal sketch axis Eje horizontal del croquis @@ -3804,15 +3694,15 @@ Si tienes un documento heredado con objetos PartDesign sin un Cuerpo, utiliza la Para poder usar esta operación debe pertenecer a una pieza objeto en el documento. - - + + Edit %1 Editar %1 - + Set colors... Ajustar colores... @@ -4731,83 +4621,83 @@ más de 90: radio de agujero más grande en la parte inferior Característica base tiene una forma vacía - + Cannot do boolean cut without BaseFeature No se puede hacer el corte booleano sin la BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives No se puede hacer booleano con nada más que Part::Feature y sus derivados - + Cannot do boolean operation with invalid base shape No se puede realizar la operación booleana con una forma de base inválida - + Cannot do boolean on feature which is not in a body No se puede hacer booleana en una característica que no está en un cuerpo - + Base shape is null La forma base es nula - + Tool shape is null Forma de herramienta es nula - + Fusion of tools failed Fusión de herramientas fallida - - - - - + - + + + + + Resulting shape is not a solid La forma resultante no es un sólido - + Cut out failed Recorte fallido - + Common operation failed Operación común fallida - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. El resultado tiene múltiples sólidos: que no está soportado actualmente. @@ -4870,8 +4760,8 @@ más de 90: radio de agujero más grande en la parte inferior Ángulo de ranura demasiado pequeño - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4882,14 +4772,14 @@ más de 90: radio de agujero más grande en la parte inferior - el croquis seleccionado no pertenece al Cuerpo activo. - + Creating a face from sketch failed Fallo al crear una cara a partir del croquis - + Revolve axis intersects the sketch El eje de revolución intercepta el croquis @@ -4899,14 +4789,14 @@ más de 90: radio de agujero más grande en la parte inferior Recorte de función base fallido - + Could not revolve the sketch! ¡No se puede girar el boceto! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. No se pudo crear la cara a partir del boceto. @@ -4956,47 +4846,47 @@ No se permite la intersección de entidades en un boceto. Error: La cara debe ser planar - + Error: Could not build Error: No se pudo construir - - - + + + Error: Result is not a solid Error: El resultado no es un sólido - + Error: There is nothing to subtract Error: No hay nada que sustraer - - - + + + Error: Result has multiple solids Error: El resultado tiene múltiples sólidos - + Error: Adding the helix failed Error: Fallo al añadir la hélice - + Error: Intersecting the helix failed Error: Fallo al interceptar la hélice - + Error: Subtracting the helix failed Error: Error al sustraer la hélice - + Error: Could not create face from sketch Error: No se pudo crear la cara a partir del boceto @@ -5066,15 +4956,15 @@ No se permite la intersección de entidades en un boceto. Error: Fallo al añadir la rosca - + Boolean operation failed Operación booleana fallida - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. No se pudo crear la cara a partir del croquis. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.ts index 72dbe80a02..002c2d5998 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.ts @@ -882,8 +882,8 @@ so that self intersection is avoided. Sortu klona - + Make copy Egin kopia @@ -908,8 +908,8 @@ so that self intersection is avoided. Sortu boolearra - + Add a Body Gehitu gorputz bat @@ -939,22 +939,22 @@ so that self intersection is avoided. Aldatu objektu bat lekuz zuhaitzaren barruan - + Mirrored Ispilatua - + Make LinearPattern Sortu eredu lineala - + PolarPattern Eredu polarra - + Scaled Eskalatua @@ -2056,73 +2056,43 @@ sakatu berriro hautapena amaitzeko PartDesignGui::TaskLinearPatternParameters - - Add feature - Gehitu elementua - - - - Remove feature - Kendu elementua - - - - List can be reordered by dragging - Zerrenda ordenatzeko, arrastatu elementuak - - - + Direction Norabidea - + Reverse direction Alderantzikatu norabidea - + Mode Modua - + Overall Length Luzera osoa - - + + Offset Desplazamendua - + Length Luzera - + Occurrences Gertaldiak - - OK - Ados - - - - Update view - Eguneratu bista - - - - Remove - Kendu - - - + Error Errorea @@ -2183,115 +2153,65 @@ sakatu berriro hautapena amaitzeko PartDesignGui::TaskMirroredParameters - - Add feature - Gehitu elementua - - - - Remove feature - Kendu elementua - - - - List can be reordered by dragging - Zerrenda ordenatzeko, arrastatu elementuak - - - + Plane Planoa - - OK - Ados - - - - Update view - Eguneratu bista - - - - Remove - Kendu - - - + Error Errorea PartDesignGui::TaskMultiTransformParameters - - - Add feature - Gehitu elementua - - Remove feature - Kendu elementua - - - - List can be reordered by dragging - Zerrenda ordenatzeko, arrastatu elementuak - - - Transformations Transformazioak - - Update view - Eguneratu bista + + OK + Ados - - Remove - Kendu - - - + Edit Editatu - + Delete Ezabatu - + Add mirrored transformation Gehitu ispilu-transformazioa - + Add linear pattern Gehitu eredu lineala - + Add polar pattern Gehitu eredu polarra - + Add scaled transformation Gehitu eskaladun transformazioa - + Move up Mugitu gora - + Move down Mugitu behera @@ -2746,77 +2666,47 @@ zehaztutako norabidean PartDesignGui::TaskPolarPatternParameters - - Add feature - Gehitu elementua - - - - Remove feature - Kendu elementua - - - - List can be reordered by dragging - Zerrenda ordenatzeko, arrastatu elementuak - - - + Axis Ardatza - + Reverse direction Alderantzikatu norabidea - + Mode Modua - + Overall Angle Angelu osoa - + Offset Angle Desplazamendu-angelua - + Angle Angelua - + Offset Desplazamendua - + Occurrences Gertaldiak - - OK - Ados - - - - Update view - Eguneratu bista - - - - Remove - Kendu - - - + Error Errorea @@ -2952,40 +2842,15 @@ zehaztutako norabidean PartDesignGui::TaskScaledParameters - - Add feature - Gehitu elementua - - - - Remove feature - Kendu elementua - - - + Factor Faktorea - + Occurrences Gertaldiak - - - OK - Ados - - - - Update view - Eguneratu bista - - - - Remove - Kendu - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ sakatu berriro hautapena amaitzeko PartDesignGui::TaskTransformedParameters - + + Remove + Kendu + + + Normal sketch axis Krokisaren ardatz normala - + Vertical sketch axis Krokisaren ardatz bertikala - + Horizontal sketch axis Krokisaren ardatz horizontala - - + + Construction line %1 %1 eraikuntza-lerroa - + Base X axis Oinarriko X ardatza - + Base Y axis Oinarriko Y ardatza - + Base Z axis Oinarriko Z ardatza - - + + Select reference... Hautatu erreferentzia... - + Base XY plane Oinarriko XY planoa - + Base YZ plane Oinarriko YZ planoa - + Base XZ plane Oinarriko XZ planoa + + + Add feature + Gehitu elementua + + + + Remove feature + Kendu elementua + + + + List can be reordered by dragging + Zerrenda ordenatzeko, arrastatu elementuak + + + + Update view + Eguneratu bista + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ sakatu berriro hautapena amaitzeko Krokisa sortzeko, lehenengo sortu plano bat edo hautatu aurpegi bat + + + + + + + - - - - - - - A dialog is already open in the task panel Elkarrizketa-koadro bat irekita dago ataza-panelean + + + + + + + - - - - - - - Do you want to close this dialog? Elkarrizketa-koadro hau itxi nahi duzu? @@ -3745,14 +3635,14 @@ Espero ez diren emaitzak gerta daitezke. Ezin da elementu kentzaile bat sortu oinarri-elementu bat erabilgarri ez badago + - Vertical sketch axis Krokisaren ardatz bertikala + - Horizontal sketch axis Krokisaren ardatz horizontala @@ -3806,15 +3696,15 @@ Bertsio zaharragoan dagoen dokumentu bat baduzu eta gorputzik gabeko PartDesign Ezaugarri hau erabili ahal izateko, dokumentuko pieza-objektu batekoa izan behar du. - - + + Edit %1 Editatu %1 - + Set colors... Ezarri koloreak... @@ -4734,83 +4624,83 @@ over 90: larger hole radius at the bottom Oinarri-elementuak hutsik dagoen forma bat du - + Cannot do boolean cut without BaseFeature Ezin da mozte boolearra egin oinarri-elementurik gabe - - + + Cannot do boolean with anything but Part::Feature and its derivatives Ezin da boolearra egin ez bada Part::Feature eta bere eratorriekin - + Cannot do boolean operation with invalid base shape Ezin dira eragiketa boolearrak egin oinarri-forma baliogabearekin - + Cannot do boolean on feature which is not in a body Ezin da boolearra egin gorputza ez den elementu batekin - + Base shape is null Oinarri-forma nulua da - + Tool shape is null Tresna-forma nulua da - + Fusion of tools failed Tresnen fusioak huts egin du - - - - - + - + + + + + Resulting shape is not a solid Emaitza gisa sortutako forma ez da solidoa - + Cut out failed Inausketak huts egin du - + Common operation failed Eragiketa arrunt batek huts egin du - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Emaitzak solido anitz ditu: hori ez da onartzen momentuz. @@ -4873,8 +4763,8 @@ over 90: larger hole radius at the bottom Artekaren angelua txikiegia da - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4885,14 +4775,14 @@ over 90: larger hole radius at the bottom - hautatutako krokisa ez da gorputz aktiboarena. - + Creating a face from sketch failed Huts egin du aurpegia krokis batetik sortzeak - + Revolve axis intersects the sketch Erreboluzio-ardatzak krokisa ebakitzen du @@ -4902,14 +4792,14 @@ over 90: larger hole radius at the bottom Oinarri-elementuaren inausketak huts egin du - + Could not revolve the sketch! Ezin da krokisa erreboluzionatu - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Ezin da aurpegia sortu krokisetik abiatuta. @@ -4959,47 +4849,47 @@ Ez da onartzen krokis bateko entitateak ebakitzea. Errorea: Aurpegiak planarra izan behar du - + Error: Could not build Errorea: Ezin da eraiki - - - + + + Error: Result is not a solid Errorea: Emaitza ez da solidoa - + Error: There is nothing to subtract Errorea: Ez dago kenketa egiteko ezer - - - + + + Error: Result has multiple solids Errorea: Emaitzak solido anitz ditu - + Error: Adding the helix failed Errorea: Helizea gehitzeak huts egin du - + Error: Intersecting the helix failed Errorea: Helizea ebakitzeak huts egin du - + Error: Subtracting the helix failed Errorea: Helizearen kenketa egiteak huts egin du - + Error: Could not create face from sketch Errorea: Ezin da aurpegia krokisetik sortu @@ -5069,15 +4959,15 @@ Ez da onartzen krokis bateko entitateak ebakitzea. Errorea: Haria gehitzeak huts egin du - + Boolean operation failed Eragiketa boolearrak huts egin du - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Ezin da aurpegia sortu krokisetik abiatuta. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.ts index 26085fdce5..e6ea9357b2 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Luo klooni - + Make copy Tee kopio @@ -909,8 +909,8 @@ so that self intersection is avoided. Create Boolean - + Add a Body Add a Body @@ -940,22 +940,22 @@ so that self intersection is avoided. Move an object inside tree - + Mirrored Peilattu - + Make LinearPattern Make LinearPattern - + PolarPattern Ympyräsäännöllinen toistokuvio - + Scaled Skaalattu @@ -2057,73 +2057,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Lisää piirre - - - - Remove feature - Poista piirre - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Direction Suunta - + Reverse direction Vastakkainen suunta - + Mode Tila - + Overall Length Overall Length - - + + Offset Siirtymä - + Length Pituus - + Occurrences Tapahtumaa - - OK - OK - - - - Update view - Päivitä näkymä - - - - Remove - Poista - - - + Error Virhe @@ -2184,115 +2154,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Lisää piirre - - - - Remove feature - Poista piirre - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Plane Taso - - OK - OK - - - - Update view - Päivitä näkymä - - - - Remove - Poista - - - + Error Virhe PartDesignGui::TaskMultiTransformParameters - - - Add feature - Lisää piirre - - Remove feature - Poista piirre - - - - List can be reordered by dragging - List can be reordered by dragging - - - Transformations Muunnokset - - Update view - Päivitä näkymä + + OK + OK - - Remove - Poista - - - + Edit Muokkaa - + Delete Poista - + Add mirrored transformation Lisää peilattu muunnos - + Add linear pattern Lisää lineaarinen kuvio - + Add polar pattern Lisää suunnattu kuvio - + Add scaled transformation Lisää skaalattu muunnos - + Move up Siirrä ylös - + Move down Siirrä alas @@ -2747,77 +2667,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Lisää piirre - - - - Remove feature - Poista piirre - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Axis Akseli - + Reverse direction Vastakkainen suunta - + Mode Tila - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Kulma - + Offset Siirtymä - + Occurrences Tapahtumaa - - OK - OK - - - - Update view - Päivitä näkymä - - - - Remove - Poista - - - + Error Virhe @@ -2953,40 +2843,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Lisää piirre - - - - Remove feature - Poista piirre - - - + Factor Tekijä - + Occurrences Tapahtumaa - - - OK - OK - - - - Update view - Päivitä näkymä - - - - Remove - Poista - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Poista + + + Normal sketch axis Normaali luonnos akseli - + Vertical sketch axis Pystysuuntaisen luonnoksen akseli - + Horizontal sketch axis Vaakasuuntaisen luonnoksen akseli - - + + Construction line %1 Rakennuslinja %1 - + Base X axis Perustan X-akseli - + Base Y axis Perustan Y-akseli - + Base Z axis Perustan Z-akseli - - + + Select reference... Valitse viite... - + Base XY plane Perustan XY-taso - + Base YZ plane Perustan YZ-taso - + Base XZ plane Perustan XZ-taso + + + Add feature + Lisää piirre + + + + Remove feature + Poista piirre + + + + List can be reordered by dragging + List can be reordered by dragging + + + + Update view + Päivitä näkymä + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ click again to end selection Luo ensin taso tai valitse pinta jolle luonnos tehdään + + + + + + + - - - - - - - A dialog is already open in the task panel Valintaikkuna on jo avoinna tehtäväpaneelissa + + + + + + + - - - - - - - Do you want to close this dialog? Haluatko sulkea tämän valintaikkunan? @@ -3748,14 +3638,14 @@ Tämä voi johtaa odottamattomiin tuloksiin. Ei ole mahdollista tehdä leikkaavaa piirrettä ilman olemassaolevaa peruspiirrettä + - Vertical sketch axis Pystysuuntaisen luonnoksen akseli + - Horizontal sketch axis Vaakasuuntaisen luonnoksen akseli @@ -3809,15 +3699,15 @@ Jos asiakirja on vanhentunutta tyyppiä OsanSuunnittelu-objekteilla ilman kappal Jotta tätä piirrettä voitaisiin käyttää, sen pitäisi kuulua asiakirjaan sisältyvään osa-objektiin. - - + + Edit %1 Muokkaa %1 - + Set colors... Määritä värit ... @@ -4736,83 +4626,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4875,8 +4765,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ over 90: larger hole radius at the bottom - the selected sketch does not belong to the active Body. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4904,14 +4794,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4961,47 +4851,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5071,15 +4961,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.ts index 7506289a95..4d6358c284 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.ts @@ -884,8 +884,8 @@ False=engrenage interne Créer un clone - + Make copy Faire une copie @@ -910,8 +910,8 @@ False=engrenage interne Créer un booléen - + Add a Body Ajouter un corps @@ -941,22 +941,22 @@ False=engrenage interne Déplacer un objet dans l'arborescence - + Mirrored Symétrie - + Make LinearPattern Répétition linéaire - + PolarPattern Répétition circulaire - + Scaled Mise à l'échelle @@ -2052,73 +2052,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Ajouter une fonction - - - - Remove feature - Supprimer une fonction - - - - List can be reordered by dragging - La liste peut être réordonnée en faisant glisser - - - + Direction Direction - + Reverse direction Inverser la direction - + Mode Mode - + Overall Length Longueur globale - - + + Offset Décaler - + Length Longueur - + Occurrences Occurrences - - OK - OK - - - - Update view - Mettre à jour la vue - - - - Remove - Supprimer - - - + Error Erreur @@ -2179,115 +2149,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Ajouter une fonction - - - - Remove feature - Supprimer une fonction - - - - List can be reordered by dragging - La liste peut être réordonnée en faisant glisser - - - + Plane Plan - - OK - OK - - - - Update view - Mettre à jour la vue - - - - Remove - Supprimer - - - + Error Erreur PartDesignGui::TaskMultiTransformParameters - - - Add feature - Ajouter une fonction - - Remove feature - Supprimer une fonction - - - - List can be reordered by dragging - La liste peut être réordonnée en faisant glisser - - - Transformations Transformations - - Update view - Mettre à jour la vue + + OK + OK - - Remove - Supprimer - - - + Edit Éditer - + Delete Supprimer - + Add mirrored transformation Ajouter une fonction de symétrie - + Add linear pattern Ajouter une répétition linéaire - + Add polar pattern Ajouter une répétition circulaire - + Add scaled transformation Ajouter une transformation de mise à l'échelle - + Move up Déplacer vers le haut - + Move down Déplacer vers le bas @@ -2740,77 +2660,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Ajouter une fonction - - - - Remove feature - Supprimer une fonction - - - - List can be reordered by dragging - La liste peut être réordonnée en faisant glisser - - - + Axis Axe - + Reverse direction Inverser la direction - + Mode Mode - + Overall Angle Angle global - + Offset Angle Angle de décalage - + Angle Angle - + Offset Décaler - + Occurrences Occurrences - - OK - OK - - - - Update view - Mettre à jour la vue - - - - Remove - Supprimer - - - + Error Erreur @@ -2946,40 +2836,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Ajouter une fonction - - - - Remove feature - Supprimer une fonction - - - + Factor Facteur - + Occurrences Occurrences - - - OK - OK - - - - Update view - Mettre à jour la vue - - - - Remove - Supprimer - PartDesignGui::TaskShapeBinder @@ -3101,62 +2966,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Supprimer + + + Normal sketch axis Axe normal à l'esquisse - + Vertical sketch axis Axe vertical de l'esquisse - + Horizontal sketch axis Axe horizontal de l'esquisse - - + + Construction line %1 Ligne de construction %1 - + Base X axis Axe X - + Base Y axis Axe Y - + Base Z axis Axe Z - - + + Select reference... Sélectionner une référence... - + Base XY plane Plan XY - + Base YZ plane Plan YZ - + Base XZ plane Plan XZ + + + Add feature + Ajouter une fonction + + + + Remove feature + Supprimer une fonction + + + + List can be reordered by dragging + La liste peut être réordonnée en faisant glisser + + + + Update view + Mettre à jour la vue + PartDesignGui::ViewProviderChamfer @@ -3450,28 +3340,28 @@ click again to end selection Créer d'abord un plan ou choisir une face sur laquelle appliquer l'esquisse + + + + + + + - - - - - - - A dialog is already open in the task panel Une boîte de dialogue est déjà ouverte dans le panneau des tâches + + + + + + + - - - - - - - Do you want to close this dialog? Voulez-vous fermer cette boîte de dialogue? @@ -3733,14 +3623,14 @@ This may lead to unexpected results. Il n’est pas possible de créer une fonction soustractive sans une fonction de base présente + - Vertical sketch axis Axe vertical de l'esquisse + - Horizontal sketch axis Axe horizontal de l'esquisse @@ -3794,15 +3684,15 @@ Si vous avez un vieux document avec des objets PartDesign sans corps, utilisez l Afin d'utiliser cette fonction, elle doit appartenir à un objet pièce dans le document. - - + + Edit %1 Modifier %1 - + Set colors... Définir les couleurs... @@ -4718,83 +4608,83 @@ plus de 90 : rayon du trou plus grand à la base BaseFeature a une forme vide - + Cannot do boolean cut without BaseFeature Impossible de faire une coupe booléenne sans BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Impossible de faire un booléen avec autre chose qu'un Part::Feature et ses dérivés - + Cannot do boolean operation with invalid base shape Impossible de faire une opération booléenne avec une forme de base invalide - + Cannot do boolean on feature which is not in a body Impossible de faire un booléen sur une fonctionnalité qui n'est pas dans un corps - + Base shape is null La forme de base est nulle - + Tool shape is null La forme de l'outil est nulle - + Fusion of tools failed La fusion des outils a échoué - - - - - + - + + + + + Resulting shape is not a solid La forme résultante n'est pas un solide - + Cut out failed La découpe a échoué - + Common operation failed L'opération commune a échoué - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Le résultat a plusieurs solides : ce n'est pas pris en charge pour le moment. @@ -4857,8 +4747,8 @@ plus de 90 : rayon du trou plus grand à la base Angle de rainure trop petit - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4868,14 +4758,14 @@ plus de 90 : rayon du trou plus grand à la base - l'esquisse sélectionnée n'appartient pas au corps actif. - + Creating a face from sketch failed La création d'une face à partir de l'esquisse a échoué - + Revolve axis intersects the sketch L'axe de révolution coupe l'esquisse @@ -4885,14 +4775,14 @@ plus de 90 : rayon du trou plus grand à la base La découpe de l'élément de base a échoué - + Could not revolve the sketch! Impossible de tourner l'esquisse ! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Impossible de créer une face à partir de l'esquisse. @@ -4942,47 +4832,47 @@ Les entités d'intersection d'esquisse dans une esquisse ne sont pas autorisées Erreur : la face doit être plane - + Error: Could not build Erreur : impossible de construire - - - + + + Error: Result is not a solid Erreur : le résultat n'est pas un solide - + Error: There is nothing to subtract Erreur : il n'y a rien à soustraire - - - + + + Error: Result has multiple solids Erreur : le résultat a plusieurs solides - + Error: Adding the helix failed Erreur : l'ajout de l'hélice a échoué - + Error: Intersecting the helix failed Erreur : l'intersection de l'hélice a échoué - + Error: Subtracting the helix failed Erreur : la soustraction de l'hélice a échoué - + Error: Could not create face from sketch Erreur: Impossible de créer une face à partir de l'esquisse @@ -5052,15 +4942,15 @@ Les entités d'intersection d'esquisse dans une esquisse ne sont pas autorisées Erreur : L'ajout du fil de suivi a échoué - + Boolean operation failed L'opération booléenne a échoué - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Impossible de créer une face à partir d'une esquisse. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.ts index d07a45cb4f..2daec1b494 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Create Clone - + Make copy Fai copia @@ -909,8 +909,8 @@ so that self intersection is avoided. Crear un booleano - + Add a Body Engadir corpo @@ -940,22 +940,22 @@ so that self intersection is avoided. Move an object inside tree - + Mirrored Reflectido - + Make LinearPattern Make LinearPattern - + PolarPattern Patrón polar - + Scaled Escalado @@ -2057,73 +2057,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Engadir característica - - - - Remove feature - Rexeitar característica - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Direction Dirección - + Reverse direction Reverse direction - + Mode Modo - + Overall Length Overall Length - - + + Offset Separación - + Length Lonxitude - + Occurrences Aparicións - - OK - Aceptar - - - - Update view - Actualizar a vista - - - - Remove - Rexeitar - - - + Error Erro @@ -2184,115 +2154,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Engadir característica - - - - Remove feature - Rexeitar característica - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Plane Plano - - OK - Aceptar - - - - Update view - Actualizar a vista - - - - Remove - Rexeitar - - - + Error Erro PartDesignGui::TaskMultiTransformParameters - - - Add feature - Engadir característica - - Remove feature - Rexeitar característica - - - - List can be reordered by dragging - List can be reordered by dragging - - - Transformations Transformacións - - Update view - Actualizar a vista + + OK + Aceptar - - Remove - Rexeitar - - - + Edit Editar - + Delete Desbotar - + Add mirrored transformation Engadir transformación de reflectido - + Add linear pattern Engadir patrón linear - + Add polar pattern Engadir patrón polar - + Add scaled transformation Engadir transformación de escalado - + Move up Mover cara arriba - + Move down Mover cara abaixo @@ -2747,77 +2667,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Engadir característica - - - - Remove feature - Rexeitar característica - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Axis Eixo - + Reverse direction Reverse direction - + Mode Modo - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Ángulo - + Offset Separación - + Occurrences Aparicións - - OK - Aceptar - - - - Update view - Actualizar a vista - - - - Remove - Rexeitar - - - + Error Erro @@ -2953,40 +2843,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Engadir característica - - - - Remove feature - Rexeitar característica - - - + Factor Factor - + Occurrences Aparicións - - - OK - Aceptar - - - - Update view - Actualizar a vista - - - - Remove - Rexeitar - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Rexeitar + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Vertical sketch axis - + Horizontal sketch axis Horizontal sketch axis - - + + Construction line %1 Liña de construción %1 - + Base X axis Eixe X de base - + Base Y axis Eixe Y de base - + Base Z axis Eixe Z de base - - + + Select reference... Select reference... - + Base XY plane Plano XY base - + Base YZ plane Plano Yz base - + Base XZ plane Plano XZ base + + + Add feature + Engadir característica + + + + Remove feature + Rexeitar característica + + + + List can be reordered by dragging + List can be reordered by dragging + + + + Update view + Actualizar a vista + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ click again to end selection Por favor, crear un plano de primeiro ou escolmar unha cara na que esbozar + + + + + + + - - - - - - - A dialog is already open in the task panel A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? Do you want to close this dialog? @@ -3748,14 +3638,14 @@ Esto pode levar a resultados inexperados. Non é posíbel crear unha característica subtractiva sen un recurso base dispoñíbel + - Vertical sketch axis Vertical sketch axis + - Horizontal sketch axis Horizontal sketch axis @@ -3809,15 +3699,15 @@ Se tes un antigo documento con obxectos PartDesign sen Corpo, usa a función mig Para usar este recurso é preciso que pertenza a un obxecto peza no documento. - - + + Edit %1 Editar %1 - + Set colors... Definir cores... @@ -4736,83 +4626,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4875,8 +4765,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ over 90: larger hole radius at the bottom - the selected sketch does not belong to the active Body. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4904,14 +4794,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4961,47 +4851,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5071,15 +4961,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.ts index 8545fe712b..98ed00d7f9 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.ts @@ -883,8 +883,8 @@ tako da je izbjegnuto samopresjecanje. Stvori klon - + Make copy Napravi kopiju @@ -909,8 +909,8 @@ tako da je izbjegnuto samopresjecanje. Stvori logičku vrijednost - + Add a Body Dodaj tjelo @@ -940,22 +940,22 @@ tako da je izbjegnuto samopresjecanje. Pomjeri jedan objekt unutar stabla - + Mirrored Zrcaljeno - + Make LinearPattern Napravi pravocrtne uzorke - + PolarPattern Polarni uzorak - + Scaled Skalirano @@ -2053,73 +2053,43 @@ kliknite ponovno za završetak odabira PartDesignGui::TaskLinearPatternParameters - - Add feature - Dodaj element - - - - Remove feature - Ukloni element - - - - List can be reordered by dragging - Popis se može promijeniti povlačenjem - - - + Direction Smjer - + Reverse direction Obrnutim smjerom - + Mode Način - + Overall Length Ukupna dužina - - + + Offset Pomak - + Length Dužina - + Occurrences Ponavljanja - - OK - U redu - - - - Update view - Ažuriraj pogled - - - - Remove - Ukloniti - - - + Error Pogreška @@ -2180,115 +2150,65 @@ kliknite ponovno za završetak odabira PartDesignGui::TaskMirroredParameters - - Add feature - Dodaj element - - - - Remove feature - Ukloni element - - - - List can be reordered by dragging - Popis se može promijeniti povlačenjem - - - + Plane Površina - - OK - U redu - - - - Update view - Ažuriraj pogled - - - - Remove - Ukloniti - - - + Error Pogreška PartDesignGui::TaskMultiTransformParameters - - - Add feature - Dodaj element - - Remove feature - Ukloni element - - - - List can be reordered by dragging - Popis se može promijeniti povlačenjem - - - Transformations Transformacije - - Update view - Ažuriraj pogled + + OK + U redu - - Remove - Ukloniti - - - + Edit Uredi - + Delete Izbriši - + Add mirrored transformation Dodaj zrcalnu transformaciju - + Add linear pattern Dodaj linearni uzorak - + Add polar pattern Dodaj polarni uzorak - + Add scaled transformation Dodaj skalirani uzorak - + Move up Pomakni gore - + Move down Pomakni dolje @@ -2747,77 +2667,47 @@ mjereno duž navedenog smjera PartDesignGui::TaskPolarPatternParameters - - Add feature - Dodaj element - - - - Remove feature - Ukloni element - - - - List can be reordered by dragging - Popis se može promijeniti povlačenjem - - - + Axis Osi - + Reverse direction Obrnutim smjerom - + Mode Način - + Overall Angle Ukupni kut - + Offset Angle Kut pomaka - + Angle Kut - + Offset Pomak - + Occurrences Ponavljanja - - OK - U redu - - - - Update view - Ažuriraj pogled - - - - Remove - Ukloniti - - - + Error Pogreška @@ -2953,40 +2843,15 @@ mjereno duž navedenog smjera PartDesignGui::TaskScaledParameters - - Add feature - Dodaj element - - - - Remove feature - Ukloni element - - - + Factor Faktor - + Occurrences Ponavljanja - - - OK - U redu - - - - Update view - Ažuriraj pogled - - - - Remove - Ukloniti - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ kliknite ponovno za završetak odabira PartDesignGui::TaskTransformedParameters - + + Remove + Ukloniti + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Vertikalna os skice - + Horizontal sketch axis Horizontalna os skice - - + + Construction line %1 Izgradnja linije %1 - + Base X axis Baza X osi - + Base Y axis Baza Y osi - + Base Z axis Baza Z osi - - + + Select reference... Select reference... - + Base XY plane Osnovna XY ploha - + Base YZ plane Osnovna YZ ploha - + Base XZ plane Osnovna XZ ploha + + + Add feature + Dodaj element + + + + Remove feature + Ukloni element + + + + List can be reordered by dragging + Popis se može promijeniti povlačenjem + + + + Update view + Ažuriraj pogled + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ kliknite ponovno za završetak odabira Molimo vas prvo stvorite ravninu ili odaberite lice za crtanje na + + + + + + + - - - - - - - A dialog is already open in the task panel Dijalog je već otvoren u ploči zadataka + + + + + + + - - - - - - - Do you want to close this dialog? Želite li zatvoriti ovaj dijalog? @@ -3749,14 +3639,14 @@ To može dovesti do neočekivanih rezultata. Nije moguće stvoriti dodavajući element bez pripadajućeg osnovnog elementa + - Vertical sketch axis Vertikalna os skice + - Horizontal sketch axis Horizontalna os skice @@ -3810,15 +3700,15 @@ Ako imate naslijeđeni dokument sa PartDesign objektom bez tijela koristite funk Da biste mogli koristiti ovu značajku ona mora pripadati objektu dio u dokumentu. - - + + Edit %1 Uređivanje %1 - + Set colors... Postavljanje boje ... @@ -4746,83 +4636,83 @@ preko 90: veći polumjer rupe na dnu BaznaZnačajka ima prazan oblik - + Cannot do boolean cut without BaseFeature Ne može se izvršiti rez bulovom operacijom bez BaznaZnačajka - - + + Cannot do boolean with anything but Part::Feature and its derivatives Ne može se izvršiti booleova opercija za sve osim za Komponenta::Značajka i njene izvedenice - + Cannot do boolean operation with invalid base shape Ne može se izvršiti booleova operacija sa neispravnim baznim oblikom - + Cannot do boolean on feature which is not in a body Ne može se izvršiti booleova operacija na značajki koja nije tijelo - + Base shape is null Bazni oblik je prazan - + Tool shape is null Oblik je prazan - + Fusion of tools failed Spajanje Alata nije uspjelo - - - - - + - + + + + + Resulting shape is not a solid Stvoreni oblik nije volumen tijelo - + Cut out failed Izrez nije uspjeo - + Common operation failed Uobičajena operacija nije uspjela - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Rezultat ima više volumenskih tijela: ovo trenutno nije podržano. @@ -4885,8 +4775,8 @@ preko 90: veći polumjer rupe na dnu Kut utora premali - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4897,14 +4787,14 @@ preko 90: veći polumjer rupe na dnu - odabrana skica ne pripada aktivnom tijelu. - + Creating a face from sketch failed Stvaranje lice od skice nije uspjelo - + Revolve axis intersects the sketch Os zaokreta presjeca skicu @@ -4914,14 +4804,14 @@ preko 90: veći polumjer rupe na dnu Izrez baznog elementa nije uspjelo - + Could not revolve the sketch! Nije moguće zavrtiti skicu! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Nije moguće napraviti površinu pomoću skice. @@ -4971,47 +4861,47 @@ Nije dozvoljeno presjecanje elemenata na skici. Greška: Površina mora biti ravna - + Error: Could not build Greška: nije moguće napraviti Heliks - - - + + + Error: Result is not a solid Greška: Rezultat nije volumensko tijelo - + Error: There is nothing to subtract Greška: nema ničega za oduzimanje - - - + + + Error: Result has multiple solids Greška: Rezultat ima višestruka volumenska tijela - + Error: Adding the helix failed Greška: Dodavanje heliksa nije uspjelo - + Error: Intersecting the helix failed Greška: presjecanje sa heliksom nije uspjelo - + Error: Subtracting the helix failed Greška: Oduzimanje heliksa nije uspjelo - + Error: Could not create face from sketch Greška: nije moguće napraviti površinu iz skice @@ -5081,16 +4971,16 @@ Nije dozvoljeno presjecanje elemenata na skici. Greška: Dodaj navoj nije uspjelo - + Boolean operation failed Booleanska operacija nije uspjela - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Nije moguće napraviti površinu pomoću skice. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.ts index 8f445a56c1..1ba5b19d8b 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.ts @@ -883,8 +883,8 @@ az önmetszés elkerülése érdekében. Klónozás - + Make copy Másolat készítése @@ -909,8 +909,8 @@ az önmetszés elkerülése érdekében. Logikai érték létrehozása - + Add a Body Test hozzáadás @@ -940,22 +940,22 @@ az önmetszés elkerülése érdekében. Egy tárgy mozgatása fába - + Mirrored Tükrözött - + Make LinearPattern Egyenes vonalú minta készítése - + PolarPattern Poláris kiosztás - + Scaled Méretezett @@ -2054,73 +2054,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Jellemző hozzáadása - - - - Remove feature - Jellemző törlése - - - - List can be reordered by dragging - A lista húzással átrendezhető - - - + Direction Irány - + Reverse direction Fordított irányban - + Mode Mód - + Overall Length Teljes hossz - - + + Offset Eltolás - + Length Hossz - + Occurrences Események - - OK - OK - - - - Update view - Nézetek frissítése - - - - Remove - Törlés - - - + Error Hiba @@ -2181,115 +2151,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Jellemző hozzáadása - - - - Remove feature - Jellemző törlése - - - - List can be reordered by dragging - A lista húzással átrendezhető - - - + Plane Sík - - OK - OK - - - - Update view - Nézetek frissítése - - - - Remove - Törlés - - - + Error Hiba PartDesignGui::TaskMultiTransformParameters - - - Add feature - Jellemző hozzáadása - - Remove feature - Jellemző törlése - - - - List can be reordered by dragging - A lista húzással átrendezhető - - - Transformations Átalakítások - - Update view - Nézetek frissítése + + OK + OK - - Remove - Törlés - - - + Edit Szerkesztés - + Delete Törlés - + Add mirrored transformation Tükrözött átalakítás hozzáadása - + Add linear pattern Lineáris minta hozzáadása - + Add polar pattern Sarki minta hozzáadása - + Add scaled transformation Méretezett átalakítás hozzáadása - + Move up Mozgatás felfelé - + Move down Mozgatás lefelé @@ -2743,77 +2663,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Jellemző hozzáadása - - - - Remove feature - Jellemző törlése - - - - List can be reordered by dragging - A lista húzással átrendezhető - - - + Axis Tengely - + Reverse direction Fordított irányban - + Mode Mód - + Overall Angle Teljes szög - + Offset Angle Eltolási szög - + Angle Szög - + Offset Eltolás - + Occurrences Események - - OK - OK - - - - Update view - Nézetek frissítése - - - - Remove - Törlés - - - + Error Hiba @@ -2949,40 +2839,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Jellemző hozzáadása - - - - Remove feature - Jellemző törlése - - - + Factor Tényező - + Occurrences Események - - - OK - OK - - - - Update view - Nézetek frissítése - - - - Remove - Törlés - PartDesignGui::TaskShapeBinder @@ -3105,62 +2970,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Törlés + + + Normal sketch axis Normál vázlat tengely - + Vertical sketch axis Vázlat függőleges tengelye - + Horizontal sketch axis Vázlat vízszintes tengelye - - + + Construction line %1 Építési egyenes %1 - + Base X axis Alap X tengely - + Base Y axis Alap Y tengely - + Base Z axis Alap Z tengely - - + + Select reference... Válasszon referenciát... - + Base XY plane Alap XY síkban - + Base YZ plane Alap YZ síkban - + Base XZ plane Alap XZ síkban + + + Add feature + Jellemző hozzáadása + + + + Remove feature + Jellemző törlése + + + + List can be reordered by dragging + A lista húzással átrendezhető + + + + Update view + Nézetek frissítése + PartDesignGui::ViewProviderChamfer @@ -3454,28 +3344,28 @@ click again to end selection Kérem, először hozzon létre egy síkot vagy válasszon egy felületet amin vázlatot készít + + + + + + + - - - - - - - A dialog is already open in the task panel Egy párbeszédablak már nyitva van a feladat panelen + + + + + + + - - - - - - - Do you want to close this dialog? Szeretné bezárni a párbeszédpanelt? @@ -3741,14 +3631,14 @@ Ez nem várt eredményekhez vezethet. Nincs lehetőség kivonandó funkció létrehozására az alap funkció nélkül + - Vertical sketch axis Vázlat függőleges tengelye + - Horizontal sketch axis Vázlat vízszintes tengelye @@ -3802,15 +3692,15 @@ Ha van egy örökölt dokumentum AlkatrészTervezés objektummal Test nélkül, Funkció használatához szükséges, hogy az egy alkatrész objektumhoz tartozzon a dokumentumban. - - + + Edit %1 %1 szerkesztése - + Set colors... Színek beállítása... @@ -4730,83 +4620,83 @@ over 90: larger hole radius at the bottom Az Alapvető tulajdonság alakja üres - + Cannot do boolean cut without BaseFeature Alaptulajdonság nélkül nem lehet logikai vágást végrehajtani - - + + Cannot do boolean with anything but Part::Feature and its derivatives Logikai művelet csak a Part::Feature tulajdonsággal és származékaival hajtható végre - + Cannot do boolean operation with invalid base shape Nem lehet logikai műveletet végrehajtani érvénytelen elsődleges alakzattal - + Cannot do boolean on feature which is not in a body Nem hajthat végre logikai műveletet olyan szolgáltatáson, amely nem szerepel a tartalomban - + Base shape is null Alapalakzat üres - + Tool shape is null A szerszám alakja üres - + Fusion of tools failed A szerszám csatlakoztatása sikertelen - - - - - + - + + + + + Resulting shape is not a solid Az eredmény alakzat nem szilárd test - + Cut out failed A kivágás sikertelen - + Common operation failed A közös művelet sikertelen - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Az eredménynek több szilárd teste van: ez jelenleg nem támogatott. @@ -4869,8 +4759,8 @@ over 90: larger hole radius at the bottom A horony szöge túl kicsi - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4880,14 +4770,14 @@ over 90: larger hole radius at the bottom - a kiválasztott vázlat nem az aktív testhez tartozik. - + Creating a face from sketch failed Nem sikerült felületet létrehozni vázlatból - + Revolve axis intersects the sketch A körbmetszési tengely metszi a vázlatot @@ -4897,14 +4787,14 @@ over 90: larger hole radius at the bottom Az alaptulajdonságból a kivágás sikertelen - + Could not revolve the sketch! Nem lehetett körmetszeni a vázlatot! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Nem sikerült felületet létrehozni vázlatból. @@ -4954,47 +4844,47 @@ A vázlatelemek metszése egy vázlatban nem engedélyezett. Hiba: A felületnek síkbelinek kell lennie - + Error: Could not build Hiba: Nem sikerült felépíteni - - - + + + Error: Result is not a solid Hiba: Az eredmény nem szilárd test - + Error: There is nothing to subtract Hiba: Nincs mit kivonni - - - + + + Error: Result has multiple solids Hiba: Az eredmény több szilárd testet tartalmaz - + Error: Adding the helix failed Hiba: A csigavonal hozzáadása sikertelen - + Error: Intersecting the helix failed Hiba: A csigavonal metszéspontja nem sikerült - + Error: Subtracting the helix failed Hiba: A csigavonal kivonása sikertelen - + Error: Could not create face from sketch Hiba: Nem sikerült felületet létrehozni a vázlatból @@ -5064,15 +4954,15 @@ A vázlatelemek metszése egy vázlatban nem engedélyezett. Hiba: A menet hozzáadása sikertelen - + Boolean operation failed A logikai művelet sikertelen - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Nem sikerült felületet létrehozni vázlatból. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.ts index 5a49c47326..76ab6d8f26 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Create Clone - + Make copy Buat salinan @@ -909,8 +909,8 @@ so that self intersection is avoided. Create Boolean - + Add a Body Add a Body @@ -940,22 +940,22 @@ so that self intersection is avoided. Move an object inside tree - + Mirrored Tercermin - + Make LinearPattern Make LinearPattern - + PolarPattern PolarPattern - + Scaled Berskala @@ -2057,73 +2057,43 @@ klik lagi untuk mengakhiri seleksi PartDesignGui::TaskLinearPatternParameters - - Add feature - Tambahkan fitur - - - - Remove feature - Hapus fitur - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Direction Arah - + Reverse direction Reverse direction - + Mode Mode - + Overall Length Overall Length - - + + Offset Mengimbangi - + Length Panjangnya - + Occurrences Kemunculan - - OK - Baik - - - - Update view - Perbarui tampilan - - - - Remove - Menghapus - - - + Error Kesalahan @@ -2184,115 +2154,65 @@ klik lagi untuk mengakhiri seleksi PartDesignGui::TaskMirroredParameters - - Add feature - Tambahkan fitur - - - - Remove feature - Hapus fitur - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Plane Pesawat - - OK - Baik - - - - Update view - Perbarui tampilan - - - - Remove - Menghapus - - - + Error Kesalahan PartDesignGui::TaskMultiTransformParameters - - - Add feature - Tambahkan fitur - - Remove feature - Hapus fitur - - - - List can be reordered by dragging - List can be reordered by dragging - - - Transformations Transformasi - - Update view - Perbarui tampilan + + OK + Baik - - Remove - Menghapus - - - + Edit Edit - + Delete Menghapus - + Add mirrored transformation Tambahkan transformasi cermin - + Add linear pattern Tambahkan pola linier - + Add polar pattern Tambahkan pola polar - + Add scaled transformation Tambahkan transformasi skala - + Move up Pindah ke atas - + Move down Pindah ke bawah @@ -2747,77 +2667,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Tambahkan fitur - - - - Remove feature - Hapus fitur - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Axis Axis - + Reverse direction Reverse direction - + Mode Mode - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Sudut - + Offset Mengimbangi - + Occurrences Kemunculan - - OK - Baik - - - - Update view - Perbarui tampilan - - - - Remove - Menghapus - - - + Error Kesalahan @@ -2953,40 +2843,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Tambahkan fitur - - - - Remove feature - Hapus fitur - - - + Factor Faktor - + Occurrences Kemunculan - - - OK - Baik - - - - Update view - Perbarui tampilan - - - - Remove - Menghapus - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ klik lagi untuk mengakhiri seleksi PartDesignGui::TaskTransformedParameters - + + Remove + Menghapus + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Vertical sketch axis - + Horizontal sketch axis Horizontal sketch axis - - + + Construction line %1 Garis konstruksi% 1 - + Base X axis Sumbu X dasar - + Base Y axis Sumbu y dasar - + Base Z axis Sumbu dasar z - - + + Select reference... Select reference... - + Base XY plane Bidang dasar XY - + Base YZ plane Bidang dasar yz - + Base XZ plane Pesawat XZ Base + + + Add feature + Tambahkan fitur + + + + Remove feature + Hapus fitur + + + + List can be reordered by dragging + List can be reordered by dragging + + + + Update view + Perbarui tampilan + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ klik lagi untuk mengakhiri seleksi Silakan membuat pesawat terlebih dahulu atau pilih muka untuk membuat sketsa + + + + + + + - - - - - - - A dialog is already open in the task panel A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? Do you want to close this dialog? @@ -3748,14 +3638,14 @@ Hal ini dapat menyebabkan hasil yang tidak diharapkan. Tidak mungkin membuat fitur subtraktif tanpa fitur dasar yang tersedia + - Vertical sketch axis Vertical sketch axis + - Horizontal sketch axis Horizontal sketch axis @@ -3809,15 +3699,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Untuk menggunakan fitur ini, perlu disertakan bagian objek dalam dokumen. - - + + Edit %1 Edit %1 - + Set colors... Tetapkan warna... @@ -4737,83 +4627,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4876,8 +4766,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4888,14 +4778,14 @@ over 90: larger hole radius at the bottom - the selected sketch does not belong to the active Body. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4905,14 +4795,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4962,47 +4852,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5072,15 +4962,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.ts index d0935993cb..39ad462129 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.ts @@ -883,8 +883,8 @@ in modo da evitare l'intersezione automatica. Crea clone - + Make copy Fà una copia @@ -909,8 +909,8 @@ in modo da evitare l'intersezione automatica. Crea pallinatura - + Add a Body Aggiungi corpo @@ -940,22 +940,22 @@ in modo da evitare l'intersezione automatica. Sposta un oggetto all'interno dell'albero - + Mirrored Specchiato - + Make LinearPattern Serie rettangolare - + PolarPattern Serie polare - + Scaled Scalato @@ -2057,73 +2057,43 @@ fare nuovamente clic per terminare la selezione PartDesignGui::TaskLinearPatternParameters - - Add feature - Aggiungi funzione - - - - Remove feature - Rimuovi funzione - - - - List can be reordered by dragging - La lista può essere riordinata trascinando - - - + Direction Direzione - + Reverse direction Direzione inversa - + Mode Modalità - + Overall Length Overall Length - - + + Offset Offset - + Length Lunghezza - + Occurrences Occorrenze - - OK - OK - - - - Update view - Aggiorna la vista - - - - Remove - Rimuovi - - - + Error Errore @@ -2184,115 +2154,65 @@ fare nuovamente clic per terminare la selezione PartDesignGui::TaskMirroredParameters - - Add feature - Aggiungi funzione - - - - Remove feature - Rimuovi funzione - - - - List can be reordered by dragging - La lista può essere riordinata trascinando - - - + Plane Piano - - OK - OK - - - - Update view - Aggiorna la vista - - - - Remove - Rimuovi - - - + Error Errore PartDesignGui::TaskMultiTransformParameters - - - Add feature - Aggiungi funzione - - Remove feature - Rimuovi funzione - - - - List can be reordered by dragging - La lista può essere riordinata trascinando - - - Transformations Trasformazioni - - Update view - Aggiorna la vista + + OK + OK - - Remove - Rimuovi - - - + Edit Modifica - + Delete Elimina - + Add mirrored transformation Aggiungi una trasformazione specchiata - + Add linear pattern Aggiungi una serie rettangolare - + Add polar pattern Aggiungi una serie polare - + Add scaled transformation Aggiungi una trasformazione scalata - + Move up Sposta verso l'alto - + Move down Sposta in basso @@ -2747,77 +2667,47 @@ misurata lungo la direzione specificata PartDesignGui::TaskPolarPatternParameters - - Add feature - Aggiungi funzione - - - - Remove feature - Rimuovi funzione - - - - List can be reordered by dragging - La lista può essere riordinata trascinando - - - + Axis Asse - + Reverse direction Direzione inversa - + Mode Modalità - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Angolo - + Offset Offset - + Occurrences Occorrenze - - OK - OK - - - - Update view - Aggiorna la vista - - - - Remove - Rimuovi - - - + Error Errore @@ -2953,40 +2843,15 @@ misurata lungo la direzione specificata PartDesignGui::TaskScaledParameters - - Add feature - Aggiungi funzione - - - - Remove feature - Rimuovi funzione - - - + Factor Fattore - + Occurrences Occorrenze - - - OK - OK - - - - Update view - Aggiorna la vista - - - - Remove - Rimuovi - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ fare nuovamente clic per terminare la selezione PartDesignGui::TaskTransformedParameters - + + Remove + Rimuovi + + + Normal sketch axis Asse normale allo schizzo - + Vertical sketch axis Asse verticale dello schizzo - + Horizontal sketch axis Asse orizzontale dello schizzo - - + + Construction line %1 Linea di costruzione %1 - + Base X axis Asse X di base - + Base Y axis Asse Y di base - + Base Z axis Asse Z di base - - + + Select reference... Seleziona riferimento... - + Base XY plane Piano di base XY - + Base YZ plane Piano di base YZ - + Base XZ plane Piano di base XZ + + + Add feature + Aggiungi funzione + + + + Remove feature + Rimuovi funzione + + + + List can be reordered by dragging + La lista può essere riordinata trascinando + + + + Update view + Aggiorna la vista + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ fare nuovamente clic per terminare la selezione Si prega di creare prima un piano oppure di selezionare una faccia su cui posizionare lo schizzo + + + + + + + - - - - - - - A dialog is already open in the task panel Nel pannello azioni c'è già una finestra di dialogo aperta + + + + + + + - - - - - - - Do you want to close this dialog? Si desidera chiudere questa finestra? @@ -3742,14 +3632,14 @@ This may lead to unexpected results. Non è possibile creare una funzione sottrattiva senza una funzione di base disponibile + - Vertical sketch axis Asse verticale dello schizzo + - Horizontal sketch axis Asse orizzontale dello schizzo @@ -3801,15 +3691,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Per poter utilizzare questa funzione essa deve appartenere a un oggetto parte del documento. - - + + Edit %1 Edita %1 - + Set colors... Imposta i colori... @@ -4727,83 +4617,83 @@ over 90: larger hole radius at the bottom BaseFeature ha una forma vuota - + Cannot do boolean cut without BaseFeature Impossibile eseguire il taglio booleano senza BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Impossibile eseguire operazioni booleane con qualsiasi cosa tranne Part::Feature e suoi derivati - + Cannot do boolean operation with invalid base shape Impossibile eseguire l'operazione booleana con una forma di base non valida - + Cannot do boolean on feature which is not in a body Impossibile eseguire la funzionalità booleana che non è in un corpo - + Base shape is null La forma di base è nulla - + Tool shape is null La forma dello strumento è nulla - + Fusion of tools failed Fusione di strumenti fallita - - - - - + - + + + + + Resulting shape is not a solid La forma risultante non è un solido - + Cut out failed Taglio fallito - + Common operation failed Operazione comune fallita - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Il risultato ha più solidi: attualmente non è supportato. @@ -4866,8 +4756,8 @@ over 90: larger hole radius at the bottom Angolo di scanalatura troppo piccolo - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4878,14 +4768,14 @@ over 90: larger hole radius at the bottom - lo schizzo selezionato non appartiene al corpo attivo. - + Creating a face from sketch failed Creazione di una faccia dallo schizzo fallita - + Revolve axis intersects the sketch L'asse di rivoluzione interseca lo schizzo @@ -4895,14 +4785,14 @@ over 90: larger hole radius at the bottom Ritaglio dalla funzione di base fallito - + Could not revolve the sketch! Impossibile fare la rivoluzione dello schizzo! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Impossibile creare la faccia dallo schizzo. @@ -4952,47 +4842,47 @@ L'intersezione delle entità dello schizzo in uno schizzo non è consentita.Errore: la faccia deve essere planare - + Error: Could not build Errore: impossibile generare - - - + + + Error: Result is not a solid Errore: il risultato non è un solido - + Error: There is nothing to subtract Errore: non c'è nulla da sottrarre - - - + + + Error: Result has multiple solids Errore: il risultato ha più solidi - + Error: Adding the helix failed Errore: l'aggiunta dell'elica non è riuscita - + Error: Intersecting the helix failed Errore: Intersezione dell'elica fallita - + Error: Subtracting the helix failed Errore: sottrazione dell'elica non riuscita - + Error: Could not create face from sketch Errore: impossibile creare la faccia dallo schizzo @@ -5062,15 +4952,15 @@ L'intersezione delle entità dello schizzo in uno schizzo non è consentita.Errore: l'aggiunta del filetto non riuscita - + Boolean operation failed Operazione booleana fallita - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Impossibile creare la faccia dallo schizzo. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.ts index 5f1d3f92a0..c1f8f358de 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.ts @@ -882,8 +882,8 @@ so that self intersection is avoided. クローンを作成 - + Make copy コピーの作成 @@ -908,8 +908,8 @@ so that self intersection is avoided. Bool変数の作成 - + Add a Body ボディーを追加 @@ -939,22 +939,22 @@ so that self intersection is avoided. ツリー内のオブジェクトを移動 - + Mirrored 鏡像 - + Make LinearPattern 直線状パターンを作成 - + PolarPattern 円状パターン - + Scaled 拡大縮小 @@ -2056,73 +2056,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - フィーチャーを追加 - - - - Remove feature - フィーチャーを削除 - - - - List can be reordered by dragging - リストをドラッグして並べ替えることができます - - - + Direction 方向 - + Reverse direction 逆方向 - + Mode モード - + Overall Length 全体長さ - - + + Offset オフセット - + Length 長さ - + Occurrences 回数 - - OK - OK - - - - Update view - ビューを更新 - - - - Remove - 削除 - - - + Error エラー @@ -2183,115 +2153,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - フィーチャーを追加 - - - - Remove feature - フィーチャーを削除 - - - - List can be reordered by dragging - リストをドラッグして並べ替えることができます - - - + Plane 平面 - - OK - OK - - - - Update view - ビューを更新 - - - - Remove - 削除 - - - + Error エラー PartDesignGui::TaskMultiTransformParameters - - - Add feature - フィーチャーを追加 - - Remove feature - フィーチャーを削除 - - - - List can be reordered by dragging - リストをドラッグして並べ替えることができます - - - Transformations 配置変換 - - Update view - ビューを更新 + + OK + OK - - Remove - 削除 - - - + Edit 編集 - + Delete 削除 - + Add mirrored transformation 鏡像変換を追加 - + Add linear pattern 直線状パターンを追加 - + Add polar pattern 円状パターンを追加 - + Add scaled transformation 拡大縮小変換を追加 - + Move up 上へ移動 - + Move down 下へ移動 @@ -2745,77 +2665,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - フィーチャーを追加 - - - - Remove feature - フィーチャーを削除 - - - - List can be reordered by dragging - リストをドラッグして並べ替えることができます - - - + Axis - + Reverse direction 逆方向 - + Mode モード - + Overall Angle 全体角度 - + Offset Angle オフセット角度 - + Angle 角度 - + Offset オフセット - + Occurrences 回数 - - OK - OK - - - - Update view - ビューを更新 - - - - Remove - 削除 - - - + Error エラー @@ -2951,40 +2841,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - フィーチャーを追加 - - - - Remove feature - フィーチャーを削除 - - - + Factor 係数 - + Occurrences 回数 - - - OK - OK - - - - Update view - ビューを更新 - - - - Remove - 削除 - PartDesignGui::TaskShapeBinder @@ -3108,62 +2973,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + 削除 + + + Normal sketch axis 通常のスケッチ軸 - + Vertical sketch axis 垂直スケッチ軸 - + Horizontal sketch axis 水平スケッチ軸 - - + + Construction line %1 補助線 %1 - + Base X axis ベースX軸 - + Base Y axis ベースY軸 - + Base Z axis ベースZ軸 - - + + Select reference... 参照を選択... - + Base XY plane ベースXY平面 - + Base YZ plane ベースYZ平面 - + Base XZ plane ベースXZ平面 + + + Add feature + フィーチャーを追加 + + + + Remove feature + フィーチャーを削除 + + + + List can be reordered by dragging + リストをドラッグして並べ替えることができます + + + + Update view + ビューを更新 + PartDesignGui::ViewProviderChamfer @@ -3457,28 +3347,28 @@ click again to end selection まず平面を作成するか、またはスケッチを描く面を選択してください。 + + + + + + + - - - - - - - A dialog is already open in the task panel タスクパネルで既にダイアログが開かれています + + + + + + + - - - - - - - Do you want to close this dialog? このダイアログを閉じますか? @@ -3742,14 +3632,14 @@ This may lead to unexpected results. 利用可能なベースフィーチャーがない場合、減算フィーチャーは作成できません。 + - Vertical sketch axis 垂直スケッチ軸 + - Horizontal sketch axis 水平スケッチ軸 @@ -3803,15 +3693,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr このフィーチャーを使用するためにはそれがドキュメント内のパーツオブジェクトに属している必要があります。 - - + + Edit %1 %1を編集 - + Set colors... 色を設定... @@ -4727,83 +4617,83 @@ over 90: larger hole radius at the bottom BaseFeatureに空のシェイプがあります。 - + Cannot do boolean cut without BaseFeature BaseFeatureなしでブーリアン演算のカットを行うことはできません。 - - + + Cannot do boolean with anything but Part::Feature and its derivatives Part::Featureとその派生物以外ではブーリアン演算を行うことはできません。 - + Cannot do boolean operation with invalid base shape 無効なベースシェイプではブーリアン演算を行うことはできません。 - + Cannot do boolean on feature which is not in a body ボディー内にないフィーチャーではブーリアン演算を行うことはできません。 - + Base shape is null ベースシェイプが null です。 - + Tool shape is null ツールシェイプが null です。 - + Fusion of tools failed 結合ツールが失敗しました。 - - - - - + - + + + + + Resulting shape is not a solid 結果シェイプはソリッドではありません。 - + Cut out failed 切り抜きに失敗しました。 - + Common operation failed 共通部分演算が失敗しました。 - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. 結果に複数のソリッドが含まれています。これは現在サポートされていません。 @@ -4866,8 +4756,8 @@ over 90: larger hole radius at the bottom グルーブの角度が小さすぎます。 - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4877,14 +4767,14 @@ over 90: larger hole radius at the bottom ・ 選択されたスケッチがアクティブなボディーに属していない。 - + Creating a face from sketch failed スケッチから面を作成できませんでした。 - + Revolve axis intersects the sketch 回転押し出しの軸がスケッチと交差しています。 @@ -4894,14 +4784,14 @@ over 90: larger hole radius at the bottom ベースフィーチャーの切り抜きに失敗しました。 - + Could not revolve the sketch! スケッチを回転押し出しできませんでした! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. スケッチから面を作成できませんでした。 @@ -4951,47 +4841,47 @@ Intersecting sketch entities in a sketch are not allowed. エラー: 面は平面でなければなりません。 - + Error: Could not build エラー: 作成できませんでした。 - - - + + + Error: Result is not a solid エラー: 結果はソリッドではありません。 - + Error: There is nothing to subtract エラー: 減算の対象がありません。 - - - + + + Error: Result has multiple solids エラー: 結果に複数のソリッドが存在します。 - + Error: Adding the helix failed エラー: らせんの加算に失敗しました。 - + Error: Intersecting the helix failed エラー: らせんの交差に失敗しました。 - + Error: Subtracting the helix failed エラー: らせんの減算に失敗しました。 - + Error: Could not create face from sketch エラー: スケッチから面を作成できませんでした。 @@ -5061,15 +4951,15 @@ Intersecting sketch entities in a sketch are not allowed. エラー: ねじ山の追加に失敗しました。 - + Boolean operation failed ブーリアン演算が失敗しました。 - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. スケッチから面を作成できませんでした。 diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ka.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ka.ts index ec86773887..cdd6ae5d90 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ka.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ka.ts @@ -882,8 +882,8 @@ so that self intersection is avoided. ასლის შექმნა - + Make copy ასლის გადაღება @@ -908,8 +908,8 @@ so that self intersection is avoided. ბულევის შექმნა - + Add a Body სხეულის დამატება @@ -939,22 +939,22 @@ so that self intersection is avoided. ობიექტის ხის შიგნით შეტანა - + Mirrored სიმეტრია - + Make LinearPattern LinearPattern-ის შექმნა - + PolarPattern წრიული მასივი - + Scaled მასშტაბირება @@ -2056,73 +2056,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - თვისების დამატება - - - - Remove feature - თვისების მოცილება - - - - List can be reordered by dragging - სიის გადალაგება შეგიძლიათ გადათრევით - - - + Direction მიმართულება - + Reverse direction მიმართულების შებრუნება - + Mode რეჟიმი - + Overall Length სრული სიგრძე - - + + Offset წანაცვლება - + Length სიგრძე - + Occurrences მოვლენები - - OK - დიახ - - - - Update view - ხედის განახლება - - - - Remove - წაშლა - - - + Error შეცდომა @@ -2162,7 +2132,7 @@ click again to end selection List can be reordered by dragging - სიის გადალაგება გადათრევით შეგიძლიათ + სიის გადალაგება შეგიძლიათ გადათრევით @@ -2183,115 +2153,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - თვისების დამატება - - - - Remove feature - თვისების წაშლა - - - - List can be reordered by dragging - სიის გადალაგება გადათრევით შეგიძლიათ - - - + Plane ზედაპირი - - OK - დიახ - - - - Update view - ხედის განახლება - - - - Remove - წაშლა - - - + Error შეცდომა PartDesignGui::TaskMultiTransformParameters - - - Add feature - თვისების დამატება - - Remove feature - თვისების წაშლა - - - - List can be reordered by dragging - სიის გადალაგება გადათრევით შეგიძლიათ - - - Transformations გარდაქმნები - - Update view - ხედის განახლება + + OK + დიახ - - Remove - წაშლა - - - + Edit ჩასწორება - + Delete წაშლა - + Add mirrored transformation სარკისებური გარდაქმნის დამატება - + Add linear pattern ხაზოვანი მასივის დამატება - + Add polar pattern წრიული მასივის დამატება - + Add scaled transformation მასშტაბირებული გარდაქმნის დამატება - + Move up აწევა - + Move down ქვემოთ ჩამოწევა @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - თვისების დამატება - - - - Remove feature - თვისების წაშლა - - - - List can be reordered by dragging - სიის გადალაგება შეგიძლიათ გადათრევით - - - + Axis ღერძი - + Reverse direction მიმართულების შებრუნება - + Mode რეჟიმი - + Overall Angle სრული კუთხე - + Offset Angle წანაცვლების კუთხე - + Angle კუთხე - + Offset წანაცვლება - + Occurrences გამოვლენები - - OK - დიახ - - - - Update view - ხედის განახლება - - - - Remove - წაშლა - - - + Error შეცდომა @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - თვისების დამატება - - - - Remove feature - თვისების მოცილება - - - + Factor ფაქტორი - + Occurrences მოვლენები - - - OK - &დიახ - - - - Update view - ხედის განახლება - - - - Remove - წაშლა - PartDesignGui::TaskShapeBinder @@ -3012,7 +2877,7 @@ measured along the specified direction Remove - მოცილება + წაშლა @@ -3109,62 +2974,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + წაშლა + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis შვეული ესკიზის ღერძი - + Horizontal sketch axis თარაზული ესკიზის ღერძი - - + + Construction line %1 კონსტრუქციის ხაზი %1 - + Base X axis საბაზისო X ღერძი - + Base Y axis საბაზისო Y ღერძი - + Base Z axis საბაზისო Z ღერძი - - + + Select reference... Select reference... - + Base XY plane საბაზისო XY სიბრტყე - + Base YZ plane საბაზისო YZ სიბრტყე - + Base XZ plane საბაზისო XZ სიბრტყე + + + Add feature + თვისების დამატება + + + + Remove feature + თვისების მოცილება + + + + List can be reordered by dragging + სიის გადალაგება გადათრევით შეგიძლიათ + + + + Update view + ხედის განახლება + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ click again to end selection ჯერ საჭიროა სიბრტყის შექმნა ან სახაზავი ზედაპირის არჩევა + + + + + + + - - - - - - - A dialog is already open in the task panel ფანჯარა უკვე ღიაა ამოცანების პანელზე + + + + + + + - - - - - - - Do you want to close this dialog? ნამდვილად გსურთ ამ ფანჯრის დახურვა? @@ -3747,14 +3637,14 @@ This may lead to unexpected results. საბაზისო ელემემენტის გარეშე გამოკლებადი თვისების შექმნა შეუძლებელია + - Vertical sketch axis Vertical sketch axis + - Horizontal sketch axis Horizontal sketch axis @@ -3808,15 +3698,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr ამ თვისების გამოსაყენებლად ის დოკუმენტში ნაწლის ობიექტს უნდა ეკუთვნოდეს. - - + + Edit %1 ჩასწორება %1 - + Set colors... ფერების დაყენება... @@ -4736,83 +4626,83 @@ over 90: larger hole radius at the bottom საბაზისო თვისების მოხაზულობა ცარიელია - + Cannot do boolean cut without BaseFeature საბაზისო თვისების გარეშე ლოგიკურ ამოჭრას ვერ განვახორციელებ - - + + Cannot do boolean with anything but Part::Feature and its derivatives Part::Feature და მისი წარმოებულების გარდა ლოგიკურ ოპერაციას ვერაფერზე გამოიყენებთ - + Cannot do boolean operation with invalid base shape არასწორი საბაზისო მოხაზულობით ლოგიკურ ოპერაციას ვერ ჩაატარებთ - + Cannot do boolean on feature which is not in a body ლოგიკური ოპერაციის ჩატარება ობიექტზე, რომელიც სხეული არაა, შეუძლებელია - + Base shape is null საბაზისო მოხაზულობა ნულოვანია - + Tool shape is null ხელსაწყოს მოხაზულობა ნულოვანია - + Fusion of tools failed ხელსაწყოების შერწყმის შეცდომა - - - - - + - + + + + + Resulting shape is not a solid მიღებული მონახაზი მყარი სხეული არაა - + Cut out failed ამოჭრის შეცდომა - + Common operation failed საერთო ოპერაციის შეცდომა - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. შედეგს ერთზე მეტი მყარი სხეული გააჩნია: ეს ამჟამად მხარდაჭერილი არაა. @@ -4875,8 +4765,8 @@ over 90: larger hole radius at the bottom კილოს კუთხე მეტისმეტად მცირეა - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ over 90: larger hole radius at the bottom - არჩეული ესკიზი არ ეკუთვნის აქტიურ სხეულს. - + Creating a face from sketch failed ესკიზიდან ზედაპირის შექმნა შეუძლებელია - + Revolve axis intersects the sketch ბრუნვის ღერძი ესკიზს კვეთს @@ -4904,14 +4794,14 @@ over 90: larger hole radius at the bottom საბაზისო თვისებიდან ამოჭრის შეცდომა - + Could not revolve the sketch! ესკიზის მოტრიალება შეუძლებელია! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. ესკიზიდან ზედაპირის შექმნის შეცდომა. @@ -4961,47 +4851,47 @@ Intersecting sketch entities in a sketch are not allowed. შეცდომა: ზედაპირი ბრტყელი უნდა იყოს - + Error: Could not build შეცდომა: აგება შეუძლებელია - - - + + + Error: Result is not a solid შეცდომა: შედეგი მყარი სხეული არაა - + Error: There is nothing to subtract შეცდომა: გამოსაკლები არაფერია - - - + + + Error: Result has multiple solids შეცდომა: შედეგი მრავალ მყარ სხეულს შეიცავს - + Error: Adding the helix failed შეცდომა: სპირალის დამატების შეცდომა - + Error: Intersecting the helix failed შეცდოა: სპირალის კვეთის შეცდომა - + Error: Subtracting the helix failed შეცდომა: სპირალის გამოკლების შეცდომა - + Error: Could not create face from sketch შეცდომა: ესკიზიიდან ზედაპირის შექმნა შეუძლებელია @@ -5071,15 +4961,15 @@ Intersecting sketch entities in a sketch are not allowed. შეცდომა: კუთხვილის დამატების შეცდომა - + Boolean operation failed ლოგიკური ოპერაციის შეცდომა - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. ესკიზიდან ზედაპირის შექმნის შეცდომა. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.ts index 0fe2719d84..f5c58bb964 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.ts @@ -27,33 +27,33 @@ Dependent properties are then calculated. The axial distance between two turns. - The axial distance between two turns. + 두 회전 간의 축방향 거리. The height of the helix' path, not accounting for the extent of the profile. - The height of the helix' path, not accounting for the extent of the profile. + 나선 경로의 높이, 프로파일 범위를 고려하지 않음. The number of turns in the helix. - The number of turns in the helix. + 나선에서 회전의 개수. The angle of the cone that forms a hull around the helix. Non-zero values turn the helix into a conical spiral. Positive values make the radius grow, nevatige shrink. - The angle of the cone that forms a hull around the helix. -Non-zero values turn the helix into a conical spiral. -Positive values make the radius grow, nevatige shrink. + 나선 주변의 선체를 형성하는 원뿔의 각도. +0이 아닌 값은 나선을 원뿔 모양으로 바꿉니다. +양수 값은 반지름을 커지게 하고, 음수 값은 줄어듭니다. The growth of the helix' radius per turn. Non-zero values turn the helix into a conical spiral. - The growth of the helix' radius per turn. -Non-zero values turn the helix into a conical spiral. + 회전마다 나선의 반경 증가. +0이 아닌 값들은 나선을 원뿔 모양으로 만듭니다. @@ -882,8 +882,8 @@ so that self intersection is avoided. Clone 생성 - + Make copy 사본 만들기 @@ -908,8 +908,8 @@ so that self intersection is avoided. 부울 생성 - + Add a Body 바디 추가 @@ -939,22 +939,22 @@ so that self intersection is avoided. 트리 내부에서 개체 이동 - + Mirrored 대칭 - + Make LinearPattern 선형 패턴 만들기 - + PolarPattern 원형 패턴 - + Scaled 배율 @@ -2056,73 +2056,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - 피처 추가 - - - - Remove feature - 피처 제거 - - - - List can be reordered by dragging - 드래그하여 목록을 재정렬할 수 있습니다. - - - + Direction 방향 - + Reverse direction Reverse direction - + Mode Mode - + Overall Length Overall Length - - + + Offset 오프셋 - + Length 거리 - + Occurrences 생성 수(사용되지 않음) - - OK - 확인 - - - - Update view - 보기 재생성 - - - - Remove - 제거 - - - + Error 에러 @@ -2183,115 +2153,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - 피처 추가 - - - - Remove feature - 피처 제거 - - - - List can be reordered by dragging - 드래그하여 목록을 재정렬할 수 있습니다. - - - + Plane 평면 - - OK - 확인 - - - - Update view - 보기 재생성 - - - - Remove - 제거 - - - + Error 에러 PartDesignGui::TaskMultiTransformParameters - - - Add feature - 피처 추가 - - Remove feature - 피처 제거 - - - - List can be reordered by dragging - 드래그하여 목록을 재정렬할 수 있습니다. - - - Transformations 적용 패턴 - - Update view - 보기 재생성 + + OK + 확인 - - Remove - 제거 - - - + Edit 편집 - + Delete 삭제 - + Add mirrored transformation 미러(Mirrored) 패턴 추가 - + Add linear pattern 선형(Linear) 패턴 추가 - + Add polar pattern 원형(Polar) 패턴 추가 - + Add scaled transformation 확대/축소(Scaled) 변환 추가 - + Move up 위로 이동 - + Move down 아래로 이동 @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - 피처 추가 - - - - Remove feature - 피처 제거 - - - - List can be reordered by dragging - 드래그하여 목록을 재정렬할 수 있습니다. - - - + Axis - + Reverse direction Reverse direction - + Mode Mode - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle - + Offset 오프셋 - + Occurrences 생성 수(사용되지 않음) - - OK - 확인 - - - - Update view - 보기 재생성 - - - - Remove - 제거 - - - + Error 에러 @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - 피처 추가 - - - - Remove feature - 피처 제거 - - - + Factor 비율 - + Occurrences 생성 수(사용되지 않음) - - - OK - 확인 - - - - Update view - 보기 재생성 - - - - Remove - 제거 - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + 제거 + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Vertical sketch axis - + Horizontal sketch axis Horizontal sketch axis - - + + Construction line %1 Construction line %1 - + Base X axis 절대좌표계 X 축 - + Base Y axis 절대좌표계 Y 축 - + Base Z axis 절대좌표계 Z 축 - - + + Select reference... 레퍼런스 선택 - + Base XY plane 절대좌표계 XY 평면 - + Base YZ plane 절대좌표계 YZ 평면 - + Base XZ plane 절대좌표계 XZ 평면 + + + Add feature + 피처 추가 + + + + Remove feature + 피처 제거 + + + + List can be reordered by dragging + 드래그하여 목록을 재정렬할 수 있습니다. + + + + Update view + 보기 재생성 + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ click again to end selection 평면을 먼저 생성하거나 스케치를 생성할 면을 먼저 선택하세요. + + + + + + + - - - - - - - A dialog is already open in the task panel 테스크 패널에 이미 다이얼로그가 열려있습니다. + + + + + + + - - - - - - - Do you want to close this dialog? 다이얼로그를 닫으시겠습니까? @@ -3747,14 +3637,14 @@ This may lead to unexpected results. 기본 피처없이 빼기(Subtractive) 피처를 생성할 수 없습니다. + - Vertical sketch axis Vertical sketch axis + - Horizontal sketch axis Horizontal sketch axis @@ -3808,15 +3698,15 @@ Body가 없는 PartDesign 개체가 있는 레거시 문서가 있는 경우 Par 이 피처를 사용하기 위해서는, 피처가 현재 문서에 있는 파트 객체에 속해야 합니다. - - + + Edit %1 Edit %1 - + Set colors... 색 설정... @@ -4736,83 +4626,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4875,8 +4765,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ over 90: larger hole radius at the bottom - 선택한 스케치는 활성 바디에 속하지 않습니다. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4904,14 +4794,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4961,47 +4851,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5071,15 +4961,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.ts index 6c24f8c4f8..52a693b340 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Maak een kloon - + Make copy Maak een kopie @@ -909,8 +909,8 @@ so that self intersection is avoided. Maak Boolean - + Add a Body Voeg lichaam toe @@ -940,22 +940,22 @@ so that self intersection is avoided. Verplaats een object binnen de boom - + Mirrored Gespiegeld - + Make LinearPattern Lineair patroon maken - + PolarPattern Polair patroon - + Scaled geschaald @@ -1841,7 +1841,7 @@ klik nogmaals om de selectie te beëindigen Empty fillet created! - Empty fillet created! + Lege afronding gemaakt! @@ -2055,73 +2055,43 @@ klik nogmaals om de selectie te beëindigen PartDesignGui::TaskLinearPatternParameters - - Add feature - Functie toevoegen - - - - Remove feature - Functie verwijderen - - - - List can be reordered by dragging - Lijst kan worden gesorteerd door te slepen - - - + Direction Richting - + Reverse direction Richting omkeren - + Mode Instelling - + Overall Length Algemene lengte - - + + Offset Verschuiving - + Length Lengte - + Occurrences Gevallen - - OK - OK - - - - Update view - Weergave verversen - - - - Remove - Verwijderen - - - + Error Fout @@ -2182,115 +2152,65 @@ klik nogmaals om de selectie te beëindigen PartDesignGui::TaskMirroredParameters - - Add feature - Functie toevoegen - - - - Remove feature - Functie verwijderen - - - - List can be reordered by dragging - Lijst kan worden gesorteerd door te slepen - - - + Plane Vlak - - OK - OK - - - - Update view - Weergave verversen - - - - Remove - Verwijderen - - - + Error Fout PartDesignGui::TaskMultiTransformParameters - - - Add feature - Functie toevoegen - - Remove feature - Functie verwijderen - - - - List can be reordered by dragging - Lijst kan worden gesorteerd door te slepen - - - Transformations Transformaties - - Update view - Weergave verversen + + OK + OK - - Remove - Verwijderen - - - + Edit Bewerken - + Delete Verwijderen - + Add mirrored transformation Gespiegelde transformatie toevoegen - + Add linear pattern Lineair patroon toevoegen - + Add polar pattern Polair patroon toevoegen - + Add scaled transformation Geschaalde transformatie toevoegen - + Move up Naar boven verplaatsen - + Move down Naar beneden verplaatsen @@ -2745,77 +2665,47 @@ gemeten in de opgegeven richting PartDesignGui::TaskPolarPatternParameters - - Add feature - Functie toevoegen - - - - Remove feature - Functie verwijderen - - - - List can be reordered by dragging - Lijst kan worden gesorteerd door te slepen - - - + Axis As - + Reverse direction Richting omkeren - + Mode Instelling - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Hoek - + Offset Verschuiving - + Occurrences Gevallen - - OK - OK - - - - Update view - Weergave verversen - - - - Remove - Verwijderen - - - + Error Fout @@ -2951,40 +2841,15 @@ gemeten in de opgegeven richting PartDesignGui::TaskScaledParameters - - Add feature - Functie toevoegen - - - - Remove feature - Functie verwijderen - - - + Factor Factor - + Occurrences Gevallen - - - OK - OK - - - - Update view - Weergave verversen - - - - Remove - Verwijderen - PartDesignGui::TaskShapeBinder @@ -3108,62 +2973,87 @@ klik nogmaals om de selectie te beëindigen PartDesignGui::TaskTransformedParameters - + + Remove + Verwijderen + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Verticale schetsas - + Horizontal sketch axis Horizontale schetsas - - + + Construction line %1 Constructielijn %1 - + Base X axis Basis X-as - + Base Y axis Basis Y-as - + Base Z axis Basis Z-as - - + + Select reference... Selecteer referentie... - + Base XY plane Basis oppervlak XY - + Base YZ plane Basis oppervlak YZ - + Base XZ plane Basis oppervlak XZ + + + Add feature + Functie toevoegen + + + + Remove feature + Functie verwijderen + + + + List can be reordered by dragging + Lijst kan worden gesorteerd door te slepen + + + + Update view + Weergave verversen + PartDesignGui::ViewProviderChamfer @@ -3457,28 +3347,28 @@ klik nogmaals om de selectie te beëindigen Maak eerst een werk-vlak of selecteer een zijde om op te schetsen + + + + + + + - - - - - - - A dialog is already open in the task panel Een dialoog is al geopend in het taakvenster + + + + + + + - - - - - - - Do you want to close this dialog? Wilt u dit dialoogvenster sluiten? @@ -3746,14 +3636,14 @@ Dit kan tot onverwachte resultaten leiden. Het is niet mogelijk om een aftrekkende functie maken zonder dat een basis functie beschikbaar is + - Vertical sketch axis Verticale schetsas + - Horizontal sketch axis Horizontale schetsas @@ -3807,15 +3697,15 @@ Als u een ouder document met PartDesign objecten zonder een lichaam hebt, gebrui Om deze functie te gebruiken moet deze tot een onderdeel object behoren in het document. - - + + Edit %1 Bewerken %1 - + Set colors... Kleuren instellen... @@ -3986,7 +3876,7 @@ Although you will be able to migrate any moment later with 'Part Design -> Mi Edit fillet - Edit fillet + Afronding bewerken @@ -4735,83 +4625,83 @@ boven de 90: groter gat straal aan de onderkant BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4856,12 +4746,12 @@ boven de 90: groter gat straal aan de onderkant Fillet radius must be greater than zero - Fillet radius must be greater than zero + Afrondingsstraal moet groter zijn dan nul Failed to create fillet - Failed to create fillet + Kon afronding niet maken @@ -4874,8 +4764,8 @@ boven de 90: groter gat straal aan de onderkant Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4886,14 +4776,14 @@ boven de 90: groter gat straal aan de onderkant - de geselecteerde schets behoort niet tot de actieve lichaam. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4903,14 +4793,14 @@ boven de 90: groter gat straal aan de onderkant Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4960,47 +4850,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5070,15 +4960,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts index 2743998d16..cf5ee5bf58 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts @@ -885,8 +885,8 @@ wartość Fałsz = uzębienie wewnętrzne Utwórz klona - + Make copy Utwórz kopię @@ -911,8 +911,8 @@ wartość Fałsz = uzębienie wewnętrzne Utwórz cechę funkcją logiczną - + Add a Body Dodaj zawartość @@ -942,22 +942,22 @@ wartość Fałsz = uzębienie wewnętrzne Przesuń cechę wewnątrz drzewa - + Mirrored Transformacja odbicia lustrzanego - + Make LinearPattern Utwórz wzorzec liniowy - + PolarPattern Transformacja szyku kołowego - + Scaled Transformacja zmiany skali @@ -2057,73 +2057,43 @@ kliknij ponownie, aby zakończyć wybór PartDesignGui::TaskLinearPatternParameters - - Add feature - Dodaj element - - - - Remove feature - Usuń element - - - - List can be reordered by dragging - Lista może zostać uporządkowana poprzez przeciąganie - - - + Direction Kierunek - + Reverse direction Odwróć kierunek - + Mode Tryb - + Overall Length Długość całkowita - - + + Offset Odsunięcie - + Length Długość - + Occurrences Wystąpienia - - OK - OK - - - - Update view - Aktualizuj widok - - - - Remove - Usuń - - - + Error Błąd @@ -2184,115 +2154,65 @@ kliknij ponownie, aby zakończyć wybór PartDesignGui::TaskMirroredParameters - - Add feature - Dodaj element - - - - Remove feature - Usuń element - - - - List can be reordered by dragging - Lista może zostać uporządkowana poprzez przeciąganie - - - + Plane Płaszczyzna - - OK - OK - - - - Update view - Aktualizuj widok - - - - Remove - Usuń - - - + Error Błąd PartDesignGui::TaskMultiTransformParameters - - - Add feature - Dodaj element - - Remove feature - Usuń element - - - - List can be reordered by dragging - Lista może zostać uporządkowana poprzez przeciąganie - - - Transformations Transformacje - - Update view - Aktualizuj widok + + OK + OK - - Remove - Usuń - - - + Edit Edytuj - + Delete Usuń - + Add mirrored transformation Dodaj transformację odbicia lustrzanego - + Add linear pattern Dodaj transformację szyku liniowego - + Add polar pattern Dodaj transformację szyku kołowego - + Add scaled transformation Dodaj transformację zmiany skali - + Move up Przesuń w górę - + Move down Przenieś w dół @@ -2747,77 +2667,47 @@ mierzona wzdłuż podanego kierunku PartDesignGui::TaskPolarPatternParameters - - Add feature - Dodaj element - - - - Remove feature - Usuń element - - - - List can be reordered by dragging - Lista może zostać uporządkowana poprzez przeciąganie - - - + Axis - + Reverse direction Odwróć kierunek - + Mode Tryb - + Overall Angle Kąt całkowity - + Offset Angle Kąt odsunięcia - + Angle Kąt - + Offset Odsunięcie - + Occurrences Wystąpienia - - OK - OK - - - - Update view - Aktualizuj widok - - - - Remove - Usuń - - - + Error Błąd @@ -2953,40 +2843,15 @@ mierzona wzdłuż podanego kierunku PartDesignGui::TaskScaledParameters - - Add feature - Dodaj element - - - - Remove feature - Usuń element - - - + Factor Współczynnik - + Occurrences Wystąpienia - - - OK - OK - - - - Update view - Aktualizuj widok - - - - Remove - Usuń - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ kliknij ponownie, aby zakończyć wybór PartDesignGui::TaskTransformedParameters - + + Remove + Usuń + + + Normal sketch axis Oś normalna do szkicu - + Vertical sketch axis Pionowa oś szkicu - + Horizontal sketch axis Pozioma oś szkicu - - + + Construction line %1 Linia konstrukcyjna %1 - + Base X axis Bazowa oś X - + Base Y axis Bazowa oś Y - + Base Z axis Bazowa oś Z - - + + Select reference... Wybierz odniesienie ... - + Base XY plane Bazowa płaszczyzna XY - + Base YZ plane Bazowa płaszczyzna YZ - + Base XZ plane Bazowa płaszczyzna XZ + + + Add feature + Dodaj element + + + + Remove feature + Usuń element + + + + List can be reordered by dragging + Lista może zostać uporządkowana poprzez przeciąganie + + + + Update view + Aktualizuj widok + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ kliknij ponownie, aby zakończyć wybór Proszę stworzyć najpierw płaszczyznę lub wybrać ścianę dla umieszczenia szkicu + + + + + + + - - - - - - - A dialog is already open in the task panel Okno dialogowe jest już otwarte w panelu zadań + + + + + + + - - - - - - - Do you want to close this dialog? Czy chcesz zamknąć to okno? @@ -3748,14 +3638,14 @@ Może to prowadzić do nieoczekiwanych rezultatów. Nie jest możliwe utworzenie elementu do odjęcia bez dostępnego elementu bazowego + - Vertical sketch axis Pionowa oś szkicu + - Horizontal sketch axis Pozioma oś szkicu @@ -3809,15 +3699,15 @@ Jeśli masz starszy dokument z obiektami środowiska pracy Projekt Części bez Ta cecha musi przynależeć do obiektu części w danym dokumencie, by można ją było wykorzystać. - - + + Edit %1 Edytuj %1 - + Set colors... Ustaw kolory ... @@ -4737,83 +4627,83 @@ powyżej 90°: większy promień otworu u dołu Kształt Cechy Podstawowej nie został zdefiniowany - + Cannot do boolean cut without BaseFeature Nie można przeprowadzić cięcia logicznego bez Cechy Podstawowej - - + + Cannot do boolean with anything but Part::Feature and its derivatives Nie można przeprowadzić operacji logicznej z niczym oprócz Part::Feature i jej pochodnych - + Cannot do boolean operation with invalid base shape Nie można przeprowadzić operacji logicznej z nieprawidłowym kształtem podstawowym - + Cannot do boolean on feature which is not in a body Nie można przeprowadzić operacji logicznej na cesze, która nie jest w zawartości - + Base shape is null Kształt podstawowy nie został zdefiniowany - + Tool shape is null Kształt narzędzia nie został zdefiniowany - + Fusion of tools failed Połączenie narzędzi nie powiodło się - - - - - + - + + + + + Resulting shape is not a solid Otrzymany kształt nie jest bryłą - + Cut out failed Wycięcie nie powiodło się - + Common operation failed Operacja części wspólnej nie powiodła się - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Wynik ma wiele brył: to nie jest obecnie wspierane. @@ -4876,8 +4766,8 @@ powyżej 90°: większy promień otworu u dołu Kąt rowka zbyt mały - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4888,14 +4778,14 @@ powyżej 90°: większy promień otworu u dołu - wybrany szkic nie należy do aktywnej zawartości. - + Creating a face from sketch failed Tworzenie ściany ze szkicu nie powiodło się - + Revolve axis intersects the sketch Oś obrotu przecina szkic @@ -4905,14 +4795,14 @@ powyżej 90°: większy promień otworu u dołu Wycięcie cechy podstawowej nie powiodło się - + Could not revolve the sketch! Nie można obrócić szkicu! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Nie można utworzyć ściany ze szkicu. @@ -4962,47 +4852,47 @@ Przecinające się obiekty w szkicu są niedozwolone. Błąd: ściana musi być płaska - + Error: Could not build Błąd: nie udało się zbudować - - - + + + Error: Result is not a solid Błąd: wynik nie jest bryłą - + Error: There is nothing to subtract Błąd: nie ma nic do odjęcia - - - + + + Error: Result has multiple solids Błąd: otrzymano wynik z wieloma bryłami - + Error: Adding the helix failed Błąd: dodanie helisy nie powiodło się - + Error: Intersecting the helix failed Błąd: samo przecięcie helisy nie powiodło się - + Error: Subtracting the helix failed Błąd: odjęcie helisy nie powiodło się - + Error: Could not create face from sketch Błąd: Nie można utworzyć ściany ze szkicu @@ -5072,15 +4962,15 @@ Przecinające się obiekty w szkicu są niedozwolone. Błąd: Dodanie gwintu nie powiodło się - + Boolean operation failed Operacja logiczna nie powiodła się - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Nie można utworzyć ściany ze szkicu. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.ts index f1cfcd2c5c..e8d922ed01 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Criar Clone - + Make copy Fazer cópia @@ -909,8 +909,8 @@ so that self intersection is avoided. Criar Booleano - + Add a Body Adicionar um corpo @@ -940,22 +940,22 @@ so that self intersection is avoided. Mover um objeto dentro da árvore - + Mirrored Espelhado - + Make LinearPattern Criar um padrão linear - + PolarPattern Padrão polar - + Scaled Redimensionado @@ -2055,73 +2055,43 @@ clique novamente para terminar a seleção PartDesignGui::TaskLinearPatternParameters - - Add feature - Adicionar objeto - - - - Remove feature - Remover objeto - - - - List can be reordered by dragging - Lista pode ser reordenada arrastando - - - + Direction Direção - + Reverse direction Inverter direção - + Mode Modo - + Overall Length Overall Length - - + + Offset Deslocamento - + Length Comprimento - + Occurrences Ocorrências - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - - - + Error Erro @@ -2182,115 +2152,65 @@ clique novamente para terminar a seleção PartDesignGui::TaskMirroredParameters - - Add feature - Adicionar objeto - - - - Remove feature - Remover objeto - - - - List can be reordered by dragging - Lista pode ser reordenada arrastando - - - + Plane Plano - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - - - + Error Erro PartDesignGui::TaskMultiTransformParameters - - - Add feature - Adicionar objeto - - Remove feature - Remover objeto - - - - List can be reordered by dragging - Lista pode ser reordenada arrastando - - - Transformations Transformações - - Update view - Actualizar a vista + + OK + OK - - Remove - Remover - - - + Edit Editar - + Delete Excluir - + Add mirrored transformation Adicionar uma transformação espelhada - + Add linear pattern Adicionar um padrão linear - + Add polar pattern Adicionar um padrão polar - + Add scaled transformation Adicionar transformação com escala - + Move up Mover para cima - + Move down Move para baixo @@ -2745,77 +2665,47 @@ medido ao longo da direção especificada PartDesignGui::TaskPolarPatternParameters - - Add feature - Adicionar objeto - - - - Remove feature - Remover objeto - - - - List can be reordered by dragging - Lista pode ser reordenada arrastando - - - + Axis Eixo - + Reverse direction Inverter direção - + Mode Modo - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Ângulo - + Offset Deslocamento - + Occurrences Ocorrências - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - - - + Error Erro @@ -2951,40 +2841,15 @@ medido ao longo da direção especificada PartDesignGui::TaskScaledParameters - - Add feature - Adicionar objeto - - - - Remove feature - Remover objeto - - - + Factor Fator - + Occurrences Ocorrências - - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - PartDesignGui::TaskShapeBinder @@ -3108,62 +2973,87 @@ clique novamente para terminar a seleção PartDesignGui::TaskTransformedParameters - + + Remove + Remover + + + Normal sketch axis Normal do eixo no desenho - + Vertical sketch axis Eixo vertical do esboço - + Horizontal sketch axis Eixo horizontal do esboço - - + + Construction line %1 Linha de construção %1 - + Base X axis Eixo X de base - + Base Y axis Eixo Y de base - + Base Z axis Eixo Z de base - - + + Select reference... Selecionar referência... - + Base XY plane Plano XY base - + Base YZ plane Plano YZ base - + Base XZ plane Plano XZ base + + + Add feature + Adicionar objeto + + + + Remove feature + Remover objeto + + + + List can be reordered by dragging + Lista pode ser reordenada arrastando + + + + Update view + Actualizar a vista + PartDesignGui::ViewProviderChamfer @@ -3457,28 +3347,28 @@ clique novamente para terminar a seleção Por favor, crie um plano primeiro ou selecione uma face onde desenhar + + + + + + + - - - - - - - A dialog is already open in the task panel Uma caixa de diálogo já está aberta no painel de tarefas + + + + + + + - - - - - - - Do you want to close this dialog? Deseja fechar este diálogo? @@ -3742,14 +3632,14 @@ This may lead to unexpected results. Não é possível criar um objeto subtrativo sem um objeto base disponível + - Vertical sketch axis Eixo vertical do esboço + - Horizontal sketch axis Eixo horizontal do esboço @@ -3803,15 +3693,15 @@ Se você tiver um documento antigo com objetos do PartDesign sem corpo, use a fu Para utilizar este objeto ele precisa pertencer a uma peça do documento. - - + + Edit %1 Editar %1 - + Set colors... Definir cores... @@ -4730,83 +4620,83 @@ acima de 90: raio maior do furo na parte inferior BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4869,8 +4759,8 @@ acima de 90: raio maior do furo na parte inferior Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4880,14 +4770,14 @@ acima de 90: raio maior do furo na parte inferior - O esboço selecionado não pertence ao corpo ativo. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4897,14 +4787,14 @@ acima de 90: raio maior do furo na parte inferior Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4954,47 +4844,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Erro: Não foi possível construir - - - + + + Error: Result is not a solid Erro: O resultado não é um sólido - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Erro: Resultado tem vários sólidos - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5064,15 +4954,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Operação booleana falhou - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.ts index b2c5945f40..6d15909796 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Create Clone - + Make copy Make copy @@ -909,8 +909,8 @@ so that self intersection is avoided. Create Boolean - + Add a Body Add a Body @@ -940,22 +940,22 @@ so that self intersection is avoided. Move an object inside tree - + Mirrored Espelhado - + Make LinearPattern Make LinearPattern - + PolarPattern PadrãoPolar - + Scaled Redimensionado (scaled) @@ -2057,73 +2057,43 @@ clique novamente para terminar a seleção PartDesignGui::TaskLinearPatternParameters - - Add feature - Adicionar recurso - - - - Remove feature - Remover recurso - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Direction Direção - + Reverse direction Reverse direction - + Mode Modo - + Overall Length Overall Length - - + + Offset Deslocamento paralelo - + Length Comprimento - + Occurrences Ocorrências - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - - - + Error Erro @@ -2184,115 +2154,65 @@ clique novamente para terminar a seleção PartDesignGui::TaskMirroredParameters - - Add feature - Adicionar recurso - - - - Remove feature - Remover recurso - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Plane Plano - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - - - + Error Erro PartDesignGui::TaskMultiTransformParameters - - - Add feature - Adicionar recurso - - Remove feature - Remover recurso - - - - List can be reordered by dragging - List can be reordered by dragging - - - Transformations Transformações - - Update view - Actualizar a vista + + OK + OK - - Remove - Remover - - - + Edit Editar - + Delete Apagar - + Add mirrored transformation Selecione uma face - + Add linear pattern Adicionar padrão linear - + Add polar pattern Adicionar padrão polar - + Add scaled transformation Adicionar transformação de escala - + Move up Mover para cima - + Move down Mover para baixo @@ -2747,77 +2667,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Adicionar recurso - - - - Remove feature - Remover recurso - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Axis Eixo - + Reverse direction Reverse direction - + Mode Modo - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Ângulo - + Offset Deslocamento paralelo - + Occurrences Ocorrências - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - - - + Error Erro @@ -2953,40 +2843,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Adicionar recurso - - - - Remove feature - Remover recurso - - - + Factor Fator - + Occurrences Ocorrências - - - OK - OK - - - - Update view - Actualizar a vista - - - - Remove - Remover - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ clique novamente para terminar a seleção PartDesignGui::TaskTransformedParameters - + + Remove + Remover + + + Normal sketch axis Eixo normal do esboço - + Vertical sketch axis Eixo vertical de esboço - + Horizontal sketch axis Eixo horizontal de esboço - - + + Construction line %1 %1 de linha de construção - + Base X axis Eixo X de base - + Base Y axis Eixo Y de base - + Base Z axis Eixo Z de base - - + + Select reference... Selecionar referência... - + Base XY plane Plano XY base - + Base YZ plane Plano YZ base - + Base XZ plane Plano XZ base + + + Add feature + Adicionar recurso + + + + Remove feature + Remover recurso + + + + List can be reordered by dragging + List can be reordered by dragging + + + + Update view + Actualizar a vista + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ clique novamente para terminar a seleção Por favor, crie um plano primeiro ou selecione uma face onde desenhar + + + + + + + - - - - - - - A dialog is already open in the task panel Já está aberta uma janela no painel de tarefas + + + + + + + - - - - - - - Do you want to close this dialog? Deseja fechar esta janela? @@ -3744,14 +3634,14 @@ This may lead to unexpected results. Não é possível criar um objeto subtrativo sem um objeto base disponível + - Vertical sketch axis Eixo vertical de esboço + - Horizontal sketch axis Eixo horizontal de esboço @@ -3803,15 +3693,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Para utilizar este objeto ele precisa de pertencer a uma peça do documento. - - + + Edit %1 Edite %1 - + Set colors... Definir cores... @@ -4730,83 +4620,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4869,8 +4759,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4881,14 +4771,14 @@ over 90: larger hole radius at the bottom - the selected sketch does not belong to the active Body. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4898,14 +4788,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4955,47 +4845,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5065,15 +4955,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.ts index 6d5018a98a..f9b9b1efc0 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.ts @@ -885,8 +885,8 @@ Creati noi coordonate in sistemul local Creare clonă - + Make copy Fă o copie @@ -911,8 +911,8 @@ Creati noi coordonate in sistemul local Create Boolean - + Add a Body Adaugă un corp @@ -942,22 +942,22 @@ Creati noi coordonate in sistemul local Mută un obiect în interiorul arborelui - + Mirrored In oglinda - + Make LinearPattern Fă LinearPattern - + PolarPattern PolarPattern - + Scaled Scalat @@ -1845,7 +1845,7 @@ faceți clic din nou pentru a încheia selecția Empty fillet created! - Empty fillet created! + Fișier gol creata! @@ -2059,73 +2059,43 @@ faceți clic din nou pentru a încheia selecția PartDesignGui::TaskLinearPatternParameters - - Add feature - Adauga o caracteristica - - - - Remove feature - Elimina caracteristică - - - - List can be reordered by dragging - Lista poate fi reordonată prin tragere - - - + Direction Direcţia - + Reverse direction Direcție inversă - + Mode Mod - + Overall Length Lungimea globală - - + + Offset Compensare - + Length Lungime - + Occurrences Aparitii - - OK - OK - - - - Update view - Actualizeaza vizualizarea - - - - Remove - Elimină - - - + Error Eroare @@ -2186,115 +2156,65 @@ faceți clic din nou pentru a încheia selecția PartDesignGui::TaskMirroredParameters - - Add feature - Adauga o caracteristica - - - - Remove feature - Elimina caracteristică - - - - List can be reordered by dragging - Lista poate fi reordonată prin tragere - - - + Plane Plan - - OK - OK - - - - Update view - Actualizeaza vizualizarea - - - - Remove - Elimină - - - + Error Eroare PartDesignGui::TaskMultiTransformParameters - - - Add feature - Adauga o caracteristica - - Remove feature - Elimina caracteristică - - - - List can be reordered by dragging - Lista poate fi reordonată prin tragere - - - Transformations Transformari - - Update view - Actualizeaza vizualizarea + + OK + OK - - Remove - Elimină - - - + Edit Editare - + Delete Ştergeţi - + Add mirrored transformation Adauga transformare în oglinda - + Add linear pattern Adauga sablon liniar - + Add polar pattern Adauga sablon polar - + Add scaled transformation Adauga transformare scalata - + Move up Deplasare în sus - + Move down Deplasare în jos @@ -2749,77 +2669,47 @@ măsurată de-a lungul direcției specificate PartDesignGui::TaskPolarPatternParameters - - Add feature - Adauga o caracteristica - - - - Remove feature - Elimina caracteristică - - - - List can be reordered by dragging - Lista poate fi reordonată prin tragere - - - + Axis Axele - + Reverse direction Direcție inversă - + Mode Mod - + Overall Angle Unghiul general - + Offset Angle Unghiul Offset - + Angle Unghi - + Offset Compensare - + Occurrences Aparitii - - OK - OK - - - - Update view - Actualizeaza vizualizarea - - - - Remove - Elimină - - - + Error Eroare @@ -2902,7 +2792,7 @@ măsurată de-a lungul direcției specificate 2nd angle - 2nd angle + Al doilea unghi @@ -2955,40 +2845,15 @@ măsurată de-a lungul direcției specificate PartDesignGui::TaskScaledParameters - - Add feature - Adauga o caracteristica - - - - Remove feature - Elimina caracteristică - - - + Factor Factor - + Occurrences Aparitii - - - OK - OK - - - - Update view - Actualizeaza vizualizarea - - - - Remove - Elimină - PartDesignGui::TaskShapeBinder @@ -3111,62 +2976,87 @@ faceți clic din nou pentru a încheia selecția PartDesignGui::TaskTransformedParameters - + + Remove + Elimină + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Axa verticală a schiţei - + Horizontal sketch axis Axa orizontală a schiţei - - + + Construction line %1 %1 linie de construcție - + Base X axis Axa X - + Base Y axis Axa Y - + Base Z axis Axa Z - - + + Select reference... Select reference... - + Base XY plane Plan XY - + Base YZ plane Plan YZ - + Base XZ plane Plan XZ + + + Add feature + Adauga o caracteristica + + + + Remove feature + Elimina caracteristică + + + + List can be reordered by dragging + Lista poate fi reordonată prin tragere + + + + Update view + Actualizeaza vizualizarea + PartDesignGui::ViewProviderChamfer @@ -3460,28 +3350,28 @@ faceți clic din nou pentru a încheia selecția Vă rugăm să creaţi mai întâi un plan, sau selectează o faţă pe care se aplică schiţa + + + + + + + - - - - - - - A dialog is already open in the task panel O fereastră de dialog este deja deschisă în fereastra de sarcini + + + + + + + - - - - - - - Do you want to close this dialog? Doriţi să închideţi această fereastră de dialog? @@ -3745,14 +3635,14 @@ This may lead to unexpected results. Nu este posibil să se creeze o funcție substractivă fără prezența unei funcții de bază + - Vertical sketch axis Axa verticală a schiţei + - Horizontal sketch axis Axa orizontală a schiţei @@ -3804,15 +3694,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Pentru a utiliza această funcție, ea trebuie să aparțină unei piese din document. - - + + Edit %1 Editare %1 - + Set colors... Seteaza culorile... @@ -4195,12 +4085,12 @@ Deși veți putea migra în orice moment mai târziu cu „Part Design -> Mig Chain Roller Diameter: - Chain Roller Diameter: + Diametru lanț Roller: Tooth Width - Tooth Width + Lățime dinte @@ -4731,83 +4621,83 @@ peste 90: rază mai mare la partea de jos BaseCaracteristica are o formă goală - + Cannot do boolean cut without BaseFeature Nu se poate face taietura booleana fara caracteristici de baza - - + + Cannot do boolean with anything but Part::Feature and its derivatives Nu se poate face boolean cu orice altceva decât Part::Caracteristică și derivații săi - + Cannot do boolean operation with invalid base shape Nu se poate efectua operația booleană cu forma de bază invalidă - + Cannot do boolean on feature which is not in a body Nu se poate face boolean pe o caracteristică care nu se află într-un corp - + Base shape is null Forma de bază este nulă - + Tool shape is null Forma sculei este nulă - + Fusion of tools failed Fuziunea uneltelor a eșuat - - - - - + - + + + + + Resulting shape is not a solid Forma rezultată nu este solidă - + Cut out failed Tăierea a eșuat - + Common operation failed Operație comună eșuată - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Rezultatul are mai multe solide: acest lucru nu este suportat în prezent. @@ -4870,8 +4760,8 @@ peste 90: rază mai mare la partea de jos Unghiul de canelă prea mic - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4882,14 +4772,14 @@ peste 90: rază mai mare la partea de jos - schița selectată nu aparține Organismului activ. - + Creating a face from sketch failed Crearea unei fațete din schiță a eșuat - + Revolve axis intersects the sketch Axa Revolve intersectează schița @@ -4899,14 +4789,14 @@ peste 90: rază mai mare la partea de jos Nu s-a reușit decuparea funcției de bază - + Could not revolve the sketch! Nu s-a putut revolta schița! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Nu s-a putut crea fața din schiță. @@ -4956,47 +4846,47 @@ Entitățile de schiță intersectate dintr-o schiță nu sunt permise.Eroare: Fața trebuie să fie plană - + Error: Could not build Eroare: Nu s-a putut construi - - - + + + Error: Result is not a solid Eroare: Rezultatul nu este solid - + Error: There is nothing to subtract Eroare: Nu există nimic de diminuat - - - + + + Error: Result has multiple solids Eroare: Rezultatul are mai multe solide - + Error: Adding the helix failed Eroare: Adăugarea helixului a eșuat - + Error: Intersecting the helix failed Eroare: Intersectarea helixului a eșuat - + Error: Subtracting the helix failed Eroare: scăderea helix a eșuat - + Error: Could not create face from sketch Eroare: Nu s-a putut crea fața din schiță @@ -5066,15 +4956,15 @@ Entitățile de schiță intersectate dintr-o schiță nu sunt permise.Eroare: Adăugarea temei de discuţie a eşuat - + Boolean operation failed Operația Booleană a eșuat - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Nu s-a putut crea fața din schiță. @@ -5173,7 +5063,7 @@ Elementele de intersectare ale schiței sau multiplele fețe dintr-o schiță nu Pad: Can't pad up to shape without base shape. - Pad: Can't pad up to shape without base shape. + Tastatură: Nu se poate face pad în formă fără forma de bază. @@ -5501,7 +5391,7 @@ Nu sunt permise entități intersectate de schiță sau multiple fețe dintr-o s Active body - Active body + Corp activ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.ts index a4a0ace786..a3abd4551e 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Клонировать - + Make copy Сделать копию @@ -909,8 +909,8 @@ so that self intersection is avoided. Булева операция - + Add a Body Добавить тело @@ -940,22 +940,22 @@ so that self intersection is avoided. Переместить объект внутри дерева - + Mirrored Симметрия - + Make LinearPattern Создать линейный массив - + PolarPattern Круговой массив - + Scaled Масштабирование @@ -2057,73 +2057,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Добавить элемент - - - - Remove feature - Удалить элемент - - - - List can be reordered by dragging - Список может быть переупорядочен перетаскиванием - - - + Direction Направление - + Reverse direction Развернуть направление - + Mode Режим - + Overall Length Общая длина - - + + Offset Смещение - + Length Длина - + Occurrences События - - OK - OK - - - - Update view - Обновить вид - - - - Remove - Убрать - - - + Error Ошибки @@ -2184,115 +2154,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Добавить элемент - - - - Remove feature - Удалить элемент - - - - List can be reordered by dragging - Список может быть переупорядочен перетаскиванием - - - + Plane Плоскость - - OK - OK - - - - Update view - Обновить вид - - - - Remove - Убрать - - - + Error Ошибка PartDesignGui::TaskMultiTransformParameters - - - Add feature - Добавить элемент - - Remove feature - Удалить элемент - - - - List can be reordered by dragging - Список может быть переупорядочен перетаскиванием - - - Transformations Преобразования - - Update view - Обновить вид + + OK + OK - - Remove - Убрать - - - + Edit Редактировать - + Delete Удалить - + Add mirrored transformation Добавить зеркальное преобразование - + Add linear pattern Добавить линейный массив - + Add polar pattern Добавить круговой массив - + Add scaled transformation Добавить преобразование масштаба - + Move up Переместить вверх - + Move down Переместить вниз @@ -2745,77 +2665,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Добавить элемент - - - - Remove feature - Удалить элемент - - - - List can be reordered by dragging - Список может быть переупорядочен перетаскиванием - - - + Axis Ось - + Reverse direction Развернуть направление - + Mode Режим - + Overall Angle Общий угол - + Offset Angle Угол смещения - + Angle Угол - + Offset Смещение - + Occurrences Вхождений - - OK - OK - - - - Update view - Обновить вид - - - - Remove - Убрать - - - + Error Ошибка @@ -2951,40 +2841,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Добавить элемент - - - - Remove feature - Удалить элемент - - - + Factor Фактор - + Occurrences События - - - OK - OK - - - - Update view - Обновить вид - - - - Remove - Убрать - PartDesignGui::TaskShapeBinder @@ -3011,7 +2876,7 @@ measured along the specified direction Remove - Удалить + Убрать @@ -3108,62 +2973,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Убрать + + + Normal sketch axis Нормаль оси Эскиза - + Vertical sketch axis Вертикальная ось эскиза - + Horizontal sketch axis Горизонтальная ось эскиза - - + + Construction line %1 Вспомогательная линия %1 - + Base X axis Базовая ось X - + Base Y axis Базовая ось Y - + Base Z axis Базовая ось Z - - + + Select reference... Выбрать ориентир... - + Base XY plane Базовая плоскость XY - + Base YZ plane Базовая плоскость YZ - + Base XZ plane Базовая плоскость XZ + + + Add feature + Добавить элемент + + + + Remove feature + Удалить элемент + + + + List can be reordered by dragging + Список может быть переупорядочен перетаскиванием + + + + Update view + Обновить вид + PartDesignGui::ViewProviderChamfer @@ -3457,28 +3347,28 @@ click again to end selection Пожалуйста, сначала создайте плоскость или выберите грань + + + + + + + - - - - - - - A dialog is already open in the task panel Диалог уже открыт в панели задач + + + + + + + - - - - - - - Do you want to close this dialog? Вы хотите закрыть этот диалог? @@ -3746,14 +3636,14 @@ This may lead to unexpected results. Невозможно создать субтрактивный элемент без базового элемента + - Vertical sketch axis Вертикальная ось эскиза + - Horizontal sketch axis Горизонтальная ось эскиза @@ -3807,15 +3697,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Для того, чтобы использовать этот элемент, он должен являться объектом типа деталь в документе. - - + + Edit %1 Редактировать %1 - + Set colors... Установите цвета... @@ -4251,7 +4141,7 @@ Note that the calculation can take some time Update view - Обновить + Обновить вид @@ -4732,83 +4622,83 @@ over 90: larger hole radius at the bottom Базовый элемент имеет пустую форму - + Cannot do boolean cut without BaseFeature Невозможно выполнить логический разрез без базового элемента - - + + Cannot do boolean with anything but Part::Feature and its derivatives Не может делать логическую операцию ни с чем, кроме Part::Feature(элемент детали) и его производных - + Cannot do boolean operation with invalid base shape Невозможно выполнить логическую операцию с недопустимой базовой формой - + Cannot do boolean on feature which is not in a body Невозможно сделать логическую операцию для функции, которая не является телом - + Base shape is null Базовая форма пустая - + Tool shape is null Форма инструмента пустая - + Fusion of tools failed Сбой слияния инструментов - - - - - + - + + + + + Resulting shape is not a solid Результат не является твердотельным - + Cut out failed Не удалось вырезать - + Common operation failed Общая операция не удалась - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Результат состоит из нескольких тел: это в настоящее время это не поддерживается. @@ -4871,8 +4761,8 @@ over 90: larger hole radius at the bottom Угол канавки слишком мал - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4883,14 +4773,14 @@ over 90: larger hole radius at the bottom - выбранный эскиз не принадлежит активному телу. - + Creating a face from sketch failed Не удалось создать грань из эскиза - + Revolve axis intersects the sketch Ось вращения пересекает эскиз @@ -4900,14 +4790,14 @@ over 90: larger hole radius at the bottom Не удалось вырезать базовый элемент - + Could not revolve the sketch! Не удалось повернуть эскиз! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Не удалось создать грань из эскиза. @@ -4957,47 +4847,47 @@ Intersecting sketch entities in a sketch are not allowed. Ошибка: грань должна быть плоской - + Error: Could not build Ошибка: Не удалось собрать - - - + + + Error: Result is not a solid Ошибка: Результат не твердотельный - + Error: There is nothing to subtract Ошибка: Нечего вычитать - - - + + + Error: Result has multiple solids Ошибка: Результат имеет несколько твердых частей - + Error: Adding the helix failed Ошибка: добавление спирали не удалось - + Error: Intersecting the helix failed Ошибка: пересечение спирали не удалось - + Error: Subtracting the helix failed Ошибка: не удалось вычесть спираль - + Error: Could not create face from sketch Ошибка: Не удалось создать грань из эскиза @@ -5067,15 +4957,15 @@ Intersecting sketch entities in a sketch are not allowed. Ошибка: не удалось добавить резьбу - + Boolean operation failed Не удалось выполнить булеву операцию - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Не удалось создать грань из эскиза. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts index 38bbc5b6d7..9f11c4e177 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts @@ -883,8 +883,8 @@ da se izogne samosečnosti. Ustvari dvojnika - + Make copy Naredi kopijo @@ -909,8 +909,8 @@ da se izogne samosečnosti. Ustvari logično vrednost - + Add a Body Dodaj telo @@ -940,22 +940,22 @@ da se izogne samosečnosti. Premikaj predmet po drevesu - + Mirrored Zrcaljeno - + Make LinearPattern Naredi Premočrtni vzorec - + PolarPattern Krožni vzorec - + Scaled Povečava @@ -2057,73 +2057,43 @@ s ponovnim klikom pa zaključite izbiranje PartDesignGui::TaskLinearPatternParameters - - Add feature - Dodaj značilnost - - - - Remove feature - Odstrani značilnost - - - - List can be reordered by dragging - Zaporedje v seznamu lahko spreminjate z vlečenjem - - - + Direction Smer - + Reverse direction Nasprotna smer - + Mode Način - + Overall Length Overall Length - - + + Offset Odmik - + Length Dolžina - + Occurrences Pojavitve - - OK - V redu - - - - Update view - Posodobi pogled - - - - Remove - Odstrani - - - + Error Napaka @@ -2184,115 +2154,65 @@ s ponovnim klikom pa zaključite izbiranje PartDesignGui::TaskMirroredParameters - - Add feature - Dodaj značilnost - - - - Remove feature - Odstrani značilnost - - - - List can be reordered by dragging - Zaporedje v seznamu lahko spreminjate z vlečenjem - - - + Plane Ravnina - - OK - V redu - - - - Update view - Posodobi pogled - - - - Remove - Odstrani - - - + Error Napaka PartDesignGui::TaskMultiTransformParameters - - - Add feature - Dodaj značilnost - - Remove feature - Odstrani značilnost - - - - List can be reordered by dragging - Zaporedje v seznamu lahko spreminjate z vlečenjem - - - Transformations Preobliovanja - - Update view - Posodobi pogled + + OK + V redu - - Remove - Odstrani - - - + Edit Uredi - + Delete Izbriši - + Add mirrored transformation Dodaj zrcalno preoblikovanje - + Add linear pattern Dodaj premočrtni vzorec - + Add polar pattern Dodaj krožni vzorec - + Add scaled transformation Dodaj velikostno preoblikovanja - + Move up Premakni gor - + Move down Premakni dol @@ -2747,77 +2667,47 @@ merjena vzdolž določene smeri PartDesignGui::TaskPolarPatternParameters - - Add feature - Dodaj značilnost - - - - Remove feature - Odstrani značilnost - - - - List can be reordered by dragging - Zaporedje v seznamu lahko spreminjate z vlečenjem - - - + Axis Os - + Reverse direction Nasprotna smer - + Mode Način - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Kot - + Offset Odmik - + Occurrences Pogostosti - - OK - Potrdi - - - - Update view - Posodobi pogled - - - - Remove - Odstrani - - - + Error Napaka @@ -2953,40 +2843,15 @@ merjena vzdolž določene smeri PartDesignGui::TaskScaledParameters - - Add feature - Dodaj značilnost - - - - Remove feature - Odstrani značilnost - - - + Factor Količnik - + Occurrences Pojavitve - - - OK - Potrdi - - - - Update view - Posodobi pogled - - - - Remove - Odstrani - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ s ponovnim klikom pa zaključite izbiranje PartDesignGui::TaskTransformedParameters - + + Remove + Odstrani + + + Normal sketch axis Os normale skice - + Vertical sketch axis Navpična os skice - + Horizontal sketch axis Vodoravna os skice - - + + Construction line %1 Pomožna črta %1 - + Base X axis Osnovna X os - + Base Y axis Osnovna Y os - + Base Z axis Osnovna Z os - - + + Select reference... Izberite osnovo … - + Base XY plane Osnovna XY ravnina - + Base YZ plane Osnovna YZ ravnina - + Base XZ plane Osnovna XZ ravnina + + + Add feature + Dodaj značilnost + + + + Remove feature + Odstrani značilnost + + + + List can be reordered by dragging + Zaporedje v seznamu lahko spreminjate z vlečenjem + + + + Update view + Posodobi pogled + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ s ponovnim klikom pa zaključite izbiranje Ustvarite najprej ravnino ali izberite ploskev, na katero želite očrtavati + + + + + + + - - - - - - - A dialog is already open in the task panel A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? Do you want to close this dialog? @@ -3748,14 +3638,14 @@ To lahko pripelje do nepričakovanih rezultatov. Značilke odvzemanja ni mogoče ustvariti, če osnovna značilnost ni na voljo + - Vertical sketch axis Navpična os skice + - Horizontal sketch axis Vodoravna os skice @@ -3809,15 +3699,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Če želite uporabiti to značilnost, mora pripadati delu v dokumentu. - - + + Edit %1 Uredi %1 - + Set colors... Nastavi barve … @@ -4737,83 +4627,83 @@ nad 90: v spodnjem delu večji premer luknje ZnačilnostOsnove ima prazno obliko - + Cannot do boolean cut without BaseFeature Rezanja z logičnimi operacijami ni mogoče izvesti brez ZnačilnostiOsnove - - + + Cannot do boolean with anything but Part::Feature and its derivatives Logično operacijo je mogoče izvesti le z Delom::Značilnost (Part::Feature) in njegovimi izpeljavami - + Cannot do boolean operation with invalid base shape Rezanja z logičnimi operacijami ni mogoče izvesti z neveljavno izhodiščno obliko - + Cannot do boolean on feature which is not in a body Logične operacije ni mogoče izvesti z značilnostjo, ki ni v telesu - + Base shape is null Izhodiščna oblika je ničelna - + Tool shape is null Oblika orodja je ničelna - + Fusion of tools failed Spojitev orodij spodletela - - - - - + - + + + + + Resulting shape is not a solid Dobljena oblika ni telo - + Cut out failed Izrezovanje spodletelo - + Common operation failed Skupno dejanje spodletelo - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Dobljenih je več teles, kar pa trenutno ni podprto. @@ -4876,8 +4766,8 @@ nad 90: v spodnjem delu večji premer luknje Premajhene kot žlebiča - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ nad 90: v spodnjem delu večji premer luknje - izbrani očrt ne pripada dejavnemu telesu. - + Creating a face from sketch failed Ustvarjanje ploskve iz očrta spodletelo - + Revolve axis intersects the sketch Os vrtenine seka očrt @@ -4904,14 +4794,14 @@ nad 90: v spodnjem delu večji premer luknje Izrezovanje iz osnovne značilnosti spodletelo - + Could not revolve the sketch! Očrta ni mogoče zvrteti! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Iz očrta ni bilo mogoče ustvariti ploskve. @@ -4961,47 +4851,47 @@ Sekajoče se prvine očrta niso dovoljene. Napaka: ploskev mora biti ravninska - + Error: Could not build Napaka: ni mogoče narediti - - - + + + Error: Result is not a solid Napaka: dobljeno ni telo - + Error: There is nothing to subtract Napaka: ni česa odvzeti - - - + + + Error: Result has multiple solids Napaka: dobljenih je več teles - + Error: Adding the helix failed Napaka: dodajanje vijačnice spodletelo - + Error: Intersecting the helix failed Napaka: presečišče z vijačnico spodletelo - + Error: Subtracting the helix failed Napaka: odvzemanje vijačnice spodletelo - + Error: Could not create face from sketch Napaka: ni bilo mogoče ustvariti ploskve iz očrta @@ -5071,15 +4961,15 @@ Sekajoče se prvine očrta niso dovoljene. Napaka: dodajanje navoja spodletelo - + Boolean operation failed Logična operacija spodletela - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Iz očrta ni bilo mogoče ustvariti ploskve. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr-CS.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr-CS.ts index d4b1c4f8d7..092d1e2181 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr-CS.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr-CS.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Napravi klon - + Make copy Napravi kopiju @@ -909,8 +909,8 @@ so that self intersection is avoided. Napravi Bulovu operaciju - + Add a Body Dodaj telo @@ -940,22 +940,22 @@ so that self intersection is avoided. Pomeri objekat unutar stabla - + Mirrored Simetrično preslikavanje - + Make LinearPattern Napravi linearno umnožavanje - + PolarPattern Kružno umnožavanje - + Scaled Skalirano @@ -2057,73 +2057,43 @@ klikni ponovo da bi završio izbor PartDesignGui::TaskLinearPatternParameters - - Add feature - Dodaj tipski oblik - - - - Remove feature - Ukloni tipski oblik - - - - List can be reordered by dragging - Lista se može reorganizovati prevlačenjem - - - + Direction Pravac - + Reverse direction Obrni smer - + Mode Režim - + Overall Length Ukupna dužina - - + + Offset Odmak - + Length Dužina - + Occurrences Broj pojavljivanja - - OK - U redu - - - - Update view - Ažurirajte pogled - - - - Remove - Ukloni - - - + Error Greška @@ -2184,115 +2154,65 @@ klikni ponovo da bi završio izbor PartDesignGui::TaskMirroredParameters - - Add feature - Dodaj tipski oblik - - - - Remove feature - Ukloni tipski oblik - - - - List can be reordered by dragging - Lista se može reorganizovati prevlačenjem - - - + Plane Ravan - - OK - U redu - - - - Update view - Ažurirajte pogled - - - - Remove - Ukloni - - - + Error Greška PartDesignGui::TaskMultiTransformParameters - - - Add feature - Dodaj tipski oblik - - Remove feature - Ukloni tipski oblik - - - - List can be reordered by dragging - Lista se može reorganizovati prevlačenjem - - - Transformations Transformacije - - Update view - Ažurirajte pogled + + OK + U redu - - Remove - Ukloni - - - + Edit Uredi - + Delete Obriši - + Add mirrored transformation Simetrično preslikaj - + Add linear pattern Umnoži linearno - + Add polar pattern Umnoži kružno - + Add scaled transformation Povećaj ili smanji - + Move up Pomeri nagore - + Move down Pomeri nadole @@ -2747,77 +2667,47 @@ merena duž zadatog pravca PartDesignGui::TaskPolarPatternParameters - - Add feature - Dodaj tipski oblik - - - - Remove feature - Ukloni tipski oblik - - - - List can be reordered by dragging - Lista se može reorganizovati prevlačenjem - - - + Axis Osa - + Reverse direction Obrni smer - + Mode Režim - + Overall Angle Ukupni ugao - + Offset Angle Ugaoni odmak - + Angle Ugao - + Offset Odmak - + Occurrences Broj pojavljivanja - - OK - U redu - - - - Update view - Ažurirajte pogled - - - - Remove - Ukloni - - - + Error Greška @@ -2953,40 +2843,15 @@ merena duž zadatog pravca PartDesignGui::TaskScaledParameters - - Add feature - Dodaj tipski oblik - - - - Remove feature - Ukloni tipski oblik - - - + Factor Koeficijent - + Occurrences Broj pojavljivanja - - - OK - U redu - - - - Update view - Ažurirajte pogled - - - - Remove - Ukloni - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ klikni ponovo da bi završio izbor PartDesignGui::TaskTransformedParameters - + + Remove + Ukloni + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Vertikalna osa skice - + Horizontal sketch axis Horizontalna osa skice - - + + Construction line %1 Pomoćna prava %1 - + Base X axis Osnovna X osa - + Base Y axis Osnovna Y osa - + Base Z axis Osnovna Z osa - - + + Select reference... Izaberi sopstvenu... - + Base XY plane Osnovna XY ravan - + Base YZ plane Osnovna YZ ravan - + Base XZ plane Osnovna XZ ravan + + + Add feature + Dodaj tipski oblik + + + + Remove feature + Ukloni tipski oblik + + + + List can be reordered by dragging + Lista se može reorganizovati prevlačenjem + + + + Update view + Ažurirajte pogled + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ klikni ponovo da bi završio izbor Da bi mogao crtati skicu prvo napravi ravan ili izaberi stranicu + + + + + + + - - - - - - - A dialog is already open in the task panel A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? Do you want to close this dialog? @@ -3748,14 +3638,14 @@ Ovo može dovesti do neočekivanih rezultata. Ne možeš primeniti tipske oblike koji prave udubljenja ako nemaš na raspolaganju osnovni tipski oblik + - Vertical sketch axis Vertikalna osa skice + - Horizontal sketch axis Horizontalna osa skice @@ -3809,15 +3699,15 @@ Ako imaš nasleđeni dokument sa PartDesign objektima bez tela, koristi funkciju Da bi koristio ovaj tipski oblik, on mora da pripada delu u dokumentu. - - + + Edit %1 Uredi %1 - + Set colors... Ofarbaj stranice @@ -4737,83 +4627,83 @@ iznad 90: veći poluprečnik rupe na dnu OsnovniOblik je prazan - + Cannot do boolean cut without BaseFeature Ne može se izvršiti Isecanje bulovom operacijom bez OsnovnogOblika - - + + Cannot do boolean with anything but Part::Feature and its derivatives Ne mogu se vršiti bulove operacije sa ničim osim Part::Feature i njegovim derivatima - + Cannot do boolean operation with invalid base shape Nije moguće izvršiti bulovu operaciju sa neispravnim OsnovnimOblik-om - + Cannot do boolean on feature which is not in a body Nije moguće izvršiti bulovu operaciju sa oblikom koji nije unutar Tela (Body) - + Base shape is null Osnovni oblik je prazan - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Dobijeni oblik nije puno telo - + Cut out failed Isecanje nije uspelo - + Common operation failed Bulova operacija presek nije uspela - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Rezultat ima više punih tela: ovo trenutno nije podržano. @@ -4876,8 +4766,8 @@ iznad 90: veći poluprečnik rupe na dnu Ugao kružnog udubljenja je suviše mali - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4888,14 +4778,14 @@ iznad 90: veći poluprečnik rupe na dnu - izabrana skica ne pripada aktivnom Telu. - + Creating a face from sketch failed Pravljenje stranica pomoću skice nije uspelo - + Revolve axis intersects the sketch Osa rotacije preseca skicu @@ -4905,14 +4795,14 @@ iznad 90: veći poluprečnik rupe na dnu Isecanje osnovnog tipskog oblika nije uspelo - + Could not revolve the sketch! Nije moguće rotirati skicu! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Nije moguće napraviti stranice pomoću skice. @@ -4962,47 +4852,47 @@ Nije dozvoljeno ukrštanje elemenata na skici. Greška: Stranica mora biti ravna - + Error: Could not build Greška: Nije moguće napraviti - - - + + + Error: Result is not a solid Greška: Rezultat nije puno telo - + Error: There is nothing to subtract Greška: Nema šta da se oduzima - - - + + + Error: Result has multiple solids Greška: Rezultat ima više punih tela - + Error: Adding the helix failed Greška: Dodavanje heliksa nije uspelo - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Greška: Oduzimanje heliksa nije uspelo - + Error: Could not create face from sketch Greška: Nije moguće napraviti stranicu pomoću skice @@ -5072,15 +4962,15 @@ Nije dozvoljeno ukrštanje elemenata na skici. Greška: Dodavanje navoja nije uspelo - + Boolean operation failed Bulova operacija nije uspela - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Nije moguće napraviti stranice pomoću skice. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts index daec099c11..57a87956be 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Направи клон - + Make copy Направи копију @@ -909,8 +909,8 @@ so that self intersection is avoided. Направи Булову операцију - + Add a Body Додај тело @@ -940,22 +940,22 @@ so that self intersection is avoided. Помери објекат унутар стабла - + Mirrored Симетрично пресликавање - + Make LinearPattern Направи линеарно умножавање - + PolarPattern Кружно умножавање - + Scaled Скалирано @@ -2057,73 +2057,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Додај типски облик - - - - Remove feature - Уклони типски облик - - - - List can be reordered by dragging - Листа се може реорганизовати превлачењем - - - + Direction Правац - + Reverse direction Обрни смер - + Mode Режим - + Overall Length Укупна дужина - - + + Offset Одмак - + Length Дужина - + Occurrences Број појављивања - - OK - У реду - - - - Update view - Ажурирај поглед - - - - Remove - Уклони - - - + Error Грешка @@ -2184,115 +2154,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Додај типски облик - - - - Remove feature - Уклони типски облик - - - - List can be reordered by dragging - Листа се може реорганизовати превлачењем - - - + Plane Раван - - OK - У реду - - - - Update view - Ажурирај поглед - - - - Remove - Уклони - - - + Error Грешка PartDesignGui::TaskMultiTransformParameters - - - Add feature - Додај типски облик - - Remove feature - Уклони типски облик - - - - List can be reordered by dragging - Листа се може реорганизовати превлачењем - - - Transformations Трансформације - - Update view - Ажурирај поглед + + OK + У реду - - Remove - Уклони - - - + Edit Уреди - + Delete Обриши - + Add mirrored transformation Симетрично пресликај - + Add linear pattern Умножи линеарно - + Add polar pattern Умножи кружно - + Add scaled transformation Повећај или смањи - + Move up Помери нагоре - + Move down Померите надоле @@ -2747,77 +2667,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Додај типски облик - - - - Remove feature - Уклони типски облик - - - - List can be reordered by dragging - Листа се може реорганизовати превлачењем - - - + Axis Оса - + Reverse direction Обрни смер - + Mode Режим - + Overall Angle Укупни угао - + Offset Angle Угаони одмак - + Angle Угао - + Offset Одмак - + Occurrences Број појављивања - - OK - У реду - - - - Update view - Ажурирај поглед - - - - Remove - Уклони - - - + Error Грешка @@ -2953,40 +2843,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Додај типски облик - - - - Remove feature - Уклони типски облик - - - + Factor Коефицијент - + Occurrences Број појављивања - - - OK - У реду - - - - Update view - Ажурирај поглед - - - - Remove - Уклони - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Уклони + + + Normal sketch axis Нормалне оcе cкице - + Vertical sketch axis Вертикална оcа cкице - + Horizontal sketch axis Хоризонтална оса скице - - + + Construction line %1 Помоћна права %1 - + Base X axis Основна X оса - + Base Y axis Основна Y оса - + Base Z axis Основна Z оса - - + + Select reference... Изабери сопствену... - + Base XY plane Основна XY раван - + Base YZ plane Основна YZ раван - + Base XZ plane Основна XZ раван + + + Add feature + Додај типски облик + + + + Remove feature + Уклони типски облик + + + + List can be reordered by dragging + Листа се може реорганизовати превлачењем + + + + Update view + Ажурирај поглед + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ click again to end selection Да би могао цртати скицу прво направи раван или изабери страницу + + + + + + + - - - - - - - A dialog is already open in the task panel Дијалог је већ отворен у панелу задатака + + + + + + + - - - - - - - Do you want to close this dialog? Да ли желите да затворите овај дијалог? @@ -3748,14 +3638,14 @@ This may lead to unexpected results. Не можеш применити типске облике који праве удубљења ако немаш на располагању основни типски облик + - Vertical sketch axis Вертикална оcа cкице + - Horizontal sketch axis Хоризонтална оса скице @@ -3809,15 +3699,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Да би користио овај типски облик, он мора да припада делу у документу. - - + + Edit %1 Уреди %1 - + Set colors... Офарбај странице @@ -4737,83 +4627,83 @@ over 90: larger hole radius at the bottom ОсновниОблик је празан - + Cannot do boolean cut without BaseFeature Не може се извршити Исецање буловом операцијом без ОсновногОблика - - + + Cannot do boolean with anything but Part::Feature and its derivatives Не могу се вршити булове операције са ничим осим Part::Feature и његовим дериватима - + Cannot do boolean operation with invalid base shape Није могуће извршити булову операцију са неисправним ОсновнимОблик-ом - + Cannot do boolean on feature which is not in a body Није могуће извршити булову операцију са обликом који није унутар Тела (Бодy) - + Base shape is null Основни облик је празан - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Добијени облик није пуно тело - + Cut out failed Исецање није успело - + Common operation failed Булова операција пресек није успела - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Резултат има више пуних тела: ово тренутно није подржано. @@ -4876,8 +4766,8 @@ over 90: larger hole radius at the bottom Угао кружног удубљења је сувише мали - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4888,14 +4778,14 @@ over 90: larger hole radius at the bottom - изабрана скица не припада активном Телу. - + Creating a face from sketch failed Прављење страница помоћу скице није успело - + Revolve axis intersects the sketch Оса ротације пресеца скицу @@ -4905,14 +4795,14 @@ over 90: larger hole radius at the bottom Исецање основног типског облика није успело - + Could not revolve the sketch! Није могуће ротирати скицу! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Није могуће направити странице помоћу скице. @@ -4962,47 +4852,47 @@ Intersecting sketch entities in a sketch are not allowed. Грешка: Страница мора бити равна - + Error: Could not build Грешка: Није могуће направити - - - + + + Error: Result is not a solid Грешка: Резултат није пуно тело - + Error: There is nothing to subtract Грешка: Нема шта да се одузима - - - + + + Error: Result has multiple solids Грешка: Резултат има више пуних тела - + Error: Adding the helix failed Грешка: Додавање хеликса није успело - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Грешка: Одузимање хеликса није успело - + Error: Could not create face from sketch Грешка: Није могуће направити страницу помоћу скице @@ -5072,15 +4962,15 @@ Intersecting sketch entities in a sketch are not allowed. Грешка: Додавање навоја није успело - + Boolean operation failed Булова операција није успела - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Није могуће направити странице помоћу скице. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.ts index 39891b69ab..ab63f42a7f 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.ts @@ -882,8 +882,8 @@ so that self intersection is avoided. Skapa klon - + Make copy Skapa kopia @@ -908,8 +908,8 @@ so that self intersection is avoided. Create Boolean - + Add a Body Lägg till en kropp @@ -939,22 +939,22 @@ so that self intersection is avoided. Move an object inside tree - + Mirrored Speglad - + Make LinearPattern Make LinearPattern - + PolarPattern Polärt mönster - + Scaled Skalad @@ -2056,73 +2056,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Lägg till funktion - - - - Remove feature - Ta bort funktion - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Direction Riktning - + Reverse direction Omvänd riktning - + Mode Läge - + Overall Length Overall Length - - + + Offset Offset - + Length Längd - + Occurrences Förekomster - - OK - OK - - - - Update view - Uppdatera vy - - - - Remove - Ta bort - - - + Error Fel @@ -2183,115 +2153,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Lägg till funktion - - - - Remove feature - Ta bort funktion - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Plane Plan - - OK - OK - - - - Update view - Uppdatera vy - - - - Remove - Ta bort - - - + Error Fel PartDesignGui::TaskMultiTransformParameters - - - Add feature - Lägg till funktion - - Remove feature - Ta bort funktion - - - - List can be reordered by dragging - List can be reordered by dragging - - - Transformations Omvandlingar - - Update view - Uppdatera vy + + OK + OK - - Remove - Ta bort - - - + Edit Redigera - + Delete Radera - + Add mirrored transformation Lägg till speglad omvandling - + Add linear pattern Lägg till linjärt mönster - + Add polar pattern Lägg till polärt mönster - + Add scaled transformation Lägg till skalad omvandling - + Move up Flytta upp - + Move down Flytta ned @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Lägg till funktion - - - - Remove feature - Ta bort funktion - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Axis Axel - + Reverse direction Omvänd riktning - + Mode Läge - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Vinkel - + Offset Offset - + Occurrences Förekomster - - OK - OK - - - - Update view - Uppdatera vy - - - - Remove - Ta bort - - - + Error Fel @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Lägg till funktion - - - - Remove feature - Ta bort funktion - - - + Factor Faktor - + Occurrences Förekomster - - - OK - OK - - - - Update view - Uppdatera vy - - - - Remove - Ta bort - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Ta bort + + + Normal sketch axis Normal skissaxel - + Vertical sketch axis Vertikal skissaxel - + Horizontal sketch axis Horisontell skissaxel - - + + Construction line %1 Konstruktionslinje %1 - + Base X axis Basens X-axel - + Base Y axis Basens Y-axel - + Base Z axis Basens Z-axel - - + + Select reference... Välj referens... - + Base XY plane XY-basplan - + Base YZ plane YZ-basplan - + Base XZ plane XZ-basplan + + + Add feature + Lägg till funktion + + + + Remove feature + Ta bort funktion + + + + List can be reordered by dragging + List can be reordered by dragging + + + + Update view + Uppdatera vy + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ click again to end selection Vänligen skapa ett plan först eller välj en yta att skissa på + + + + + + + - - - - - - - A dialog is already open in the task panel En dialogruta är redan öppen i uppgiftspanelen + + + + + + + - - - - - - - Do you want to close this dialog? Vill du stänga denna dialogruta? @@ -3743,14 +3633,14 @@ This may lead to unexpected results. Det går inte att skapa en subtraktiv funktion utan en tillgänglig basfunktion + - Vertical sketch axis Vertikal skissaxel + - Horizontal sketch axis Horisontell skissaxel @@ -3804,15 +3694,15 @@ Om du har ett utdaterat dokument med Part Design-objekt utan kropp, använd migr För att kunna använda denna funktion måste den tillhöra en del i dokumentet. - - + + Edit %1 Redigera %1 - + Set colors... Ställ in färgerna ... @@ -4731,83 +4621,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4870,8 +4760,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4882,14 +4772,14 @@ over 90: larger hole radius at the bottom - the selected sketch does not belong to the active Body. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4899,14 +4789,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4956,47 +4846,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5066,15 +4956,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts index 7d00a882d7..4d49f4d9e4 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Klone oluştur - + Make copy Kopya oluştur @@ -909,8 +909,8 @@ so that self intersection is avoided. Mantıksal (İşlem) Oluştur - + Add a Body Gövde Ekle @@ -940,22 +940,22 @@ so that self intersection is avoided. Bir nesneyi işlem ağacı içerisinde taşı - + Mirrored Aynala - + Make LinearPattern Doğrusal Çoğaltma yap - + PolarPattern Dairesel Çoğaltım - + Scaled Ölçeklendirilmiş @@ -2057,73 +2057,43 @@ seçimi bitirmek için tekrar basın PartDesignGui::TaskLinearPatternParameters - - Add feature - Özellik ekle - - - - Remove feature - Özelliğini kaldır - - - - List can be reordered by dragging - Liste, sürüklenerek tekrar sıralanabilir - - - + Direction Yön - + Reverse direction Reverse direction - + Mode Mod - + Overall Length Overall Length - - + + Offset Uzaklaşma - + Length Uzunluk - + Occurrences Yineleme adedi - - OK - Tamam - - - - Update view - Görünümü güncelle - - - - Remove - Kaldır - - - + Error Hata @@ -2184,115 +2154,65 @@ seçimi bitirmek için tekrar basın PartDesignGui::TaskMirroredParameters - - Add feature - Özellik ekle - - - - Remove feature - Özelliğini kaldır - - - - List can be reordered by dragging - Liste, sürüklenerek tekrar sıralanabilir - - - + Plane Düzlem - - OK - Tamam - - - - Update view - Görünümü güncelle - - - - Remove - Kaldır - - - + Error Hata PartDesignGui::TaskMultiTransformParameters - - - Add feature - Özellik ekle - - Remove feature - Özelliğini kaldır - - - - List can be reordered by dragging - Liste, sürüklenerek tekrar sıralanabilir - - - Transformations Dönüşümler - - Update view - Görünümü güncelle + + OK + Tamam - - Remove - Kaldır - - - + Edit Düzenle - + Delete Sil - + Add mirrored transformation Aynalama özelliği ekle - + Add linear pattern Doğrusal çoğaltım ekle - + Add polar pattern Dairesel çoğaltım ekle - + Add scaled transformation Ölçekleme dönüşümü ekle - + Move up Yukarı taşı - + Move down Aşağı taşı @@ -2747,77 +2667,47 @@ belirlenen yön boyunca ölçülecek PartDesignGui::TaskPolarPatternParameters - - Add feature - Özellik ekle - - - - Remove feature - Özelliğini kaldır - - - - List can be reordered by dragging - Liste, sürüklenerek tekrar sıralanabilir - - - + Axis Eksen - + Reverse direction Reverse direction - + Mode Mod - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Açı - + Offset Uzaklaşma - + Occurrences Yineleme adedi - - OK - Tamam - - - - Update view - Görünümü güncelle - - - - Remove - Kaldır - - - + Error Hata @@ -2953,40 +2843,15 @@ belirlenen yön boyunca ölçülecek PartDesignGui::TaskScaledParameters - - Add feature - Özellik ekle - - - - Remove feature - Özelliğini kaldır - - - + Factor Faktör - + Occurrences Yineleme adedi - - - OK - Tamam - - - - Update view - Görünümü güncelle - - - - Remove - Kaldır - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ seçimi bitirmek için tekrar basın PartDesignGui::TaskTransformedParameters - + + Remove + Kaldır + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Dikey taslak ekseni - + Horizontal sketch axis Yatay taslak ekseni - - + + Construction line %1 Yapı hattı %1 - + Base X axis Baz X ekseni - + Base Y axis Baz Y ekseni - + Base Z axis Baz Z ekseni - - + + Select reference... Select reference... - + Base XY plane Baz XY düzlemi - + Base YZ plane Baz YZ düzlemi - + Base XZ plane Baz XZ düzlemi + + + Add feature + Özellik ekle + + + + Remove feature + Özelliğini kaldır + + + + List can be reordered by dragging + Liste, sürüklenerek tekrar sıralanabilir + + + + Update view + Görünümü güncelle + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ seçimi bitirmek için tekrar basın Lütfen önce bir düzlem oluşturun ya da bir eskiz yüzeyi seçin + + + + + + + - - - - - - - A dialog is already open in the task panel Araç çubuğunda bir pencere zaten açık + + + + + + + - - - - - - - Do you want to close this dialog? Bu pencereyi kapatmak ister misiniz? @@ -3748,14 +3638,14 @@ Bu, beklenmedik sonuçlara neden olabilir. Mevcut bir temel özellik olmadan bir çıkarılabilir özellik oluşturmak mümkün değildir + - Vertical sketch axis Dikey taslak ekseni + - Horizontal sketch axis Yatay taslak ekseni @@ -3809,15 +3699,15 @@ Gövdeye sahip olmayan nesneler içeren eski bir belgeniz varsa, bunları bir g Bu özelliği kullanmak için belgedeki bir parçaya ait olması gerekir. - - + + Edit %1 %1'i düzenle - + Set colors... Renkleri ayarla... @@ -4736,83 +4626,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4875,8 +4765,8 @@ over 90: larger hole radius at the bottom Oluk açısı çok dar - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ over 90: larger hole radius at the bottom - seçili eskiz etkin Gövdeye ait değil. - + Creating a face from sketch failed Taslakdan yüzey yaratma hatası - + Revolve axis intersects the sketch Çevirme ekseni taslak ile kesizşiyor @@ -4904,14 +4794,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4961,47 +4851,47 @@ Intersecting sketch entities in a sketch are not allowed. Hata: yüzey düzlemsel olmalı - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5071,15 +4961,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.ts index d3f193a6af..0a12317621 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Створити Клон - + Make copy Зробити копію @@ -909,8 +909,8 @@ so that self intersection is avoided. Створити Булеву операцію - + Add a Body Додати Тіло @@ -940,22 +940,22 @@ so that self intersection is avoided. Перемістити об’єкт всередині ієрархії документа - + Mirrored Дзеркальне зображення - + Make LinearPattern Створити Лінійний масив - + PolarPattern Круговий масив - + Scaled Масштабування @@ -2057,73 +2057,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Додати елемент - - - - Remove feature - Видалити елемент - - - - List can be reordered by dragging - Список можна змінити шляхом перетягування - - - + Direction Напрямок - + Reverse direction Зворотний напрямок - + Mode Режим - + Overall Length Overall Length - - + + Offset Зміщення - + Length Довжина - + Occurrences Кількість Входження - - OK - Підтвердити - - - - Update view - Оновити вигляд - - - - Remove - Видалити - - - + Error Помилка @@ -2184,115 +2154,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Додати елемент - - - - Remove feature - Видалити елемент - - - - List can be reordered by dragging - Список можна змінити шляхом перетягування - - - + Plane Площини - - OK - Підтвердити - - - - Update view - Оновити вигляд - - - - Remove - Видалити - - - + Error Помилка PartDesignGui::TaskMultiTransformParameters - - - Add feature - Додати елемент - - Remove feature - Видалити елемент - - - - List can be reordered by dragging - Список можна змінити шляхом перетягування - - - Transformations Перетворення - - Update view - Оновити вигляд + + OK + Підтвердити - - Remove - Видалити - - - + Edit Правка - + Delete Видалити - + Add mirrored transformation Додати дзеркальне перетворення - + Add linear pattern Додати лінійній масив - + Add polar pattern Додати круговий масив - + Add scaled transformation Додати масштабоване перетворення - + Move up Перемістити вгору - + Move down Перемістити вниз @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Додати елемент - - - - Remove feature - Видалити елемент - - - - List can be reordered by dragging - Список можна змінити шляхом перетягування - - - + Axis Вісь - + Reverse direction Зворотний напрямок - + Mode Режим - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Кут - + Offset Зміщення - + Occurrences Кількість Входження - - OK - Підтвердити - - - - Update view - Оновити вигляд - - - - Remove - Видалити - - - + Error Помилка @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Додати елемент - - - - Remove feature - Видалити елемент - - - + Factor Коефіцієнт - + Occurrences Кількість Входження - - - OK - Підтвердити - - - - Update view - Оновити вигляд - - - - Remove - Видалити - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Видалити + + + Normal sketch axis Нормаль до осі ескізу - + Vertical sketch axis Вертикальна вісь ескізу - + Horizontal sketch axis Горизонтальна вісь ескізу - - + + Construction line %1 Допоміжна лінія %1 - + Base X axis Базова вісь X - + Base Y axis Базова вісь Y - + Base Z axis Базова вісь Z - - + + Select reference... Виберіть посилання... - + Base XY plane Базова площина XY - + Base YZ plane Базова площина YZ - + Base XZ plane Базова площина XZ + + + Add feature + Додати елемент + + + + Remove feature + Видалити елемент + + + + List can be reordered by dragging + Список можна змінити шляхом перетягування + + + + Update view + Оновити вигляд + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ click again to end selection Будь ласка, спочатку створіть або виберіть грань для розміщення ескізу + + + + + + + - - - - - - - A dialog is already open in the task panel Діалогове вікно вже відкрито в панелі задач + + + + + + + - - - - - - - Do you want to close this dialog? Ви бажаєте закрити це діалогове вікно? @@ -3747,14 +3637,14 @@ This may lead to unexpected results. Неможливо створити субтрактивний елемент без базового елементу + - Vertical sketch axis Вертикальна вісь ескізу + - Horizontal sketch axis Горизонтальна вісь ескізу @@ -3808,15 +3698,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr Щоб використовувати цю функцію, вона повина належати обʼєкту Деталь в документі. - - + + Edit %1 Редагувати %1 - + Set colors... Встановити кольори... @@ -4736,83 +4626,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4875,8 +4765,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4887,14 +4777,14 @@ over 90: larger hole radius at the bottom - виділений ескіз не належить до активного тіла. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4904,14 +4794,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4961,47 +4851,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5071,15 +4961,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.ts index fde8a77f01..04cfa649c0 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. Create Clone - + Make copy Make copy @@ -909,8 +909,8 @@ so that self intersection is avoided. Create Boolean - + Add a Body Add a Body @@ -940,22 +940,22 @@ so that self intersection is avoided. Move an object inside tree - + Mirrored Simetria - + Make LinearPattern Make LinearPattern - + PolarPattern Patró polar - + Scaled Escalat @@ -2057,73 +2057,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - Afig una funcionalitat - - - - Remove feature - Elimina una funcionalitat - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Direction Direcció - + Reverse direction Reverse direction - + Mode Mode - + Overall Length Overall Length - - + + Offset Separació - + Length Longitud - + Occurrences Ocurrències - - OK - D'acord - - - - Update view - Actualitza la vista - - - - Remove - Elimina - - - + Error Error @@ -2184,115 +2154,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - Afig una funcionalitat - - - - Remove feature - Elimina una funcionalitat - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Plane Pla - - OK - D'acord - - - - Update view - Actualitza la vista - - - - Remove - Elimina - - - + Error Error PartDesignGui::TaskMultiTransformParameters - - - Add feature - Afig una funcionalitat - - Remove feature - Elimina una funcionalitat - - - - List can be reordered by dragging - List can be reordered by dragging - - - Transformations Transformacions - - Update view - Actualitza la vista + + OK + D'acord - - Remove - Elimina - - - + Edit Edita - + Delete Elimina - + Add mirrored transformation Afig una transformació de simetria - + Add linear pattern Afig un patró lineal - + Add polar pattern Afig un patró polar - + Add scaled transformation Afig una transformació escalada - + Move up Mou amunt - + Move down Mou avall @@ -2747,77 +2667,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - Afig una funcionalitat - - - - Remove feature - Elimina una funcionalitat - - - - List can be reordered by dragging - List can be reordered by dragging - - - + Axis Eix - + Reverse direction Reverse direction - + Mode Mode - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle Angle - + Offset Separació - + Occurrences Ocurrències - - OK - D'acord - - - - Update view - Actualitza la vista - - - - Remove - Elimina - - - + Error Error @@ -2953,40 +2843,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - Afig una funcionalitat - - - - Remove feature - Elimina una funcionalitat - - - + Factor Factor - + Occurrences Ocurrències - - - OK - D'acord - - - - Update view - Actualitza la vista - - - - Remove - Elimina - PartDesignGui::TaskShapeBinder @@ -3110,62 +2975,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + Elimina + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis Vertical sketch axis - + Horizontal sketch axis Horizontal sketch axis - - + + Construction line %1 Línia de construcció %1 - + Base X axis Eix base X - + Base Y axis Eix base Y - + Base Z axis Eix base Z - - + + Select reference... Select reference... - + Base XY plane Pla base XY - + Base YZ plane Pla base YZ - + Base XZ plane Pla base XZ + + + Add feature + Afig una funcionalitat + + + + Remove feature + Elimina una funcionalitat + + + + List can be reordered by dragging + List can be reordered by dragging + + + + Update view + Actualitza la vista + PartDesignGui::ViewProviderChamfer @@ -3459,28 +3349,28 @@ click again to end selection Creeu primer un pla o seleccioneu una cara a esbossar + + + + + + + - - - - - - - A dialog is already open in the task panel A dialog is already open in the task panel + + + + + + + - - - - - - - Do you want to close this dialog? Do you want to close this dialog? @@ -3746,14 +3636,14 @@ Això pot portar a resultats inesperats. No és possible crear una funció subtractiva sense una funció de base disponible. + - Vertical sketch axis Vertical sketch axis + - Horizontal sketch axis Horizontal sketch axis @@ -3807,15 +3697,15 @@ Si teniu un document antic amb objectes PartDesign sense cos, utilitzeu la funci Per a utilitzar aquesta característica ha de pertànyer a un objecte peça del document. - - + + Edit %1 Edita %1 - + Set colors... Estableix els colors... @@ -4734,83 +4624,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4873,8 +4763,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4885,14 +4775,14 @@ over 90: larger hole radius at the bottom - the selected sketch does not belong to the active Body. - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4902,14 +4792,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4959,47 +4849,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5069,15 +4959,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed Boolean operation failed - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.ts index def36cb865..6cb01b2b61 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. 创建副本 - + Make copy 制作副本 @@ -909,8 +909,8 @@ so that self intersection is avoided. 创建布尔变量 - + Add a Body 添加实体 @@ -940,22 +940,22 @@ so that self intersection is avoided. 在树中移动对象 - + Mirrored 镜像 - + Make LinearPattern 线性阵列 - + PolarPattern 环形阵列 - + Scaled 缩放 @@ -2057,73 +2057,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - 添加特征 - - - - Remove feature - 删除特征 - - - - List can be reordered by dragging - 列表可以通过拖动重新排序 - - - + Direction 方向 - + Reverse direction 反转方向 - + Mode 模式 - + Overall Length Overall Length - - + + Offset 偏移 - + Length 长度 - + Occurrences 出现次数 - - OK - 确定 - - - - Update view - 更新视图 - - - - Remove - 删除 - - - + Error 错误 @@ -2184,115 +2154,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - 添加特征 - - - - Remove feature - 删除特征 - - - - List can be reordered by dragging - 列表可以通过拖动重新排序 - - - + Plane 平面 - - OK - 确定 - - - - Update view - 更新视图 - - - - Remove - 删除 - - - + Error 错误 PartDesignGui::TaskMultiTransformParameters - - - Add feature - 添加特征 - - Remove feature - 删除特征 - - - - List can be reordered by dragging - 列表可以通过拖动重新排序 - - - Transformations 变换 - - Update view - 更新视图 + + OK + 确定 - - Remove - 删除 - - - + Edit 编辑 - + Delete 删除 - + Add mirrored transformation 添加镜像变换 - + Add linear pattern 添加线性阵列 - + Add polar pattern 添加环形阵列 - + Add scaled transformation 添加缩放变换 - + Move up 上移 - + Move down 下移 @@ -2746,77 +2666,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - 添加特征 - - - - Remove feature - 删除特征 - - - - List can be reordered by dragging - 列表可以通过拖动重新排序 - - - + Axis 轴线 - + Reverse direction 反转方向 - + Mode 模式 - + Overall Angle Overall Angle - + Offset Angle Offset Angle - + Angle 角度 - + Offset 偏移 - + Occurrences 出现次数 - - OK - 确定 - - - - Update view - 更新视图 - - - - Remove - 删除 - - - + Error 错误 @@ -2952,40 +2842,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - 添加特征 - - - - Remove feature - 删除特征 - - - + Factor 缩放因子 - + Occurrences 出现次数 - - - OK - 确定 - - - - Update view - 更新视图 - - - - Remove - 删除 - PartDesignGui::TaskShapeBinder @@ -3109,62 +2974,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + 删除 + + + Normal sketch axis Normal sketch axis - + Vertical sketch axis 垂直草绘轴 - + Horizontal sketch axis 水平草绘轴 - - + + Construction line %1 辅助线 %1 - + Base X axis X 轴 - + Base Y axis Y 轴 - + Base Z axis Z 轴 - - + + Select reference... Select reference... - + Base XY plane XY 基准平面 - + Base YZ plane YZ 基准平面 - + Base XZ plane XZ 基准平面 + + + Add feature + 添加特征 + + + + Remove feature + 删除特征 + + + + List can be reordered by dragging + 列表可以通过拖动重新排序 + + + + Update view + 更新视图 + PartDesignGui::ViewProviderChamfer @@ -3458,28 +3348,28 @@ click again to end selection 请先创建一个平面或选择一个平面用于画草图 + + + + + + + - - - - - - - A dialog is already open in the task panel 一个对话框已在任务面板打开 + + + + + + + - - - - - - - Do you want to close this dialog? 您要关闭此对话框吗? @@ -3747,14 +3637,14 @@ This may lead to unexpected results. 如果没有可用的基础特征, 就不可能创建减料特征 + - Vertical sketch axis 垂直草绘轴 + - Horizontal sketch axis 水平草绘轴 @@ -3808,15 +3698,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr 要使用此特征, 它需隶属于文档中的零件对象。 - - + + Edit %1 编辑 %1 - + Set colors... 设置颜色... @@ -4734,83 +4624,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null Base shape is null - + Tool shape is null Tool shape is null - + Fusion of tools failed Fusion of tools failed - - - - - + - + + + + + Resulting shape is not a solid Resulting shape is not a solid - + Cut out failed Cut out failed - + Common operation failed Common operation failed - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. Result has multiple solids: that is not currently supported. @@ -4873,8 +4763,8 @@ over 90: larger hole radius at the bottom Angle of groove too small - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4885,14 +4775,14 @@ over 90: larger hole radius at the bottom - 选中的草图不属于活动实体。 - + Creating a face from sketch failed Creating a face from sketch failed - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4902,14 +4792,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4959,47 +4849,47 @@ Intersecting sketch entities in a sketch are not allowed. Error: Face must be planar - + Error: Could not build Error: Could not build - - - + + + Error: Result is not a solid Error: Result is not a solid - + Error: There is nothing to subtract Error: There is nothing to subtract - - - + + + Error: Result has multiple solids Error: Result has multiple solids - + Error: Adding the helix failed Error: Adding the helix failed - + Error: Intersecting the helix failed Error: Intersecting the helix failed - + Error: Subtracting the helix failed Error: Subtracting the helix failed - + Error: Could not create face from sketch Error: Could not create face from sketch @@ -5069,15 +4959,15 @@ Intersecting sketch entities in a sketch are not allowed. Error: Adding the thread failed - + Boolean operation failed 布尔操作失败 - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. Could not create face from sketch. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.ts index 3c436d3a36..277d2fccec 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.ts @@ -883,8 +883,8 @@ so that self intersection is avoided. 建立一個副本 - + Make copy 製作拷貝 @@ -909,8 +909,8 @@ so that self intersection is avoided. 建立布林運算 - + Add a Body 增加一個實體 @@ -940,22 +940,22 @@ so that self intersection is avoided. 將一個物件移至樹中 - + Mirrored 鏡像 - + Make LinearPattern 建立線形樣式 - + PolarPattern 環狀複製模式 - + Scaled 縮放 @@ -2052,73 +2052,43 @@ click again to end selection PartDesignGui::TaskLinearPatternParameters - - Add feature - 加入特徵 - - - - Remove feature - 移除特徵 - - - - List can be reordered by dragging - 清單可以通過拖曳來重新排序 - - - + Direction 方向 - + Reverse direction 反轉方向 - + Mode 模式 - + Overall Length 總長度 - - + + Offset 偏移 - + Length 間距 - + Occurrences 產生次數 - - OK - 確定 - - - - Update view - 更新視圖 - - - - Remove - 移除 - - - + Error 錯誤 @@ -2179,115 +2149,65 @@ click again to end selection PartDesignGui::TaskMirroredParameters - - Add feature - 加入特徵 - - - - Remove feature - 移除特徵 - - - - List can be reordered by dragging - 清單可以通過拖曳來重新排序 - - - + Plane 平面 - - OK - 確定 - - - - Update view - 更新視圖 - - - - Remove - 移除 - - - + Error 錯誤 PartDesignGui::TaskMultiTransformParameters - - - Add feature - 加入特徵 - - Remove feature - 移除特徵 - - - - List can be reordered by dragging - 清單可以通過拖曳來重新排序 - - - Transformations 排列形式 - - Update view - 更新視圖 + + OK + 確定 - - Remove - 移除 - - - + Edit 編輯 - + Delete 刪除 - + Add mirrored transformation 加入鏡射效果 - + Add linear pattern 加入線狀排列效果 - + Add polar pattern 加入環狀排列效果 - + Add scaled transformation 加入縮放效果 - + Move up 上移 - + Move down 下移 @@ -2739,77 +2659,47 @@ measured along the specified direction PartDesignGui::TaskPolarPatternParameters - - Add feature - 加入特徵 - - - - Remove feature - 移除特徵 - - - - List can be reordered by dragging - 清單可以通過拖曳來重新排序 - - - + Axis - + Reverse direction 反轉方向 - + Mode 模式 - + Overall Angle 總角度 - + Offset Angle 偏移角度 - + Angle 角度 - + Offset 偏移 - + Occurrences 產生次數 - - OK - 確定 - - - - Update view - 更新視圖 - - - - Remove - 移除 - - - + Error 錯誤 @@ -2945,40 +2835,15 @@ measured along the specified direction PartDesignGui::TaskScaledParameters - - Add feature - 加入特徵 - - - - Remove feature - 移除特徵 - - - + Factor 因數 - + Occurrences 產生次數 - - - OK - 確定 - - - - Update view - 更新視圖 - - - - Remove - 移除 - PartDesignGui::TaskShapeBinder @@ -3101,62 +2966,87 @@ click again to end selection PartDesignGui::TaskTransformedParameters - + + Remove + 移除 + + + Normal sketch axis 垂直草圖軸 - + Vertical sketch axis 垂直草圖軸 - + Horizontal sketch axis 水平草圖軸 - - + + Construction line %1 結構線 %1: - + Base X axis 基本 X 軸 - + Base Y axis 物體原點的Y軸 - + Base Z axis Z 軸 - - + + Select reference... 選取參考... - + Base XY plane XY 平面 - + Base YZ plane YZ 平面 - + Base XZ plane XZ 平面 + + + Add feature + 加入特徵 + + + + Remove feature + 移除特徵 + + + + List can be reordered by dragging + 清單可以通過拖曳來重新排序 + + + + Update view + 更新視圖 + PartDesignGui::ViewProviderChamfer @@ -3450,28 +3340,28 @@ click again to end selection 請先創建一個平面或選擇要在其上繪製草圖的面 + + + + + + + - - - - - - - A dialog is already open in the task panel 於工作面板已開啟對話窗 + + + + + + + - - - - - - - Do you want to close this dialog? 您確定要關閉此對話窗嗎? @@ -3737,14 +3627,14 @@ This may lead to unexpected results. 如果沒有可用的基本特徵,則無法創建除料特徵 + - Vertical sketch axis 垂直草圖軸 + - Horizontal sketch axis 水平草圖軸 @@ -3798,15 +3688,15 @@ If you have a legacy document with PartDesign objects without Body, use the migr 為了使用此特徵,它需要屬於文件中的一個零件物件。 - - + + Edit %1 編輯 %1 - + Set colors... 設定顏色... @@ -4724,83 +4614,83 @@ over 90: larger hole radius at the bottom BaseFeature has an empty shape - + Cannot do boolean cut without BaseFeature Cannot do boolean cut without BaseFeature - - + + Cannot do boolean with anything but Part::Feature and its derivatives Cannot do boolean with anything but Part::Feature and its derivatives - + Cannot do boolean operation with invalid base shape Cannot do boolean operation with invalid base shape - + Cannot do boolean on feature which is not in a body Cannot do boolean on feature which is not in a body - + Base shape is null 基礎形狀為空 - + Tool shape is null 工具形狀為空 - + Fusion of tools failed 工具的融合失敗 - - - - - + - + + + + + Resulting shape is not a solid 產成形狀不是固體 - + Cut out failed 裁剪失敗 - + Common operation failed 通用操作失敗 - - - - - - - - - + + + + + + + + + Result has multiple solids: that is not currently supported. 產生形狀有多重(非相連)固體:目前尚未支援。 @@ -4863,8 +4753,8 @@ over 90: larger hole radius at the bottom 挖槽的角度太小 - + The requested feature cannot be created. The reason may be that: - the active Body does not contain a base shape, so there is no material to be removed; @@ -4874,14 +4764,14 @@ over 90: larger hole radius at the bottom - 所選擇的草圖不屬於活躍實體。 - + Creating a face from sketch failed 由草圖建立面失敗 - + Revolve axis intersects the sketch Revolve axis intersects the sketch @@ -4891,14 +4781,14 @@ over 90: larger hole radius at the bottom Cut out of base feature failed - + Could not revolve the sketch! Could not revolve the sketch! - + Could not create face from sketch. Intersecting sketch entities in a sketch are not allowed. Could not create face from sketch. @@ -4948,47 +4838,47 @@ Intersecting sketch entities in a sketch are not allowed. 錯誤:面必須為平面 - + Error: Could not build 錯誤:無法建立 - - - + + + Error: Result is not a solid 錯誤:產生形狀不是固體 - + Error: There is nothing to subtract 錯誤:沒有東西可以減 - - - + + + Error: Result has multiple solids 錯誤:產生形狀有多重(非相連)固體 - + Error: Adding the helix failed 錯誤:添加螺旋失敗 - + Error: Intersecting the helix failed 錯誤:交叉螺旋失敗 - + Error: Subtracting the helix failed 錯誤:減去螺旋失敗 - + Error: Could not create face from sketch 錯誤:無法從草圖建立面 @@ -5058,15 +4948,15 @@ Intersecting sketch entities in a sketch are not allowed. 錯誤:添加螺旋失敗 - + Boolean operation failed 布林運算失敗 - + Could not create face from sketch. Intersecting sketch entities or multiple faces in a sketch are not allowed for making a pocket up to a face. 無法從草圖建立面。草圖實體的交叉或草圖中存在多個面不允許製作一個沖孔至一個面。 diff --git a/src/Mod/PartDesign/Gui/SketchWorkflow.cpp b/src/Mod/PartDesign/Gui/SketchWorkflow.cpp index 2303076404..2901685df0 100644 --- a/src/Mod/PartDesign/Gui/SketchWorkflow.cpp +++ b/src/Mod/PartDesign/Gui/SketchWorkflow.cpp @@ -247,7 +247,7 @@ public: guidocument->openCommand(QT_TRANSLATE_NOOP("Command", "Create a Sketch on Face")); FCMD_OBJ_CMD(activeBody, "newObject('Sketcher::SketchObject','" << FeatName << "')"); auto Feat = appdocument->getObject(FeatName.c_str()); - FCMD_OBJ_CMD(Feat, "Support = " << supportString); + FCMD_OBJ_CMD(Feat, "AttachmentSupport = " << supportString); FCMD_OBJ_CMD(Feat, "MapMode = '" << Attacher::AttachEngine::getModeName(Attacher::mmFlatFace)<<"'"); Gui::Command::updateActive(); PartDesignGui::setEdit(Feat, activeBody); @@ -619,9 +619,9 @@ private: FCMD_OBJ_CMD(partDesignBody,"newObject('Sketcher::SketchObject','" << FeatName << "')"); auto Feat = partDesignBody->getDocument()->getObject(FeatName.c_str()); - FCMD_OBJ_CMD(Feat,"Support = " << supportString); + FCMD_OBJ_CMD(Feat,"AttachmentSupport = " << supportString); FCMD_OBJ_CMD(Feat,"MapMode = '" << Attacher::AttachEngine::getModeName(Attacher::mmFlatFace)<<"'"); - Gui::Command::updateActive(); // Make sure the Support's Placement property is updated + Gui::Command::updateActive(); // Make sure the AttachmentSupport's Placement property is updated PartDesignGui::setEdit(Feat, partDesignBody); } diff --git a/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp b/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp index 8a46ac30d2..2db7c2378a 100644 --- a/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp @@ -116,7 +116,7 @@ bool TaskDlgDatumParameters::accept() { //check the prerequisites for the selected objects //the user has to decide which option we should take if external references are used bool extReference = false; - for (App::DocumentObject* obj : pcDatum->Support.getValues()) { + for (App::DocumentObject* obj : pcDatum->AttachmentSupport.getValues()) { if (pcActiveBody && !pcActiveBody->hasObject(obj) && !pcActiveBody->getOrigin()->hasObject(obj)) extReference = true; } @@ -133,9 +133,9 @@ bool TaskDlgDatumParameters::accept() { else if (!dlg.radioXRef->isChecked()) { std::vector copyObjects; std::vector copySubValues; - std::vector subs = pcDatum->Support.getSubValues(); + std::vector subs = pcDatum->AttachmentSupport.getSubValues(); int index = 0; - for (App::DocumentObject* obj : pcDatum->Support.getValues()) { + for (App::DocumentObject* obj : pcDatum->AttachmentSupport.getValues()) { if (pcActiveBody && !pcActiveBody->hasObject(obj) && !pcActiveBody->getOrigin()->hasObject(obj)) { auto* copy = PartDesignGui::TaskFeaturePick::makeCopy(obj, subs[index], dlg.radioIndependent->isChecked()); if (copy) { @@ -152,7 +152,7 @@ bool TaskDlgDatumParameters::accept() { index++; } - pcDatum->Support.setValues(copyObjects, copySubValues); + pcDatum->AttachmentSupport.setValues(copyObjects, copySubValues); } } diff --git a/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp b/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp index d6d2a8da7c..f91f02229b 100644 --- a/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp +++ b/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp @@ -392,7 +392,7 @@ App::DocumentObject* TaskFeaturePick::makeCopy(App::DocumentObject* obj, std::st // TODO Recheck this. This looks strange in case of independent copy (2015-10-31, Fat-Zer) if(!independent) { - datumCopy->Support.setValue(obj, entity.c_str()); + datumCopy->AttachmentSupport.setValue(obj, entity.c_str()); datumCopy->MapMode.setValue(mode); } else if(!entity.empty()) { diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp index 6819398580..e8c5ce071f 100644 --- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp @@ -221,7 +221,7 @@ void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges if (originalSelected(msg)) { exitSelectionMode(); } - else if (selectionMode == SelectionMode::Reference) { + else { auto pcLinearPattern = static_cast(getObject()); std::vector directions; @@ -232,9 +232,7 @@ void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges } // Note: ReferenceSelection has already checked the selection for validity - if (selObj->isDerivedFrom() || selObj->isDerivedFrom() - || selObj->isDerivedFrom() - || selObj->isDerivedFrom()) { + if (selectionMode == SelectionMode::Reference || selObj->isDerivedFrom()) { setupTransaction(); pcLinearPattern->Direction.setValue(selObj, directions); recomputeFeature(); diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp index a1823d22ac..aa162d0116 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp @@ -134,7 +134,7 @@ void TaskMirroredParameters::onSelectionChanged(const Gui::SelectionChanges& msg if (originalSelected(msg)) { exitSelectionMode(); } - else if (selectionMode == SelectionMode::Reference) { + else { auto pcMirrored = static_cast(getObject()); std::vector mirrorPlanes; @@ -144,7 +144,7 @@ void TaskMirroredParameters::onSelectionChanged(const Gui::SelectionChanges& msg return; } - if (selObj->isDerivedFrom()) { + if (selectionMode == SelectionMode::Reference || selObj->isDerivedFrom()) { setupTransaction(); pcMirrored->MirrorPlane.setValue(selObj, mirrorPlanes); recomputeFeature(); diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp index a49879b30b..9eb97653c6 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp @@ -221,7 +221,7 @@ void TaskPolarPatternParameters::onSelectionChanged(const Gui::SelectionChanges& if (originalSelected(msg)) { exitSelectionMode(); } - else if (selectionMode == SelectionMode::Reference) { + else { auto pcPolarPattern = static_cast(getObject()); std::vector axes; @@ -231,8 +231,7 @@ void TaskPolarPatternParameters::onSelectionChanged(const Gui::SelectionChanges& return; } - if (selObj->isDerivedFrom() || selObj->isDerivedFrom() - || selObj->isDerivedFrom()) { + if (selectionMode == SelectionMode::Reference || selObj->isDerivedFrom()) { setupTransaction(); pcPolarPattern->Axis.setValue(selObj, axes); recomputeFeature(); diff --git a/src/Mod/PartDesign/Gui/Utils.cpp b/src/Mod/PartDesign/Gui/Utils.cpp index 20a0221844..4da0af4ae6 100644 --- a/src/Mod/PartDesign/Gui/Utils.cpp +++ b/src/Mod/PartDesign/Gui/Utils.cpp @@ -273,7 +273,7 @@ App::Part* getPartFor(const App::DocumentObject* obj, bool messageIfNot) { void fixSketchSupport (Sketcher::SketchObject* sketch) { - App::DocumentObject* support = sketch->Support.getValue(); + App::DocumentObject* support = sketch->AttachmentSupport.getValue(); if (support) return; // Sketch is on a face of a solid, do nothing @@ -317,7 +317,7 @@ void fixSketchSupport (Sketcher::SketchObject* sketch) if (fabs(offset) < Precision::Confusion()) { // One of the base planes - FCMD_OBJ_CMD(sketch,"Support = (" << Gui::Command::getObjectCmd(plane) << ",[''])"); + FCMD_OBJ_CMD(sketch,"AttachmentSupport = (" << Gui::Command::getObjectCmd(plane) << ",[''])"); FCMD_OBJ_CMD(sketch,"MapReversed = " << (reverseSketch ? "True" : "False")); FCMD_OBJ_CMD(sketch,"MapMode = '" << Attacher::AttachEngine::getModeName(Attacher::mmFlatFace) << "'"); @@ -331,12 +331,12 @@ void fixSketchSupport (Sketcher::SketchObject* sketch) std::string Datum = doc->getUniqueObjectName("DatumPlane"); FCMD_DOC_CMD(doc,"addObject('PartDesign::Plane','"<getObject(Datum.c_str()); - FCMD_OBJ_CMD(obj,"Support = [(" << Gui::Command::getObjectCmd(plane) << ",'')]"); + FCMD_OBJ_CMD(obj,"AttachmentSupport = [(" << Gui::Command::getObjectCmd(plane) << ",'')]"); FCMD_OBJ_CMD(obj,"MapMode = '" << AttachEngine::getModeName(Attacher::mmFlatFace) << "'"); FCMD_OBJ_CMD(obj,"AttachmentOffset.Base.z = " << offset); FCMD_OBJ_CMD(body,"insertObject("<isDerivedFrom()) { - auto prim = static_cast(feat); - App::DocumentObject* bf = prim->BaseFeature.getValue(); - if (bf) - return false; } - if (feat->isDerivedFrom()) { - auto prim = static_cast(feat); + if (auto prim = dynamic_cast(feat)) { + App::DocumentObject* bf = prim->BaseFeature.getValue(); + if (bf) { + return false; + } + } + + if (auto prim = dynamic_cast(feat)) { auto sk = prim->getVerifiedSketch(true); - if (!isFeatureMovable(sk)) + if (!isFeatureMovable(sk)) { return false; + } - if (auto prop = static_cast(prim->getPropertyByName("Sections"))) { - if (std::any_of(prop->getValues().begin(), prop->getValues().end(), [](App::DocumentObject* obj){ + if (auto prop = dynamic_cast(prim->getPropertyByName("Sections"))) { + if (std::any_of(prop->getValues().begin(), prop->getValues().end(), [](App::DocumentObject* obj) { return !isFeatureMovable(obj); - })) + })) { return false; + } } - if (auto prop = static_cast(prim->getPropertyByName("ReferenceAxis"))) { + if (auto prop = dynamic_cast(prim->getPropertyByName("Sections"))) { + if (std::any_of(prop->getValues().begin(), prop->getValues().end(), [](App::DocumentObject* obj) { + return !isFeatureMovable(obj); + })) { + return false; + } + } + + if (auto prop = dynamic_cast(prim->getPropertyByName("ReferenceAxis"))) { App::DocumentObject* axis = prop->getValue(); - if (axis && !isFeatureMovable(axis)) + if (axis && !isFeatureMovable(axis)) { return false; + } } - if (auto prop = static_cast(prim->getPropertyByName("Spine"))) { + if (auto prop = dynamic_cast(prim->getPropertyByName("Spine"))) { App::DocumentObject* spine = prop->getValue(); - if (spine && !isFeatureMovable(spine)) + if (spine && !isFeatureMovable(spine)) { return false; + } } - if (auto prop = static_cast(prim->getPropertyByName("AuxillerySpine"))) { + if (auto prop = dynamic_cast(prim->getPropertyByName("AuxillerySpine"))) { App::DocumentObject* auxSpine = prop->getValue(); - if (auxSpine && !isFeatureMovable(auxSpine)) + if (auxSpine && !isFeatureMovable(auxSpine)) { return false; + } } } if (feat->hasExtension(Part::AttachExtension::getExtensionClassTypeId())) { auto attachable = feat->getExtensionByType(); - App::DocumentObject* support = attachable->Support.getValue(); - if (support && !support->isDerivedFrom()) + App::DocumentObject* support = attachable->AttachmentSupport.getValue(); + if (support && !support->isDerivedFrom()) { return false; + } } return true; @@ -512,34 +526,36 @@ std::vector collectMovableDependencies(std::vector unique_objs; - for (auto const &feat : features) - { - + for (auto const &feat : features) { // Get sketches and datums from profile based features - if (feat->isDerivedFrom()) { - auto prim = static_cast(feat); + if (auto prim = dynamic_cast(feat)) { Part::Part2DObject* sk = prim->getVerifiedSketch(true); if (sk) { - unique_objs.insert(static_cast(sk)); + unique_objs.insert(sk); } - if (auto prop = static_cast(prim->getPropertyByName("Sections"))) { + if (auto prop = dynamic_cast(prim->getPropertyByName("Sections"))) { for (App::DocumentObject* obj : prop->getValues()) { unique_objs.insert(obj); } } - if (auto prop = static_cast(prim->getPropertyByName("ReferenceAxis"))) { + if (auto prop = dynamic_cast(prim->getPropertyByName("Sections"))) { + for (App::DocumentObject* obj : prop->getValues()) { + unique_objs.insert(obj); + } + } + if (auto prop = dynamic_cast(prim->getPropertyByName("ReferenceAxis"))) { App::DocumentObject* axis = prop->getValue(); if (axis && !axis->isDerivedFrom()){ unique_objs.insert(axis); } } - if (auto prop = static_cast(prim->getPropertyByName("Spine"))) { + if (auto prop = dynamic_cast(prim->getPropertyByName("Spine"))) { App::DocumentObject* axis = prop->getValue(); if (axis && !axis->isDerivedFrom()){ unique_objs.insert(axis); } } - if (auto prop = static_cast(prim->getPropertyByName("AuxillerySpine"))) { + if (auto prop = dynamic_cast(prim->getPropertyByName("AuxillerySpine"))) { App::DocumentObject* axis = prop->getValue(); if (axis && !axis->isDerivedFrom()){ unique_objs.insert(axis); @@ -559,12 +575,12 @@ void relinkToOrigin(App::DocumentObject* feat, PartDesign::Body* targetbody) { if (feat->hasExtension(Part::AttachExtension::getExtensionClassTypeId())) { auto attachable = feat->getExtensionByType(); - App::DocumentObject* support = attachable->Support.getValue(); + App::DocumentObject* support = attachable->AttachmentSupport.getValue(); if (support && support->isDerivedFrom()) { auto originfeat = static_cast(support); App::OriginFeature* targetOriginFeature = targetbody->getOrigin()->getOriginFeature(originfeat->Role.getValue()); if (targetOriginFeature) { - attachable->Support.setValue(static_cast(targetOriginFeature), ""); + attachable->AttachmentSupport.setValue(static_cast(targetOriginFeature), ""); } } } diff --git a/src/Mod/PartDesign/Gui/ViewProvider.cpp b/src/Mod/PartDesign/Gui/ViewProvider.cpp index 14874a71fc..efdcb7ad30 100644 --- a/src/Mod/PartDesign/Gui/ViewProvider.cpp +++ b/src/Mod/PartDesign/Gui/ViewProvider.cpp @@ -51,6 +51,7 @@ PROPERTY_SOURCE_WITH_EXTENSIONS(PartDesignGui::ViewProvider, PartGui::ViewProvid ViewProvider::ViewProvider() { + ViewProviderSuppressibleExtension::initExtension(this); PartGui::ViewProviderAttachExtension::initExtension(this); } diff --git a/src/Mod/PartDesign/Gui/ViewProvider.h b/src/Mod/PartDesign/Gui/ViewProvider.h index 05f87bbf32..98bae5ca2a 100644 --- a/src/Mod/PartDesign/Gui/ViewProvider.h +++ b/src/Mod/PartDesign/Gui/ViewProvider.h @@ -27,6 +27,7 @@ #include #include "ViewProviderBody.h" #include +#include "Gui/ViewProviderSuppressibleExtension.h" #include @@ -37,7 +38,9 @@ class TaskDlgFeatureParameters; /** * A common base class for all part design features view providers */ -class PartDesignGuiExport ViewProvider : public PartGui::ViewProviderPart, PartGui::ViewProviderAttachExtension +class PartDesignGuiExport ViewProvider : public PartGui::ViewProviderPart, + Gui::ViewProviderSuppressibleExtension, + PartGui::ViewProviderAttachExtension { using inherited = PartGui::ViewProviderPart; PROPERTY_HEADER_WITH_OVERRIDE(PartDesignGui::ViewProvider); diff --git a/src/Mod/PartDesign/Gui/Workbench.cpp b/src/Mod/PartDesign/Gui/Workbench.cpp index 2e9d4ae3f6..32b5d2fdad 100644 --- a/src/Mod/PartDesign/Gui/Workbench.cpp +++ b/src/Mod/PartDesign/Gui/Workbench.cpp @@ -52,6 +52,9 @@ namespace sp = std::placeholders; qApp->translate("Workbench", "Involute gear..."); qApp->translate("Workbench", "Shaft design wizard"); qApp->translate("Gui::TaskView::TaskWatcherCommands", "Face tools"); + qApp->translate("Gui::TaskView::TaskWatcherCommands", "Edge tools"); + qApp->translate("Gui::TaskView::TaskWatcherCommands", "Start boolean"); + qApp->translate("Gui::TaskView::TaskWatcherCommands", "Start part"); qApp->translate("Gui::TaskView::TaskWatcherCommands", "Sketch tools"); qApp->translate("Gui::TaskView::TaskWatcherCommands", "Create Geometry"); // diff --git a/src/Mod/PartDesign/PartDesignTests/TestDatum.py b/src/Mod/PartDesign/PartDesignTests/TestDatum.py index 424f095f58..de5deb5181 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestDatum.py +++ b/src/Mod/PartDesign/PartDesignTests/TestDatum.py @@ -32,7 +32,7 @@ class TestDatumPoint(unittest.TestCase): def testOriginDatumPoint(self): self.Body = self.Doc.addObject('PartDesign::Body','Body') self.DatumPoint = self.Doc.addObject('PartDesign::Point','DatumPoint') - self.DatumPoint.Support = [(self.Doc.XY_Plane,'')] + self.DatumPoint.AttachmentSupport = [(self.Doc.XY_Plane,'')] self.DatumPoint.MapMode = 'ObjectOrigin' self.Body.addObject(self.DatumPoint) self.Doc.recompute() @@ -50,7 +50,7 @@ class TestDatumLine(unittest.TestCase): def testXAxisDatumLine(self): self.Body = self.Doc.addObject('PartDesign::Body','Body') self.DatumLine = self.Doc.addObject('PartDesign::Line','DatumLine') - self.DatumLine.Support = [(self.Doc.XY_Plane,'')] + self.DatumLine.AttachmentSupport = [(self.Doc.XY_Plane,'')] self.DatumLine.MapMode = 'ObjectX' self.Body.addObject(self.DatumLine) self.Doc.recompute() @@ -68,7 +68,7 @@ class TestDatumPlane(unittest.TestCase): def testXYDatumPlane(self): self.Body = self.Doc.addObject('PartDesign::Body','Body') self.DatumPlane = self.Doc.addObject('PartDesign::Plane','DatumPlane') - self.DatumPlane.Support = [(self.Doc.XY_Plane,'')] + self.DatumPlane.AttachmentSupport = [(self.Doc.XY_Plane,'')] self.DatumPlane.MapMode = 'FlatFace' self.Body.addObject(self.DatumPlane) self.Doc.recompute() diff --git a/src/Mod/PartDesign/PartDesignTests/TestDraft.py b/src/Mod/PartDesign/PartDesignTests/TestDraft.py index b20d93b05c..fd495f5d4a 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestDraft.py +++ b/src/Mod/PartDesign/PartDesignTests/TestDraft.py @@ -41,12 +41,12 @@ class TestDraft(unittest.TestCase): self.Box.Height=10.00 self.Doc.recompute() self.DatumPlane = self.Doc.addObject('PartDesign::Plane','DatumPlane') - self.DatumPlane.Support = [(self.Doc.YZ_Plane,'')] + self.DatumPlane.AttachmentSupport = [(self.Doc.YZ_Plane,'')] self.DatumPlane.MapMode = 'FlatFace' self.Body.addObject(self.DatumPlane) self.Doc.recompute() self.DatumLine = self.Doc.addObject('PartDesign::Line','DatumLine') - self.DatumLine.Support = [(self.Doc.X_Axis,'')] + self.DatumLine.AttachmentSupport = [(self.Doc.X_Axis,'')] self.DatumLine.MapMode = 'TwoPointLine' self.Body.addObject(self.DatumLine) self.Doc.recompute() diff --git a/src/Mod/PartDesign/PartDesignTests/TestHelix.py b/src/Mod/PartDesign/PartDesignTests/TestHelix.py index 894506293a..ea938b5a3e 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestHelix.py +++ b/src/Mod/PartDesign/PartDesignTests/TestHelix.py @@ -38,7 +38,7 @@ class TestHelix(unittest.TestCase): def testHelicalTubeCase(self): body = self.Doc.addObject('PartDesign::Body','Body') sketch = body.newObject('Sketcher::SketchObject','Sketch') - sketch.Support = (self.Doc.getObject('XY_Plane'),['']) + sketch.AttachmentSupport = (self.Doc.getObject('XY_Plane'),['']) sketch.MapMode = 'FlatFace' geoList = [] @@ -107,7 +107,7 @@ class TestHelix(unittest.TestCase): self.Doc.recompute() # xz_plane = body.Origin.OriginFeatures[4] - # coneSketch.Support = xz_plane + # coneSketch.AttachmentSupport = xz_plane # coneSketch.MapMode = 'FlatFace' helix = self.Doc.addObject("PartDesign::AdditiveHelix","AdditiveHelix") body.addObject(helix) @@ -159,7 +159,7 @@ class TestHelix(unittest.TestCase): coneSketch.addConstraint(conList) xz_plane = body.Origin.OriginFeatures[4] - coneSketch.Support = xz_plane + coneSketch.AttachmentSupport = xz_plane coneSketch.MapMode = 'FlatFace' helix = self.Doc.addObject("PartDesign::AdditiveHelix","AdditiveHelix") body.addObject(helix) diff --git a/src/Mod/PartDesign/PartDesignTests/TestHole.py b/src/Mod/PartDesign/PartDesignTests/TestHole.py index a32dd11bd4..0529c1f0c6 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestHole.py +++ b/src/Mod/PartDesign/PartDesignTests/TestHole.py @@ -38,7 +38,7 @@ class TestHole(unittest.TestCase): self.Body.addObject(self.Box) self.Doc.recompute() self.HoleSketch = self.Doc.addObject('Sketcher::SketchObject', 'SketchHole') - self.HoleSketch.Support = (self.Doc.XY_Plane, ['']) + self.HoleSketch.AttachmentSupport = (self.Doc.XY_Plane, ['']) self.HoleSketch.MapMode = 'FlatFace' self.HoleSketch.MapReversed = True self.Body.addObject(self.HoleSketch) diff --git a/src/Mod/PartDesign/PartDesignTests/TestLoft.py b/src/Mod/PartDesign/PartDesignTests/TestLoft.py index a75079899a..ff777247da 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestLoft.py +++ b/src/Mod/PartDesign/PartDesignTests/TestLoft.py @@ -41,7 +41,7 @@ class TestLoft(unittest.TestCase): self.LoftSketch = self.Doc.addObject('Sketcher::SketchObject', 'LoftSketch') self.Body.addObject(self.LoftSketch) self.LoftSketch.MapMode = 'FlatFace' - self.LoftSketch.Support = (self.Doc.XZ_Plane, ['']) + self.LoftSketch.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.LoftSketch, (0, 1), (1, 1)) self.Doc.recompute() @@ -70,7 +70,7 @@ class TestLoft(unittest.TestCase): self.LoftSketch = self.Doc.addObject('Sketcher::SketchObject', 'LoftSketch') self.Body.addObject(self.LoftSketch) self.LoftSketch.MapMode = 'FlatFace' - self.LoftSketch.Support = (self.Doc.XZ_Plane, ['']) + self.LoftSketch.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.LoftSketch, (0, 1), (1, 1)) self.Doc.recompute() @@ -86,7 +86,7 @@ class TestLoft(unittest.TestCase): body = self.Doc.addObject('PartDesign::Body','Body') sketch1 = body.newObject('Sketcher::SketchObject','Sketch') - sketch1.Support = (self.Doc.XZ_Plane,['']) + sketch1.AttachmentSupport = (self.Doc.XZ_Plane,['']) sketch1.MapMode = 'FlatFace' sketch1.addGeometry(Part.Circle(Base.Vector(-40.0,0.0,0.0),Base.Vector(0,0,1),10.0), False) sketch1.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) @@ -96,7 +96,7 @@ class TestLoft(unittest.TestCase): sketch1.setDatum(2,Units.Quantity('40.000000 mm')) sketch2 = body.newObject('Sketcher::SketchObject','Sketch001') - sketch2.Support = (self.Doc.YZ_Plane,'') + sketch2.AttachmentSupport = (self.Doc.YZ_Plane,'') sketch2.MapMode = 'FlatFace' sketch2.addGeometry(Part.Circle(Base.Vector(-10.0,0.0,0.0),Base.Vector(0,0,1),10.0),False) sketch2.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) @@ -106,7 +106,7 @@ class TestLoft(unittest.TestCase): sketch2.setDatum(2,Units.Quantity('40.000000 mm')) sketch3 = body.newObject('Sketcher::SketchObject','Sketch002') - sketch3.Support = (self.Doc.getObject('YZ_Plane'),'') + sketch3.AttachmentSupport = (self.Doc.getObject('YZ_Plane'),'') sketch3.MapMode = 'FlatFace' sketch3.addGeometry(Part.Circle(Base.Vector(40.0,0.0,0.0),Base.Vector(0,0,1),10.0),False) sketch3.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) @@ -116,7 +116,7 @@ class TestLoft(unittest.TestCase): sketch3.setDatum(2,Units.Quantity('20.000000 mm')) sketch4 = body.newObject('Sketcher::SketchObject','Sketch003') - sketch4.Support = (self.Doc.XZ_Plane,'') + sketch4.AttachmentSupport = (self.Doc.XZ_Plane,'') sketch4.MapMode = 'FlatFace' sketch4.addGeometry(Part.Circle(Base.Vector(40.0,0.0,0.0),Base.Vector(0,0,1),10.0),False) sketch4.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) diff --git a/src/Mod/PartDesign/PartDesignTests/TestPad.py b/src/Mod/PartDesign/PartDesignTests/TestPad.py index f1845fdd05..a5231c8962 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestPad.py +++ b/src/Mod/PartDesign/PartDesignTests/TestPad.py @@ -40,7 +40,7 @@ class TestPad(unittest.TestCase): def testSketchOnPlane(self): self.Body = self.Doc.addObject('PartDesign::Body','Body') self.PadSketch = self.Doc.addObject('Sketcher::SketchObject','SketchPad') - self.PadSketch.Support = (self.Doc.XY_Plane, ['']) + self.PadSketch.AttachmentSupport = (self.Doc.XY_Plane, ['']) self.PadSketch.MapMode = 'FlatFace' self.Body.addObject(self.PadSketch) TestSketcherApp.CreateSlotPlateSet(self.PadSketch) @@ -67,7 +67,7 @@ class TestPad(unittest.TestCase): self.PadSketch1 = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad1') self.Body.addObject(self.PadSketch1) self.PadSketch1.MapMode = 'FlatFace' - self.PadSketch1.Support = (self.Doc.XZ_Plane, ['']) + self.PadSketch1.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.PadSketch1, (0, 0), (1, 1)) self.Doc.recompute() @@ -95,7 +95,7 @@ class TestPad(unittest.TestCase): self.PadSketch1 = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad1') self.Body.addObject(self.PadSketch1) self.PadSketch1.MapMode = 'FlatFace' - self.PadSketch1.Support = (self.Doc.XZ_Plane, ['']) + self.PadSketch1.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.PadSketch1, (0, 0), (1, 1)) self.Doc.recompute() @@ -123,7 +123,7 @@ class TestPad(unittest.TestCase): self.PadSketch1 = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad1') self.Body.addObject(self.PadSketch1) self.PadSketch1.MapMode = 'FlatFace' - self.PadSketch1.Support = (self.Doc.XZ_Plane, ['']) + self.PadSketch1.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.PadSketch1, (0, 0), (1, 1)) self.Doc.recompute() @@ -152,7 +152,7 @@ class TestPad(unittest.TestCase): self.PadSketch1 = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad1') self.Body.addObject(self.PadSketch1) self.PadSketch1.MapMode = 'FlatFace' - self.PadSketch1.Support = (self.Doc.XZ_Plane, ['']) + self.PadSketch1.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.PadSketch1, (0, 0), (1, 1)) self.Doc.recompute() diff --git a/src/Mod/PartDesign/PartDesignTests/TestPipe.py b/src/Mod/PartDesign/PartDesignTests/TestPipe.py index 93be50ca66..5340cf346e 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestPipe.py +++ b/src/Mod/PartDesign/PartDesignTests/TestPipe.py @@ -41,7 +41,7 @@ class TestPipe(unittest.TestCase): self.SpineSketch = self.Doc.addObject('Sketcher::SketchObject', 'SpineSketch') self.Body.addObject(self.SpineSketch) self.SpineSketch.MapMode = 'FlatFace' - self.SpineSketch.Support = (self.Doc.XZ_Plane, ['']) + self.SpineSketch.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() self.SpineSketch.addGeometry(Part.LineSegment(App.Vector(0.0,0.0,0),App.Vector(0,1,0)),False) self.SpineSketch.addConstraint(Sketcher.Constraint('Coincident',0,1,-1,1)) @@ -64,7 +64,7 @@ class TestPipe(unittest.TestCase): self.SpineSketch = self.Doc.addObject('Sketcher::SketchObject', 'SpineSketch') self.Body.addObject(self.SpineSketch) self.SpineSketch.MapMode = 'FlatFace' - self.SpineSketch.Support = (self.Doc.XZ_Plane, ['']) + self.SpineSketch.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() self.SpineSketch.addGeometry(Part.LineSegment(App.Vector(0.0,0.0,0),App.Vector(0,1,0)),False) self.SpineSketch.addConstraint(Sketcher.Constraint('Coincident',0,1,-1,1)) diff --git a/src/Mod/PartDesign/PartDesignTests/TestPocket.py b/src/Mod/PartDesign/PartDesignTests/TestPocket.py index 3a92817494..52795c0dbc 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestPocket.py +++ b/src/Mod/PartDesign/PartDesignTests/TestPocket.py @@ -75,7 +75,7 @@ class TestPocket(unittest.TestCase): self.PocketSketch1 = self.Doc.addObject('Sketcher::SketchObject', 'PocketSketch') self.Body.addObject(self.PocketSketch1) self.PocketSketch1.MapMode = 'FlatFace' - self.PocketSketch1.Support = (self.Doc.XZ_Plane, ['']) + self.PocketSketch1.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.PocketSketch1, (2.5, -0.75), (5, 0.50)) self.Doc.recompute() @@ -110,7 +110,7 @@ class TestPocket(unittest.TestCase): self.PocketSketch1 = self.Doc.addObject('Sketcher::SketchObject', 'PocketSketch') self.Body.addObject(self.PocketSketch1) self.PocketSketch1.MapMode = 'FlatFace' - self.PocketSketch1.Support = (self.Doc.XZ_Plane, ['']) + self.PocketSketch1.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.PocketSketch1, (2.5, -1), (5, 1)) self.Doc.recompute() @@ -145,7 +145,7 @@ class TestPocket(unittest.TestCase): self.PocketSketch1 = self.Doc.addObject('Sketcher::SketchObject', 'PocketSketch') self.Body.addObject(self.PocketSketch1) self.PocketSketch1.MapMode = 'FlatFace' - self.PocketSketch1.Support = (self.Doc.XZ_Plane, ['']) + self.PocketSketch1.AttachmentSupport = (self.Doc.XZ_Plane, ['']) self.Doc.recompute() TestSketcherApp.CreateRectangleSketch(self.PocketSketch1, (0, -1), (10, 1)) self.Doc.recompute() diff --git a/src/Mod/PartDesign/PartDesignTests/TestShapeBinder.py b/src/Mod/PartDesign/PartDesignTests/TestShapeBinder.py index 8bbf518580..57fab4470b 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestShapeBinder.py +++ b/src/Mod/PartDesign/PartDesignTests/TestShapeBinder.py @@ -85,7 +85,7 @@ class TestSubShapeBinder(unittest.TestCase): """ Test case for PR #8763 """ body = self.Doc.addObject('PartDesign::Body','Body') sketch = body.newObject('Sketcher::SketchObject','Sketch') - sketch.Support = (self.Doc.XZ_Plane,['']) + sketch.AttachmentSupport = (self.Doc.XZ_Plane,['']) sketch.MapMode = 'FlatFace' self.Doc.recompute() diff --git a/src/Mod/PartDesign/TestPartDesignGui.py b/src/Mod/PartDesign/TestPartDesignGui.py index 0bf2acaa07..2af4db6c60 100644 --- a/src/Mod/PartDesign/TestPartDesignGui.py +++ b/src/Mod/PartDesign/TestPartDesignGui.py @@ -100,7 +100,7 @@ class PartDesignGuiTestCases(unittest.TestCase): App.ActiveDocument.recompute() self.Sketch = self.Doc.addObject('Sketcher::SketchObject','Sketch') - self.Sketch.Support = (self.BoxObj, ('Face3',)) + self.Sketch.AttachmentSupport = (self.BoxObj, ('Face3',)) self.Sketch.MapMode = 'FlatFace' self.BodySource.addObject(self.Sketch) @@ -154,7 +154,7 @@ class PartDesignGuiTestCases(unittest.TestCase): self.Sketch = self.Doc.addObject('Sketcher::SketchObject','Sketch') self.BodySource.addObject(self.Sketch) - self.Sketch.Support = (self.BodySource.Origin.OriginFeatures[3], ['']) + self.Sketch.AttachmentSupport = (self.BodySource.Origin.OriginFeatures[3], ['']) self.Sketch.MapMode = 'FlatFace' @@ -198,8 +198,8 @@ class PartDesignGuiTestCases(unittest.TestCase): #assert dependencies of the Sketch self.Doc.recompute() - self.assertFalse(self.Sketch.Support[0][0] in self.BodySource.Origin.OriginFeatures) - self.assertTrue(self.Sketch.Support[0][0] in self.BodyTarget.Origin.OriginFeatures) + self.assertFalse(self.Sketch.AttachmentSupport[0][0] in self.BodySource.Origin.OriginFeatures) + self.assertTrue(self.Sketch.AttachmentSupport[0][0] in self.BodyTarget.Origin.OriginFeatures) self.assertEqual(len(self.BodySource.Group), 0, "Source body feature count is wrong") self.assertEqual(len(self.BodyTarget.Group), 2, "Target body feature count is wrong") diff --git a/src/Mod/PartDesign/WizardShaft/Shaft.py b/src/Mod/PartDesign/WizardShaft/Shaft.py index 90571d6804..14f50a0e2d 100644 --- a/src/Mod/PartDesign/WizardShaft/Shaft.py +++ b/src/Mod/PartDesign/WizardShaft/Shaft.py @@ -481,7 +481,7 @@ class Shaft: try: solution = np.linalg.solve(A, b) # A * solution = b except np.linalg.linalg.LinAlgError as e: - FreeCAD.Console.PrintMessage(e.message) + FreeCAD.Console.PrintMessage(str(e)) FreeCAD.Console.PrintMessage(". No solution possible.\n") self.parent.updateButtons(ax, False) continue diff --git a/src/Mod/PartDesign/WizardShaft/WizardShaftTable.py b/src/Mod/PartDesign/WizardShaft/WizardShaftTable.py index 8ac62a1c0c..991afd05e2 100644 --- a/src/Mod/PartDesign/WizardShaft/WizardShaftTable.py +++ b/src/Mod/PartDesign/WizardShaft/WizardShaftTable.py @@ -147,12 +147,12 @@ class WizardShaftTable: widget.editingFinished.connect(self.slotEditingFinished) # Constraint type widget = QtGui.QComboBox(self.widget) - widget.insertItem(0, "None") - widget.insertItem(1, "Fixed") - widget.insertItem(2, "Force") - widget.insertItem(3, "Bearing") - widget.insertItem(4, "Gear") - widget.insertItem(5, "Pulley") + widget.insertItem(0, translate("WizardShaftTable", "None"), "None") + widget.insertItem(1, translate("WizardShaftTable", "Fixed"), "Fixed") + widget.insertItem(2, translate("WizardShaftTable", "Force"), "Force") + widget.insertItem(3, translate("WizardShaftTable", "Bearing"), "Bearing") + widget.insertItem(4, translate("WizardShaftTable", "Gear"), "Gear") + widget.insertItem(5, translate("WizardShaftTable", "Pulley"), "Pulley") action = QtGui.QAction("Edit constraint", widget) action.triggered.connect(self.slotEditConstraint) widget.addAction(action) @@ -162,10 +162,10 @@ class WizardShaftTable: self.widget.connect(widget, QtCore.SIGNAL("currentIndexChanged(const QString&)"), self.slotConstraintType) # Start edge type widget = QtGui.QComboBox(self.widget) - widget.insertItem(0, "None",) - widget.insertItem(1, "Chamfer") - widget.insertItem(2, "Fillet") - self.widget.setCellWidget(self.rowDict["StartEdgeType"],index, widget) + widget.insertItem(0, translate("WizardShaftTable", "None"), "None",) + widget.insertItem(1, translate("WizardShaftTable", "Chamfer"), "Chamfer") + widget.insertItem(2, translate("WizardShaftTable", "Fillet"), "Fillet") + self.widget.setCellWidget(self.rowDict["StartEdgeType"], index, widget) widget.setCurrentIndex(0) widget.setEnabled(False) #self.widget.connect(widget, QtCore.SIGNAL("currentIndexChanged(const QString&)"), self.slotLoadType) @@ -213,7 +213,7 @@ class WizardShaftTable: self.shaft.updateSegment(self.editedColumn, diameter = self.getDoubleValue(rowName, self.editedColumn)) elif rowName == "InnerDiameter": self.shaft.updateSegment(self.editedColumn, innerdiameter = self.getDoubleValue(rowName, self.editedColumn)) - elif rowName == "Constraintype": + elif rowName == "ConstraintType": self.shaft.updateConstraint(self.editedColumn, self.getListValue(rowName, self.editedColumn)) elif rowName == "StartEdgeType": pass @@ -316,7 +316,11 @@ class WizardShaftTable: def getListValue(self, row, column): widget = self.widget.cellWidget(self.rowDict[row], column) if widget is not None: - return widget.currentText() #[0].upper() + if widget.data(QtCore.Qt.UserRole): + # If the widget has user data attached, assume that is the "value" we are seeking + return widget.data(QtCore.Qt.UserRole) + else: + return widget.currentText() #[0].upper() else: return None diff --git a/src/Mod/Path/Gui/Resources/Path.qrc b/src/Mod/Path/Gui/Resources/Path.qrc deleted file mode 100644 index 2e7d57ee5a..0000000000 --- a/src/Mod/Path/Gui/Resources/Path.qrc +++ /dev/null @@ -1,139 +0,0 @@ - - - icons/Path_Adaptive.svg - icons/Path_3DPocket.svg - icons/Path_3DSurface.svg - icons/Path_Area_View.svg - icons/Path_Area_Workplane.svg - icons/Path_Area.svg - icons/Path_Array.svg - icons/Path_Axis.svg - icons/Path_BFastForward.svg - icons/Path_BPause.svg - icons/Path_BPlay.svg - icons/Path_BStep.svg - icons/Path_BStop.svg - icons/Path_BaseGeometry.svg - icons/Path_Camotics.svg - icons/Path_Comment.svg - icons/Path_Compound.svg - icons/Path_Contour.svg - icons/Path_Copy.svg - icons/Path_Custom.svg - icons/Path_Datums.svg - icons/Path_Deburr.svg - icons/Path_Depths.svg - icons/Path_Dressup.svg - icons/Path_Drilling.svg - icons/Path_Engrave.svg - icons/Path_ExportTemplate.svg - icons/Path_Face.svg - icons/Path_FacePocket.svg - icons/Path_FaceProfile.svg - icons/Path_Heights.svg - icons/Path_Helix.svg - icons/Path_Hop.svg - icons/Path_Inspect.svg - icons/Path_Job.svg - icons/Path_Kurve.svg - icons/Path_LengthOffset.svg - icons/Path_Machine.svg - icons/Path_MachineLathe.svg - icons/Path_MachineMill.svg - icons/Path_OpActive.svg - icons/Path_OpCopy.svg - icons/Path_OperationA.svg - icons/Path_OperationB.svg - icons/Path_Plane.svg - icons/Path_Pocket.svg - icons/Path_Post.svg - icons/Path_Probe.svg - icons/Path_Profile_Edges.svg - icons/Path_Profile_Face.svg - icons/Path_Profile.svg - icons/Path_Sanity.svg - icons/Path_SelectLoop.svg - icons/Path_SetupSheet.svg - icons/Path_Shape.svg - icons/Path_SimpleCopy.svg - icons/Path_Simulator.svg - icons/Path_Slot.svg - icons/Path_Speed.svg - icons/Path_Stock.svg - icons/Path_Stop.svg - icons/Path_ThreadMilling.svg - icons/Path_ToolBit.svg - icons/Path_ToolChange.svg - icons/Path_ToolController.svg - icons/Path_ToolDuplicate.svg - icons/Path_Toolpath.svg - icons/Path_ToolTable.svg - icons/Path_Vcarve.svg - icons/Path_Waterline.svg - icons/arrow-ccw.svg - icons/arrow-cw.svg - icons/arrow-down.svg - icons/arrow-left-down.svg - icons/arrow-left-up.svg - icons/arrow-left.svg - icons/arrow-right-down.svg - icons/arrow-right-up.svg - icons/arrow-right.svg - icons/arrow-up.svg - icons/edge-join-miter-not.svg - icons/edge-join-miter.svg - icons/edge-join-round-not.svg - icons/edge-join-round.svg - icons/preferences-path.svg - panels/AxisMapEdit.ui - panels/DlgJobCreate.ui - panels/DlgJobModelSelect.ui - panels/DlgJobTemplateExport.ui - panels/DlgSelectPostProcessor.ui - panels/DlgTCChooser.ui - panels/DlgToolControllerEdit.ui - panels/DlgToolCopy.ui - panels/DlgToolEdit.ui - panels/DogboneEdit.ui - panels/DressupPathBoundary.ui - panels/DragKnifeEdit.ui - panels/DressUpLeadInOutEdit.ui - panels/HoldingTagsEdit.ui - panels/PageBaseGeometryEdit.ui - panels/PageBaseHoleGeometryEdit.ui - panels/PageBaseLocationEdit.ui - panels/PageDepthsEdit.ui - panels/PageDiametersEdit.ui - panels/PageHeightsEdit.ui - panels/PageOpAdaptiveEdit.ui - panels/PageOpCustomEdit.ui - panels/PageOpDeburrEdit.ui - panels/PageOpDrillingEdit.ui - panels/PageOpEngraveEdit.ui - panels/PageOpHelixEdit.ui - panels/PageOpPocketExtEdit.ui - panels/PageOpPocketFullEdit.ui - panels/PageOpProbeEdit.ui - panels/PageOpProfileFullEdit.ui - panels/PageOpSlotEdit.ui - panels/PageOpSurfaceEdit.ui - panels/PageOpThreadMillingEdit.ui - panels/PageOpWaterlineEdit.ui - panels/PageOpVcarveEdit.ui - panels/PathEdit.ui - panels/PointEdit.ui - panels/PropertyBag.ui - panels/PropertyCreate.ui - panels/SetupGlobal.ui - panels/SetupOp.ui - panels/ToolBitEditor.ui - panels/ToolBitLibraryEdit.ui - panels/ToolBitSelector.ui - panels/TaskPathCamoticsSim.ui - panels/TaskPathSimulator.ui - panels/ZCorrectEdit.ui - preferences/Advanced.ui - preferences/PathDressupHoldingTags.ui - preferences/PathJob.ui - - diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Axis.svg b/src/Mod/Path/Gui/Resources/icons/Path_Axis.svg deleted file mode 100644 index d5307eff5c..0000000000 --- a/src/Mod/Path/Gui/Resources/icons/Path_Axis.svg +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - Path_Axis - 2015-07-04 - https://www.freecad.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Axis.svg - - - FreeCAD LGPL2+ - - - https://www.gnu.org/copyleft/lesser.html - - - [agryson] Alexander Gryson - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Contour.svg b/src/Mod/Path/Gui/Resources/icons/Path_Contour.svg deleted file mode 100644 index 2007062346..0000000000 --- a/src/Mod/Path/Gui/Resources/icons/Path_Contour.svg +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - Path_Contour - 2016-08-16 - https://www.freecad.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Contour.svg - - - FreeCAD LGPL2+ - - - https://www.gnu.org/copyleft/lesser.html - - - [agryson] Alexander Gryson - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Holding.svg b/src/Mod/Path/Gui/Resources/icons/Path_Holding.svg deleted file mode 100644 index 7732c5218b..0000000000 --- a/src/Mod/Path/Gui/Resources/icons/Path_Holding.svg +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - Path_Holding - 2016-02-24 - https://www.freecad.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Holding.svg - - - FreeCAD LGPL2+ - - - https://www.gnu.org/copyleft/lesser.html - - - [agryson] Alexander Gryson - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Hop.svg b/src/Mod/Path/Gui/Resources/icons/Path_Hop.svg deleted file mode 100644 index 738c4b7df5..0000000000 --- a/src/Mod/Path/Gui/Resources/icons/Path_Hop.svg +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - Path_Hop - 2015-07-04 - https://www.freecad.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Hop.svg - - - FreeCAD LGPL2+ - - - https://www.gnu.org/copyleft/lesser.html - - - [agryson] Alexander Gryson - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg b/src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg deleted file mode 100644 index 395b53c143..0000000000 --- a/src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - Path_Kurve - 2015-07-04 - https://www.freecad.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg - - - FreeCAD LGPL2+ - - - https://www.gnu.org/copyleft/lesser.html - - - [agryson] Alexander Gryson - - - - - - - - - - - - - - diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Plane.svg b/src/Mod/Path/Gui/Resources/icons/Path_Plane.svg deleted file mode 100644 index 5f47a42c0d..0000000000 --- a/src/Mod/Path/Gui/Resources/icons/Path_Plane.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - Path_Plane - 2015-07-04 - https://www.freecad.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Plane.svg - - - FreeCAD LGPL2+ - - - https://www.gnu.org/copyleft/lesser.html - - - [agryson] Alexander Gryson - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Mod/Path/Gui/Resources/icons/Path_Stock.svg b/src/Mod/Path/Gui/Resources/icons/Path_Stock.svg deleted file mode 100644 index 02b73ee644..0000000000 --- a/src/Mod/Path/Gui/Resources/icons/Path_Stock.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - Path_Stock - 2015-07-04 - https://www.freecad.org/wiki/index.php?title=Artwork - - - FreeCAD - - - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Stock.svg - - - FreeCAD LGPL2+ - - - https://www.gnu.org/copyleft/lesser.html - - - [agryson] Alexander Gryson - - - - - - - - - - - - - diff --git a/src/Mod/Path/Gui/Resources/translations/Path.ts b/src/Mod/Path/Gui/Resources/translations/Path.ts index 72f61df070..a29a66b859 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path.ts @@ -701,17 +701,17 @@ For stock from the Base object's bounding box it means the extra material i - + Add - - + + Remove @@ -762,8 +762,8 @@ Reset deletes all current items from the list and fills the list with all circul - + All objects will be processed using the same operation properties. @@ -808,32 +808,32 @@ Reset deletes all current items from the list and fills the list with all circul - + Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -848,14 +848,14 @@ Reset deletes all current items from the list and fills the list with all circul - + Final Depth - + Step Down @@ -895,34 +895,34 @@ Reset deletes all current items from the list and fills the list with all circul + - - - - + + - + + The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode @@ -932,28 +932,28 @@ Reset deletes all current items from the list and fills the list with all circul - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller - - + + Coolant @@ -973,8 +973,8 @@ Reset deletes all current items from the list and fills the list with all circul - + Step Over Percent @@ -1024,8 +1024,8 @@ Reset deletes all current items from the list and fills the list with all circul - + Use Outline @@ -1080,10 +1080,10 @@ Reset deletes all current items from the list and fills the list with all circul - + - + Direction @@ -1093,15 +1093,15 @@ Reset deletes all current items from the list and fills the list with all circul + - CW - + CCW @@ -1126,8 +1126,6 @@ Reset deletes all current items from the list and fills the list with all circul - - @@ -1137,6 +1135,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm @@ -1352,11 +1352,11 @@ Reset deletes all current items from the list and fills the list with all circul - - + + The tool and its settings to be used for this operation @@ -1455,9 +1455,9 @@ The latter can be used to face of the entire stock area to ensure uniform height - + Use Start Point @@ -1713,9 +1713,9 @@ The latter can be used to face of the entire stock area to ensure uniform height + - Layer Mode @@ -1755,8 +1755,8 @@ The latter can be used to face of the entire stock area to ensure uniform height - + Cut Pattern @@ -1771,14 +1771,14 @@ The latter can be used to face of the entire stock area to ensure uniform height - + Bounding Box - + Select the overall boundary for the operation. @@ -1788,14 +1788,14 @@ The latter can be used to face of the entire stock area to ensure uniform height - + Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. @@ -1820,14 +1820,14 @@ The latter can be used to face of the entire stock area to ensure uniform height - + Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. @@ -1837,8 +1837,8 @@ The latter can be used to face of the entire stock area to ensure uniform height - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1873,28 +1873,28 @@ The latter can be used to face of the entire stock area to ensure uniform height - + Step over - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. - + Sample interval - + Optimize Linear Paths @@ -2028,8 +2028,8 @@ Default: 3 mm - + Type @@ -2059,8 +2059,8 @@ Default: 3 mm - + Operation @@ -2943,8 +2943,8 @@ Should multiple tools or tool shapes with the same name exist in different direc - + Radius @@ -3359,8 +3359,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator @@ -4191,9 +4191,10 @@ For example: - + Edit + int = field(default=None) @@ -4335,8 +4336,8 @@ For example: - + %s is not a Base Model object of the job %s @@ -4356,8 +4357,8 @@ For example: - + Choose a Path Job @@ -4461,7 +4462,6 @@ For example: List of custom property groups - int = field(default=None) @@ -4524,12 +4524,12 @@ For example: - - + + The base path to modify @@ -4823,9 +4823,9 @@ For example: - + Operations Cycle Time Estimation @@ -4910,8 +4910,8 @@ For example: - + Make False, to prevent operation from generating code @@ -4931,8 +4931,8 @@ For example: - + Percent of cutter diameter to step over on each pass @@ -5108,10 +5108,10 @@ For example: - - + + Make True, if specifying a Start Point @@ -5225,9 +5225,9 @@ For example: + - Additional base objects to be engraved @@ -5268,9 +5268,9 @@ For example: + - Extra value to stay away from final profile- good for roughing toolpath @@ -5290,9 +5290,9 @@ For example: - - + + Choose how to process multiple Base Geometry features. @@ -5313,8 +5313,8 @@ For example: - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5421,8 +5421,8 @@ For example: - + Show the temporary path construction objects when module is in DEBUG mode. @@ -5438,8 +5438,8 @@ For example: - + Set the geometric clearing pattern to use for the operation. @@ -5455,8 +5455,8 @@ For example: - + Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5487,8 +5487,8 @@ For example: - + The custom start point for the path of this operation @@ -6002,22 +6002,22 @@ For example: Path_Dressup - + Please select one path object - + The selected object is not a path - + Please select a Path object @@ -6174,8 +6174,8 @@ For example: - + All Files (*.*) @@ -6903,14 +6903,14 @@ For example: PathProfile - + Outside - + Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_be.ts b/src/Mod/Path/Gui/Resources/translations/Path_be.ts index 2eb132f3b7..78f52fe3f7 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_be.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_be.ts @@ -722,17 +722,17 @@ FreeCAD пастаўляецца з некалькімі прадусталяв Ачысціць спіс асноўнай геаметрыі - + Add Дадаць - - + + Remove Выдаліць @@ -790,8 +790,8 @@ Reset deletes all current items from the list and fills the list with all circul Скінуць - + All objects will be processed using the same operation properties. Усе аб'екты будуць апрацаваныя з ужываннем адных і тых жа ўласцівасцяў аперацыі. @@ -837,33 +837,33 @@ Reset deletes all current items from the list and fills the list with all circul Усе месцазнаходжанні будуць апрацаваныя з ужываннем адных і тых жа ўласцівасцяў аперацыі. - + Start Depth Пачатковая глыбіня - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Пачатковая глыбіня аперацыі. Самая высокая кропка па восі Z, якую неабходна апрацаваць. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Перадайце значэнне Z абранай характарыстыкі ў якасці пачатковай глыбіні для аперацыі. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Глыбіня аперацыі, якая адпавядае найменшаму значэнню па восі Z, якую неабходна апрацаваць. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Перадайце значэнне Z абранай характарыстыкі ў якасці канчатковай глыбіні для аперацыі. @@ -881,14 +881,14 @@ Reset deletes all current items from the list and fills the list with all circul Можа ўжывацца для атрымання больш чыстага пакрыцця. - + Final Depth Канчатковая глыбіня - + Step Down Крок уніз @@ -929,34 +929,34 @@ Reset deletes all current items from the list and fills the list with all circul Вышыня зазору + - - - - + + - + + The tool and its settings to be used for this operation. Інструмент і яго налады, якія будуць ужывацца для дадзенай аперацыі. - - - - - - - - - - + + + + + + + + + + Coolant Mode Рэжым астуджэння @@ -966,28 +966,28 @@ Reset deletes all current items from the list and fills the list with all circul G-код - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Кантролер інструментаў - - + + Coolant Астуджальная вадкасць @@ -1007,8 +1007,8 @@ Reset deletes all current items from the list and fills the list with all circul Тып аперацыи - + Step Over Percent Крок наперад у адсотках @@ -1058,8 +1058,8 @@ Reset deletes all current items from the list and fills the list with all circul Аздабіць профіль - + Use Outline Ужываць контур @@ -1118,10 +1118,10 @@ Reset deletes all current items from the list and fills the list with all circul Спыніць - + - + Direction Напрамак @@ -1131,15 +1131,15 @@ Reset deletes all current items from the list and fills the list with all circul Напрамак, у якім выконваецца профіль, па гадзінніку ці супраць. + - CW Па гадзінніку - + CCW Супраць гадзінніка @@ -1164,8 +1164,6 @@ Reset deletes all current items from the list and fills the list with all circul Дыяганальнае аб'яднанне - - @@ -1175,6 +1173,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm мм @@ -1393,11 +1393,11 @@ Reset deletes all current items from the list and fills the list with all circul Шаблон - - + + The tool and its settings to be used for this operation @@ -1501,9 +1501,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Дапаможнік матэрыялу - + Use Start Point Ужыць пачатковую кропку @@ -1765,9 +1765,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Выцягнуць канец траекторыі + - Layer Mode Рэжым пластоў @@ -1807,8 +1807,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Тып сканіравання - + Cut Pattern Шаблон апрацоўкі @@ -1823,14 +1823,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Пазбягайце апошніх X граняў - + Bounding Box Габарыты - + Select the overall boundary for the operation. Абраць агульную мяжу для аперацыі. @@ -1841,14 +1841,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Вярчальны: вярчальнае сканіраванне па чацвёртай восі. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Завершае аперацыю за адзін праход на глыбіню, альбо за некалькі праходаў да канчатковай глыбіні. - + Set the geometric clearing pattern to use for the operation. Задаць геаметрычны шаблон ачысткі, які будзе ўжывацца для аперацыі. @@ -1873,14 +1873,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Лініі фрэзеравання ствараць паралельна дадзенай восі. - + Set the Z-axis depth offset from the target surface. Задаць зрушэнне глыбіні па восі Z ад мэтавай паверхні. - + Set the sampling resolution. Smaller values quickly increase processing time. Задаць дазвол выбаркі. Меншыя значэння хутка павялічваюць час апрацоўкі. @@ -1890,8 +1890,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Задаць True, калі пакажыце пачатковую кропку - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Уключыць аптымізацыю лінейных траекторый (калінеарных кропак). Выдаляе непатрэбныя калінеарныя кропкі з вываду G-кода. @@ -1926,14 +1926,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Зрушэнне глыбіні - + Step over Пераступіць - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1941,14 +1941,14 @@ A step over of 100% results in no overlap between two different cycles. Пераход на 100% не прыводзіць да перакрыцця двух розных цыклаў. - + Sample interval Інтэрвал выбаркі - + Optimize Linear Paths Аптымізаваць лінейныя траекторыі @@ -2089,8 +2089,8 @@ Default: 3 mm Арыентацыя - + Type Тып @@ -2120,8 +2120,8 @@ Default: 3 mm Крок (віткоў на цалю) - + Operation Аперацыя @@ -3049,8 +3049,8 @@ Should multiple tools or tool shapes with the same name exist in different direc Аздабленне восей - + Radius Радыус @@ -3471,8 +3471,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Сродак мадэлявання траекторый @@ -4358,9 +4358,10 @@ For example: Больш не паказваць - + Edit + int = field(default=None) Змяніць @@ -4502,8 +4503,8 @@ For example: Неплоскі адаптыўны запуск таксама недаступны. - + %s is not a Base Model object of the job %s %s не з'яўляецца аб'ектам асноўнай мадэлі задання %s @@ -4523,8 +4524,8 @@ For example: Профіль усёй мадэлі, абраных граняў ці абраны' рэбраў - + Choose a Path Job Абраць траекторыю да задання @@ -4628,7 +4629,6 @@ For example: List of custom property groups - int = field(default=None) Спіс карыстальніцкіх суполак уласцівасцяў @@ -4691,12 +4691,12 @@ For example: - - + + The base path to modify Асноўная траекторыя для змены @@ -4990,9 +4990,9 @@ For example: Калекцыя ўсіх кантролераў інструментаў для задання - + Operations Cycle Time Estimation Ацэнка часу цыклу аперацыі @@ -5077,8 +5077,8 @@ For example: Нумар зрушэння прыстасавання - + Make False, to prevent operation from generating code Задаць False, каб прадухіліць стварэнне G-кода для аперацыи @@ -5098,8 +5098,8 @@ For example: Уплывае на дакладнасць і эфектыўнасць - + Percent of cutter diameter to step over on each pass Адсотак дыяметра разца, які неабходна пераступаць пры кожным праходзе @@ -5275,10 +5275,10 @@ For example: Пачатковая кропка траекторыі - - + + Make True, if specifying a Start Point Задаць True, калі пакажыце пачатковую кропку @@ -5393,9 +5393,9 @@ For example: Прымяніць адвод G99: толькі адвод на вышыню адводу (RetractHeight) паміж адтулінамі ў дадзенай аперацыі + - Additional base objects to be engraved Дадатковыя асноўныя аб'екты для гравіроўкі @@ -5436,9 +5436,9 @@ For example: Радыус пачатку + - Extra value to stay away from final profile- good for roughing toolpath Дадатковае значэнне, якое дазваляе трымацца далей ад канчатковага профілю - падыходзіць для траекторыі інструмента чарнавой апрацоўкі @@ -5458,9 +5458,9 @@ For example: Выключыць фрэзераванне, якія выступаюць адносна ўнутранай грані. - - + + Choose how to process multiple Base Geometry features. Абраць спосаб апрацоўкі некалькіх характарыстык асноўнай геаметрыі. @@ -5481,8 +5481,8 @@ For example: Апрацаваць мадэль і загатоўку ў аперацыі без выбару асноўнай геаметрыі. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Напрамак, у якім траекторыя руху інструмента павінна праходзіць вакол дэталі па гадзінніку (CW) ці супраць (CCW) @@ -5590,8 +5590,8 @@ For example: Задаць True, калі ўжываецца карэкцыя радыусу разца - + Show the temporary path construction objects when module is in DEBUG mode. Паказаць аб'екты пабудовы часовай траекторыі, калі модуль знаходзіцца ў рэжыме адладкі. @@ -5607,8 +5607,8 @@ For example: Увядзіце карыстальніцкую канчатковую кропку для траекторыі паза. - + Set the geometric clearing pattern to use for the operation. Задаць геаметрычны шаблон ачысткі, які будзе ўжывацца для аперацыі. @@ -5624,8 +5624,8 @@ For example: Станоўчае значэнне выцягвае канец траекторыі, адмоўнае - скарачае. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Завершае аперацыю за адзін праход на глыбіню, альбо за некалькі праходаў да канчатковай глыбіні. @@ -5656,8 +5656,8 @@ For example: Уключыць, каб змяніць напрамак апрацоўкі траекторыі паза ў зваротным напрамку. - + The custom start point for the path of this operation Карыстальніцкая пачатковая кропка для траекторыі выканання аперацыі @@ -6175,24 +6175,24 @@ For example: Path_Dressup - + Please select one path object Калі ласка, абярыце адзін аб'ект траекторыі - + The selected object is not a path Абраны аб'ект не з'яўляецца траекторыяй - + Please select a Path object Калі ласка, абярыце аб'ект траекторыі @@ -6349,8 +6349,8 @@ For example: Абраць файл кропкі зандзіравання - + All Files (*.*) Усе файлы (*.*) @@ -7081,14 +7081,14 @@ For example: PathProfile - + Outside Звонку - + Inside Унутры diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ca.ts b/src/Mod/Path/Gui/Resources/translations/Path_ca.ts index 2ee0a6f882..446c8abbd8 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ca.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ca.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Afegeix - - + + Remove Elimina @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Reinicia - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Controlador d'eina - - + + Coolant Refrigerant @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Atura - + - + Direction Direcció @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW Sentit horari - + CCW Sentit antihorari @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Passa al següent - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Orientació - + Type Tipus @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operació @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Radi @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Edita @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Tots els arxius (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_cs.ts b/src/Mod/Path/Gui/Resources/translations/Path_cs.ts index 025308ae6c..7536a756e6 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_cs.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_cs.ts @@ -711,17 +711,17 @@ U polotovaru z ohraničujícího kvádru základního objektu to znamená příd Vymaže seznam základních geometrií - + Add Přidat - - + + Remove Odstranit @@ -776,8 +776,8 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Reset - + All objects will be processed using the same operation properties. Všechny objekty budou zpracovány pomocí stejných vlastností operace. @@ -822,32 +822,32 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Všechna místa budou zpracována za použití stejných vlastností operace. - + Start Depth Počáteční hloubka - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Počáteční hloubka operace. Nejvyšší bod v ose Z, kterou musí operace zpracovat. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Přenést hodnotu Z vybraného prvku jako počáteční hloubku operace. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Hloubka operace, která odpovídá nejnižší hodnotě v ose Z, kterou má operace zpracovat. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Přenést hodnotu Z vybraného prvku jako konečnou hloubku operace. @@ -862,14 +862,14 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Hloubka posledního řezu operace. Může být použita k dosažení kvalitnějšího povrchu. - + Final Depth Konečná hloubka - + Step Down Krok dolů @@ -909,34 +909,34 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Výška přejezdu + - - - - + + - + + The tool and its settings to be used for this operation. Nástroj a jeho nastavení pro tuto operaci. - - - - - - - - - - + + + + + + + + + + Coolant Mode Režimy chlazení @@ -946,28 +946,28 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v G kódy - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Správa nástroje - - + + Coolant Chladivo @@ -987,8 +987,8 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Typ operace - + Step Over Percent Krok procentem @@ -1038,8 +1038,8 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Dokončování profilu - + Use Outline Použít obrys @@ -1094,10 +1094,10 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Stop - + - + Direction Směr @@ -1107,15 +1107,15 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Směr, ve kterém se obrábí kontura, vpravo nebo vlevo. + - CW Pravotočivý - + CCW Levotočivý @@ -1140,8 +1140,6 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Úkosový spoj - - @@ -1151,6 +1149,8 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v + + mm mm @@ -1366,11 +1366,11 @@ Funkce Obnovit odstraní ze seznamu všechny aktuální prvky a doplní seznam v Vzor - - + + The tool and its settings to be used for this operation @@ -1471,9 +1471,9 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Přídavek materiálu - + Use Start Point Použít počáteční bod @@ -1729,9 +1729,9 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Prodloužit konec dráhy + - Layer Mode Režim vrstvy @@ -1771,8 +1771,8 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Skenovat typ - + Cut Pattern Vzor řezu @@ -1787,14 +1787,14 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Vyhnout se posledním X plochám - + Bounding Box Ohraničující kvádr - + Select the overall boundary for the operation. Vybrat celkovou hranici operace. @@ -1804,14 +1804,14 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Rovinný: Plochý, 3D sken povrchu. Rotační: rotační skenování ve 4. ose. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Dokončit operaci jedním průchodem v hloubce nebo několika průchody do konečné hloubky. - + Set the geometric clearing pattern to use for the operation. Nastavit vzor geometrického začišťování, který se má použít pro operaci. @@ -1836,14 +1836,14 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Čáry kapkového nástroje jsou vytvořeny rovnoběžně s touto osou. - + Set the Z-axis depth offset from the target surface. Nastavit hloubkový posun osy Z od cílového povrchu. - + Set the sampling resolution. Smaller values quickly increase processing time. Nastavení rozlišení vzorkování. Menší hodnoty rychle prodlužují dobu zpracování. @@ -1853,8 +1853,8 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Pokud zadáváte počáteční bod, vyberte hodnotu True - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Povolit optimalizaci lineárních drah (kolineární body). Odstraní nepotřebné kolineární body z výstupu G-kódu. @@ -1889,14 +1889,14 @@ Poslední možnost lze použít k zajištění rovnoměrných výšek celého po Ofset hloubky - + Step over Krok - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1905,14 +1905,14 @@ A step over of 100% results in no overlap between two different cycles. Krok 100 % vede k tomu, že se dva různé cykly nepřekrývají. - + Sample interval Interval vzoru - + Optimize Linear Paths Optimalizovat lineární dráhy @@ -2060,8 +2060,8 @@ Výchozí: 3 mm Orientace - + Type Typ @@ -2091,8 +2091,8 @@ Výchozí: 3 mm TPI - + Operation Operace @@ -3013,8 +3013,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Poloměr @@ -3429,8 +3429,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Simulátor dráhy @@ -4321,9 +4321,10 @@ Příklad: Již nezobrazovat - + Edit + int = field(default=None) Upravit @@ -4465,8 +4466,8 @@ Příklad: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s není objekt základního modelu úlohy %s @@ -4486,8 +4487,8 @@ Příklad: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Vyberte si úlohu cesty @@ -4591,7 +4592,6 @@ Příklad: List of custom property groups - int = field(default=None) List of custom property groups @@ -4654,12 +4654,12 @@ Příklad: - - + + The base path to modify The base path to modify @@ -4953,9 +4953,9 @@ Příklad: Sbírka všech ovladačů nástrojů pro danou úlohu - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5040,8 +5040,8 @@ Příklad: Číslo offsetu zařízení - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5061,8 +5061,8 @@ Příklad: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5238,10 +5238,10 @@ Příklad: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5355,9 +5355,9 @@ Příklad: Aplikujte odtažení G99: v této operaci se stáhněte pouze do výšky RetractHeight mezi otvory + - Additional base objects to be engraved Další základní předměty, které mají být vyryty @@ -5398,9 +5398,9 @@ Příklad: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Mimořádná hodnota pro udržení vzdálenosti od konečného profilu – dobré pro hrubování dráhy nástroje @@ -5420,9 +5420,9 @@ Příklad: Vyloučit frézování vyvýšených oblastí uvnitř čela. - - + + Choose how to process multiple Base Geometry features. Zvolte způsob zpracování více základních geometrických prvků. @@ -5443,8 +5443,8 @@ Příklad: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5551,8 +5551,8 @@ Příklad: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5568,8 +5568,8 @@ Příklad: Zadat uživatelský koncový bod pro dráhu drážky. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5585,8 +5585,8 @@ Příklad: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Dokončit operaci jedním průchodem v hloubce nebo několika průchody do konečné hloubky. @@ -5617,8 +5617,8 @@ Příklad: Povolit otočení směru řezu dráhy drážky. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6133,24 +6133,24 @@ Příklad: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6307,8 +6307,8 @@ Příklad: Select Probe Point File - + All Files (*.*) Všechny soubory (*.*) @@ -7039,14 +7039,14 @@ Příklad: PathProfile - + Outside Vně - + Inside Uvnitř diff --git a/src/Mod/Path/Gui/Resources/translations/Path_de.ts b/src/Mod/Path/Gui/Resources/translations/Path_de.ts index 4abb292e6b..3498e06ea8 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_de.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_de.ts @@ -712,17 +712,17 @@ Für das Standard Rohmaterial aus dem Begrenzungsrahmen des Basisobjekts bedeute Löscht die Liste der Basisgeometrien - + Add Hinzufügen - - + + Remove Entfernen @@ -777,8 +777,8 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Zurücksetzen - + All objects will be processed using the same operation properties. Alle Objekte werden nach den selben Operations-Eigenschaften verarbeitet. @@ -823,32 +823,32 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Alle Orte werden mit denselben Operationseigenschaften bearbeitet. - + Start Depth Starttiefe - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Starthöhe der Operation. Der höchste Punkt in der Z-Achse, den die Operation bearbeiten muss. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Übertragen Sie den Z-Wert der ausgewählten Funktion als Starthöhe für die Operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Die Tiefe der Operation, die dem niedrigsten Wert in der Z-Achse entspricht, den die Operation bearbeiten muss. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Übertragen Sie den Z-Wert der ausgewählten Funktion als Endtiefe für die Operation. @@ -863,14 +863,14 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Tiefe des letzten Schnitts der Bearbeitung. Kann verwendet werden, um eine sauberere Darstellung zu erzeugen. - + Final Depth Endtiefe - + Step Down Zustelltiefe @@ -910,34 +910,34 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Vertikaler Sicherheitsabstand Werkzeug zu Werkstück bei Zwischen- und Verbindungsfahrten + - - - - + + - + + The tool and its settings to be used for this operation. Das Werkzeug und seine Einstellungen, die für diesen Vorgang verwendet werden sollen. - - - - - - - - - - + + + + + + + + + + Coolant Mode Kühlmittelmodus @@ -947,28 +947,28 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all G-Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Werkzeugsteuerung - - + + Coolant Kühlmittel @@ -988,8 +988,8 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Operationstyp - + Step Over Percent Überlappungs-Prozentsatz @@ -1039,8 +1039,8 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Feinbearbeitungsprofil - + Use Outline Kontur verwenden @@ -1095,10 +1095,10 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Stop - + - + Direction Richtung @@ -1108,15 +1108,15 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Die Richtung, in der das Profil ausgeführt wird, im oder gegen den Uhrzeigersinn. + - CW Im Uhrzeigersinn - + CCW Gegen den Uhrzeigersinn @@ -1141,8 +1141,6 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Gehrungsfuge - - @@ -1152,6 +1150,8 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all + + mm mm @@ -1367,11 +1367,11 @@ Reset löscht alle aktuellen Elemente aus der Liste und füllt die Liste mit all Muster - - + + The tool and its settings to be used for this operation @@ -1472,9 +1472,9 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Werkstoffzulassung - + Use Start Point Startpunkt verwenden @@ -1730,9 +1730,9 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Pfadende erweitern + - Layer Mode Ebenenmodus @@ -1772,8 +1772,8 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Scan-Typ - + Cut Pattern Fräsmuster @@ -1788,14 +1788,14 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Letzte X Flächen vermeiden - + Bounding Box Begrenzungsbox - + Select the overall boundary for the operation. Wählen Sie die Gesamtgrenze für die Operation. @@ -1805,14 +1805,14 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Planar: Flacher, 3D-Oberflächen-Scan. Drehbar: Drehbarer 4. ter Achs-Rotations-Scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Die Operation in einem Durchgang der ausgewählten Tiefe durchführen, oder in mehreren Durchgängen bis zur Zieltiefe. - + Set the geometric clearing pattern to use for the operation. Legen Sie das geometrische Räummuster für die Operation fest. @@ -1837,14 +1837,14 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Die Dropcutter-Linien werden parallel zu dieser Achse erstellt. - + Set the Z-axis depth offset from the target surface. Legen Sie den Z-Achsen-Tiefenversatz von der Zieloberfläche fest. - + Set the sampling resolution. Smaller values quickly increase processing time. Setzt die Auflösung der Abtastrate. Kleinere Werte erhöhen schnell die Bearbeitungszeit. @@ -1854,8 +1854,8 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Auf Wahr setzen, wenn ein Startpunkt angegeben werden soll - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Optimierung linearer Pfade aktivieren (kolineare Punkte). Entfernt unnötige kolineare Punkte aus G-Code-Ausgabe. @@ -1890,28 +1890,28 @@ Letzteres kann zur Deckung der gesamten Lagerfläche verwendet werden, um für d Tiefenversatz - + Step over Einen Schritt weiter - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. Der Betrag, um den das Werkzeug bei jedem Zyklus des Musters seitlich verschoben wird, angegeben in Prozent des Werkzeugdurchmessers. Ein Versatz von 100 % führt zu keiner Überlappung zwischen zwei verschiedenen Zyklen. - + Sample interval Messintervall - + Optimize Linear Paths Lineare Pfade optimieren @@ -2059,8 +2059,8 @@ Standard: "3 mm" - Das Werkzeug sollte in diesem Fall auf Verbindungsfahrten imm Ausrichtung - + Type Typ @@ -2090,8 +2090,8 @@ Standard: "3 mm" - Das Werkzeug sollte in diesem Fall auf Verbindungsfahrten imm Gewindegänge pro Zoll (inch) - + Operation Operation @@ -3012,8 +3012,8 @@ Sollten mehrere Werkzeuge oder Werkzeugformen mit dem gleichen Namen in verschie AxisMap Aufbereitung - + Radius Radius @@ -3428,8 +3428,8 @@ Sollten mehrere Werkzeuge oder Werkzeugformen mit dem gleichen Namen in verschie TaskPathSimulator - + Path Simulator Pfad-Simulator @@ -4321,9 +4321,10 @@ Zum Beispiel: Dies nicht mehr anzeigen - + Edit + int = field(default=None) Bearbeiten @@ -4465,8 +4466,8 @@ Zum Beispiel: Der nicht-planare adaptive Start ist ebenfalls nicht verfügbar. - + %s is not a Base Model object of the job %s %s ist kein Basismodell-Objekt des Jobs %s @@ -4486,8 +4487,8 @@ Zum Beispiel: Gesamtes Modell, ausgewählte Fläche(n) oder ausgewählte Kante(n) profilieren - + Choose a Path Job Einen Path-Auftrag auswählen @@ -4591,7 +4592,6 @@ Zum Beispiel: List of custom property groups - int = field(default=None) Liste benutzerdefinierter Eigenschaftsgruppen @@ -4654,12 +4654,12 @@ Zum Beispiel: - - + + The base path to modify Zu ändernder Basispfad @@ -4953,9 +4953,9 @@ Zum Beispiel: Sammlung aller Werkzeugsteuerungen für den Auftrag - + Operations Cycle Time Estimation Abschätzung der Durchlaufzeit @@ -5040,8 +5040,8 @@ Zum Beispiel: Abstand von der Einspannung - + Make False, to prevent operation from generating code Abwählen, damit die Aktion keinen Code generiert @@ -5061,8 +5061,8 @@ Zum Beispiel: Beeinflusst Genauigkeit und Leistung - + Percent of cutter diameter to step over on each pass Prozentsatz des Fräserdurchmessers, der bei jedem Durchgangzugestellt wird @@ -5238,10 +5238,10 @@ Zum Beispiel: Der Startpunkt dieses Pfades - - + + Make True, if specifying a Start Point Auf Wahr setzen, wenn ein Startpunkt angegeben werden soll @@ -5355,9 +5355,9 @@ Zum Beispiel: G99 Rückzug anwenden: Rückzug nur auf RetractHeight zwischen Löchern in dieser Operation + - Additional base objects to be engraved Zusätzliche Basisobjekte, die graviert werden sollen @@ -5398,9 +5398,9 @@ Zum Beispiel: Startradius + - Extra value to stay away from final profile- good for roughing toolpath Aufmaß zum Endprofil - Geeignet für Schruppbearbeitungen @@ -5420,9 +5420,9 @@ Zum Beispiel: Fräsen von erhöhten Bereichen innerhalb der Fläche ausschließen. - - + + Choose how to process multiple Base Geometry features. Wählen Sie, wie mehrere Basisgeometrie Feautures verarbeitet werden sollen. @@ -5443,8 +5443,8 @@ Zum Beispiel: Verarbeite Modell und Rohmaterial in einer Operation, bei der keine Basisgeometrie ausgewählt wurde. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Die Richtung, in der der Werkzeugweg um das Teil herumgeführt werden soll, im Uhrzeigersinn (CW) oder gegen den Uhrzeigersinn (CCW) @@ -5551,8 +5551,8 @@ Zum Beispiel: Aktivieren, falls die Fräsradiuskompensation verwendet wird - + Show the temporary path construction objects when module is in DEBUG mode. Temporäre Wegkonstruktionsobjekte anzeigen, wenn sich das Modul im FEHLERSUCH-Modus befindet. @@ -5568,8 +5568,8 @@ Zum Beispiel: Gib den benutzerdefinierten Endpunkt für die Nut ein. - + Set the geometric clearing pattern to use for the operation. Legen Sie das geometrische Räummuster für die Operation fest. @@ -5585,8 +5585,8 @@ Zum Beispiel: Positiv erweitert das Ende des Pfades, negativ verkürzt ihn. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Die Operation in einem Durchgang der ausgewählten Tiefe durchführen, oder in mehreren Durchgängen bis zur Zieltiefe. @@ -5617,8 +5617,8 @@ Zum Beispiel: Aktivieren, um die Fräsrichtung der Nut umzukehren. - + The custom start point for the path of this operation Der benutzerdefinierte Startpunkt für den Pfad dieser Operation @@ -6132,24 +6132,24 @@ Zum Beispiel: Path_Dressup - + Please select one path object Bitte einen einzelnen Pfad auswählen - + The selected object is not a path Das ausgewählte Objekt ist kein Pfad - + Please select a Path object Bitte wählen Sie ein Pfad-Objekt aus @@ -6306,8 +6306,8 @@ Zum Beispiel: Sondierungspunkedatei wählen - + All Files (*.*) Alle Dateien (*.*) @@ -7038,14 +7038,14 @@ Zum Beispiel: PathProfile - + Outside Außen - + Inside Innen @@ -7602,7 +7602,7 @@ Zum Beispiel: First - First Angle / Europäisch + Erste diff --git a/src/Mod/Path/Gui/Resources/translations/Path_el.ts b/src/Mod/Path/Gui/Resources/translations/Path_el.ts index 19c3ce3db7..7daa42ce28 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_el.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_el.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Προσθήκη - - + + Remove Αφαίρεση @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Επαναφορά - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Ελεγκτής Εργαλείων - - + + Coolant Coolant @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Τύπος Λειτουργίας - + Step Over Percent Βήμα Άνω του Ποσοστού @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Ολοκλήρωση Προφίλ - + Use Outline Χρήση Περιγράμματος @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Διακοπή - + - + Direction Κατεύθυνση @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm χιλιοστά @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Μοτίβο - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Πλαίσιο Οριοθέτησης - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Υπέρθεση - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Προσανατολισμός - + Type Τύπος @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Ακτίνα @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Επεξεργασία @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Όλα τα αρχεία (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_es-AR.ts b/src/Mod/Path/Gui/Resources/translations/Path_es-AR.ts index 0cdf7be32b..cf2f028456 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_es-AR.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_es-AR.ts @@ -713,17 +713,17 @@ Para material a partir de la caja delimitadora del objeto Base, significa el mat Limpia la lista de geometrías base - + Add Agregar - - + + Remove Eliminar @@ -778,8 +778,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Reiniciar - + All objects will be processed using the same operation properties. Todos los objetos serán procesados usando las mismas propiedades de operación. @@ -824,32 +824,32 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Todas las ubicaciones serán procesadas usando las mismas propiedades de operación. - + Start Depth Profundidad de Inicio - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Profundidad de Inicio de la operación. El punto más alto en el eje Z que la operación debe procesar. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transferir el valor Z de la característica seleccionada como la Profundidad de Inicio para la operación. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. La profundidad de la operación que corresponde al valor más bajo del eje Z que la operación debe procesar. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transferir el valor Z de la característica seleccionada como la Profundidad Final de la operación. @@ -864,14 +864,14 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Profundidad del corte final de la operación. Se puede utilizar para producir un acabado más limpio. - + Final Depth Profundidad Final - + Step Down Bajar @@ -911,34 +911,34 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Altura libre + - - - - + + - + + The tool and its settings to be used for this operation. La herramienta y sus ajustes que se usarán para esta operación. - - - - - - - - - - + + + + + + + + + + Coolant Mode Modo Refrigerante @@ -948,28 +948,28 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co G-Code - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Controlador de herramienta - - + + Coolant Refrigerante @@ -989,8 +989,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Tipo de operación - + Step Over Percent Porcentaje de Paso @@ -1040,8 +1040,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Finalizando perfil - + Use Outline Usar Contorno @@ -1096,10 +1096,10 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Parar - + - + Direction Sentido @@ -1109,15 +1109,15 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co La dirección en la que se realiza el perfil, en el sentido de las agujas del reloj o en sentido antihorario. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Junta de inglete - - @@ -1153,6 +1151,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co + + mm mm @@ -1368,11 +1368,11 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Patrón - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Permisividad del Material - + Use Start Point Usar Punto Inicial @@ -1731,9 +1731,9 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Extender Ruta Final + - Layer Mode Modo de Capa @@ -1773,8 +1773,8 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Tipo de Escaneo - + Cut Pattern Patrón de corte @@ -1789,14 +1789,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Evitar Últimas X Caras - + Bounding Box Cuadro Delimitador - + Select the overall boundary for the operation. Seleccione el límite general para la operación. @@ -1806,14 +1806,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Planar: plano, escaneo de superficie 3D. Rotacional: Escaneo rotacional del 4º eje. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Completa la operación en una sola pasada a profundidad, o en múltiples pasadas hasta la profundidad final. - + Set the geometric clearing pattern to use for the operation. Establece el patrón de limpieza geométrica para usar en la operación. @@ -1838,14 +1838,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Las líneas de corte se crean paralelas a este eje. - + Set the Z-axis depth offset from the target surface. Define el desplazamiento de profundidad del eje Z desde la superficie objetivo. - + Set the sampling resolution. Smaller values quickly increase processing time. Establece la resolución de muestreo. Los valores más pequeños aumentan rápidamente el tiempo de procesamiento. @@ -1855,8 +1855,8 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Marcar como verdadero, si se especifica un punto inicial - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Habilitar la optimización de trayectorias lineales (puntos colineales). Elimina puntos colineales innecesarios a partir del código de salida. @@ -1891,14 +1891,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Desplazamiento de profundidad - + Step over Pasar al siguiente - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. Un paso por encima del 100% da como resultado que no haya superposición entre dos ciclos diferentes. - + Sample interval Intervalo de Muestra - + Optimize Linear Paths Optimizar Rutas Lineales @@ -2062,8 +2062,8 @@ Por defecto: 3 mm Orientación - + Type Tipo @@ -2093,8 +2093,8 @@ Por defecto: 3 mm TPI - + Operation Operación @@ -3015,8 +3015,8 @@ Si existen múltiples herramientas o formas de herramientas con el mismo nombre Revestido de EjesMapa - + Radius Radio @@ -3431,8 +3431,8 @@ Si existen múltiples herramientas o formas de herramientas con el mismo nombre TaskPathSimulator - + Path Simulator Simulador de Ruta @@ -4319,9 +4319,10 @@ Por ejemplo: No mostrar más - + Edit + int = field(default=None) Editar @@ -4463,8 +4464,8 @@ Por ejemplo: El inicio adaptativo no-planar tampoco está disponible. - + %s is not a Base Model object of the job %s %s no es un objeto de modelo base del trabajo %s @@ -4484,8 +4485,8 @@ Por ejemplo: Perfilar el modelo completo, la(s) cara(s) seleccionada(s) o el/los borde(s) seleccionado(s) - + Choose a Path Job Elegir una Ruta de Trabajo @@ -4589,7 +4590,6 @@ Por ejemplo: List of custom property groups - int = field(default=None) Lista de grupos de propiedades personalizados @@ -4652,12 +4652,12 @@ Por ejemplo: - - + + The base path to modify La trayectoria base a modificar @@ -4951,9 +4951,9 @@ Por ejemplo: Colección de todos los controladores de herramientas para el trabajo - + Operations Cycle Time Estimation Estimación del tiempo del ciclo de operaciones @@ -5038,8 +5038,8 @@ Por ejemplo: Número de desfase de la fijación - + Make False, to prevent operation from generating code Marcar como falso, para evitar que la operación genere código @@ -5059,8 +5059,8 @@ Por ejemplo: Precisión y rendimiento de influencias - + Percent of cutter diameter to step over on each pass Porcentaje de diámetro de corte a escalar en cada pasada @@ -5236,10 +5236,10 @@ Por ejemplo: Punto de partida de esta trayectoria - - + + Make True, if specifying a Start Point Marcar como verdadero, si se especifica un punto inicial @@ -5353,9 +5353,9 @@ Por ejemplo: Aplicación de retracción G99: retraer el valor de altura de retracción solo entre los agujeros de la operación + - Additional base objects to be engraved Objetos base adicionales para ser grabados @@ -5396,9 +5396,9 @@ Por ejemplo: Radio inicial + - Extra value to stay away from final profile- good for roughing toolpath Valor adicional que lo mantiene alejado del perfil de cierre: bueno para el movimiento de la herramienta de desbaste @@ -5418,9 +5418,9 @@ Por ejemplo: Excluir las zonas de fresado ascendente dentro de la cara. - - + + Choose how to process multiple Base Geometry features. Elija cómo procesar múltiples características de Geometría Base. @@ -5441,8 +5441,8 @@ Por ejemplo: Procese el modelo y el stock en una operación sin geometría base seleccionada. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) La dirección en la que la trayectoria de herramienta debe ir alrededor de la pieza sentido horario (CW) o sentido antihorario (CCW) @@ -5549,8 +5549,8 @@ Por ejemplo: Hacer verdadero, si se utiliza la compensación de radio de corte - + Show the temporary path construction objects when module is in DEBUG mode. Mostrar los objetos temporales de construcción de trayectorias cuando el módulo está en modo DEBUG. @@ -5566,8 +5566,8 @@ Por ejemplo: Introduzca el punto final personalizado para la trayectoria del hueco. - + Set the geometric clearing pattern to use for the operation. Establece el patrón de limpieza geométrica para usar en la operación. @@ -5583,8 +5583,8 @@ Por ejemplo: Un valor positivo extiende el final de la trayectoria, un valor negativo la acorta. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Completa la operación en una sola pasada a profundidad, o en múltiples pasadas hasta la profundidad final. @@ -5615,8 +5615,8 @@ Por ejemplo: Activar para invertir la dirección de corte de la trayectoria de la ranura. - + The custom start point for the path of this operation El punto de inicio personalizado para la trayectoria de esta operación @@ -6131,24 +6131,24 @@ Por ejemplo: Path_Dressup - + Please select one path object Por favor seleccione un objeto de trayectoria - + The selected object is not a path El objeto seleccionado no es una trayectoria - + Please select a Path object Por favor seleccione un objeto de trayectoria @@ -6305,8 +6305,8 @@ Por ejemplo: Seleccionar archivo de punto de sonda - + All Files (*.*) Todos los archivos (*.*) @@ -7037,14 +7037,14 @@ Por ejemplo: PathProfile - + Outside Fuera - + Inside Interior diff --git a/src/Mod/Path/Gui/Resources/translations/Path_es-ES.ts b/src/Mod/Path/Gui/Resources/translations/Path_es-ES.ts index c4aa839507..fff2716ed9 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_es-ES.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_es-ES.ts @@ -713,17 +713,17 @@ Para material a partir de la caja delimitadora del objeto Base, significa el mat Limpia la lista de geometrías base - + Add Añadir - - + + Remove Quitar @@ -778,8 +778,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Reiniciar - + All objects will be processed using the same operation properties. Todos los objetos serán procesados usando las mismas propiedades de operación. @@ -824,32 +824,32 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Todas las ubicaciones serán procesadas usando las mismas propiedades de operación. - + Start Depth Profundidad de Inicio - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Profundidad de Inicio de la operación. El punto más alto en el eje Z que la operación debe procesar. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transferir el valor Z de la característica seleccionada como la Profundidad de Inicio para la operación. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. La profundidad de la operación que corresponde al valor más bajo del eje Z que la operación debe procesar. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transferir el valor Z de la característica seleccionada como la Profundidad Final de la operación. @@ -864,14 +864,14 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Profundidad del corte final de la operación. Se puede utilizar para producir un acabado más limpio. - + Final Depth Profundidad Final - + Step Down Bajar @@ -911,34 +911,34 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Altura libre + - - - - + + - + + The tool and its settings to be used for this operation. La herramienta y sus ajustes que se usarán para esta operación. - - - - - - - - - - + + + + + + + + + + Coolant Mode Modo Refrigerante @@ -948,28 +948,28 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co G-Code - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Controlador de herramienta - - + + Coolant Refrigerante @@ -989,8 +989,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Tipo de operación - + Step Over Percent Porcentaje de Paso @@ -1040,8 +1040,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Finalizando perfil - + Use Outline Usar Contorno @@ -1096,10 +1096,10 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Parar - + - + Direction Dirección @@ -1109,15 +1109,15 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co La dirección en la que se realiza el perfil, en el sentido de las agujas del reloj o en sentido antihorario. + - CW CW - + CCW Sentido antihorario @@ -1142,8 +1142,6 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Junta de inglete - - @@ -1153,6 +1151,8 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co + + mm mm @@ -1368,11 +1368,11 @@ Restablecer elimina todos los elementos actuales de la lista y llena la lista co Patrón - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Permisividad del Material - + Use Start Point Usar Punto Inicial @@ -1731,9 +1731,9 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Extender Ruta Final + - Layer Mode Modo de Capa @@ -1773,8 +1773,8 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Tipo de Escaneo - + Cut Pattern Patrón de corte @@ -1789,14 +1789,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Evitar Últimas X Caras - + Bounding Box Cuadro Delimitador - + Select the overall boundary for the operation. Seleccione el límite general para la operación. @@ -1806,14 +1806,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Planar: plano, escaneo de superficie 3D. Rotacional: Escaneo rotacional del 4º eje. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Completa la operación en una sola pasada a profundidad, o en múltiples pasadas hasta la profundidad final. - + Set the geometric clearing pattern to use for the operation. Establece el patrón de limpieza geométrica para usar en la operación. @@ -1838,14 +1838,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Las líneas de corte se crean paralelas a este eje. - + Set the Z-axis depth offset from the target surface. Define el desplazamiento de profundidad del eje Z desde la superficie objetivo. - + Set the sampling resolution. Smaller values quickly increase processing time. Establece la resolución de muestreo. Los valores más pequeños aumentan rápidamente el tiempo de procesamiento. @@ -1855,8 +1855,8 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Marcar como verdadero, si se especifica un punto inicial - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Habilitar la optimización de trayectorias lineales (puntos colineales). Elimina puntos colineales innecesarios a partir del código de salida. @@ -1891,14 +1891,14 @@ Este último se puede utilizar para hacer frente a todo el área de stock para a Desplazamiento de profundidad - + Step over Pasar al siguiente - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. Un paso por encima del 100% da como resultado que no haya superposición entre dos ciclos diferentes. - + Sample interval Intervalo de Muestra - + Optimize Linear Paths Optimizar Rutas Lineales @@ -2062,8 +2062,8 @@ Por defecto: 3 mm Orientación - + Type Tipo @@ -2093,8 +2093,8 @@ Por defecto: 3 mm TPI - + Operation Operación @@ -3015,8 +3015,8 @@ Si existen múltiples herramientas o formas de herramientas con el mismo nombre Revestido de EjesMapa - + Radius Radio @@ -3431,8 +3431,8 @@ Si existen múltiples herramientas o formas de herramientas con el mismo nombre TaskPathSimulator - + Path Simulator Simulador de Ruta @@ -4319,9 +4319,10 @@ Por ejemplo: No mostrar más - + Edit + int = field(default=None) Editar @@ -4463,8 +4464,8 @@ Por ejemplo: El inicio adaptativo no-planar tampoco está disponible. - + %s is not a Base Model object of the job %s %s no es un objeto de modelo base del trabajo %s @@ -4484,8 +4485,8 @@ Por ejemplo: Perfilar el modelo completo, la(s) cara(s) seleccionada(s) o el/los borde(s) seleccionado(s) - + Choose a Path Job Elegir una Ruta de Trabajo @@ -4589,7 +4590,6 @@ Por ejemplo: List of custom property groups - int = field(default=None) Lista de grupos de propiedades personalizados @@ -4652,12 +4652,12 @@ Por ejemplo: - - + + The base path to modify La trayectoria base a modificar @@ -4951,9 +4951,9 @@ Por ejemplo: Colección de todos los controladores de herramientas para el trabajo - + Operations Cycle Time Estimation Estimación del tiempo del ciclo de operaciones @@ -5038,8 +5038,8 @@ Por ejemplo: Número de desfase de la fijación - + Make False, to prevent operation from generating code Marcar como falso, para evitar que la operación genere código @@ -5059,8 +5059,8 @@ Por ejemplo: Precisión y rendimiento de influencias - + Percent of cutter diameter to step over on each pass Porcentaje de diámetro de corte a escalar en cada pasada @@ -5236,10 +5236,10 @@ Por ejemplo: Punto de partida de esta trayectoria - - + + Make True, if specifying a Start Point Marcar como verdadero, si se especifica un punto inicial @@ -5353,9 +5353,9 @@ Por ejemplo: Aplicación de retracción G99: retraer el valor de altura de retracción solo entre los agujeros de la operación + - Additional base objects to be engraved Objetos base adicionales para ser grabados @@ -5396,9 +5396,9 @@ Por ejemplo: Radio inicial + - Extra value to stay away from final profile- good for roughing toolpath Valor adicional que lo mantiene alejado del perfil de cierre: bueno para el movimiento de la herramienta de desbaste @@ -5418,9 +5418,9 @@ Por ejemplo: Excluir las zonas de fresado ascendente dentro de la cara. - - + + Choose how to process multiple Base Geometry features. Elija cómo procesar múltiples características de Geometría Base. @@ -5441,8 +5441,8 @@ Por ejemplo: Procese el modelo y el stock en una operación sin geometría base seleccionada. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) La dirección en la que la trayectoria de herramienta debe ir alrededor de la pieza sentido horario (CW) o sentido antihorario (CCW) @@ -5549,8 +5549,8 @@ Por ejemplo: Hacer verdadero, si se utiliza la compensación de radio de corte - + Show the temporary path construction objects when module is in DEBUG mode. Mostrar los objetos temporales de construcción de trayectorias cuando el módulo está en modo DEBUG. @@ -5566,8 +5566,8 @@ Por ejemplo: Introduzca el punto final personalizado para la trayectoria del hueco. - + Set the geometric clearing pattern to use for the operation. Establece el patrón de limpieza geométrica para usar en la operación. @@ -5583,8 +5583,8 @@ Por ejemplo: Un valor positivo extiende el final de la trayectoria, un valor negativo la acorta. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Completa la operación en una sola pasada a profundidad, o en múltiples pasadas hasta la profundidad final. @@ -5615,8 +5615,8 @@ Por ejemplo: Activar para invertir la dirección de corte de la trayectoria de la ranura. - + The custom start point for the path of this operation El punto de inicio personalizado para la trayectoria de esta operación @@ -6131,24 +6131,24 @@ Por ejemplo: Path_Dressup - + Please select one path object Por favor seleccione un objeto de trayectoria - + The selected object is not a path El objeto seleccionado no es una trayectoria - + Please select a Path object Por favor seleccione un objeto de trayectoria @@ -6305,8 +6305,8 @@ Por ejemplo: Seleccionar archivo de punto de sonda - + All Files (*.*) Todos los archivos (*.*) @@ -7037,14 +7037,14 @@ Por ejemplo: PathProfile - + Outside Fuera - + Inside Interior diff --git a/src/Mod/Path/Gui/Resources/translations/Path_eu.ts b/src/Mod/Path/Gui/Resources/translations/Path_eu.ts index d5e9b80c78..b95671fa1f 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_eu.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_eu.ts @@ -713,17 +713,17 @@ Oinarri-objektuaren muga-kutxatik eratorritako piezari dagokionez, esan nahi du Oinarri-geometrien zerrenda garbitzen du - + Add Gehitu - - + + Remove Kendu @@ -778,8 +778,8 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Berrezarri - + All objects will be processed using the same operation properties. Objektu guztiak eragiketa-propietate berak erabilita prozesatuko dira. @@ -824,32 +824,32 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Kokapen guztiak eragiketa-propietate berak erabilita prozesatuko dira. - + Start Depth Hasierako sakonera - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Eragiketaren hasierako sakonera. Eragiketak Z ardatzean prozesatu behar duen punturik altuena. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transferitu hautatutako elementuaren Z balioa eragiketaren hasierako sakonerara. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Eragiketaren sakonera, eragiketak Z ardatzean prozesatu behar duen punturik baxuenari dagokiona. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transferitu hautatutako elementuaren Z balioa eragiketaren amaierako sakonerara. @@ -864,14 +864,14 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Eragiketaren azken moztearen sakonera. Amaiera garbiagoa sortzeko erabili daiteke. - + Final Depth Amaierako sakonera - + Step Down Beheratzea @@ -911,34 +911,34 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Altuera librea + - - - - + + - + + The tool and its settings to be used for this operation. Eragiketa honetan erabiliko den tresna eta bere ezarpenak. - - - - - - - - - - + + + + + + + + + + Coolant Mode Hozgarri-modua @@ -948,28 +948,28 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tresna-kontrolagailua - - + + Coolant Hozgarria @@ -989,8 +989,8 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Eragiketa mota - + Step Over Percent Gainditze-ehunekoa @@ -1040,8 +1040,8 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Amaierako profila - + Use Outline Erabili eskema @@ -1096,10 +1096,10 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Gelditu - + - + Direction Norabidea @@ -1109,15 +1109,15 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Profila sortzeko erabiliko den den norabidea, erloju-orratzen noranzkoan edo aurka. + - CW erlojuaren noranzkoan - + CCW erlojuaren noranzkoaren aurka @@ -1142,8 +1142,6 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Elkargune zorrotza - - @@ -1153,6 +1151,8 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E + + mm mm @@ -1368,11 +1368,11 @@ Prozesatuko diren elementuak gehitzeko, hautatu elementua eta sakatu 'Gehitu'. E Eredua - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Material-perdoia - + Use Start Point Erabili hasiera-puntua @@ -1731,9 +1731,9 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Luzatu bidearen amaiera + - Layer Mode Geruza-modua @@ -1773,8 +1773,8 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Eskaneatze mota - + Cut Pattern Mozte-eredua @@ -1789,14 +1789,14 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Saihestu azken X aurpegiak - + Bounding Box Muga-kutxa - + Select the overall boundary for the operation. Hautatu eragiketarako muga orokorra. @@ -1806,14 +1806,14 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Planarra: Laua, 3D gainazal eskaneatzea. Birakaria: 4. ardatzeko eskaneatze birakaria. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Osatu eragiketa pasaldi bakarrean sakoneran, edo pasaldi anitzetan azken sakoneraraino. - + Set the geometric clearing pattern to use for the operation. Ezarri eragiketarako erabiliko den garbitze geometrikoko eredua. @@ -1838,14 +1838,14 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Erortze-ebakigailuaren lerroak ardatz honen paraleloan sortzen dira. - + Set the Z-axis depth offset from the target surface. Ezarri Z ardatzeko sakonera-desplazamendua helburuko gainazaletik. - + Set the sampling resolution. Smaller values quickly increase processing time. Ezarri laginketa-bereizmena. Balio txikiagoak prozesatze-denbora asko handitzen dute. @@ -1855,8 +1855,8 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Markatu 'Egia', hasierako puntu bat adieraziko bada - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Gaitu bide linealen optimizazioa (puntu lerrokideak). Beharrezkoak ez diren puntu lerrokideak kentzen ditu G-code irteeratik. @@ -1891,14 +1891,14 @@ Azken aukera pieza gordinaren area osoaren aurpegirako erabili daiteke, hurrengo Sakoneraren desplazamendua - + Step over Urrats bat aurrera - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. Gainditzea % 100ekoa bada, ez da gainjartzerik egongo zikloen artean. - + Sample interval Lagin-tartea - + Optimize Linear Paths Optimizatu bide linealak @@ -2062,8 +2062,8 @@ Balio lehenetsia: 3 mm Orientazioa - + Type Mota @@ -2093,8 +2093,8 @@ Balio lehenetsia: 3 mm TPI - + Operation Eragiketa @@ -3015,8 +3015,8 @@ Izen bera duten tresna edo tresna-forma anitz badaude direktorio desberdinetan, Ardatz-maparen jantzia - + Radius Erradioa @@ -3431,8 +3431,8 @@ Izen bera duten tresna edo tresna-forma anitz badaude direktorio desberdinetan, TaskPathSimulator - + Path Simulator Bide-simulatzailea @@ -4322,9 +4322,10 @@ For example: Ez erakutsi berriro - + Edit + int = field(default=None) Editatu @@ -4466,8 +4467,8 @@ For example: Hasiera moldakor ez planarra ere ez dago erabilgarri. - + %s is not a Base Model object of the job %s %s ez da oinarri-ereduen objektua %s lanerako @@ -4487,8 +4488,8 @@ For example: Profilatu eredu osoa, aurpegi hautatua(k) edo ertz hautatua(k) - + Choose a Path Job Aukeratu bide-lan bat @@ -4592,7 +4593,6 @@ For example: List of custom property groups - int = field(default=None) Propietate-talde pertsonalizatuen zerrenda @@ -4655,12 +4655,12 @@ For example: - - + + The base path to modify Aldatuko den oinarri-bidea @@ -4954,9 +4954,9 @@ For example: Lanerako tresna-kontrolagailu guztien bilduma - + Operations Cycle Time Estimation Eragiketen ziklo-denboraren kalkulua @@ -5041,8 +5041,8 @@ For example: Finkapen-desplazamenduen kopurua - + Make False, to prevent operation from generating code Markatu 'Faltsua', eragiketak koderik sortu dezan saihestu nahi baduzu @@ -5062,8 +5062,8 @@ For example: Zehaztasunean eta errendimenduan eragina du - + Percent of cutter diameter to step over on each pass Igaroaldi bakoitzean ebakigailu-diametroaren zein ehuneko gainditu behar den @@ -5239,10 +5239,10 @@ For example: Bide honen hasiera-puntua - - + + Make True, if specifying a Start Point Markatu 'Egia', hasierako puntu bat adieraziko bada @@ -5356,9 +5356,9 @@ For example: Aplikatu G99 atzeratzea: eragiketa honetan, zuloen arteko atzeratze-altueraraino soilik atzeratu + - Additional base objects to be engraved Grabatuko diren oinarri-objektu gehigarriak @@ -5399,9 +5399,9 @@ For example: Hasierako erradioa + - Extra value to stay away from final profile- good for roughing toolpath Amaierako profiletik aldentzeko balio gehigarria - ona arbastatzeko tresna-bidearentzako @@ -5421,9 +5421,9 @@ For example: Baztertu aurpegi barruan igotako areak. - - + + Choose how to process multiple Base Geometry features. Aukeratu nola prozesatuko diren oinarri-geometriako elementu anitz. @@ -5444,8 +5444,8 @@ For example: Prozesatu eredua eta pieza oinarri-geometriarik hautatuta ez duen eragiketa batean. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Tresna-bideak piezaren inguruan izan behar duen norabidea: erlojuaren noranzkoan (CW), edo aurka (CCW) @@ -5552,8 +5552,8 @@ For example: Markatu 'Egia', ebakigailuaren erradio-konpentsazioa erabili nahi bada - + Show the temporary path construction objects when module is in DEBUG mode. Erakutsi aldi baterako bide-eraikuntzaren objektuak modulua ARAZKETA moduan dagoenean. @@ -5569,8 +5569,8 @@ For example: Sartu amaiera-puntu pertsonalizatua arteka-biderako. - + Set the geometric clearing pattern to use for the operation. Ezarri eragiketarako erabiliko den garbitze geometrikoko eredua. @@ -5586,8 +5586,8 @@ For example: Balio positiboak bidearen amaiera luzatzen du, negatiboak laburtu egiten du. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Osatu eragiketa pasaldi bakarrean sakoneran, edo pasaldi anitzetan azken sakoneraraino. @@ -5618,8 +5618,8 @@ For example: Gaitu arteka-bidearen mozte-norabidea alderantzikatzea. - + The custom start point for the path of this operation Eragiketa honen bidearen hasiera-puntu pertsonalizatua @@ -6134,24 +6134,24 @@ For example: Path_Dressup - + Please select one path object Hautatu bide-objektu bat - + The selected object is not a path Hautatutako objektua ez da bide bat - + Please select a Path object Hautatu bide-objektu bat @@ -6308,8 +6308,8 @@ For example: Hautatu haztatze-puntuen fitxategia - + All Files (*.*) Fitxategi guztiak (*.*) @@ -7039,14 +7039,14 @@ For example: PathProfile - + Outside Kanpoan - + Inside Barruan diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fi.ts b/src/Mod/Path/Gui/Resources/translations/Path_fi.ts index 93c30b4034..38c93efde9 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_fi.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_fi.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Lisää - - + + Remove Poista @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Palauta - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant Coolant @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Pysäytä - + - + Direction Suunta @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Askella yli - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Suunta - + Type Tyyppi @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Säde @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Muokkaa @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Kaikki tiedostot (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fr.ts b/src/Mod/Path/Gui/Resources/translations/Path_fr.ts index c22a4027a1..98066d3050 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_fr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_fr.ts @@ -713,17 +713,17 @@ Pour le brut provenant de la boîte englobante de l'objet de base, il s'agit du Effacer la liste des géométries de base - + Add Ajouter - - + + Remove Supprimer @@ -778,8 +778,8 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Réinitialiser - + All objects will be processed using the same operation properties. Tous les objets seront traités en utilisant les mêmes propriétés. @@ -824,32 +824,32 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Toutes les positions seront traitées en utilisant les mêmes propriétés d'opération. - + Start Depth Profondeur de départ - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Profondeur de départ de l'opération. Le point le plus élevé de l'axe Z que l'opération doit traiter. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Utiliser la valeur Z de l'élément sélectionné comme profondeur de départ pour l'opération. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. La profondeur de l'opération qui correspond à la valeur la plus basse selon l'axe Z que l'opération doit traiter. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Utiliser la valeur Z de l'élément sélectionné comme profondeur finale pour l'opération. @@ -864,14 +864,14 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Profondeur de la dernière coupe de l'opération. Peut être utilisé pour produire une finition plus propre. - + Final Depth Profondeur finale - + Step Down Pas de descente @@ -911,34 +911,34 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Hauteur de dégagement + - - - - + + - + + The tool and its settings to be used for this operation. L'outil et ses paramètres à utiliser pour cette opération. - - - - - - - - - - + + + + + + + + + + Coolant Mode Mode de refroidissement @@ -948,28 +948,28 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Contrôleur d'outil - - + + Coolant Liquide de refroidissement @@ -989,8 +989,8 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Type d'opération - + Step Over Percent Pourcentage de recouvrement @@ -1040,8 +1040,8 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Profil de finition - + Use Outline Utiliser le contour @@ -1096,10 +1096,10 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Arrêter - + - + Direction Direction @@ -1109,15 +1109,15 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Le sens dans lequel le profil est effectué, sens des aiguilles d'une montre ou sens inverse. + - CW Sens horaire - + CCW dans le sens contraire des aiguilles d'une montre @@ -1142,8 +1142,6 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Joint onglet - - @@ -1153,6 +1151,8 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l + + mm mm @@ -1368,11 +1368,11 @@ Réinitialiser supprime tous les éléments en cours de la liste et remplit la l Motif - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ Ce dernier peut être utilisé pour surfacer l'ensemble de la zone du brut afin Allocation de matériau - + Use Start Point Utiliser le point de départ @@ -1732,9 +1732,9 @@ La direction du décalage est déterminée par le côté de la coupe.Prolonger la fin du parcours + - Layer Mode Mode couche @@ -1774,8 +1774,8 @@ La direction du décalage est déterminée par le côté de la coupe.Type de scan - + Cut Pattern Découpez le motif @@ -1790,14 +1790,14 @@ La direction du décalage est déterminée par le côté de la coupe.Éviter les X dernières faces - + Bounding Box Boîte englobante - + Select the overall boundary for the operation. Sélectionner la limite globale pour l’opération. @@ -1807,14 +1807,14 @@ La direction du décalage est déterminée par le côté de la coupe.Planaire : balayage surfacique plat et 3D. Rotationnel : balayage rotatif sur le 4ème axe. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Terminer l’opération en une seule passe à la profondeur ou en plusieurs passes jusqu’à la profondeur finale. - + Set the geometric clearing pattern to use for the operation. Définir le motif de détourage géométrique à utiliser pour l'opération. @@ -1839,14 +1839,14 @@ La direction du décalage est déterminée par le côté de la coupe.Des lignes de découpe sont créées parallèlement à cet axe. - + Set the Z-axis depth offset from the target surface. Définir le décalage en profondeur de l'axe Z par rapport à la surface cible. - + Set the sampling resolution. Smaller values quickly increase processing time. Définir la résolution d'échantillonnage. Des valeurs plus petites augmentent rapidement le temps de traitement. @@ -1856,8 +1856,8 @@ La direction du décalage est déterminée par le côté de la coupe.Mettre à vrai si l'on spécifie un point de départ - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Activer l'optimisation des parcours linéaires (points colinéaires). Supprime les points colinéaires inutiles de la sortie G-code. @@ -1892,14 +1892,14 @@ La direction du décalage est déterminée par le côté de la coupe.Déport de profondeur - + Step over Passer outre - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1908,14 +1908,14 @@ A step over of 100% results in no overlap between two different cycles. Un recouvrement de 100% n'entraîne aucun chevauchement entre deux cycles différents. - + Sample interval Intervalle d'échantillonnage - + Optimize Linear Paths Optimiser les parcours linéaires @@ -2063,8 +2063,8 @@ Par défaut : 3 mm Orientation - + Type Type @@ -2094,8 +2094,8 @@ Par défaut : 3 mm TPI - + Operation Opération @@ -3015,8 +3015,8 @@ Généralement, il est recommandé d'utiliser des chemins relatifs en raison de Finition de l'assigner de l'axe - + Radius Rayon @@ -3431,8 +3431,8 @@ Généralement, il est recommandé d'utiliser des chemins relatifs en raison de TaskPathSimulator - + Path Simulator Simulateur de parcours @@ -4319,9 +4319,10 @@ Par exemple : Ne plus afficher ceci dorénavant - + Edit + int = field(default=None) Éditer @@ -4463,8 +4464,8 @@ Par exemple : Le démarrage adaptatif non-planaire est également indisponible. - + %s is not a Base Model object of the job %s %s n’est pas un objet Modèle de base de la tâche %s @@ -4484,8 +4485,8 @@ Par exemple : Opération de contournage sur l'intégralité du modèle, d'une/des face(s) sélectionnée(s) ou d'une/des arête(s) sélectionnée(s) - + Choose a Path Job Choisir une tâche Path @@ -4589,7 +4590,6 @@ Par exemple : List of custom property groups - int = field(default=None) Liste des groupes de propriétés personnalisées @@ -4652,12 +4652,12 @@ Par exemple : - - + + The base path to modify Le parcours de base à modifier @@ -4951,9 +4951,9 @@ Par exemple : Liste de tous les contrôleurs d'outils pour la tâche - + Operations Cycle Time Estimation Estimation du temps de cycle des opérations @@ -5038,8 +5038,8 @@ Par exemple : Nombre de décalages des fixations - + Make False, to prevent operation from generating code Mettre à faux pour empêcher l'opération de générer du code @@ -5059,8 +5059,8 @@ Par exemple : Influence sur la précision et les performances - + Percent of cutter diameter to step over on each pass Pourcentage du diamètre de l'outil de coupe à recouvrir à chaque passe @@ -5236,10 +5236,10 @@ Par exemple : Le point de départ de cette trajectoire - - + + Make True, if specifying a Start Point Mettre à vrai si l'on spécifie un point de départ @@ -5353,9 +5353,9 @@ Par exemple : Appliquer la rétraction G99 : ne rétracter que jusqu'à la hauteur de rétraction entre les trous lors de cette opération + - Additional base objects to be engraved Objets de base supplémentaires à graver @@ -5396,9 +5396,9 @@ Par exemple : Rayon de départ + - Extra value to stay away from final profile- good for roughing toolpath Valeur supplémentaire pour rester loin du contour définitif - utile pour les parcours d'ébauche @@ -5418,9 +5418,9 @@ Par exemple : Exclure des zones de fraisage à l'intérieur de la surface. - - + + Choose how to process multiple Base Geometry features. Choisir comment traiter plusieurs fonctions de géométrie de base. @@ -5441,8 +5441,8 @@ Par exemple : Traiter le modèle et le brut dans une opération sans géométrie de base sélectionnée. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Sens du parcours des outils autour de la pièce dans le sens horaire ou le sens anti-horaire @@ -5549,8 +5549,8 @@ Par exemple : Marquer Vrai, si vous utilisez la compensation du rayon de coupe - + Show the temporary path construction objects when module is in DEBUG mode. Afficher les objets de construction des parcours temporaires lorsque le module est en mode DEBUG. @@ -5566,8 +5566,8 @@ Par exemple : Entrez un point de fin personnalisé pour le parcours de la rainure. - + Set the geometric clearing pattern to use for the operation. Définir le motif de détourage géométrique à utiliser pour l'opération. @@ -5583,8 +5583,8 @@ Par exemple : Positif prolonge la fin du parcours, négatif le raccourcit. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Terminer l’opération en une seule passe à la profondeur ou en plusieurs passes jusqu’à la profondeur finale. @@ -5615,8 +5615,8 @@ Par exemple : Activez pour inverser la direction de coupe du parcours de la rainure. - + The custom start point for the path of this operation Le point de départ personnalisé pour le parcours de cette opération @@ -6131,24 +6131,24 @@ Par exemple : Path_Dressup - + Please select one path object Veuillez sélectionner un parcours - + The selected object is not a path L'objet sélectionné n'est pas un chemin - + Please select a Path object Veuillez sélectionner un objet de Path @@ -6305,8 +6305,8 @@ Par exemple : Sélectionner le fichier de points de la sonde - + All Files (*.*) Tous les fichiers (*.*) @@ -7036,14 +7036,14 @@ Les valeurs seront converties dans l'unité souhaitée pendant le post-traitemen PathProfile - + Outside Extérieur - + Inside Intérieur diff --git a/src/Mod/Path/Gui/Resources/translations/Path_gl.ts b/src/Mod/Path/Gui/Resources/translations/Path_gl.ts index 7fb4ec6d5d..323ddbce35 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_gl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_gl.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Engadir - - + + Remove Rexeitar @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Restaurar - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Ferramenta de control - - + + Coolant Coolant @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Parar - + - + Direction Dirección @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Un paso fóra - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Orientación - + Type Tipo @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operación @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Radio @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Editar @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Tódolos ficheiros (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_hr.ts b/src/Mod/Path/Gui/Resources/translations/Path_hr.ts index 0b2cea3e89..54ba204863 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_hr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_hr.ts @@ -715,17 +715,17 @@ Za materijal obrade iz graničnog okvira to znači dodatni materijal u svim smje Izbriši listu osnovnih geometrija - + Add Dodaj - - + + Remove Ukloniti @@ -782,8 +782,8 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Odbaci - + All objects will be processed using the same operation properties. Svi objekti obraditi će se koristeći iste postavke operacija. @@ -828,32 +828,32 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Sve lokacije obraditi će se koristeći iste postavke operacija. - + Start Depth Početna dubina - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Dubina početka operacije. Najviša točka u Z-osi koju operacija treba obraditi. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Prenesite Z vrijednost odabrane značajke kao početnu dubinu operacije. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Dubina operacije koja odgovara najnižoj vrijednosti u Z-osi koju operacija treba obraditi." - + Transfer the Z value of the selected feature as the Final Depth for the operation. Prenesite Z vrijednost odabrane značajke kao konačnu dubinu operacije. @@ -868,14 +868,14 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Dubina finalnog reza operacije. Može se koristiti za stvaranje čistijeg završetka obrade. - + Final Depth Konačna Dubina - + Step Down Korak Dolje @@ -915,34 +915,34 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Visina prohodnosti (izmežu alata i materijala obrade) + - - - - + + - + + The tool and its settings to be used for this operation. Alat i njegove postavke za ovu operaciju. - - - - - - - - - - + + + + + + + + + + Coolant Mode Način rada rashladnog sredstva @@ -952,28 +952,28 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Kontroler Alata - - + + Coolant Rashladno sredstvo @@ -993,8 +993,8 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Vrsta Operacije - + Step Over Percent Postotak preklapanja @@ -1044,8 +1044,8 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Profil završne obrade - + Use Outline Koristi vanjski obris @@ -1100,10 +1100,10 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Stop - + - + Direction Smjer @@ -1113,15 +1113,15 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Smjer u kojem se profil izvodi, u smjeru kazaljke na satu ili suprotno od smjera kazaljke na satu. + - CW u smjeru kazaljke sata - + CCW suprotno smjeru kazaljke sata @@ -1146,8 +1146,6 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Kosa fuga - - @@ -1157,6 +1155,8 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim + + mm mm @@ -1372,11 +1372,11 @@ Resetiranje briše sve trenutne stavke s popisa i popunjava popis svim okruglim Uzorak - - + + The tool and its settings to be used for this operation @@ -1477,9 +1477,9 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Granica prostora rada alata - + Use Start Point Koristi početnu točku @@ -1737,9 +1737,9 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Produži kraj staze + - Layer Mode Mod sloja @@ -1779,8 +1779,8 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Vrsta skeniranja - + Cut Pattern Uzorci rezanja @@ -1795,14 +1795,14 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Izbjegavajte zadnju X plohu - + Bounding Box Granični okvir - + Select the overall boundary for the operation. Odaberite cjelokupnu granicu za operaciju. @@ -1812,14 +1812,14 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Ravan: U ravnini, 3D skeniranje površine. Rotacijsko: rotacijsko skeniranje oko 4-te osi. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Dovršite operaciju u jednom prolazu na dubini ili višestrukim prolazima do krajnje dubine. - + Set the geometric clearing pattern to use for the operation. Postavite geometrijski uzorak čišćenja koji će se koristiti za operaciju. @@ -1844,14 +1844,14 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Linije spuštajućeg (drop-cutter) glodala stvaraju se paralelno s ovom osi. - + Set the Z-axis depth offset from the target surface. Postavite pomak dubine Z-osi od ciljne površine. - + Set the sampling resolution. Smaller values quickly increase processing time. Postavite rezoluciju uzorkovanja. Manje vrijednosti brzo povećavaju vrijeme obrade. @@ -1861,8 +1861,8 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Postavite na Točno, ako specificirate Početnu točku - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Omogućiti optimizaciju linearnih staza (kolinearnih točaka). Uklanja nepotrebne kolinearne točke iz izvoza G-koda. @@ -1900,14 +1900,14 @@ Ovo se može koristiti za obradu cijelog područja obrade kako bi se osigurala u Pomak dubine - + Step over Korak preko - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1916,14 +1916,14 @@ A step over of 100% results in no overlap between two different cycles. Pomak od 100% rezultira bez preklapanja između dva različita ciklusa. - + Sample interval Korak uzorka - + Optimize Linear Paths Optimiraj linearne Staze @@ -2071,8 +2071,8 @@ Zadano: "3mm" Orijentacija - + Type Tip @@ -2102,8 +2102,8 @@ Zadano: "3mm" TPI - + Operation Operacija @@ -3021,8 +3021,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap priprema - + Radius Polumjer @@ -3438,8 +3438,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Simulator putanje @@ -4333,9 +4333,10 @@ Na primjer: Ne prikazuj ovo više - + Edit + int = field(default=None) Uredi @@ -4479,8 +4480,8 @@ Na primjer: Neplanarni prilagodljivi početak također nije dostupan. - + %s is not a Base Model object of the job %s %s nije objekt osnovnog modela zadatka %s @@ -4500,8 +4501,8 @@ Na primjer: Profilirajte cijeli model, odabrana lica ili odabrane rubove - + Choose a Path Job Izaberi posao Staze @@ -4605,7 +4606,6 @@ Na primjer: List of custom property groups - int = field(default=None) Lista grupa prilagođenih svojstava @@ -4673,12 +4673,12 @@ Na primjer: - - + + The base path to modify Osnovna staza za modifikaciju @@ -4973,9 +4973,9 @@ Visina potpornih mostića. Kolekcija svih kontrolera alata za ovaj zadatak - + Operations Cycle Time Estimation Procjena vremena ciklusa @@ -5060,8 +5060,8 @@ Visina potpornih mostića. Broj pomaka pričvršćenja - + Make False, to prevent operation from generating code Postavite na netočno da spriječite operaciju kod generiranja koda. @@ -5081,8 +5081,8 @@ Visina potpornih mostića. Utječe na preciznost i učinkovitost - + Percent of cutter diameter to step over on each pass Postotak promjera glodala koji bi prelazio u svakom prolazu @@ -5260,10 +5260,10 @@ Visina potpornih mostića. Početna točka ove staze - - + + Make True, if specifying a Start Point Postavite na Točno, ako se specificira Početna točka @@ -5379,9 +5379,9 @@ Visina potpornih mostića. Primijenite povlačenje G99: samo povucite do Povlačne visine između rupa u ovoj operaciji + - Additional base objects to be engraved Dodatni osnovni objekti koji trebaju biti gravirani @@ -5422,9 +5422,9 @@ Visina potpornih mostića. Početni Polumjer + - Extra value to stay away from final profile- good for roughing toolpath Dodatna vrijednost za izbjegavanje krajnjeg profila - dobro za putanju alata za grubo obrađivanje @@ -5444,9 +5444,9 @@ Visina potpornih mostića. Isključite glodanje povišenih područja unutar površine. - - + + Choose how to process multiple Base Geometry features. Odaberite način obrade značajki više osnovnih geometrija. @@ -5467,8 +5467,8 @@ Visina potpornih mostića. Obradite model i materijal obrade u operaciji bez odabrane osnovne geometrije. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Smjer kojim staza obrade treba obilaziti dio (u smjeru kazaljke) CW ili (suprotno smjeru kazaljke) CCW @@ -5575,8 +5575,8 @@ Visina potpornih mostića. Postavi na istinito, ako koristite kompenzaciju polumjera glodala - + Show the temporary path construction objects when module is in DEBUG mode. Prikažite privremene objekte za izgradnju staza kada je modul u stanju DEBUG moda. @@ -5592,8 +5592,8 @@ Visina potpornih mostića. Unesite prilagođenu krajnju točku za stazu utora. - + Set the geometric clearing pattern to use for the operation. Postavite geometrijski uzorak čišćenja koji će se koristiti za operaciju. @@ -5609,8 +5609,8 @@ Visina potpornih mostića. Pozitivno produžuje završetak staze, negativno skraćuje. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Dovršite operaciju u jednom prolazu na dubini ili višestrukim prolazima do krajnje dubine. @@ -5645,8 +5645,8 @@ Visina potpornih mostića. Omogućite okretanje smjera glodanja staze utora. - + The custom start point for the path of this operation Prilagođena početna točka za stazu ove operacije @@ -6163,22 +6163,22 @@ Staza koju treba kopirati Path_Dressup - + Please select one path object Odaberite samo jedan objekt staze - + The selected object is not a path Odabrani objekt nije putanja staze - + Please select a Path object Odaberite objekt staze @@ -6335,8 +6335,8 @@ Staza koju treba kopirati Odaberi datoteku mjernih točaka - + All Files (*.*) Sve datoteke (*.*) @@ -7067,14 +7067,14 @@ Razmotrite specificiranje Materijala obrade PathProfile - + Outside Vanjsko - + Inside Unutarnje diff --git a/src/Mod/Path/Gui/Resources/translations/Path_hu.ts b/src/Mod/Path/Gui/Resources/translations/Path_hu.ts index 1e12b0d115..51786b10ee 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_hu.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_hu.ts @@ -711,17 +711,17 @@ Az alaptárgy kötött dobozából származó készlet minden irányban az extra Törli az alapgeometriák listáját - + Add Hozzáad - - + + Remove Törlés @@ -776,8 +776,8 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Alaphelyzetbe állítása - + All objects will be processed using the same operation properties. Az összes tárgy feldolgozása ugyanazzal a művelettulajdonságokkal történik. @@ -822,32 +822,32 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Az összes hely feldolgozása ugyanazokkal a műveleti tulajdonságokkal történik. - + Start Depth Kezdeti mélység - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Kezdeti műveleti mélység. A művelet által feldolgozni szükséges Z-tengely legmagasabb pontja. - + Transfer the Z value of the selected feature as the Start Depth for the operation. A kiválasztott funkció Z értékének átvitele a művelet kezdő mélységeként. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. A művelet mélysége, amely megfelel a művelet által feldolgozni szükséges legalacsonyabb Z-tengely értéknek. - + Transfer the Z value of the selected feature as the Final Depth for the operation. A kiválasztott funkció Z értékének átvitele a művelet végső mélységeként. @@ -862,14 +862,14 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti A művelet végső vágásának mélysége. Használható tisztább felület előállítására. - + Final Depth Végső mélység - + Step Down Visszaléptetés @@ -909,34 +909,34 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Hézagmagasság + - - - - + + - + + The tool and its settings to be used for this operation. A művelethez használandó szerszám és beállításai. - - - - - - - - - - + + + + + + + + + + Coolant Mode Hűtőközeg mód @@ -946,28 +946,28 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti G Kód - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Eszköz vezérlő - - + + Coolant Hűtőfolyadék @@ -987,8 +987,8 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Művelettípus - + Step Over Percent Egy lépéssel tovább százalékban @@ -1038,8 +1038,8 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Profil befejezése - + Use Outline Kontúr használata @@ -1094,10 +1094,10 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Megállít - + - + Direction Irány @@ -1107,15 +1107,15 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti A profil végrehajtásának iránya az óramutató járásával megegyező vagy az óramutató járásával ellentétes irányban. + - CW Órajárás iránya - + CCW Órajárással ellentétes irány @@ -1140,8 +1140,6 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Gérvágás - - @@ -1151,6 +1149,8 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti + + mm mm @@ -1366,11 +1366,11 @@ A Visszaállítás törli az összes aktuális elemet a listából, és kitölti Minta - - + + The tool and its settings to be used for this operation @@ -1469,9 +1469,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Anyag hozzáadása - + Use Start Point Kezdőpont használata @@ -1727,9 +1727,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Útvonal kiterjesztés vége + - Layer Mode Réteg mód @@ -1769,8 +1769,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Szkennelési módszer - + Cut Pattern Vágott minta @@ -1785,14 +1785,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Kerülje az utolsó X felületet - + Bounding Box Határolókeret - + Select the overall boundary for the operation. Jelölje ki a művelet teljes határvonalát. @@ -1802,14 +1802,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Síkbeli: Lapos, 3D felület letapogatás. Forgatás: 4-tengelyes forgató letapogatás. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Fejezze be a műveletet egyetlen lépésben a mélységig, vagy több lépésben a végső mélységig. - + Set the geometric clearing pattern to use for the operation. Állítsa be a művelet geometriai forgácsoló élmintázatát. @@ -1834,14 +1834,14 @@ The latter can be used to face of the entire stock area to ensure uniform height A legördülő vonalak ezzel a tengelyekkel párhuzamosan jönnek létre. - + Set the Z-axis depth offset from the target surface. Állítsa be a Z tengely mély eltolását a célfelületről. - + Set the sampling resolution. Smaller values quickly increase processing time. Állítsa be a mintavételi sebesség felbontását. A kisebb értékek felgyorsítják a feldolgozási időt. @@ -1851,8 +1851,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Állítsa igazra, ha egy kiinduló pontot ad meg - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Megvalósítja az egyenes vonalú pályák (egy vonalba eső pontok) optimalizálását. Eltávolítja a felesleges egy vonalba eső pontokat a generált G-kódból. @@ -1887,14 +1887,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Mélységi eltolás - + Step over Átlép - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1903,14 +1903,14 @@ A step over of 100% results in no overlap between two different cycles. A 100%-os eltolás megakadályozza, hogy két különböző ciklus átfedje egymást. - + Sample interval Mintavételezés - + Optimize Linear Paths Egyenes útvonalak optimalizálása @@ -2056,8 +2056,8 @@ Default: 3 mm Tájolás - + Type Típus @@ -2087,8 +2087,8 @@ Default: 3 mm Menet per coll (inch) - + Operation Művelet @@ -3009,8 +3009,8 @@ Ha több azonos nevű eszköz vagy szerszámforma létezik különböző könyvt AxisMap kivitelezés - + Radius Sugár @@ -3425,8 +3425,8 @@ Ha több azonos nevű eszköz vagy szerszámforma létezik különböző könyvt TaskPathSimulator - + Path Simulator Folyamatszimulátor @@ -4316,9 +4316,10 @@ Például: Ne mutasd többet - + Edit + int = field(default=None) Szerkesztés @@ -4460,8 +4461,8 @@ Például: A nem síkbeli adaptív rendszerindítás szintén nem érhető el. - + %s is not a Base Model object of the job %s %s nem egy alap modell objektuma ennek a feladatnak: %s @@ -4481,8 +4482,8 @@ Például: Használja ki a teljes modellt, jelölje ki a felülete(ke)t vagy a kijelölt él(ek)et - + Choose a Path Job Tevékenység elérési útjának kijelölése @@ -4586,7 +4587,6 @@ Például: List of custom property groups - int = field(default=None) A felhasználó által definiált tárgycsoportok listája @@ -4649,12 +4649,12 @@ Például: - - + + The base path to modify A megváltoztatni kívánt alap pálya útvonal @@ -4948,9 +4948,9 @@ Például: A feladathoz szükséges összes vezérlőeszköz gyűjteménye - + Operations Cycle Time Estimation Műveleti ciklus időbecslése @@ -5035,8 +5035,8 @@ Például: Koordináta rendszer kiválasztása - + Make False, to prevent operation from generating code Állítsa hamisra annak megakadályozására, hogy a művelet, kódot generálhasson @@ -5056,8 +5056,8 @@ Például: Befolyásolja a pontosságot és a teljesítményt - + Percent of cutter diameter to step over on each pass Maró átmérő százaléka mellyel átlép minden elhaladáskor @@ -5233,10 +5233,10 @@ Például: Ennek a szerszámpályának az induló pontja - - + + Make True, if specifying a Start Point Állítsa igazra, ha egy kiinduló pontot ad meg @@ -5350,9 +5350,9 @@ Például: G99 visszahúzás alkalmazása: csak a művelet furatai között húzza vissza a visszahúzási magasság értéket + - Additional base objects to be engraved Kiegészítő alap tárgyakat kell bevésni @@ -5393,9 +5393,9 @@ Például: Kezdő sugár + - Extra value to stay away from final profile- good for roughing toolpath Extra érték ami távol tart a záró profiltól- jó a nagyoló szerszámmozgáshoz @@ -5415,9 +5415,9 @@ Például: Zárja ki a felemelt területek marását a felületen belül. - - + + Choose how to process multiple Base Geometry features. Válassza ki, hogyan kezeljen több alapgeometriai függvényt. @@ -5438,8 +5438,8 @@ Például: A modell és a primitív folyamat olyan műveletben, amely nem választja ki az alapgeometria beállítását. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) A szerszámmozgás az alkatrész körül leírt iránya az óramutató járásával megegyező (CW) vagy az óramutató járásával ellentétes irányú (CCW) @@ -5546,8 +5546,8 @@ Például: Állítsa igazra, ha sugár vágó kompenzációt alkalmaz - + Show the temporary path construction objects when module is in DEBUG mode. Az ideiglenes építőtárgyak megjelenítésének útvonala, ha a modul DEBUG módban van. @@ -5563,8 +5563,8 @@ Például: Adja meg a horony egyéni végpontját. - + Set the geometric clearing pattern to use for the operation. Állítsa be a művelet geometriai forgácsoló élmintázatát. @@ -5580,8 +5580,8 @@ Például: A pozitív kiterjeszti az elérési út végét, a negatív megrövidíti. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Fejezze be a műveletet egyetlen lépésben a mélységig, vagy több lépésben a végső mélységig. @@ -5612,8 +5612,8 @@ Például: Aktiválás a horony vágási irányának megfordításához. - + The custom start point for the path of this operation A művelet röppályájának egyéni kezdőpontja @@ -6128,24 +6128,24 @@ Például: Path_Dressup - + Please select one path object Jelöljön ki egy pálya tárgyat - + The selected object is not a path A kijelölt tárgy nem pálya útvonal - + Please select a Path object Kérem válasszon egy pályaútvonal tárgyat @@ -6302,8 +6302,8 @@ Például: Mérési pontfájl kiválasztása - + All Files (*.*) Összes fájl (*.*) @@ -7034,14 +7034,14 @@ Például: PathProfile - + Outside Külső - + Inside Belső diff --git a/src/Mod/Path/Gui/Resources/translations/Path_id.ts b/src/Mod/Path/Gui/Resources/translations/Path_id.ts index 9326da88a9..71c700cf71 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_id.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_id.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Menambahkan - - + + Remove Menghapus @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Setel ulang - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant Coolant @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Berhenti - + - + Direction Arah @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Langkah selesai - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Orientasi - + Type Jenis @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Jari-jari @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Edit @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) All Files (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_it.ts b/src/Mod/Path/Gui/Resources/translations/Path_it.ts index 10dfb1a470..07c2546d24 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_it.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_it.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Cancella l'elenco delle geometrie di base - + Add Aggiungi - - + + Remove Rimuovi @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Ripristina - + All objects will be processed using the same operation properties. Tutti gli oggetti saranno elaborati utilizzando le stesse proprietà operative. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul Tutte le posizioni saranno elaborate utilizzando le stesse proprietà operative. - + Start Depth Profondità Iniziale - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Profondità del taglio finale dell'operazione. Può essere utilizzato per ottenere una finitura più pulita. - + Final Depth Profondità Finale - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Altezza libera + - - - - + + - + + The tool and its settings to be used for this operation. Lo strumento e le sue impostazioni da utilizzare per questa operazione. - - - - - - - - - - + + + + + + + + + + Coolant Mode Modalità refrigerante @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Controllore Strumento - - + + Coolant Refrigerante @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Tipo Operazione - + Step Over Percent Percentuale di sovrapposizione @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Profilo di finitura - + Use Outline Usa contorno @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Ferma - + - + Direction Direzione @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul La direzione in cui il profilo viene eseguita, in senso orario o antiorario. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1269,7 +1269,7 @@ Reset deletes all current items from the list and fills the list with all circul Step over percent - Step over percent + Percentuale di sovrapposizione @@ -1365,14 +1365,14 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - Pattern + Motivo - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Usa Punto Iniziale @@ -1731,11 +1731,11 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode - Layer Mode + Modalità Livello @@ -1770,18 +1770,18 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - Scan Type + Tipo di scansione - + Cut Pattern Cut Pattern Profile Edges - Profile Edges + Bordi del profilo @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box - Bounding Box + Riquadro di delimitazione - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,21 +1806,21 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. Profile the edges of the selection. - Profile the edges of the selection. + Profila i bordi della selezione. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Passo successivo - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Orientamento - + Type Tipo @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operazione @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Raggio @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Simulatore di Percorso @@ -4324,9 +4324,10 @@ Per esempio: Non Mostrare Più - + Edit + int = field(default=None) Modifica @@ -4468,8 +4469,8 @@ Per esempio: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ Per esempio: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Scegli un Percorso di Lavorazione @@ -4594,7 +4595,6 @@ Per esempio: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ Per esempio: - - + + The base path to modify Il percorso di base da modificare @@ -4956,9 +4956,9 @@ Per esempio: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ Per esempio: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ Per esempio: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ Per esempio: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ Per esempio: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ Per esempio: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ Per esempio: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ Per esempio: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ Per esempio: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ Per esempio: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ Per esempio: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ Per esempio: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ Per esempio: Path_Dressup - + Please select one path object Selezionare un percorso oggetto - + The selected object is not a path L'oggetto selezionato non è un percorso - + Please select a Path object Seleziona un oggetto Percorso @@ -6310,8 +6310,8 @@ Per esempio: Select Probe Point File - + All Files (*.*) Tutti i File (*.*) @@ -6970,7 +6970,7 @@ Per esempio: Round - Round + Arrotondato @@ -7042,14 +7042,14 @@ Per esempio: PathProfile - + Outside Esterno - + Inside Interno @@ -7076,7 +7076,7 @@ Per esempio: Round - Round + Arrotondato diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ja.ts b/src/Mod/Path/Gui/Resources/translations/Path_ja.ts index 17efe5859a..0d160d8895 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ja.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ja.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add 追加 - - + + Remove 削除 @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul リセット - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant 冷却剤 @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul 停止 - + - + Direction 方向 @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over ステップ オーバー - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm 向き - + Type タイプ @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation オペレーション @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius 半径 @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) 編集 @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) すべてのファイル (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ka.ts b/src/Mod/Path/Gui/Resources/translations/Path_ka.ts index 4a67814328..9ecc75cfdf 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ka.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ka.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all ასუფთავებს საბაზისო გეომეტრიების სიას - + Add დამატება - - + + Remove წაშლა @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul განულება - + All objects will be processed using the same operation properties. ყველა ობიექტი ოპერაციის იგივე თვისებების გამოყენებით დამუშავდება. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul ყველა მდებარეობა ოპერაციის იგივე თვისებების გამოყენებით დამუშავდება. - + Start Depth საწყისი სიღრმე - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. ოპერაციის საწყისი სიღრმე. Z-ღერძის უმაღლესი წერტილი, რომელიც ამ ოპერაციამ უნდა დაამუშაოს. - + Transfer the Z value of the selected feature as the Start Depth for the operation. მონიშნული თვისების Z მნიშვნელობის ოპერაციის StartDepth-ად გამოყენება. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. მონიშნული თვისების Z მნიშვნელობის ოპერაციის საბოლოო სიღრმედ გამოყენება. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth საბოლოო სიღრმე - + Step Down ბიჯი ქვემოთ @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul გაბარიტული სიმაღლე + - - - - + + - + + The tool and its settings to be used for this operation. ხელსაწყო და ამ ოპერაციაში გამოყენებული მისი პარამეტრები. - - - - - - - - - - + + + + + + + + + + Coolant Mode გამაგრილებლის რეჟიმი @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller ხელსაწყოს კონტროლერი - - + + Coolant გამაგრილებელი @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul ოპერაციის ტიპი - + Step Over Percent მიწოდების ბიჯის პროცენტულობა @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul დამასრულებელი პროფილი - + Use Outline კიდის გამოყენება @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul შეჩერება - + - + Direction მიმართულება @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul მიმართულება, რომლითაც პროფილი შესრულდება. საათის, თუ საათის საწინააღმდეგო მიმართულებით. + - CW სმ - + CCW სსს @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul ირიბპირა შეერთება - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm მმ @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul შაბლონი - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height მასალის დასაშვებობა - + Use Start Point სასტარტო წერტილის გამოყენება @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height ტრაექტორიის ბოლოს დაგრძელება + - Layer Mode ფენის რეჟიმი @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height სკანირების ტიპი - + Cut Pattern ნიმუშის ამოჭრა @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height ბოლო X ზედაპირების თავიდან აცილება - + Bounding Box შემზღუდავი ოთხკუთხედი - + Select the overall boundary for the operation. აირჩიეთ ოპერაციის საერთო საზღვარი. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. ოპერაციის სიღრმეზე ერთი გავლის დასრულება. ან აირჩიეთ მრავალი გავლა, სრული სიღრმის მისაღწევად. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height ფრეზირების ხაზები ამ ღერძის პარალელურად შეიქმნება. - + Set the Z-axis depth offset from the target surface. სამიზნე ზედაპირიდან Z-ღერძის სიღრმის წანაცვლების დაყენება. - + Set the sampling resolution. Smaller values quickly increase processing time. დააყენეთ სამპლინგის გაფართოება. მცირე მნიშვნელობები სწრაფად ზრდიან დამუშავების დროს. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height ჩართვა, თუ საწყისი წერტილი მითითებულია - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height სიღრმის წანაცვლება - + Step over გადაბიჯება - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval სინჯის ინტერვალი - + Optimize Linear Paths ხაზოვანი ტრაექტორიების ოპტიმიზაცია @@ -2062,8 +2062,8 @@ Default: 3 mm ორიენტაცია - + Type ტიპი @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation ოპერაცია @@ -3014,8 +3014,8 @@ Should multiple tools or tool shapes with the same name exist in different direc ღერძების რუკის ზღუდარი - + Radius რადიუსი @@ -3430,8 +3430,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator ტრაექტორიის სიმულატორი @@ -4322,9 +4322,10 @@ CNC ჩარხებს მიწოდების სიჩქარის აღარ მაჩვენო - + Edit + int = field(default=None) ჩასწორება @@ -4466,8 +4467,8 @@ CNC ჩარხებს მიწოდების სიჩქარის არაბრტყელი ადაპტიური სტარტიც ხელმიუწვდომელია. - + %s is not a Base Model object of the job %s %s დავალებისთვის %s ძირითადი მოდელის ობექტს არ წარმოადგენს @@ -4487,8 +4488,8 @@ CNC ჩარხებს მიწოდების სიჩქარის Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job აირჩიეთ ტრაექტორიის დავალება @@ -4592,7 +4593,6 @@ CNC ჩარხებს მიწოდების სიჩქარის List of custom property groups - int = field(default=None) ხელით მითითებული თვისების ჯგუფების სია @@ -4655,12 +4655,12 @@ CNC ჩარხებს მიწოდების სიჩქარის - - + + The base path to modify ჩასასწორებელი საბაზისო ტრაექტორია @@ -4954,9 +4954,9 @@ CNC ჩარხებს მიწოდების სიჩქარის დავალების ყველა ხელსაწყოს კონტროლერის კოლექცია - + Operations Cycle Time Estimation ოპერაციის ციკლის დროს შეფასება @@ -5041,8 +5041,8 @@ CNC ჩარხებს მიწოდების სიჩქარის სამაგრის წანაცვლების ნომერი - + Make False, to prevent operation from generating code გამორთეთ ოპერაციისთვის კოდის გენერაციის ხელის შესაშლელად @@ -5062,8 +5062,8 @@ CNC ჩარხებს მიწოდების სიჩქარის გავლენა აქვს სიზუსტეზე და წარმადობაზე - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5239,10 +5239,10 @@ CNC ჩარხებს მიწოდების სიჩქარის ამ ტრაექტორიის საწყისი წერტილი - - + + Make True, if specifying a Start Point ჩართვა, თუ საწყისი წერტილი მითითებულია @@ -5356,9 +5356,9 @@ CNC ჩარხებს მიწოდების სიჩქარის Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved დამატებით ამოსატვიფრი ძირითადი ობიექტები @@ -5399,9 +5399,9 @@ CNC ჩარხებს მიწოდების სიჩქარის საწყისი რადიუსი + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5421,9 +5421,9 @@ CNC ჩარხებს მიწოდების სიჩქარის მითითებულ ზედაპირთან შედარებით აწეული ადგილების ღარვის გამორიცხვა. - - + + Choose how to process multiple Base Geometry features. აირჩიეთ, როგორ დამუშავდება მრავალი ძირითადი გეომეტრიის მქონე თვისებები. @@ -5444,8 +5444,8 @@ CNC ჩარხებს მიწოდების სიჩქარის Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) ხელსაწყოს მჭრელი იარაღის მიმართულება საათის(ს. მ.) ან საათის საწინააღმდეგო (ს. ს. მ.) მიმართულებით მოძრაობა @@ -5552,8 +5552,8 @@ CNC ჩარხებს მიწოდების სიჩქარის ჩართეთ, თუ იყენებთ ხელსაწყოს რადიუსის კომპენსაციას - + Show the temporary path construction objects when module is in DEBUG mode. მოდულის გამართვის რეჟიმში ყოფნის დროს დროებითი ტრაექტორიის კონსტრუქციული ობიექტების ჩვენება. @@ -5569,8 +5569,8 @@ CNC ჩარხებს მიწოდების სიჩქარის შეიყვანეთ სლოტის ტრაექტორიის სასურველი ბოლო წერტილი. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5586,8 +5586,8 @@ CNC ჩარხებს მიწოდების სიჩქარის დადებითი მნიშვნელობა დააგრძელებს ტრაექტორიის ბოლოს, უარყოფითი კი დაამოკლებს. - + Complete the operation in a single pass at depth, or multiple passes to final depth. ოპერაციის სიღრმეზე ერთი გავლის დასრულება. ან აირჩიეთ მრავალი გავლა, სრული სიღრმის მისაღწევად. @@ -5618,8 +5618,8 @@ CNC ჩარხებს მიწოდების სიჩქარის Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation ამ ოპერაციის ტრაექტორიის საწყისი ხელით მითითებული წერტილი @@ -6134,24 +6134,24 @@ CNC ჩარხებს მიწოდების სიჩქარის Path_Dressup - + Please select one path object გთხოვთ აირჩიოთ ერთი ტრაექტორიის ობიექტი - + The selected object is not a path მონიშნული ობიექტი ტრაექტორია არაა - + Please select a Path object აირჩიეთ ტრაექტორიის ობიექტი @@ -6308,8 +6308,8 @@ CNC ჩარხებს მიწოდების სიჩქარის არჩიეთ ზონდის წერტილის ფაილი - + All Files (*.*) ყველა ფაილი (*.*) @@ -7040,14 +7040,14 @@ CNC ჩარხებს მიწოდების სიჩქარის PathProfile - + Outside გარედან - + Inside შიგნიდან diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ko.ts b/src/Mod/Path/Gui/Resources/translations/Path_ko.ts index 785c82eb7d..1af33d0f3c 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ko.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ko.ts @@ -705,17 +705,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add 추가하기 - - + + Remove 제거 @@ -770,8 +770,8 @@ Reset deletes all current items from the list and fills the list with all circul 재설정 - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -816,32 +816,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -856,14 +856,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -903,34 +903,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -940,28 +940,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant Coolant @@ -981,8 +981,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1032,8 +1032,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1088,10 +1088,10 @@ Reset deletes all current items from the list and fills the list with all circul 중지 - + - + Direction 방향 @@ -1101,15 +1101,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW 시계방향 - + CCW CCW @@ -1134,8 +1134,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1145,6 +1143,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1360,11 +1360,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1465,9 +1465,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1723,9 +1723,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1765,8 +1765,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1781,14 +1781,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1798,14 +1798,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1830,14 +1830,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1847,8 +1847,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1883,14 +1883,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over 한 단계 진행 - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1899,14 +1899,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2054,8 +2054,8 @@ Default: 3 mm Orientation - + Type 유형 @@ -2085,8 +2085,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3007,8 +3007,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Radius @@ -3423,8 +3423,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4316,9 +4316,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) 편집 @@ -4460,8 +4461,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4481,8 +4482,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4586,7 +4587,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4649,12 +4649,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4948,9 +4948,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5035,8 +5035,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5056,8 +5056,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5233,10 +5233,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5350,9 +5350,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5393,9 +5393,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5415,9 +5415,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5438,8 +5438,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5546,8 +5546,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5563,8 +5563,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5580,8 +5580,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5612,8 +5612,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6128,24 +6128,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6302,8 +6302,8 @@ For example: Select Probe Point File - + All Files (*.*) All Files (*.*) @@ -7034,14 +7034,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_nl.ts b/src/Mod/Path/Gui/Resources/translations/Path_nl.ts index dd24d123c2..e767333de6 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_nl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_nl.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Toevoegen - - + + Remove Verwijderen @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Herstel - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Gereedschapsregelaar - - + + Coolant Koelvloeistof @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Profiel voltooien - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Stop - + - + Direction Richting @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW Rechtsom - + CCW Linksom @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Patroon - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Gebruik startpunt @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scantype - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Stap over - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Oriëntatie - + Type Type @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Bewerking @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Radius @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Laat dit niet meer zien - + Edit + int = field(default=None) Bewerken @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: Het beginpunt van dit pad - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Startstraal + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Alle bestanden (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Buiten - + Inside Binnen diff --git a/src/Mod/Path/Gui/Resources/translations/Path_pl.ts b/src/Mod/Path/Gui/Resources/translations/Path_pl.ts index a9775a8877..f4d369738d 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_pl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_pl.ts @@ -717,17 +717,17 @@ Dla półfabrykatu materiału podstawowego z ramki otaczającej oznacza to pół Czyści listę geometrii bazowych - + Add Dodaj - - + + Remove Usuń @@ -782,8 +782,8 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Resetuj - + All objects will be processed using the same operation properties. Wszystkie obiekty będą przetwarzane przy użyciu tych samych właściwości operacji. @@ -828,32 +828,32 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Wszystkie miejsca będą przetwarzane przy użyciu tych samych właściwości operacji. - + Start Depth Głębokość początkowa - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Zacznij operację od Głębokości. Najwyższy punkt w osi Z, który ma zostać przetworzony. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Przenieś wartość Z wybranej cechy jako początkową głębokość dla tej operacji - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Głębokość operacji, która odpowiada najniższej wartości w osi Z, którą operacja musi przetwarzać. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Przenieś wartość Z wybranej cechy jako końcową głębokość operacji @@ -868,14 +868,14 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Głębokość operacji zakończenia obróbki. Może być użyta do uzyskania czystszego wykończenia. - + Final Depth Głębokość końcowa - + Step Down Krok w dół @@ -915,34 +915,34 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Odstęp bezpieczeństwa + - - - - + + - + + The tool and its settings to be used for this operation. Narzędzie i jego ustawienia, które będą używane do tej operacji. - - - - - - - - - - + + + + + + + + + + Coolant Mode Tryb chłodzenia @@ -952,28 +952,28 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Kontroler narzędzi - - + + Coolant Chłodziwo @@ -993,8 +993,8 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Typ operacji - + Step Over Percent Procent szerokości skrawania @@ -1044,8 +1044,8 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Wykończ profil - + Use Outline Użyj konturu @@ -1100,10 +1100,10 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Zatrzymaj - + - + Direction Kierunek @@ -1113,15 +1113,15 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Kierunek, w którym wykonywany jest profil, zgodnie z ruchem wskazówek zegara lub w kierunku przeciwnym do ruchu wskazówek zegara. + - CW Zgodnie ze wskazówkami zegara - + CCW Przeciwnie do ruchu wskazówek zegara @@ -1146,8 +1146,6 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Połączenie ukośne - - @@ -1157,6 +1155,8 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr + + mm mm @@ -1372,11 +1372,11 @@ Zresetuje wszystkie bieżące elementy z listy i wypełnia listę wszystkimi okr Wzór - - + + The tool and its settings to be used for this operation @@ -1477,9 +1477,9 @@ Ta druga opcja może być użyta do planowania całego obszaru półfabrykatu, a Dodatek materiału - + Use Start Point Użyj punktu początkowego @@ -1735,9 +1735,9 @@ Ta druga opcja może być użyta do planowania całego obszaru półfabrykatu, a Końcowy zakres ścieżki + - Layer Mode Tryb warstw @@ -1777,8 +1777,8 @@ Ta druga opcja może być użyta do planowania całego obszaru półfabrykatu, a Metoda skanowania - + Cut Pattern Wzór obróbki @@ -1793,14 +1793,14 @@ Ta druga opcja może być użyta do planowania całego obszaru półfabrykatu, a Unikaj ostatnich X ścian - + Bounding Box Ramka otaczająca - + Select the overall boundary for the operation. Wybierz ogólną granicę dla operacji. @@ -1811,14 +1811,14 @@ Ta druga opcja może być użyta do planowania całego obszaru półfabrykatu, a Obrotowy: Skanowanie obrotowe w 4 osiach. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Wykonaj operację w jednym przejściu na określoną głębokość lub w kilku przejściach do głębokości końcowej. - + Set the geometric clearing pattern to use for the operation. Ustaw geometryczny wzorzec oczyszczenia, który ma być używany podczas operacji. @@ -1843,14 +1843,14 @@ Obrotowy: Skanowanie obrotowe w 4 osiach. Linie frezowania wgłębnego tworzone są równoległe do tej osi. - + Set the Z-axis depth offset from the target surface. Ustaw przesunięcie głębokości osi Z od powierzchni docelowej. - + Set the sampling resolution. Smaller values quickly increase processing time. Ustaw rozdzielczość próbkowania. Im mniejsza wartość, tym dłuższy czas przetwarzania. @@ -1860,8 +1860,8 @@ Obrotowy: Skanowanie obrotowe w 4 osiach. Ustaw "Prawda", jeśli określono punkt początkowy - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Włącz optymalizację ścieżek liniowych (punktów współliniowych). Usuwa niepotrzebne punkty współliniowe z wygenerowanego G-Code. @@ -1896,14 +1896,14 @@ Obrotowy: Skanowanie obrotowe w 4 osiach. Głębokość przesunięcia - + Step over Szerokość skrawania - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1912,14 +1912,14 @@ A step over of 100% results in no overlap between two different cycles. Szerokość skrawania 100% powoduje, że dwa różne cykle nie nakładają się na siebie. - + Sample interval Odstęp między próbkami - + Optimize Linear Paths Optymalizuj ścieżki liniowe @@ -2067,8 +2067,8 @@ Domyślnie: 3 mm Orientacja - + Type Typ @@ -2098,8 +2098,8 @@ Domyślnie: 3 mm TPI - + Operation Operacja @@ -3023,8 +3023,8 @@ Should multiple tools or tool shapes with the same name exist in different direc Wykończenie odwzorowania osi - + Radius Promień @@ -3439,8 +3439,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Symulator obróbki @@ -4325,9 +4325,10 @@ Na przykład: Nie wyświetlaj tego więcej - + Edit + int = field(default=None) Edytuj @@ -4469,8 +4470,8 @@ Na przykład: Nie jest również dostępny nieplanarny start adaptacyjny. - + %s is not a Base Model object of the job %s %s nie jest obiektem modelu podstawowego zadania %s @@ -4490,8 +4491,8 @@ Na przykład: Profiluj cały model, wybrane ściany lub wybrane krawędzie - + Choose a Path Job Wybierz ścieżkę zadania @@ -4595,7 +4596,6 @@ Na przykład: List of custom property groups - int = field(default=None) Lista grup właściwości niestandardowych @@ -4658,12 +4658,12 @@ Na przykład: - - + + The base path to modify Ścieżka bazowa do modyfikacji @@ -4957,9 +4957,9 @@ Na przykład: Zbiór wszystkich kontrolerów narzędzi do pracy - + Operations Cycle Time Estimation Szacunkowy czas trwania cyklu operacji @@ -5044,8 +5044,8 @@ Na przykład: Numer przesunięcia urządzenia - + Make False, to prevent operation from generating code Zaznacz "Fałsz”, jeśli chcesz uniemożliwić operacji generowanie jakiegokolwiek kodu @@ -5065,8 +5065,8 @@ Na przykład: Wpływa na dokładność i wydajność - + Percent of cutter diameter to step over on each pass Procent średnicy freza do szerokości skrawania przy każdym przejściu @@ -5242,10 +5242,10 @@ Na przykład: Punkt początkowy tej ścieżki - - + + Make True, if specifying a Start Point Upewnij się, że określasz punkt początkowy @@ -5359,9 +5359,9 @@ Na przykład: Zastosuj wycofanie G99: w tej operacji wycofuj tylko do wysokości "WysokośćWycofania" pomiędzy otworami + - Additional base objects to be engraved Dodatkowe obiekty podstawowe do grawerowania @@ -5402,9 +5402,9 @@ Na przykład: Promień początkowy + - Extra value to stay away from final profile- good for roughing toolpath Dodatkową wartość odległości od profilu końcowego odpowiednia do obróbki zgrubnej @@ -5424,9 +5424,9 @@ Na przykład: Wyklucz frezowanie podwyższonych obszarów wewnątrz powierzchni czołowej. - - + + Choose how to process multiple Base Geometry features. Wybierz sposób przetwarzania wielu elementów geometrii podstawowej. @@ -5447,8 +5447,8 @@ Na przykład: Przetwarzaj model i półfabrykat w elemencie bez wybranej geometrii bazowej. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Kierunek, w którym narzędzie porusza się po ścieżce wokół części, zgodnie (CW) lub przeciwnie (CCW) do ruchu wskazówek zegara @@ -5555,8 +5555,8 @@ Na przykład: Ustaw wartość Prawda, jeśli używasz kompensacji promienia frezu - + Show the temporary path construction objects when module is in DEBUG mode. Pokaż tymczasowe obiekty konstrukcyjne ścieżki, gdy moduł jest w trybie DEBUGOWANIA. @@ -5572,8 +5572,8 @@ Na przykład: Wprowadź przykładowy punkt końcowy dla ścieżki rowka. - + Set the geometric clearing pattern to use for the operation. Ustaw geometryczny wzorzec oczyszczenia, który ma być używany podczas operacji. @@ -5589,8 +5589,8 @@ Na przykład: Wartość dodatnia przedłuża koniec ścieżki, wartość ujemna skraca go. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Wykonaj operację w jednym przejściu na głębokość lub w kilku przejściach do głębokości końcowej. @@ -5621,8 +5621,8 @@ Na przykład: Włącz, aby odwrócić kierunek skrawania ścieżki rowka. - + The custom start point for the path of this operation Niestandardowy punkt początkowy dla ścieżki tej operacji @@ -6140,24 +6140,24 @@ OL Dropcutter* lub Eksperymentalny (nieoparty na OCL). Path_Dressup - + Please select one path object Proszę wybrać jeden obiekt ścieżki - + The selected object is not a path Wybrany obiekt nie jest ścieżką - + Please select a Path object Proszę wybrać obiekt ścieżki @@ -6314,8 +6314,8 @@ OL Dropcutter* lub Eksperymentalny (nieoparty na OCL). Wybierz plik punktów pomiarowych - + All Files (*.*) Wszystkie pliki (*.*) @@ -7046,14 +7046,14 @@ Starsze narzędzia nie są obsługiwane przez funkcję Bezpieczeństwo CAM PathProfile - + Outside Na zewnątrz - + Inside Wewnątrz diff --git a/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.ts b/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.ts index 2c83a4b3ed..2cde3af3d5 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Adicionar - - + + Remove Remover @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Restaurar - + All objects will be processed using the same operation properties. Todos os objetos serão processados usando as mesmas propriedades da operação. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul Todas as localizações serão processadas usando as mesmas propriedades de operação. - + Start Depth Profundidade inicial - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Profundidade final - + Step Down Passo Abaixo @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Altura livre + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Modo de resfriamento @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Code - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Controlador de ferramenta - - + + Coolant Líquido de refrigeração @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Tipo de operação - + Step Over Percent Porcentagem de sobreposição @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Perfil de acabamento - + Use Outline Usar contorno @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Parar - + - + Direction Direção @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW Sentido Horário - + CCW Sentido Anti-horário @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Padrão - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Usar ponto inicial @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Modo de Camadas @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Tipo de escaneamento - + Cut Pattern Padrão de Corte @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Evitar Últimas X Faces - + Bounding Box Caixa delimitadora - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Deslocamento da profundidade - + Step over Avançar - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Intervalo de amostragem - + Optimize Linear Paths Otimizar caminhos lineares @@ -2062,8 +2062,8 @@ Default: 3 mm Orientação - + Type Tipo @@ -2093,8 +2093,8 @@ Default: 3 mm TPP - + Operation Operação @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Raio @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Editar @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Escolha uma tarefa de trajetória @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Mostra os objetos temporários de construção de trajetória quando o módulo está no modo DEBUG. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Todos os arquivos (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Lado de Fora - + Inside Lado de Dentro diff --git a/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.ts b/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.ts index 3601bee94f..6e6a2bf707 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Adicionar - - + + Remove Remover @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Reiniciar - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Controlador de Ferramenta - - + + Coolant Refrigerante @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Parar - + - + Direction Direção @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Ignorar - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Padrão: 3 mm Orientação - + Type Tipo @@ -2093,8 +2093,8 @@ Padrão: 3 mm TPI - + Operation Operação @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Raio @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Editar @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Todos os Ficheiros (*. *) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ro.ts b/src/Mod/Path/Gui/Resources/translations/Path_ro.ts index 5d6653f4fa..ce3aa00221 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ro.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ro.ts @@ -716,17 +716,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Adaugă - - + + Remove Elimină @@ -781,8 +781,8 @@ Reset deletes all current items from the list and fills the list with all circul Reinițializare - + All objects will be processed using the same operation properties. Toate obiectele vor fi procesate folosind aceleași proprietăți. @@ -827,32 +827,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -867,14 +867,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -914,34 +914,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Mod Coolant @@ -951,28 +951,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Controler sculă - - + + Coolant Coolant @@ -992,8 +992,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1043,8 +1043,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1099,10 +1099,10 @@ Reset deletes all current items from the list and fills the list with all circul Stop - + - + Direction Direcţia @@ -1112,15 +1112,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1145,8 +1145,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1156,6 +1154,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1371,11 +1371,11 @@ Reset deletes all current items from the list and fills the list with all circul Model - - + + The tool and its settings to be used for this operation @@ -1476,9 +1476,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Permis material - + Use Start Point Folosește punctul de pornire @@ -1734,9 +1734,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1776,8 +1776,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1792,14 +1792,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Casetă de încadrare - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1809,14 +1809,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1841,14 +1841,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1858,8 +1858,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Activează optimizarea căilor liniare (puncte co-liniare). Elimină puncte co-liniare inutile de la ieșirea prin codul G. @@ -1894,14 +1894,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Deplasare adâncime - + Step over A ieși din - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1910,14 +1910,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Intervalul de eșantionare - + Optimize Linear Paths Optimizare căi liniare @@ -2065,8 +2065,8 @@ Default: 3 mm Orientarea - + Type Tip @@ -2096,8 +2096,8 @@ Default: 3 mm TPI - + Operation Operațiune @@ -3018,8 +3018,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Raza @@ -3434,8 +3434,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4327,9 +4327,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Editare @@ -4471,8 +4472,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4492,8 +4493,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Alege o lucrare de traiectorie @@ -4597,7 +4598,6 @@ For example: List of custom property groups - int = field(default=None) Lista grupurilor de proprietăți personalizate @@ -4660,12 +4660,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4959,9 +4959,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5046,8 +5046,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5067,8 +5067,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5244,10 +5244,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5361,9 +5361,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5404,9 +5404,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5426,9 +5426,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5449,8 +5449,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5557,8 +5557,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5574,8 +5574,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5591,8 +5591,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5623,8 +5623,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6139,24 +6139,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6313,8 +6313,8 @@ For example: Select Probe Point File - + All Files (*.*) Toate fișierele (*.*) @@ -7045,14 +7045,14 @@ For example: PathProfile - + Outside În afara - + Inside În interior diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ru.ts b/src/Mod/Path/Gui/Resources/translations/Path_ru.ts index b46bc4fb46..d2e573a64f 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ru.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ru.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Очищает список базовых геометрий - + Add Добавить - - + + Remove Убрать @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Сбросить - + All objects will be processed using the same operation properties. Все объекты будут обработаны с использованием одинаковых свойств операции. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul Все места будут обработаны с использованием одинаковых операционных свойств. - + Start Depth Начальная глубина - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Начальная глубина операции. Самая высокая точка по оси Z, которую необходимо обработать. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Передайте значение Z выбранного объекта в качестве начальной глубины операции. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Глубина операции, которая соответствует наименьшему значению по оси Z, которое необходимо обработать операции. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Передайте значение Z выбранного объекта в качестве конечной глубины операции. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Глубина окончательного разреза операции. Может использоваться для получения более чистой отделки. - + Final Depth Конечная глубина - + Step Down Шаг вниз @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Высота зазора + - - - - + + - + + The tool and its settings to be used for this operation. Инструмент и его настройки, которые будут использоваться для этой операции. - - - - - - - - - - + + + + + + + + + + Coolant Mode Режим охлаждения @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Code - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Контроллер инструмента - - + + Coolant Охлаждающая жидкость @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Тип операции - + Step Over Percent Процент шага(подачи) @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Отделочное (чистовое) профилирование - + Use Outline Использовать контур @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Остановить - + - + Direction Направление @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul Направление, в котором выполняется профиль, по часовой или против часовой стрелки. + - CW По часовой - + CCW Против часовой стрелки @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Угловое соединение - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm мм @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Шаблон - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Допуск материала - + Use Start Point Использовать начальную точку @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Завершение траектории + - Layer Mode Режим слоя @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Тип сканирования - + Cut Pattern Вырезать шаблон @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Избегать последних X фасок - + Bounding Box Габариты - + Select the overall boundary for the operation. Выберите общую границу операции. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Планарное: плоское, трехмерной сканирование поверхности. Вращательное: 4-осное вращательное сканирование. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Завершите операцию за один проход на глубину или за несколько проходов до конечной глубины. - + Set the geometric clearing pattern to use for the operation. Установить шаблон геометрической очистки (чистовой обработки) для использования в операции. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Линии отреза создаются параллельно этой оси. - + Set the Z-axis depth offset from the target surface. Установите смещение глубины по оси Z от целевой поверхности. - + Set the sampling resolution. Smaller values quickly increase processing time. Установите разрешение выборки. Меньшие значения быстро увеличивают время обработки. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Установить в Истину если указывается начальная точка - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Включить оптимизацию линейных путей (коллинеарных точек). Удаляет ненужные коллинеарные точки из вывода G-кода. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Смещение Глубины - + Step over Шаг с обходом - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. Шаг свыше 100% приводит к отсутствию перекрытия между двумя разными циклами. - + Sample interval Пример интервала - + Optimize Linear Paths Оптимизация Линейных путей @@ -2058,8 +2058,8 @@ Default: 3 mm Ориентация - + Type Тип @@ -2089,8 +2089,8 @@ Default: 3 mm Шаг на дюйм - + Operation Операция @@ -3009,8 +3009,8 @@ Should multiple tools or tool shapes with the same name exist in different direc Использовать маппинг осей - + Radius Радиус @@ -3425,8 +3425,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Симулятор пути @@ -4314,9 +4314,10 @@ For example: Больше не показывать - + Edit + int = field(default=None) Редактировать @@ -4458,8 +4459,8 @@ For example: Непланарный адаптивный пуск также недоступен. - + %s is not a Base Model object of the job %s %s не является базовым объектом для задания %s @@ -4479,8 +4480,8 @@ For example: Обработать всю модель, выбранные грани или выбранные края - + Choose a Path Job Выбрать задание Path (траектория обработки детали) @@ -4584,7 +4585,6 @@ For example: List of custom property groups - int = field(default=None) Список групп пользовательских свойств @@ -4647,12 +4647,12 @@ For example: - - + + The base path to modify Базовый путь для модификации @@ -4946,9 +4946,9 @@ For example: Коллекция всех контроллеров инструментов для обработки - + Operations Cycle Time Estimation Оценка времени цикла операций @@ -5033,8 +5033,8 @@ For example: Номер отступа крепления - + Make False, to prevent operation from generating code Установите значение в False, чтобы предотвратить генерацию G-кода для операции @@ -5054,8 +5054,8 @@ For example: Влияет на точность и производительность - + Percent of cutter diameter to step over on each pass Процент диаметра фрезы, который необходимо преодолеть при каждом проходе @@ -5231,10 +5231,10 @@ For example: Начальная точка этой траектории - - + + Make True, if specifying a Start Point Установить в Истину, если указывается начальная точка @@ -5348,9 +5348,9 @@ For example: Применение отвода G99: отвод только на высоту отвода между отверстиями в этой операции + - Additional base objects to be engraved Дополнительные базовые объекты для гравировки @@ -5391,9 +5391,9 @@ For example: Радиус начала + - Extra value to stay away from final profile- good for roughing toolpath Дополнительное расстояние на котором нужно оставаться от финального профиля - хорош для черновых обработок @@ -5413,9 +5413,9 @@ For example: Исключить фрезеровку частей детали, приподнятых относительно выбранной поверхности. - - + + Choose how to process multiple Base Geometry features. Выберите способ обработки нескольких элементов базовой геометрии. @@ -5436,8 +5436,8 @@ For example: Обработать модель и заготовку без учета ранее заданных припусков, размеров заготовки. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Направление, в котором траектория должна проходить вокруг детали по часовой стрелке (по часовой стрелке) или против часовой стрелки (против часовой стрелки) @@ -5544,8 +5544,8 @@ For example: Установить в Истину, если используется компенсация радиуса инструмента - + Show the temporary path construction objects when module is in DEBUG mode. Показать объекты построения временного пути обработки, когда модуль находится в режиме DEBUG. @@ -5561,8 +5561,8 @@ For example: Задать конечную точку для траектории паза. - + Set the geometric clearing pattern to use for the operation. Установить шаблон геометрической очистки (чистовой обработки) для использования в операции. @@ -5578,8 +5578,8 @@ For example: Положительные расширяют конец траектории, отрицательные сокращают. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Завершите операцию за один проход на глубину или за несколько проходов до конечной глубины. @@ -5610,8 +5610,8 @@ For example: Включить обратное направление пути выреза паза. - + The custom start point for the path of this operation Пользовательская начальная точка пути этой операции @@ -6126,24 +6126,24 @@ For example: Path_Dressup - + Please select one path object Пожалуйста выберете один объект пути - + The selected object is not a path Выделенный объект не является траекторией обработки - + Please select a Path object Пожалуйста выберите траекторию @@ -6300,8 +6300,8 @@ For example: Выберите файл точки измерения - + All Files (*.*) Все файлы (*.*) @@ -7032,14 +7032,14 @@ For example: PathProfile - + Outside Снаружи - + Inside Внутри diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sl.ts b/src/Mod/Path/Gui/Resources/translations/Path_sl.ts index 98a4474e21..c9c99b3861 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sl.ts @@ -713,17 +713,17 @@ Pri surovcih z očrtnim kvadrom izhodiščnega predmeta to pomeni dodaten materi Počisti seznam izhodiščnih geometrij - + Add Dodaj - - + + Remove Odstrani @@ -778,8 +778,8 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Ponastavi - + All objects will be processed using the same operation properties. Vsi predmeti bodo obdelani z dejanji, ki imajo enake lastnosti. @@ -824,32 +824,32 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Vsa mesta bodo obdelana z dejanji, ki imajo enake lastnosti. - + Start Depth Začetna globina - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Začetna globina dejanja. Najvišja točka na osi Z, ki jo mora dejanje obdelati. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Prenesi vrednost Z izbrane značilnosti kot začetno globino dejanja. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. Globina dejanja, ki odgovarja najnižji vrednosti na osi Z in jo mora dejanje obdelati. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Prenesi vrednost Z izbrane značilnosti kot končno globino dejanja. @@ -864,14 +864,14 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Globina zadnjega reza dejanja. Služi lahko doseganju gladkejše zaključne obdelave. - + Final Depth Končna globina - + Step Down Poglobitveni korak @@ -911,34 +911,34 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Prosta višina + - - - - + + - + + The tool and its settings to be used for this operation. Orodje in njegove nastavitve za to dejanje. - - - - - - - - - - + + + + + + + + + + Coolant Mode Hladilni način @@ -948,28 +948,28 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi G-koda - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Orodni krmilnik - - + + Coolant Hladilo @@ -989,8 +989,8 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Vrsta dejanja - + Step Over Percent Odstotek zmika @@ -1040,8 +1040,8 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Dokončevalni oris - + Use Outline Uporabi obris @@ -1096,10 +1096,10 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Ustavi - + - + Direction Smer @@ -1109,15 +1109,15 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Smer izvajanje orisa; v smeri urinega kazalca ali v nasprotni smeri urinega kazalca. + - CW SUK, v smeri urinega kazalca - + CCW NSUK, v nasprotni smeri urinega kazalca @@ -1142,8 +1142,6 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Spoj na zajero - - @@ -1153,6 +1151,8 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi + + mm mm @@ -1368,11 +1368,11 @@ Ponastavitev izbriše vse trenutne predmete s seznama in izpolni seznam z vsemi Vzorec - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Napuščeno gradivo - + Use Start Point Uporabi začetno točko @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Podaljšanje konca poti + - Layer Mode Plastni način @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Vrsta odčitavanja - + Cut Pattern Rezkalni vzorec @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Izogibanje zadnjim X ploskvam - + Bounding Box Očrtni kvader - + Select the overall boundary for the operation. Izberite skupno mejo za dejanje. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Ravninsko: Plosko, 3D odčitavanje površja. Sukajoče: optično prebiranje z vrtenjem okrog 4. osi. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Končaj dejanje v enem prehodu na globini ali postopno z večkratnim prehodom do končne globine. - + Set the geometric clearing pattern to use for the operation. Določi za opravilo geometrični vzorec čiščenja. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Poteze spustnega rezkanja bodo vzporedne tej osi. - + Set the Z-axis depth offset from the target surface. Določite globinski odmik od tarčnega povšja po osi Z. - + Set the sampling resolution. Smaller values quickly increase processing time. Določite ločlivost vzorčenja. Z manjšanjem vrednosti se hitro povečuje obdelovalni čas. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Mastavite na Resnično, za določanje začetne točke - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Omogoči optimiranje premih poti (sopreme točke). Odstrani iz izvoza G-Code nepotrebne sopreme točke. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Zamik globine - + Step over Zmik - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. Več kot stoodstotni zmik pomeni, da se pri ponovitvi vzorec ne prekriva. - + Sample interval Vzorčni korak - + Optimize Linear Paths Optimiraj preme poti @@ -2061,8 +2061,8 @@ Privzeto: 3 mm Usmerjenost - + Type Vrsta @@ -2092,8 +2092,8 @@ Privzeto: 3 mm NNP - + Operation Dejanje @@ -3014,8 +3014,8 @@ Navadno se priporoča uporabo odnosnih poti zaradi njihove prilagodljivosti in n Dodelava PreslikavaOsi - + Radius Polmer @@ -3430,8 +3430,8 @@ Navadno se priporoča uporabo odnosnih poti zaradi njihove prilagodljivosti in n TaskPathSimulator - + Path Simulator Priustvarjalnik poti @@ -4322,9 +4322,10 @@ For example: Ne prikazuj več tega - + Edit + int = field(default=None) Uredi @@ -4466,8 +4467,8 @@ For example: Tudi neravninsko prilagodljiv začetek ni na voljo. - + %s is not a Base Model object of the job %s %s ni osnovno modelni predmet opravila %s @@ -4487,8 +4488,8 @@ For example: Oriši celoten oblikovanec, izbrane ploskve ali izbrane robove - + Choose a Path Job Izberite opravilo poti @@ -4592,7 +4593,6 @@ For example: List of custom property groups - int = field(default=None) Seznam lastnostnih skupin po meri @@ -4655,12 +4655,12 @@ For example: - - + + The base path to modify Osnovna pot za spreminjanje @@ -4954,9 +4954,9 @@ For example: Nabor vseh orodnih krmilnikov za opravilo - + Operations Cycle Time Estimation Ocena časa cikla dejanja @@ -5041,8 +5041,8 @@ For example: Število odmika pritrdila - + Make False, to prevent operation from generating code Spremeni v Napak, da se opravilu prepreči ustvarjanje kode @@ -5062,8 +5062,8 @@ For example: Vpliva na natančnost in učinkovitost - + Percent of cutter diameter to step over on each pass Zmik pri vsakem prehodu, izražen v deležu premera rezalnika @@ -5239,10 +5239,10 @@ For example: Začetna točka te poti - - + + Make True, if specifying a Start Point Mastavite na Resnično za določanje začetne točke @@ -5356,9 +5356,9 @@ For example: Uveljavi vračanje G99: vračanje na višino vračanje med izvrtinami le v tem dejanju + - Additional base objects to be engraved Dodatni osnovni predmet, ki naj bo vrezan @@ -5399,9 +5399,9 @@ For example: Začetni polmer + - Extra value to stay away from final profile- good for roughing toolpath Dodatna vrednost za izogibanje končnemu profilu - primerno za pot orodja grobe obdelave @@ -5421,9 +5421,9 @@ For example: Izvzemi rezkanje dvignjenih površin znotraj ploskve. - - + + Choose how to process multiple Base Geometry features. Izberite, kako naj se obdeluje značilnosti več osnovnih geometrij. @@ -5444,8 +5444,8 @@ For example: Obdelaj obdelovanec in surovec z dejanjem brez izbrane izhodiščne geometrije. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) Smer, po kateri naj gre pot orodja okoli dela v SUK (smeri urinega kazalca) ali NSUK (nasprotni smeri urinega kazalca) @@ -5552,8 +5552,8 @@ For example: Nastavi na Prav, če se uporablja Popravek polmera rezkarja - + Show the temporary path construction objects when module is in DEBUG mode. Ko je modul v razhroščevalnem načinu, prikaži pomožni predmet za ustvarjanje poti. @@ -5569,8 +5569,8 @@ For example: Vnesite lastno končno točko utorove poti. - + Set the geometric clearing pattern to use for the operation. Določi za dejanje geometrični vzorec čiščenja. @@ -5586,8 +5586,8 @@ For example: Pozitivno podaljša konec poti, negativno pa ga skrajša. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Končaj dejanje v enem prehodu na globini ali postopno z večkratnim prehodom do končne globine. @@ -5618,8 +5618,8 @@ For example: Omogočite, če želite obrniti smer rezkanja utorove poti. - + The custom start point for the path of this operation Uporabniko določena začetna točka poti tega dejanja @@ -6134,24 +6134,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6308,8 +6308,8 @@ For example: Select Probe Point File - + All Files (*.*) Vse datoteke (*.*) @@ -7040,14 +7040,14 @@ For example: PathProfile - + Outside Zunaj - + Inside Znotraj diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sr-CS.ts b/src/Mod/Path/Gui/Resources/translations/Path_sr-CS.ts index 293283c30b..2990769b93 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sr-CS.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sr-CS.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Dodaj - - + + Remove Ukloni @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Resetuj - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Kod - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant Rashladna tečnost @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Zaustavi - + - + Direction Pravac @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW SKS - + CCW SSKS @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Spoj pod 45 stepeni - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Step over - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Orijentacija - + Type Vrsta @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Poluprečnik @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Simulator putanje @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Uredi @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Sve Datoteke (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sr.ts b/src/Mod/Path/Gui/Resources/translations/Path_sr.ts index 4b0716154f..1a0ce1bfb2 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sr.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Додај - - + + Remove Уклони @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Ресетуј - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Код - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant Расхладна течност @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Заустави - + - + Direction Правац @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW СКС - + CCW ССКС @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Спој под 45 степени - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm мм @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Step over - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Оријентација - + Type Врста @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Полупречник @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Симулатор путање @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Уреди @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Све Датотеке (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.ts b/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.ts index 3ea44109ba..0dbb0a3d19 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Lägg till - - + + Remove Ta bort @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Återställ - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant Kylmedel @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Slutför profil - + Use Outline Använd kontur @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Stopp - + - + Direction Riktning @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Mönster - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Använd startpunkt @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Lagerläge @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Klipp ut mönster @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Stega förbi - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Orientering - + Type Typ @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Radie @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Visa inte detta längre - + Edit + int = field(default=None) Redigera @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Alla filer (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Utanför - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_tr.ts b/src/Mod/Path/Gui/Resources/translations/Path_tr.ts index ccde145876..8ed27d30a2 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_tr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_tr.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Ekle - - + + Remove Kaldır @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Sıfırla - + All objects will be processed using the same operation properties. Tüm nesneler aynı işlem özellikleri kullanılarak işlenecektir. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul Tüm konumlar aynı işlem özellikleri kullanılarak işlenecektir. - + Start Depth Başlangıç Derinliği - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Bitiş Derinliği - + Step Down Aşağı Yönde Adım Atınız @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Aralık Yüksekliği + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Soğutucu Modu @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Kodu - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Araç Denetleyicisi - - + + Coolant Soğutma sıvısı @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul İşlem Türü - + Step Over Percent Yüzde üzerinden adımla @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Sonlandırma Profili - + Use Outline Dış Hattı Kullan @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Dur - + - + Direction Yön @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW Saat Yönü - + CCW Saat Yönünün Tersi @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Desen - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Malzemenin Toleransı - + Use Start Point Başlangıç Noktasını Kullan @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height İzin Sonunu Uzatınız + - Layer Mode Katman Kipi @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Tarama Türü - + Cut Pattern Kesme Deseni @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Son X Yüzeylerinden kaçın - + Bounding Box Kapsayan Kutu - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Derinlik sapması - + Step over Üzerinden atla - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Örnekle aralığı - + Optimize Linear Paths Doğrusal Yolları En İyi Hale Getir @@ -2062,8 +2062,8 @@ Default: 3 mm Yönlendirme - + Type Türü @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation İşlem @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc Eksen Eşlemesi Donatımı - + Radius Yarıçap @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator İz Simülatörü @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Düzenle @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Bir İz İşi Seçiniz @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Tüm dosyalar (*. *) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Dışarıda - + Inside İçeride diff --git a/src/Mod/Path/Gui/Resources/translations/Path_uk.ts b/src/Mod/Path/Gui/Resources/translations/Path_uk.ts index 1162e56d23..8fb7d26145 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_uk.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_uk.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Додати - - + + Remove Видалити @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Скинути - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Початкова глибина - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Остаточна глибина - + Step Down Розмір кроку @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Висота перешкод + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Інструмент - - + + Coolant Coolant @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Тип операції - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Стоп - + - + Direction Напрямок @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul Напрямок, в якому виконується профіль, за годинниковою стрілкою або проти годинникової стрілки. + - CW за годинниковою стрілкою - + CCW проти годинникової стрілки @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul З'єднання мітерів - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm мм @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Шаблон - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Використовувати початкову точку @@ -1732,9 +1732,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1774,8 +1774,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1790,14 +1790,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Обмежувальна рамка - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1807,14 +1807,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1839,14 +1839,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1856,8 +1856,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1892,14 +1892,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Крок за кроком - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1908,14 +1908,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2063,8 +2063,8 @@ Default: 3 mm Орієнтація - + Type Тип @@ -2094,8 +2094,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3016,8 +3016,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Радіус @@ -3432,8 +3432,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4325,9 +4325,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Правка @@ -4469,8 +4470,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4490,8 +4491,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4595,7 +4596,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4658,12 +4658,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4957,9 +4957,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5044,8 +5044,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5065,8 +5065,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5242,10 +5242,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5359,9 +5359,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5402,9 +5402,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5424,9 +5424,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5447,8 +5447,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5555,8 +5555,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5572,8 +5572,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5589,8 +5589,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5621,8 +5621,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6137,24 +6137,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6311,8 +6311,8 @@ For example: Select Probe Point File - + All Files (*.*) Всі файли (*.*) @@ -7043,14 +7043,14 @@ For example: PathProfile - + Outside Ззовні - + Inside Всередині diff --git a/src/Mod/Path/Gui/Resources/translations/Path_val-ES.ts b/src/Mod/Path/Gui/Resources/translations/Path_val-ES.ts index 43817aef9f..1c8827ace9 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_val-ES.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_val-ES.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add Afegir - - + + Remove Elimina @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul Reinicialitza - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth Start Depth - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth Final Depth - + Step Down Step Down @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode Coolant Mode @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G Gode - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant Coolant @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent Step Over Percent @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul Para - + - + Direction Direcció @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over Passa al següent - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm Orientació - + Type Tipus @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operació @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius Radi @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator Path Simulator @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) Edita @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) Tots els fitxers (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside Outside - + Inside Inside diff --git a/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.ts b/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.ts index b9c17c1b74..964157d973 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all 清除基础几何图形列表 - + Add 添加 - - + + Remove 删除 @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul 重设 - + All objects will be processed using the same operation properties. 所有对象都将使用相同的加工属性进行处理。 @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul 所有位置都将使用相同的加工属性进行处理。 - + Start Depth 起始深度 - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. 加工的开始深度。加工需要处理的Z轴上的最高点。 - + Transfer the Z value of the selected feature as the Start Depth for the operation. 将选定特征的Z值传递为加工的“开始深度”。 - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. 与加工需要处理的Z轴上的最低值相对应的加工深度。 - + Transfer the Z value of the selected feature as the Final Depth for the operation. 将选定特征的Z值传递为加工的“最终深度”。 @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul 加工的最终切割深度。可用于生产更清洁的表面。 - + Final Depth 完工深度 - + Step Down 步长 @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul 净空高度 + - - - - + + - + + The tool and its settings to be used for this operation. 用于此加工的刀具及其设置。 - - - - - - - - - - + + + + + + + + + + Coolant Mode 冷却液模式 @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G代码 - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller 刀具控制器 - - + + Coolant 冷却液 @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul 加工类型 - + Step Over Percent 步距百分比 @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul 精加工轮廓 - + Use Outline 使用轮廓 @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul 停止 - + - + Direction 方向 @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul 执行轮廓铣的方向,顺时针或逆时针。 + - CW 顺时针 - + CCW 逆时针 @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul 斜接 - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul 模式 - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height 材料余量 - + Use Start Point 使用起点 @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height 扩展刀轨终点 + - Layer Mode 分层模式 @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height 扫描类型 - + Cut Pattern 切割模式 @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height 避开最后X个面 - + Bounding Box 边界框 - + Select the overall boundary for the operation. 选择加工的总体边界。 @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height 平面:平面、三维表面扫描。旋转:4轴旋转扫描。 - + Complete the operation in a single pass at depth, or multiple passes to final depth. 仅一次便实现最终加工深度,或多次递进加工以实现最终深度。 - + Set the geometric clearing pattern to use for the operation. 设置用于加工的几何清除模式。 @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height 创建的Dropcutter线与该轴平行。 - + Set the Z-axis depth offset from the target surface. 设置相对于目标曲面的Z轴深度偏移。 - + Set the sampling resolution. Smaller values quickly increase processing time. 设置采样分辨率。较小的值会迅速增加处理时间。 @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height 如果指定起点,则设为True - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. 启用线性刀轨(共线点)的优化。从G代码输出中删除不必要的共线点。 @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height 深度偏移 - + Step over 步距 - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. 100%的步距导致两个不同循环之间没有重叠。 - + Sample interval 采样间隔 - + Optimize Linear Paths 优化线性刀轨 @@ -2062,8 +2062,8 @@ Default: 3 mm 方向 - + Type 类型 @@ -2093,8 +2093,8 @@ Default: 3 mm TPI(螺纹数/英寸) - + Operation 加工 @@ -3014,8 +3014,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius 半径 @@ -3430,8 +3430,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator 刀轨模拟器 @@ -4322,9 +4322,10 @@ For example: 不再显示 - + Edit + int = field(default=None) 编辑 @@ -4466,8 +4467,8 @@ For example: 非平面自适应启动也不可用。 - + %s is not a Base Model object of the job %s %s不是作业%s的基本模型对象 @@ -4487,8 +4488,8 @@ For example: 对整个模型、选定面或选定边进行轮廓铣 - + Choose a Path Job 选择一个刀轨作业 @@ -4592,7 +4593,6 @@ For example: List of custom property groups - int = field(default=None) 自定义特性组列表 @@ -4655,12 +4655,12 @@ For example: - - + + The base path to modify 要修改的基础刀轨 @@ -4954,9 +4954,9 @@ For example: 作业的所有刀具控制器的集合 - + Operations Cycle Time Estimation 加工周期时间估算 @@ -5041,8 +5041,8 @@ For example: 夹具偏移编号 - + Make False, to prevent operation from generating code 设为False,以防止加工生成代码 @@ -5062,8 +5062,8 @@ For example: 影响准确性和性能 - + Percent of cutter diameter to step over on each pass 每次通过时要跨过的刀具直径百分比 @@ -5239,10 +5239,10 @@ For example: 此刀轨的起点 - - + + Make True, if specifying a Start Point 如果指定起点,则设为True @@ -5356,9 +5356,9 @@ For example: 应用G99回缩:此加工中仅回缩到孔之间的回缩高度 + - Additional base objects to be engraved Additional base objects to be engraved @@ -5399,9 +5399,9 @@ For example: 起始半径 + - Extra value to stay away from final profile- good for roughing toolpath 远离最终轮廓的额外值——有利于粗加工刀具路径 @@ -5421,9 +5421,9 @@ For example: 不包括铣削面内的凸起区域。 - - + + Choose how to process multiple Base Geometry features. 选择如何处理多个基础几何体特征。 @@ -5444,8 +5444,8 @@ For example: 在未选择“基础几何图形”的情况下,在加工中处理模型和毛坯。 - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) 刀具路径围绕零件顺时针(CW)或逆时针(CCW)的方向 @@ -5552,8 +5552,8 @@ For example: 如果使用“刀具半径补偿”,则设为True - + Show the temporary path construction objects when module is in DEBUG mode. 当模块处于DEBUG模式时,显示临时刀轨构造对象。 @@ -5569,8 +5569,8 @@ For example: 输入拉槽刀轨的自定义终点。 - + Set the geometric clearing pattern to use for the operation. 设置用于加工的几何清除模式。 @@ -5586,8 +5586,8 @@ For example: 正值延伸刀轨的终点,负值缩短刀轨的终点。 - + Complete the operation in a single pass at depth, or multiple passes to final depth. 一次完成最终加工深度,或在多次递进加工完成最终深度。 @@ -5618,8 +5618,8 @@ For example: 启用以反转拉槽刀轨的切割方向。 - + The custom start point for the path of this operation 此加工刀轨的自定义起点 @@ -6134,24 +6134,24 @@ For example: Path_Dressup - + Please select one path object 请选择一个刀轨对象 - + The selected object is not a path 所选对象不是一个刀轨 - + Please select a Path object 请选择一个刀轨对象 @@ -6308,8 +6308,8 @@ For example: 选择探测点文件 - + All Files (*.*) 所有文件(*.*) @@ -7039,14 +7039,14 @@ For example: PathProfile - + Outside 外部 - + Inside 内部 diff --git a/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.ts b/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.ts index 50c67c4090..01b167d628 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.ts @@ -713,17 +713,17 @@ For stock from the Base object's bounding box it means the extra material in all Clears list of base geometries - + Add 新增 - - + + Remove 移除 @@ -778,8 +778,8 @@ Reset deletes all current items from the list and fills the list with all circul 重設 - + All objects will be processed using the same operation properties. All objects will be processed using the same operation properties. @@ -824,32 +824,32 @@ Reset deletes all current items from the list and fills the list with all circul All locations will be processed using the same operation properties. - + Start Depth 起始深度 - + Start Depth of the operation. The highest point in Z-axis the operation needs to process. Start Depth of the operation. The highest point in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Start Depth for the operation. Transfer the Z value of the selected feature as the Start Depth for the operation. - + The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. The depth of the operation which corresponds to the lowest value in Z-axis the operation needs to process. - + Transfer the Z value of the selected feature as the Final Depth for the operation. Transfer the Z value of the selected feature as the Final Depth for the operation. @@ -864,14 +864,14 @@ Reset deletes all current items from the list and fills the list with all circul Depth of the final cut of the operation. Can be used to produce a cleaner finish. - + Final Depth 最終深度 - + Step Down 步進深度 @@ -911,34 +911,34 @@ Reset deletes all current items from the list and fills the list with all circul Clearance Height + - - - - + + - + + The tool and its settings to be used for this operation. The tool and its settings to be used for this operation. - - - - - - - - - - + + + + + + + + + + Coolant Mode 冷卻劑模式 @@ -948,28 +948,28 @@ Reset deletes all current items from the list and fills the list with all circul G 碼 - - - - - - - - - - - - - + + + + + + + + + + + + + Tool Controller Tool Controller - - + + Coolant 冷卻劑 @@ -989,8 +989,8 @@ Reset deletes all current items from the list and fills the list with all circul Operation Type - + Step Over Percent 路徑重疊百分比 @@ -1040,8 +1040,8 @@ Reset deletes all current items from the list and fills the list with all circul Finishing Profile - + Use Outline Use Outline @@ -1096,10 +1096,10 @@ Reset deletes all current items from the list and fills the list with all circul 停止 - + - + Direction 方向 @@ -1109,15 +1109,15 @@ Reset deletes all current items from the list and fills the list with all circul The direction in which the profile is performed, clockwise or counterclockwise. + - CW CW - + CCW CCW @@ -1142,8 +1142,6 @@ Reset deletes all current items from the list and fills the list with all circul Miter joint - - @@ -1153,6 +1151,8 @@ Reset deletes all current items from the list and fills the list with all circul + + mm mm @@ -1368,11 +1368,11 @@ Reset deletes all current items from the list and fills the list with all circul Pattern - - + + The tool and its settings to be used for this operation @@ -1473,9 +1473,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Material Allowance - + Use Start Point Use Start Point @@ -1731,9 +1731,9 @@ The latter can be used to face of the entire stock area to ensure uniform height Extend Path End + - Layer Mode Layer Mode @@ -1773,8 +1773,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Scan Type - + Cut Pattern Cut Pattern @@ -1789,14 +1789,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Avoid Last X Faces - + Bounding Box Bounding Box - + Select the overall boundary for the operation. Select the overall boundary for the operation. @@ -1806,14 +1806,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -1838,14 +1838,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Dropcutter lines are created parallel to this axis. - + Set the Z-axis depth offset from the target surface. Set the Z-axis depth offset from the target surface. - + Set the sampling resolution. Smaller values quickly increase processing time. Set the sampling resolution. Smaller values quickly increase processing time. @@ -1855,8 +1855,8 @@ The latter can be used to face of the entire stock area to ensure uniform height Make True, if specifying a Start Point - + Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-code output. @@ -1891,14 +1891,14 @@ The latter can be used to face of the entire stock area to ensure uniform height Depth offset - + Step over 跨越 - + The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter. A step over of 100% results in no overlap between two different cycles. @@ -1907,14 +1907,14 @@ A step over of 100% results in no overlap between two different cycles. A step over of 100% results in no overlap between two different cycles. - + Sample interval Sample interval - + Optimize Linear Paths Optimize Linear Paths @@ -2062,8 +2062,8 @@ Default: 3 mm 定位 - + Type 類型 @@ -2093,8 +2093,8 @@ Default: 3 mm TPI - + Operation Operation @@ -3015,8 +3015,8 @@ Should multiple tools or tool shapes with the same name exist in different direc AxisMap Dressup - + Radius 半徑 @@ -3431,8 +3431,8 @@ Should multiple tools or tool shapes with the same name exist in different direc TaskPathSimulator - + Path Simulator 路徑模擬 @@ -4324,9 +4324,10 @@ For example: Don't Show This Anymore - + Edit + int = field(default=None) 編輯 @@ -4468,8 +4469,8 @@ For example: The non-planar adaptive start is also unavailable. - + %s is not a Base Model object of the job %s %s is not a Base Model object of the job %s @@ -4489,8 +4490,8 @@ For example: Profile entire model, selected face(s) or selected edge(s) - + Choose a Path Job Choose a Path Job @@ -4594,7 +4595,6 @@ For example: List of custom property groups - int = field(default=None) List of custom property groups @@ -4657,12 +4657,12 @@ For example: - - + + The base path to modify The base path to modify @@ -4956,9 +4956,9 @@ For example: Collection of all tool controllers for the job - + Operations Cycle Time Estimation Operations Cycle Time Estimation @@ -5043,8 +5043,8 @@ For example: Fixture Offset Number - + Make False, to prevent operation from generating code Make False, to prevent operation from generating code @@ -5064,8 +5064,8 @@ For example: Influences accuracy and performance - + Percent of cutter diameter to step over on each pass Percent of cutter diameter to step over on each pass @@ -5241,10 +5241,10 @@ For example: The start point of this path - - + + Make True, if specifying a Start Point Make True, if specifying a Start Point @@ -5358,9 +5358,9 @@ For example: Apply G99 retraction: only retract to RetractHeight between holes in this operation + - Additional base objects to be engraved Additional base objects to be engraved @@ -5401,9 +5401,9 @@ For example: Starting Radius + - Extra value to stay away from final profile- good for roughing toolpath Extra value to stay away from final profile- good for roughing toolpath @@ -5423,9 +5423,9 @@ For example: Exclude milling raised areas inside the face. - - + + Choose how to process multiple Base Geometry features. Choose how to process multiple Base Geometry features. @@ -5446,8 +5446,8 @@ For example: Process the model and stock in an operation with no Base Geometry selected. - + The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) The direction that the toolpath should go around the part ClockWise (CW) or CounterClockWise (CCW) @@ -5554,8 +5554,8 @@ For example: Make True, if using Cutter Radius Compensation - + Show the temporary path construction objects when module is in DEBUG mode. Show the temporary path construction objects when module is in DEBUG mode. @@ -5571,8 +5571,8 @@ For example: Enter custom end point for slot path. - + Set the geometric clearing pattern to use for the operation. Set the geometric clearing pattern to use for the operation. @@ -5588,8 +5588,8 @@ For example: Positive extends the end of the path, negative shortens. - + Complete the operation in a single pass at depth, or multiple passes to final depth. Complete the operation in a single pass at depth, or multiple passes to final depth. @@ -5620,8 +5620,8 @@ For example: Enable to reverse the cut direction of the slot path. - + The custom start point for the path of this operation The custom start point for the path of this operation @@ -6136,24 +6136,24 @@ For example: Path_Dressup - + Please select one path object Please select one path object - + The selected object is not a path The selected object is not a path - + Please select a Path object Please select a Path object @@ -6310,8 +6310,8 @@ For example: Select Probe Point File - + All Files (*.*) 所有檔 (*.*) @@ -7042,14 +7042,14 @@ For example: PathProfile - + Outside 外面 - + Inside 裡面 diff --git a/src/Mod/Path/Path/Op/Gui/Hop.py b/src/Mod/Path/Path/Op/Gui/Hop.py deleted file mode 100644 index 789e728cb1..0000000000 --- a/src/Mod/Path/Path/Op/Gui/Hop.py +++ /dev/null @@ -1,147 +0,0 @@ -# -*- coding: utf-8 -*- -# *************************************************************************** -# * Copyright (c) 2014 Yorik van Havre * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - -import FreeCAD -import FreeCADGui -import Path -from PySide.QtCore import QT_TRANSLATE_NOOP - -__doc__ = """Path Hop object and FreeCAD command""" - -translate = FreeCAD.Qt.translate - - -class ObjectHop: - def __init__(self, obj): - obj.addProperty( - "App::PropertyLink", - "NextObject", - "Path", - QT_TRANSLATE_NOOP("App::Property", "The object to be reached by this hop"), - ) - obj.addProperty( - "App::PropertyDistance", - "HopHeight", - "Path", - QT_TRANSLATE_NOOP("App::Property", "The Z height of the hop"), - ) - obj.Proxy = self - - def dumps(self): - return None - - def loads(self, state): - return None - - def execute(self, obj): - nextpoint = FreeCAD.Vector() - if obj.NextObject: - if obj.NextObject.isDerivedFrom("Path::Feature"): - # look for the first position of the next path - for c in obj.NextObject.Path.Commands: - if c.Name in ["G0", "G00", "G1", "G01", "G2", "G02", "G3", "G03"]: - nextpoint = c.Placement.Base - break - - # absolute coords, millimeters, cancel offsets - output = "G90\nG21\nG40\n" - - # go up to the given height - output += "G0 Z" + str(obj.HopHeight.Value) + "\n" - - # go horizontally to the position of nextpoint - output += "G0 X" + str(nextpoint.x) + " Y" + str(nextpoint.y) + "\n" - - # print output - path = Path.Path(output) - obj.Path = path - - -class ViewProviderPathHop: - def __init__(self, vobj): - self.Object = vobj.Object - vobj.Proxy = self - - def attach(self, vobj): - self.Object = vobj.Object - - def getIcon(self): - return ":/icons/Path_Hop.svg" - - def dumps(self): - return None - - def loads(self, state): - return None - - -class CommandPathHop: - def GetResources(self): - return { - "Pixmap": "Path_Hop", - "MenuText": QT_TRANSLATE_NOOP("Path_Hop", "Hop"), - "ToolTip": QT_TRANSLATE_NOOP("Path_Hop", "Creates a Path Hop object"), - } - - def IsActive(self): - if FreeCAD.ActiveDocument is not None: - for o in FreeCAD.ActiveDocument.Objects: - if o.Name[:3] == "Job": - return True - return False - - def Activated(self): - - # check that the selection contains exactly what we want - selection = FreeCADGui.Selection.getSelection() - if len(selection) != 1: - FreeCAD.Console.PrintError( - translate("Path_Hop", "Please select one path object") + "\n" - ) - return - if not selection[0].isDerivedFrom("Path::Feature"): - FreeCAD.Console.PrintError( - translate("Path_Hop", "The selected object is not a path") + "\n" - ) - return - - FreeCAD.ActiveDocument.openTransaction("Create Hop") - FreeCADGui.addModule("Path.Op.Gui.Hop") - FreeCADGui.addModule("PathScripts.PathUtils") - FreeCADGui.doCommand( - 'obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython","Hop")' - ) - FreeCADGui.doCommand("Path.Op.Gui.Hop.ObjectHop(obj)") - FreeCADGui.doCommand("Path.Op.Gui.Hop.ViewProviderPathHop(obj.ViewObject)") - FreeCADGui.doCommand( - "obj.NextObject = FreeCAD.ActiveDocument." + selection[0].Name - ) - FreeCADGui.doCommand("PathScripts.PathUtils.addToJob(obj)") - FreeCAD.ActiveDocument.commitTransaction() - FreeCAD.ActiveDocument.recompute() - - -if FreeCAD.GuiUp: - # register the FreeCAD command - FreeCADGui.addCommand("Path_Hop", CommandPathHop()) - -FreeCAD.Console.PrintLog("Loading PathHop... done\n") diff --git a/src/Mod/Points/App/AppPointsPy.cpp b/src/Mod/Points/App/AppPointsPy.cpp index c439779e74..3f15ed8665 100644 --- a/src/Mod/Points/App/AppPointsPy.cpp +++ b/src/Mod/Points/App/AppPointsPy.cpp @@ -75,7 +75,7 @@ private: } Py::Object open(const Py::Tuple& args) { - char* Name; + char* Name {}; if (!PyArg_ParseTuple(args.ptr(), "et", "utf-8", &Name)) { throw Py::Exception(); } @@ -196,8 +196,8 @@ private: Py::Object importer(const Py::Tuple& args) { - char* Name; - const char* DocName; + char* Name {}; + const char* DocName {}; if (!PyArg_ParseTuple(args.ptr(), "ets", "utf-8", &Name, &DocName)) { throw Py::Exception(); } @@ -311,8 +311,8 @@ private: Py::Object exporter(const Py::Tuple& args) { - PyObject* object; - char* Name; + PyObject* object {}; + char* Name {}; if (!PyArg_ParseTuple(args.ptr(), "Oet", &object, "utf-8", &Name)) { throw Py::Exception(); @@ -403,7 +403,7 @@ private: Py::Object show(const Py::Tuple& args) { - PyObject* pcObj; + PyObject* pcObj {}; const char* name = "Points"; if (!PyArg_ParseTuple(args.ptr(), "O!|s", &(PointsPy::Type), &pcObj, &name)) { throw Py::Exception(); diff --git a/src/Mod/Points/App/Points.cpp b/src/Mod/Points/App/Points.cpp index 67e9d4bfef..bbfda4a309 100644 --- a/src/Mod/Points/App/Points.cpp +++ b/src/Mod/Points/App/Points.cpp @@ -50,6 +50,11 @@ PointKernel::PointKernel(const PointKernel& pts) , _Points(pts._Points) {} +PointKernel::PointKernel(PointKernel&& pts) noexcept + : _Mtrx(pts._Mtrx) + , _Points(std::move(pts._Points)) +{} + std::vector PointKernel::getElementTypes() const { std::vector temp; @@ -121,13 +126,26 @@ Base::BoundBox3d PointKernel::getBoundBox() const return bnd; } -void PointKernel::operator=(const PointKernel& Kernel) +PointKernel& PointKernel::operator=(const PointKernel& Kernel) { if (this != &Kernel) { // copy the mesh structure setTransform(Kernel._Mtrx); this->_Points = Kernel._Points; } + + return *this; +} + +PointKernel& PointKernel::operator=(PointKernel&& Kernel) noexcept +{ + if (this != &Kernel) { + // copy the mesh structure + setTransform(Kernel._Mtrx); + this->_Points = std::move(Kernel._Points); + } + + return *this; } unsigned int PointKernel::getMemSize() const @@ -204,9 +222,9 @@ void PointKernel::RestoreDocFile(Base::Reader& reader) str >> uCt; _Points.resize(uCt); for (unsigned long i = 0; i < uCt; i++) { - float x; - float y; - float z; + float x {}; + float y {}; + float z {}; str >> x >> y >> z; _Points[i].Set(x, y, z); } @@ -260,11 +278,17 @@ PointKernel::const_point_iterator::const_point_iterator( PointKernel::const_point_iterator::const_point_iterator( const PointKernel::const_point_iterator& fi) = default; +PointKernel::const_point_iterator::const_point_iterator(PointKernel::const_point_iterator&& fi) = + default; + PointKernel::const_point_iterator::~const_point_iterator() = default; PointKernel::const_point_iterator& PointKernel::const_point_iterator::operator=(const PointKernel::const_point_iterator& pi) = default; +PointKernel::const_point_iterator& +PointKernel::const_point_iterator::operator=(PointKernel::const_point_iterator&& pi) = default; + void PointKernel::const_point_iterator::dereference() { value_type vertd(_p_it->x, _p_it->y, _p_it->z); diff --git a/src/Mod/Points/App/Points.h b/src/Mod/Points/App/Points.h index 6f21b76b0a..8ddec22a1e 100644 --- a/src/Mod/Points/App/Points.h +++ b/src/Mod/Points/App/Points.h @@ -58,9 +58,11 @@ public: resize(size); } PointKernel(const PointKernel&); + PointKernel(PointKernel&&) noexcept; ~PointKernel() override = default; - void operator=(const PointKernel&); + PointKernel& operator=(const PointKernel&); + PointKernel& operator=(PointKernel&&) noexcept; /** @name Subelement management */ //@{ @@ -180,13 +182,15 @@ public: const_point_iterator(const PointKernel*, std::vector::const_iterator index); const_point_iterator(const const_point_iterator& pi); + const_point_iterator(const_point_iterator&& pi); ~const_point_iterator(); - const_point_iterator& operator=(const const_point_iterator& fi); + const_point_iterator& operator=(const const_point_iterator& pi); + const_point_iterator& operator=(const_point_iterator&& pi); const value_type& operator*(); const value_type* operator->(); - bool operator==(const const_point_iterator& fi) const; - bool operator!=(const const_point_iterator& fi) const; + bool operator==(const const_point_iterator& pi) const; + bool operator!=(const const_point_iterator& pi) const; const_point_iterator& operator++(); const_point_iterator operator++(int); const_point_iterator& operator--(); diff --git a/src/Mod/Points/App/PointsAlgos.cpp b/src/Mod/Points/App/PointsAlgos.cpp index 491005e633..029e2f3a98 100644 --- a/src/Mod/Points/App/PointsAlgos.cpp +++ b/src/Mod/Points/App/PointsAlgos.cpp @@ -124,11 +124,7 @@ void PointsAlgos::LoadAscii(PointKernel& points, const char* FileName) // ---------------------------------------------------------------------------- -Reader::Reader() -{ - width = 0; - height = 0; -} +Reader::Reader() = default; Reader::~Reader() = default; @@ -201,6 +197,8 @@ AscReader::AscReader() = default; void AscReader::read(const std::string& filename) { points.load(filename.c_str()); + this->height = 1; + this->width = points.size(); } // ---------------------------------------------------------------------------- @@ -253,11 +251,8 @@ class DataStreambuf: public std::streambuf public: explicit DataStreambuf(const std::vector& data) : _buffer(data) - { - _beg = 0; - _end = data.size(); - _cur = 0; - } + , _end(int(data.size())) + {} ~DataStreambuf() override = default; protected: @@ -291,8 +286,9 @@ protected: } pos_type seekoff(std::streambuf::off_type off, std::ios_base::seekdir way, - std::ios_base::openmode = std::ios::in | std::ios::out) override + std::ios_base::openmode mode = std::ios::in | std::ios::out) override { + (void)mode; int p_pos = -1; if (way == std::ios_base::beg) { p_pos = _beg; @@ -331,9 +327,10 @@ public: private: const std::vector& _buffer; - int _beg, _end, _cur; + int _beg {0}, _end {0}, _cur {0}; }; +// NOLINTBEGIN // Taken from https://github.com/PointCloudLibrary/pcl/blob/master/io/src/lzf.cpp unsigned int lzfDecompress(const void* const in_data, unsigned int in_len, void* out_data, unsigned int out_len) @@ -544,14 +541,13 @@ lzfDecompress(const void* const in_data, unsigned int in_len, void* out_data, un return (static_cast(op - static_cast(out_data))); } } // namespace Points +// NOLINTEND PlyReader::PlyReader() = default; void PlyReader::read(const std::string& filename) { clear(); - this->width = 1; - this->height = 0; Base::FileInfo fi(filename); Base::ifstream inp(fi, std::ios::in | std::ios::binary); @@ -561,7 +557,10 @@ void PlyReader::read(const std::string& filename) std::vector types; std::vector sizes; std::size_t offset = 0; - std::size_t numPoints = readHeader(inp, format, offset, fields, types, sizes); + Eigen::Index numPoints = Eigen::Index(readHeader(inp, format, offset, fields, types, sizes)); + + this->width = numPoints; + this->height = 1; Eigen::MatrixXd data(numPoints, fields.size()); if (format == "ascii") { @@ -575,31 +574,31 @@ void PlyReader::read(const std::string& filename) } std::vector::iterator it; - std::size_t max_size = std::numeric_limits::max(); + Eigen::Index max_size = std::numeric_limits::max(); // x field - std::size_t x = max_size; + Eigen::Index x = max_size; it = std::find(fields.begin(), fields.end(), "x"); if (it != fields.end()) { x = std::distance(fields.begin(), it); } // y field - std::size_t y = max_size; + Eigen::Index y = max_size; it = std::find(fields.begin(), fields.end(), "y"); if (it != fields.end()) { y = std::distance(fields.begin(), it); } // z field - std::size_t z = max_size; + Eigen::Index z = max_size; it = std::find(fields.begin(), fields.end(), "z"); if (it != fields.end()) { z = std::distance(fields.begin(), it); } // normal x field - std::size_t normal_x = max_size; + Eigen::Index normal_x = max_size; it = std::find(fields.begin(), fields.end(), "normal_x"); if (it == fields.end()) { it = std::find(fields.begin(), fields.end(), "nx"); @@ -609,7 +608,7 @@ void PlyReader::read(const std::string& filename) } // normal y field - std::size_t normal_y = max_size; + Eigen::Index normal_y = max_size; it = std::find(fields.begin(), fields.end(), "normal_y"); if (it == fields.end()) { it = std::find(fields.begin(), fields.end(), "ny"); @@ -619,7 +618,7 @@ void PlyReader::read(const std::string& filename) } // normal z field - std::size_t normal_z = max_size; + Eigen::Index normal_z = max_size; it = std::find(fields.begin(), fields.end(), "normal_z"); if (it == fields.end()) { it = std::find(fields.begin(), fields.end(), "nz"); @@ -629,14 +628,17 @@ void PlyReader::read(const std::string& filename) } // intensity field - std::size_t greyvalue = max_size; + Eigen::Index greyvalue = max_size; it = std::find(fields.begin(), fields.end(), "intensity"); if (it != fields.end()) { greyvalue = std::distance(fields.begin(), it); } // rgb(a) field - std::size_t red = max_size, green = max_size, blue = max_size, alpha = max_size; + Eigen::Index red = max_size; + Eigen::Index green = max_size; + Eigen::Index blue = max_size; + Eigen::Index alpha = max_size; it = std::find(fields.begin(), fields.end(), "red"); if (it != fields.end()) { red = std::distance(fields.begin(), it); @@ -665,22 +667,22 @@ void PlyReader::read(const std::string& filename) if (hasData) { points.reserve(numPoints); - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { points.push_back(Base::Vector3d(data(i, x), data(i, y), data(i, z))); } } if (hasData && hasNormal) { normals.reserve(numPoints); - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { normals.emplace_back(data(i, normal_x), data(i, normal_y), data(i, normal_z)); } } if (hasData && hasIntensity) { intensity.reserve(numPoints); - for (std::size_t i = 0; i < numPoints; i++) { - intensity.push_back(data(i, greyvalue)); + for (Eigen::Index i = 0; i < numPoints; i++) { + intensity.push_back(static_cast(data(i, greyvalue))); } } @@ -688,26 +690,26 @@ void PlyReader::read(const std::string& filename) colors.reserve(numPoints); float a = 1.0; if (types[red] == "uchar") { - for (std::size_t i = 0; i < numPoints; i++) { - float r = data(i, red); - float g = data(i, green); - float b = data(i, blue); + for (Eigen::Index i = 0; i < numPoints; i++) { + float r = static_cast(data(i, red)); + float g = static_cast(data(i, green)); + float b = static_cast(data(i, blue)); if (alpha != max_size) { - a = data(i, alpha); + a = static_cast(data(i, alpha)); } - colors.emplace_back(static_cast(r) / 255.0f, - static_cast(g) / 255.0f, - static_cast(b) / 255.0f, - static_cast(a) / 255.0f); + colors.emplace_back(static_cast(r) / 255.0F, + static_cast(g) / 255.0F, + static_cast(b) / 255.0F, + static_cast(a) / 255.0F); } } else if (types[red] == "float") { - for (std::size_t i = 0; i < numPoints; i++) { - float r = data(i, red); - float g = data(i, green); - float b = data(i, blue); + for (Eigen::Index i = 0; i < numPoints; i++) { + float r = static_cast(data(i, red)); + float g = static_cast(data(i, green)); + float b = static_cast(data(i, blue)); if (alpha != max_size) { - a = data(i, alpha); + a = static_cast(data(i, alpha)); } colors.emplace_back(r, g, b, a); } @@ -722,7 +724,8 @@ std::size_t PlyReader::readHeader(std::istream& in, std::vector& types, std::vector& sizes) { - std::string line, element; + std::string line; + std::string element; std::vector list; std::size_t numPoints = 0; // a pair of numbers of elements and the total size of the properties @@ -887,9 +890,9 @@ std::size_t PlyReader::readHeader(std::istream& in, void PlyReader::readAscii(std::istream& inp, std::size_t offset, Eigen::MatrixXd& data) { std::string line; - std::size_t row = 0; - std::size_t numPoints = data.rows(); - std::size_t numFields = data.cols(); + Eigen::Index row = 0; + Eigen::Index numPoints = Eigen::Index(data.rows()); + Eigen::Index numFields = Eigen::Index(data.cols()); std::vector list; while (std::getline(inp, line) && row < numPoints) { if (line.empty()) { @@ -907,7 +910,8 @@ void PlyReader::readAscii(std::istream& inp, std::size_t offset, Eigen::MatrixXd std::istringstream str(line); - for (std::size_t col = 0; col < list.size() && col < numFields; col++) { + Eigen::Index size = Eigen::Index(list.size()); + for (Eigen::Index col = 0; col < size && col < numFields; col++) { double value = boost::lexical_cast(list[col]); data(row, col) = value; } @@ -923,8 +927,8 @@ void PlyReader::readBinary(bool swapByteOrder, const std::vector& sizes, Eigen::MatrixXd& data) { - std::size_t numPoints = data.rows(); - std::size_t numFields = data.cols(); + Eigen::Index numPoints = data.rows(); + Eigen::Index numFields = data.cols(); int neededSize = 0; ConverterPtr convert_float32(new ConverterT); @@ -937,8 +941,8 @@ void PlyReader::readBinary(bool swapByteOrder, ConverterPtr convert_uint32(new ConverterT); std::vector converters; - for (std::size_t j = 0; j < numFields; j++) { - std::string t = types[j]; + for (Eigen::Index j = 0; j < numFields; j++) { + const std::string& t = types[j]; switch (sizes[j]) { case 1: if (t == "char" || t == "int8") { @@ -1005,8 +1009,8 @@ void PlyReader::readBinary(bool swapByteOrder, Base::InputStream str(inp); str.setByteOrder(swapByteOrder ? Base::Stream::BigEndian : Base::Stream::LittleEndian); - for (std::size_t i = 0; i < numPoints; i++) { - for (std::size_t j = 0; j < numFields; j++) { + for (Eigen::Index i = 0; i < numPoints; i++) { + for (Eigen::Index j = 0; j < numFields; j++) { double value = converters[j]->toDouble(str); data(i, j) = value; } @@ -1020,8 +1024,8 @@ PcdReader::PcdReader() = default; void PcdReader::read(const std::string& filename) { clear(); - this->width = -1; - this->height = -1; + this->width = 0; + this->height = 1; Base::FileInfo fi(filename); Base::ifstream inp(fi, std::ios::in | std::ios::binary); @@ -1030,7 +1034,7 @@ void PcdReader::read(const std::string& filename) std::vector fields; std::vector types; std::vector sizes; - std::size_t numPoints = readHeader(inp, format, fields, types, sizes); + Eigen::Index numPoints = Eigen::Index(readHeader(inp, format, fields, types, sizes)); Eigen::MatrixXd data(numPoints, fields.size()); if (format == "ascii") { @@ -1040,14 +1044,15 @@ void PcdReader::read(const std::string& filename) readBinary(false, inp, types, sizes, data); } else if (format == "binary_compressed") { - unsigned int c, u; + unsigned int c {}; + unsigned int u {}; Base::InputStream str(inp); str >> c >> u; std::vector compressed(c); - inp.read(&compressed[0], c); + inp.read(compressed.data(), c); std::vector uncompressed(u); - if (lzfDecompress(&compressed[0], c, &uncompressed[0], u) == u) { + if (lzfDecompress(compressed.data(), c, uncompressed.data(), u) == u) { DataStreambuf ibuf(uncompressed); std::istream istr(nullptr); istr.rdbuf(&ibuf); @@ -1059,31 +1064,31 @@ void PcdReader::read(const std::string& filename) } std::vector::iterator it; - std::size_t max_size = std::numeric_limits::max(); + Eigen::Index max_size = std::numeric_limits::max(); // x field - std::size_t x = max_size; + Eigen::Index x = max_size; it = std::find(fields.begin(), fields.end(), "x"); if (it != fields.end()) { x = std::distance(fields.begin(), it); } // y field - std::size_t y = max_size; + Eigen::Index y = max_size; it = std::find(fields.begin(), fields.end(), "y"); if (it != fields.end()) { y = std::distance(fields.begin(), it); } // z field - std::size_t z = max_size; + Eigen::Index z = max_size; it = std::find(fields.begin(), fields.end(), "z"); if (it != fields.end()) { z = std::distance(fields.begin(), it); } // normal x field - std::size_t normal_x = max_size; + Eigen::Index normal_x = max_size; it = std::find(fields.begin(), fields.end(), "normal_x"); if (it == fields.end()) { it = std::find(fields.begin(), fields.end(), "nx"); @@ -1093,7 +1098,7 @@ void PcdReader::read(const std::string& filename) } // normal y field - std::size_t normal_y = max_size; + Eigen::Index normal_y = max_size; it = std::find(fields.begin(), fields.end(), "normal_y"); if (it == fields.end()) { it = std::find(fields.begin(), fields.end(), "ny"); @@ -1103,7 +1108,7 @@ void PcdReader::read(const std::string& filename) } // normal z field - std::size_t normal_z = max_size; + Eigen::Index normal_z = max_size; it = std::find(fields.begin(), fields.end(), "normal_z"); if (it == fields.end()) { it = std::find(fields.begin(), fields.end(), "nz"); @@ -1113,14 +1118,14 @@ void PcdReader::read(const std::string& filename) } // intensity field - std::size_t greyvalue = max_size; + Eigen::Index greyvalue = max_size; it = std::find(fields.begin(), fields.end(), "intensity"); if (it != fields.end()) { greyvalue = std::distance(fields.begin(), it); } // rgb(a) field - std::size_t rgba = max_size; + Eigen::Index rgba = max_size; it = std::find(fields.begin(), fields.end(), "rgb"); if (it == fields.end()) { it = std::find(fields.begin(), fields.end(), "rgba"); @@ -1137,21 +1142,21 @@ void PcdReader::read(const std::string& filename) if (hasData) { points.reserve(numPoints); - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { points.push_back(Base::Vector3d(data(i, x), data(i, y), data(i, z))); } } if (hasData && hasNormal) { normals.reserve(numPoints); - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { normals.emplace_back(data(i, normal_x), data(i, normal_y), data(i, normal_z)); } } if (hasData && hasIntensity) { intensity.reserve(numPoints); - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { intensity.push_back(data(i, greyvalue)); } } @@ -1159,7 +1164,7 @@ void PcdReader::read(const std::string& filename) if (hasData && hasColor) { colors.reserve(numPoints); if (types[rgba] == "U") { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { uint32_t packed = static_cast(data(i, rgba)); App::Color col; col.setPackedARGB(packed); @@ -1169,9 +1174,9 @@ void PcdReader::read(const std::string& filename) else if (types[rgba] == "F") { static_assert(sizeof(float) == sizeof(uint32_t), "float and uint32_t have different sizes"); - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { float f = static_cast(data(i, rgba)); - uint32_t packed; + uint32_t packed {}; std::memcpy(&packed, &f, sizeof(packed)); App::Color col; col.setPackedARGB(packed); @@ -1255,9 +1260,9 @@ std::size_t PcdReader::readHeader(std::istream& in, void PcdReader::readAscii(std::istream& inp, Eigen::MatrixXd& data) { std::string line; - std::size_t row = 0; - std::size_t numPoints = data.rows(); - std::size_t numFields = data.cols(); + Eigen::Index row = 0; + Eigen::Index numPoints = data.rows(); + Eigen::Index numFields = data.cols(); std::vector list; while (std::getline(inp, line) && row < numPoints) { if (line.empty()) { @@ -1270,7 +1275,8 @@ void PcdReader::readAscii(std::istream& inp, Eigen::MatrixXd& data) std::istringstream str(line); - for (std::size_t col = 0; col < list.size() && col < numFields; col++) { + Eigen::Index size = Eigen::Index(list.size()); + for (Eigen::Index col = 0; col < size && col < numFields; col++) { double value = boost::lexical_cast(list[col]); data(row, col) = value; } @@ -1285,8 +1291,8 @@ void PcdReader::readBinary(bool transpose, const std::vector& sizes, Eigen::MatrixXd& data) { - std::size_t numPoints = data.rows(); - std::size_t numFields = data.cols(); + Eigen::Index numPoints = data.rows(); + Eigen::Index numFields = data.cols(); int neededSize = 0; ConverterPtr convert_float32(new ConverterT); @@ -1299,7 +1305,7 @@ void PcdReader::readBinary(bool transpose, ConverterPtr convert_uint32(new ConverterT); std::vector converters; - for (std::size_t j = 0; j < numFields; j++) { + for (Eigen::Index j = 0; j < numFields; j++) { char t = types[j][0]; switch (sizes[j]) { case 1: @@ -1367,16 +1373,16 @@ void PcdReader::readBinary(bool transpose, Base::InputStream str(inp); if (transpose) { - for (std::size_t j = 0; j < numFields; j++) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index j = 0; j < numFields; j++) { + for (Eigen::Index i = 0; i < numPoints; i++) { double value = converters[j]->toDouble(str); data(i, j) = value; } } } else { - for (std::size_t i = 0; i < numPoints; i++) { - for (std::size_t j = 0; j < numFields; j++) { + for (Eigen::Index i = 0; i < numPoints; i++) { + for (Eigen::Index j = 0; j < numFields; j++) { double value = converters[j]->toDouble(str); data(i, j) = value; } @@ -1580,7 +1586,7 @@ private: ); return true; } - else if (node.elementName() == "colorGreen") { + if (node.elementName() == "colorGreen") { proto.cnt_rgb++; proto.sdb .emplace_back(imfi, node.elementName(), proto.greenData.data(), buf_size, true, true @@ -1588,7 +1594,7 @@ private: ); return true; } - else if (node.elementName() == "colorBlue") { + if (node.elementName() == "colorBlue") { proto.cnt_rgb++; proto.sdb .emplace_back(imfi, node.elementName(), proto.blueData.data(), buf_size, true, true @@ -1702,9 +1708,9 @@ private: App::Color getColor(const Proto& proto, size_t index) const { App::Color c; - c.r = static_cast(proto.redData[index]) / 255.0f; - c.g = static_cast(proto.greenData[index]) / 255.0f; - c.b = static_cast(proto.blueData[index]) / 255.0f; + c.r = static_cast(proto.redData[index]) / 255.0F; + c.g = static_cast(proto.greenData[index]) / 255.0F; + c.b = static_cast(proto.blueData[index]) / 255.0F; return c; } @@ -1785,6 +1791,8 @@ void E57Reader::read(const std::string& filename) normals = reader.getNormals(); colors = reader.getColors(); intensity = reader.getItensity(); + width = points.size(); + height = 1; } catch (const Base::BadFormatError&) { throw; @@ -1798,10 +1806,9 @@ void E57Reader::read(const std::string& filename) Writer::Writer(const PointKernel& p) : points(p) -{ - width = p.size(); - height = 1; -} + , width(int(p.size())) + , height {1} +{} Writer::~Writer() = default; @@ -1903,10 +1910,10 @@ void PlyWriter::write(const std::string& filename) converters.push_back(convert_float); } - std::size_t numPoints = points.size(); - std::size_t numValid = 0; + Eigen::Index numPoints = Eigen::Index(points.size()); + Eigen::Index numValid = 0; const std::vector& pts = points.getBasicPoints(); - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { const Base::Vector3f& p = pts[i]; if (!boost::math::isnan(p.x) && !boost::math::isnan(p.y) && !boost::math::isnan(p.z)) { numValid++; @@ -1916,7 +1923,7 @@ void PlyWriter::write(const std::string& filename) Eigen::MatrixXf data(numPoints, properties.size()); if (placement.isIdentity()) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { data(i, 0) = pts[i].x; data(i, 1) = pts[i].y; data(i, 2) = pts[i].z; @@ -1924,7 +1931,7 @@ void PlyWriter::write(const std::string& filename) } else { Base::Vector3d tmp; - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { tmp = Base::convertTo(pts[i]); placement.multVec(tmp, tmp); data(i, 0) = static_cast(tmp.x); @@ -1933,14 +1940,14 @@ void PlyWriter::write(const std::string& filename) } } - std::size_t col = 3; + Eigen::Index col = 3; if (hasNormals) { - int col0 = col; - int col1 = col + 1; - int col2 = col + 2; + Eigen::Index col0 = col; + Eigen::Index col1 = col + 1; + Eigen::Index col2 = col + 2; Base::Rotation rot = placement.getRotation(); if (rot.isIdentity()) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { data(i, col0) = normals[i].x; data(i, col1) = normals[i].y; data(i, col2) = normals[i].z; @@ -1948,7 +1955,7 @@ void PlyWriter::write(const std::string& filename) } else { Base::Vector3d tmp; - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { tmp = Base::convertTo(normals[i]); rot.multVec(tmp, tmp); data(i, col0) = static_cast(tmp.x); @@ -1960,22 +1967,22 @@ void PlyWriter::write(const std::string& filename) } if (hasColors) { - int col0 = col; - int col1 = col + 1; - int col2 = col + 2; - int col3 = col + 3; - for (std::size_t i = 0; i < numPoints; i++) { + Eigen::Index col0 = col; + Eigen::Index col1 = col + 1; + Eigen::Index col2 = col + 2; + Eigen::Index col3 = col + 3; + for (Eigen::Index i = 0; i < numPoints; i++) { App::Color c = colors[i]; - data(i, col0) = (c.r * 255.0f + 0.5f); - data(i, col1) = (c.g * 255.0f + 0.5f); - data(i, col2) = (c.b * 255.0f + 0.5f); - data(i, col3) = (c.a * 255.0f + 0.5f); + data(i, col0) = (c.r * 255.0F + 0.5F); + data(i, col1) = (c.g * 255.0F + 0.5F); + data(i, col2) = (c.b * 255.0F + 0.5F); + data(i, col3) = (c.a * 255.0F + 0.5F); } col += 4; } if (hasIntensity) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { data(i, col) = intensity[i]; } col += 1; @@ -1993,7 +2000,7 @@ void PlyWriter::write(const std::string& filename) } out << "end_header" << std::endl; - for (std::size_t r = 0; r < numPoints; r++) { + for (Eigen::Index r = 0; r < numPoints; r++) { if (boost::math::isnan(data(r, 0))) { continue; } @@ -2003,7 +2010,7 @@ void PlyWriter::write(const std::string& filename) if (boost::math::isnan(data(r, 2))) { continue; } - for (std::size_t c = 0; c < col; c++) { + for (Eigen::Index c = 0; c < col; c++) { float value = data(r, c); out << converters[c]->toString(value) << " "; } @@ -2065,13 +2072,13 @@ void PcdWriter::write(const std::string& filename) converters.push_back(convert_float); } - std::size_t numPoints = points.size(); + Eigen::Index numPoints = Eigen::Index(points.size()); const std::vector& pts = points.getBasicPoints(); Eigen::MatrixXd data(numPoints, fields.size()); if (placement.isIdentity()) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { data(i, 0) = pts[i].x; data(i, 1) = pts[i].y; data(i, 2) = pts[i].z; @@ -2079,7 +2086,7 @@ void PcdWriter::write(const std::string& filename) } else { Base::Vector3d tmp; - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { tmp = Base::convertTo(pts[i]); placement.multVec(tmp, tmp); data(i, 0) = static_cast(tmp.x); @@ -2088,14 +2095,14 @@ void PcdWriter::write(const std::string& filename) } } - std::size_t col = 3; + Eigen::Index col = 3; if (hasNormals) { - int col0 = col; - int col1 = col + 1; - int col2 = col + 2; + Eigen::Index col0 = col; + Eigen::Index col1 = col + 1; + Eigen::Index col2 = col + 2; Base::Rotation rot = placement.getRotation(); if (rot.isIdentity()) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { data(i, col0) = normals[i].x; data(i, col1) = normals[i].y; data(i, col2) = normals[i].z; @@ -2103,7 +2110,7 @@ void PcdWriter::write(const std::string& filename) } else { Base::Vector3d tmp; - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { tmp = Base::convertTo(normals[i]); rot.multVec(tmp, tmp); data(i, col0) = static_cast(tmp.x); @@ -2115,7 +2122,7 @@ void PcdWriter::write(const std::string& filename) } if (hasColors) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { // http://docs.pointclouds.org/1.3.0/structpcl_1_1_r_g_b.html data(i, col) = colors[i].getPackedARGB(); } @@ -2123,7 +2130,7 @@ void PcdWriter::write(const std::string& filename) } if (hasIntensity) { - for (std::size_t i = 0; i < numPoints; i++) { + for (Eigen::Index i = 0; i < numPoints; i++) { data(i, col) = intensity[i]; } col += 1; @@ -2167,15 +2174,18 @@ void PcdWriter::write(const std::string& filename) Base::Placement plm; Base::Vector3d p = plm.getPosition(); Base::Rotation o = plm.getRotation(); - double x, y, z, w; + double x {}; + double y {}; + double z {}; + double w {}; o.getValue(x, y, z, w); out << "VIEWPOINT " << p.x << " " << p.y << " " << p.z << " " << w << " " << x << " " << y << " " << z << std::endl; out << "POINTS " << numPoints << std::endl << "DATA ascii" << std::endl; - for (std::size_t r = 0; r < numPoints; r++) { - for (std::size_t c = 0; c < col; c++) { + for (Eigen::Index r = 0; r < numPoints; r++) { + for (Eigen::Index c = 0; c < col; c++) { double value = data(r, c); if (boost::math::isnan(value)) { out << "nan "; diff --git a/src/Mod/Points/App/PointsAlgos.h b/src/Mod/Points/App/PointsAlgos.h index 4743d225bf..5306500700 100644 --- a/src/Mod/Points/App/PointsAlgos.h +++ b/src/Mod/Points/App/PointsAlgos.h @@ -45,7 +45,7 @@ public: static void LoadAscii(PointKernel&, const char* FileName); }; -class Reader +class PointsExport Reader { public: Reader(); @@ -65,22 +65,30 @@ public: int getWidth() const; int getHeight() const; + Reader(const Reader&) = delete; + Reader(Reader&&) = delete; + Reader& operator=(const Reader&) = delete; + Reader& operator=(Reader&&) = delete; + protected: + // NOLINTBEGIN PointKernel points; std::vector intensity; std::vector colors; std::vector normals; - int width, height; + int width {0}; + int height {1}; + // NOLINTEND }; -class AscReader: public Reader +class PointsExport AscReader: public Reader { public: AscReader(); void read(const std::string& filename) override; }; -class PlyReader: public Reader +class PointsExport PlyReader: public Reader { public: PlyReader(); @@ -102,7 +110,7 @@ private: Eigen::MatrixXd& data); }; -class PcdReader: public Reader +class PointsExport PcdReader: public Reader { public: PcdReader(); @@ -122,7 +130,7 @@ private: Eigen::MatrixXd& data); }; -class E57Reader: public Reader +class PointsExport E57Reader: public Reader { public: E57Reader(bool Color, bool State, double Distance); @@ -133,7 +141,7 @@ protected: double minDistance; }; -class Writer +class PointsExport Writer { public: explicit Writer(const PointKernel&); @@ -147,30 +155,37 @@ public: void setHeight(int); void setPlacement(const Base::Placement&); + Writer(const Writer&) = delete; + Writer(Writer&&) = delete; + Writer& operator=(const Writer&) = delete; + Writer& operator=(Writer&&) = delete; + protected: + // NOLINTBEGIN const PointKernel& points; std::vector intensity; std::vector colors; std::vector normals; int width, height; Base::Placement placement; + // NOLINTEND }; -class AscWriter: public Writer +class PointsExport AscWriter: public Writer { public: explicit AscWriter(const PointKernel&); void write(const std::string& filename) override; }; -class PlyWriter: public Writer +class PointsExport PlyWriter: public Writer { public: explicit PlyWriter(const PointKernel&); void write(const std::string& filename) override; }; -class PcdWriter: public Writer +class PointsExport PcdWriter: public Writer { public: explicit PcdWriter(const PointKernel&); diff --git a/src/Mod/Points/App/PointsFeature.h b/src/Mod/Points/App/PointsFeature.h index f271c3621f..39d0f598b5 100644 --- a/src/Mod/Points/App/PointsFeature.h +++ b/src/Mod/Points/App/PointsFeature.h @@ -25,7 +25,7 @@ #include #include -#include // must be first include +#include #include #include "Points.h" diff --git a/src/Mod/Points/App/PointsGrid.cpp b/src/Mod/Points/App/PointsGrid.cpp index 8a4bf793f4..162b7cbc21 100644 --- a/src/Mod/Points/App/PointsGrid.cpp +++ b/src/Mod/Points/App/PointsGrid.cpp @@ -33,14 +33,14 @@ PointsGrid::PointsGrid(const PointKernel& rclM) , _ulCtGridsX(0) , _ulCtGridsY(0) , _ulCtGridsZ(0) - , _fGridLenX(0.0f) - , _fGridLenY(0.0f) - , _fGridLenZ(0.0f) - , _fMinX(0.0f) - , _fMinY(0.0f) - , _fMinZ(0.0f) + , _fGridLenX(0.0F) + , _fGridLenY(0.0F) + , _fGridLenZ(0.0F) + , _fMinX(0.0F) + , _fMinY(0.0F) + , _fMinZ(0.0F) { - RebuildGrid(); + PointsGrid::RebuildGrid(); } PointsGrid::PointsGrid() @@ -49,12 +49,12 @@ PointsGrid::PointsGrid() , _ulCtGridsX(POINTS_CT_GRID) , _ulCtGridsY(POINTS_CT_GRID) , _ulCtGridsZ(POINTS_CT_GRID) - , _fGridLenX(0.0f) - , _fGridLenY(0.0f) - , _fGridLenZ(0.0f) - , _fMinX(0.0f) - , _fMinY(0.0f) - , _fMinZ(0.0f) + , _fGridLenX(0.0F) + , _fGridLenY(0.0F) + , _fGridLenZ(0.0F) + , _fMinX(0.0F) + , _fMinY(0.0F) + , _fMinZ(0.0F) {} PointsGrid::PointsGrid(const PointKernel& rclM, @@ -66,14 +66,14 @@ PointsGrid::PointsGrid(const PointKernel& rclM, , _ulCtGridsX(0) , _ulCtGridsY(0) , _ulCtGridsZ(0) - , _fGridLenX(0.0f) - , _fGridLenY(0.0f) - , _fGridLenZ(0.0f) - , _fMinX(0.0f) - , _fMinY(0.0f) - , _fMinZ(0.0f) + , _fGridLenX(0.0F) + , _fGridLenY(0.0F) + , _fGridLenZ(0.0F) + , _fMinX(0.0F) + , _fMinY(0.0F) + , _fMinZ(0.0F) { - Rebuild(ulX, ulY, ulZ); + PointsGrid::Rebuild(ulX, ulY, ulZ); } PointsGrid::PointsGrid(const PointKernel& rclM, int iCtGridPerAxis) @@ -82,14 +82,14 @@ PointsGrid::PointsGrid(const PointKernel& rclM, int iCtGridPerAxis) , _ulCtGridsX(0) , _ulCtGridsY(0) , _ulCtGridsZ(0) - , _fGridLenX(0.0f) - , _fGridLenY(0.0f) - , _fGridLenZ(0.0f) - , _fMinX(0.0f) - , _fMinY(0.0f) - , _fMinZ(0.0f) + , _fGridLenX(0.0F) + , _fGridLenY(0.0F) + , _fGridLenZ(0.0F) + , _fMinX(0.0F) + , _fMinY(0.0F) + , _fMinZ(0.0F) { - Rebuild(iCtGridPerAxis); + PointsGrid::Rebuild(iCtGridPerAxis); } PointsGrid::PointsGrid(const PointKernel& rclM, double fGridLen) @@ -98,20 +98,20 @@ PointsGrid::PointsGrid(const PointKernel& rclM, double fGridLen) , _ulCtGridsX(0) , _ulCtGridsY(0) , _ulCtGridsZ(0) - , _fGridLenX(0.0f) - , _fGridLenY(0.0f) - , _fGridLenZ(0.0f) - , _fMinX(0.0f) - , _fMinY(0.0f) - , _fMinZ(0.0f) + , _fGridLenX(0.0F) + , _fGridLenY(0.0F) + , _fGridLenZ(0.0F) + , _fMinX(0.0F) + , _fMinY(0.0F) + , _fMinZ(0.0F) { Base::BoundBox3d clBBPts; // = _pclPoints->GetBoundBox(); for (const auto& pnt : *_pclPoints) { clBBPts.Add(pnt); } - Rebuild(std::max((unsigned long)(clBBPts.LengthX() / fGridLen), 1), - std::max((unsigned long)(clBBPts.LengthY() / fGridLen), 1), - std::max((unsigned long)(clBBPts.LengthZ() / fGridLen), 1)); + PointsGrid::Rebuild(std::max((unsigned long)(clBBPts.LengthX() / fGridLen), 1), + std::max((unsigned long)(clBBPts.LengthY() / fGridLen), 1), + std::max((unsigned long)(clBBPts.LengthZ() / fGridLen), 1)); } void PointsGrid::Attach(const PointKernel& rclM) @@ -153,8 +153,6 @@ void PointsGrid::InitGrid() { assert(_pclPoints); - unsigned long i, j; - // Calculate grid lengths if not initialized // if ((_ulCtGridsX == 0) || (_ulCtGridsY == 0) || (_ulCtGridsZ == 0)) { @@ -180,8 +178,8 @@ void PointsGrid::InitGrid() if (num == 0) { num = 1; } - _fGridLenX = (1.0f + fLengthX) / double(num); - _fMinX = clBBPts.MinX - 0.5f; + _fGridLenX = (1.0F + fLengthX) / double(num); + _fMinX = clBBPts.MinX - 0.5F; } { @@ -189,8 +187,8 @@ void PointsGrid::InitGrid() if (num == 0) { num = 1; } - _fGridLenY = (1.0f + fLengthY) / double(num); - _fMinY = clBBPts.MinY - 0.5f; + _fGridLenY = (1.0F + fLengthY) / double(num); + _fMinY = clBBPts.MinY - 0.5F; } { @@ -198,17 +196,17 @@ void PointsGrid::InitGrid() if (num == 0) { num = 1; } - _fGridLenZ = (1.0f + fLengthZ) / double(num); - _fMinZ = clBBPts.MinZ - 0.5f; + _fGridLenZ = (1.0F + fLengthZ) / double(num); + _fMinZ = clBBPts.MinZ - 0.5F; } } // Create data structure _aulGrid.clear(); _aulGrid.resize(_ulCtGridsX); - for (i = 0; i < _ulCtGridsX; i++) { + for (unsigned long i = 0; i < _ulCtGridsX; i++) { _aulGrid[i].resize(_ulCtGridsY); - for (j = 0; j < _ulCtGridsY; j++) { + for (unsigned long j = 0; j < _ulCtGridsY; j++) { _aulGrid[i][j].resize(_ulCtGridsZ); } } @@ -218,7 +216,12 @@ unsigned long PointsGrid::InSide(const Base::BoundBox3d& rclBB, std::vector& raulElements, bool bDelDoubles) const { - unsigned long i, j, k, ulMinX, ulMinY, ulMinZ, ulMaxX, ulMaxY, ulMaxZ; + unsigned long ulMinX {}; + unsigned long ulMinY {}; + unsigned long ulMinZ {}; + unsigned long ulMaxX {}; + unsigned long ulMaxY {}; + unsigned long ulMaxZ {}; raulElements.clear(); @@ -226,9 +229,9 @@ unsigned long PointsGrid::InSide(const Base::BoundBox3d& rclBB, Position(Base::Vector3d(rclBB.MinX, rclBB.MinY, rclBB.MinZ), ulMinX, ulMinY, ulMinZ); Position(Base::Vector3d(rclBB.MaxX, rclBB.MaxY, rclBB.MaxZ), ulMaxX, ulMaxY, ulMaxZ); - for (i = ulMinX; i <= ulMaxX; i++) { - for (j = ulMinY; j <= ulMaxY; j++) { - for (k = ulMinZ; k <= ulMaxZ; k++) { + for (auto i = ulMinX; i <= ulMaxX; i++) { + for (auto j = ulMinY; j <= ulMaxY; j++) { + for (auto k = ulMinZ; k <= ulMaxZ; k++) { raulElements.insert(raulElements.end(), _aulGrid[i][j][k].begin(), _aulGrid[i][j][k].end()); @@ -252,7 +255,8 @@ unsigned long PointsGrid::InSide(const Base::BoundBox3d& rclBB, double fMaxDist, bool bDelDoubles) const { - unsigned long i, j, k, ulMinX, ulMinY, ulMinZ, ulMaxX, ulMaxY, ulMaxZ; + unsigned long ulMinX {}, ulMinY {}, ulMinZ {}; + unsigned long ulMaxX {}, ulMaxY {}, ulMaxZ {}; double fGridDiag = GetBoundBox(0, 0, 0).CalcDiagonalLength(); double fMinDistP2 = (fGridDiag * fGridDiag) + (fMaxDist * fMaxDist); @@ -262,9 +266,9 @@ unsigned long PointsGrid::InSide(const Base::BoundBox3d& rclBB, Position(Base::Vector3d(rclBB.MinX, rclBB.MinY, rclBB.MinZ), ulMinX, ulMinY, ulMinZ); Position(Base::Vector3d(rclBB.MaxX, rclBB.MaxY, rclBB.MaxZ), ulMaxX, ulMaxY, ulMaxZ); - for (i = ulMinX; i <= ulMaxX; i++) { - for (j = ulMinY; j <= ulMaxY; j++) { - for (k = ulMinZ; k <= ulMaxZ; k++) { + for (auto i = ulMinX; i <= ulMaxX; i++) { + for (auto j = ulMinY; j <= ulMaxY; j++) { + for (auto k = ulMinZ; k <= ulMaxZ; k++) { if (Base::DistanceP2(GetBoundBox(i, j, k).GetCenter(), rclOrg) < fMinDistP2) { raulElements.insert(raulElements.end(), _aulGrid[i][j][k].begin(), @@ -287,7 +291,8 @@ unsigned long PointsGrid::InSide(const Base::BoundBox3d& rclBB, unsigned long PointsGrid::InSide(const Base::BoundBox3d& rclBB, std::set& raulElements) const { - unsigned long i, j, k, ulMinX, ulMinY, ulMinZ, ulMaxX, ulMaxY, ulMaxZ; + unsigned long ulMinX {}, ulMinY {}, ulMinZ {}; + unsigned long ulMaxX {}, ulMaxY {}, ulMaxZ {}; raulElements.clear(); @@ -295,9 +300,9 @@ unsigned long PointsGrid::InSide(const Base::BoundBox3d& rclBB, Position(Base::Vector3d(rclBB.MinX, rclBB.MinY, rclBB.MinZ), ulMinX, ulMinY, ulMinZ); Position(Base::Vector3d(rclBB.MaxX, rclBB.MaxY, rclBB.MaxZ), ulMaxX, ulMaxY, ulMaxZ); - for (i = ulMinX; i <= ulMaxX; i++) { - for (j = ulMinY; j <= ulMaxY; j++) { - for (k = ulMinZ; k <= ulMaxZ; k++) { + for (auto i = ulMinX; i <= ulMaxX; i++) { + for (auto j = ulMinY; j <= ulMaxY; j++) { + for (auto k = ulMinZ; k <= ulMaxZ; k++) { raulElements.insert(_aulGrid[i][j][k].begin(), _aulGrid[i][j][k].end()); } } @@ -345,7 +350,7 @@ void PointsGrid::CalculateGridLength(unsigned long ulCtGrid, unsigned long ulMax for (const auto& pnt : *_pclPoints) { clBBPtsEnlarged.Add(pnt); } - double fVolElem; + double fVolElem {}; if (_ulCtElements > (ulMaxGrids * ulCtGrid)) { fVolElem = @@ -359,7 +364,7 @@ void PointsGrid::CalculateGridLength(unsigned long ulCtGrid, unsigned long ulMax } double fVol = fVolElem * float(ulCtGrid); - double fGridLen = float(pow((float)fVol, 1.0f / 3.0f)); + double fGridLen = float(pow((float)fVol, 1.0F / 3.0F)); if (fGridLen > 0) { _ulCtGridsX = @@ -398,7 +403,7 @@ void PointsGrid::CalculateGridLength(int iCtGridPerAxis) double fLenghtD = clBBPts.CalcDiagonalLength(); - double fLengthTol = 0.05f * fLenghtD; + double fLengthTol = 0.05F * fLenghtD; bool bLenghtXisZero = (fLenghtX <= fLengthTol); bool bLenghtYisZero = (fLenghtY <= fLengthTol); @@ -444,7 +449,7 @@ void PointsGrid::CalculateGridLength(int iCtGridPerAxis) fVolumenGrid = fVolumen / (float)iMaxGrids; } - double fLengthGrid = float(pow((float)fVolumenGrid, 1.0f / 3.0f)); + double fLengthGrid = float(pow((float)fVolumenGrid, 1.0F / 3.0F)); _ulCtGridsX = std::max((unsigned long)(fLenghtX / fLengthGrid), 1); _ulCtGridsY = std::max((unsigned long)(fLenghtY / fLengthGrid), 1); @@ -529,7 +534,9 @@ void PointsGrid::SearchNearestFromPoint(const Base::Vector3d& rclPt, Base::BoundBox3d clBB = GetBoundBox(); if (clBB.IsInBox(rclPt)) { // Point lies within - unsigned long ulX, ulY, ulZ; + unsigned long ulX {}; + unsigned long ulY {}; + unsigned long ulZ {}; Position(rclPt, ulX, ulY, ulZ); unsigned long ulLevel = 0; while (raclInd.empty()) { @@ -632,41 +639,39 @@ void PointsGrid::GetHull(unsigned long ulX, int nY2 = std::min(int(_ulCtGridsY) - 1, int(ulY) + int(ulDistance)); int nZ2 = std::min(int(_ulCtGridsZ) - 1, int(ulZ) + int(ulDistance)); - int i, j; - // top plane - for (i = nX1; i <= nX2; i++) { - for (j = nY1; j <= nY2; j++) { + for (int i = nX1; i <= nX2; i++) { + for (int j = nY1; j <= nY2; j++) { GetElements(i, j, nZ1, raclInd); } } // bottom plane - for (i = nX1; i <= nX2; i++) { - for (j = nY1; j <= nY2; j++) { + for (int i = nX1; i <= nX2; i++) { + for (int j = nY1; j <= nY2; j++) { GetElements(i, j, nZ2, raclInd); } } // left plane - for (i = nY1; i <= nY2; i++) { - for (j = (nZ1 + 1); j <= (nZ2 - 1); j++) { + for (int i = nY1; i <= nY2; i++) { + for (int j = (nZ1 + 1); j <= (nZ2 - 1); j++) { GetElements(nX1, i, j, raclInd); } } // right plane - for (i = nY1; i <= nY2; i++) { - for (j = (nZ1 + 1); j <= (nZ2 - 1); j++) { + for (int i = nY1; i <= nY2; i++) { + for (int j = (nZ1 + 1); j <= (nZ2 - 1); j++) { GetElements(nX2, i, j, raclInd); } } // front plane - for (i = (nX1 + 1); i <= (nX2 - 1); i++) { - for (j = (nZ1 + 1); j <= (nZ2 - 1); j++) { + for (int i = (nX1 + 1); i <= (nX2 - 1); i++) { + for (int j = (nZ1 + 1); j <= (nZ2 - 1); j++) { GetElements(i, nY1, j, raclInd); } } // back plane - for (i = (nX1 + 1); i <= (nX2 - 1); i++) { - for (j = (nZ1 + 1); j <= (nZ2 - 1); j++) { + for (int i = (nX1 + 1); i <= (nX2 - 1); i++) { + for (int j = (nZ1 + 1); j <= (nZ2 - 1); j++) { GetElements(i, nY2, j, raclInd); } } @@ -688,7 +693,7 @@ unsigned long PointsGrid::GetElements(unsigned long ulX, void PointsGrid::AddPoint(const Base::Vector3d& rclPt, unsigned long ulPtIndex, float /*fEpsilon*/) { - unsigned long ulX, ulY, ulZ; + unsigned long ulX {}, ulY {}, ulZ {}; Pos(Base::Vector3d(rclPt.x, rclPt.y, rclPt.z), ulX, ulY, ulZ); if ((ulX < _ulCtGridsX) && (ulY < _ulCtGridsY) && (ulZ < _ulCtGridsZ)) { _aulGrid[ulX][ulY][ulZ].insert(ulPtIndex); @@ -767,7 +772,7 @@ void PointsGrid::Pos(const Base::Vector3d& rclPoint, unsigned long PointsGrid::FindElements(const Base::Vector3d& rclPoint, std::set& aulElements) const { - unsigned long ulX, ulY, ulZ; + unsigned long ulX {}, ulY {}, ulZ {}; Pos(rclPoint, ulX, ulY, ulZ); // check if the given point is inside the grid structure @@ -782,8 +787,8 @@ unsigned long PointsGrid::FindElements(const Base::Vector3d& rclPoint, PointsGridIterator::PointsGridIterator(const PointsGrid& rclG) : _rclGrid(rclG) - , _clPt(0.0f, 0.0f, 0.0f) - , _clDir(0.0f, 0.0f, 0.0f) + , _clPt(0.0F, 0.0F, 0.0F) + , _clDir(0.0F, 0.0F, 0.0F) {} bool PointsGridIterator::InitOnRay(const Base::Vector3d& rclPt, diff --git a/src/Mod/Points/App/PointsGrid.h b/src/Mod/Points/App/PointsGrid.h index 78a6abe4b1..2070e59807 100644 --- a/src/Mod/Points/App/PointsGrid.h +++ b/src/Mod/Points/App/PointsGrid.h @@ -63,8 +63,12 @@ public: PointsGrid(const PointKernel& rclM, double fGridLen); /// Construction PointsGrid(const PointKernel& rclM, unsigned long ulX, unsigned long ulY, unsigned long ulZ); + PointsGrid(const PointsGrid&) = default; + PointsGrid(PointsGrid&&) = default; /// Destruction virtual ~PointsGrid() = default; + PointsGrid& operator=(const PointsGrid&) = default; + PointsGrid& operator=(PointsGrid&&) = default; //@} public: @@ -174,7 +178,7 @@ protected: unsigned long ulDistance, std::set& raclInd) const; -protected: +private: std::vector>>> _aulGrid; /**< Grid data structure. */ const PointKernel* _pclPoints; /**< The point kernel. */ @@ -280,7 +284,7 @@ public: rulZ = _ulZ; } -protected: +private: const PointsGrid& _rclGrid; /**< The point grid. */ unsigned long _ulX {0}; /**< Number of grids in x. */ unsigned long _ulY {0}; /**< Number of grids in y. */ @@ -293,11 +297,10 @@ protected: struct GridElement { GridElement(unsigned long x, unsigned long y, unsigned long z) - { - this->x = x; - this->y = y; - this->z = z; - } + : x {x} + , y {y} + , z {z} + {} bool operator<(const GridElement& pos) const { if (x == pos.x) { @@ -324,7 +327,7 @@ protected: inline Base::BoundBox3d PointsGrid::GetBoundBox(unsigned long ulX, unsigned long ulY, unsigned long ulZ) const { - double fX, fY, fZ; + double fX {}, fY {}, fZ {}; fX = _fMinX + (double(ulX) * _fGridLenX); fY = _fMinY + (double(ulY) * _fGridLenY); diff --git a/src/Mod/Points/App/PointsPyImp.cpp b/src/Mod/Points/App/PointsPyImp.cpp index 16fb08bd0a..e9e0643791 100644 --- a/src/Mod/Points/App/PointsPyImp.cpp +++ b/src/Mod/Points/App/PointsPyImp.cpp @@ -32,10 +32,8 @@ #include "Points.h" // inclusion of the generated files (generated out of PointsPy.xml) -// clang-format off #include "PointsPy.h" #include "PointsPy.cpp" -// clang-format on using namespace Points; @@ -102,7 +100,7 @@ PyObject* PointsPy::copy(PyObject* args) PyObject* PointsPy::read(PyObject* args) { - const char* Name; + const char* Name {}; if (!PyArg_ParseTuple(args, "s", &Name)) { return nullptr; } @@ -118,7 +116,7 @@ PyObject* PointsPy::read(PyObject* args) PyObject* PointsPy::write(PyObject* args) { - const char* Name; + const char* Name {}; if (!PyArg_ParseTuple(args, "s", &Name)) { return nullptr; } @@ -156,7 +154,7 @@ PyObject* PointsPy::writeInventor(PyObject* args) PyObject* PointsPy::addPoints(PyObject* args) { - PyObject* obj; + PyObject* obj {}; if (!PyArg_ParseTuple(args, "O", &obj)) { return nullptr; } @@ -193,7 +191,7 @@ PyObject* PointsPy::addPoints(PyObject* args) PyObject* PointsPy::fromSegment(PyObject* args) { - PyObject* obj; + PyObject* obj {}; if (!PyArg_ParseTuple(args, "O", &obj)) { return nullptr; } diff --git a/src/Mod/Points/App/Properties.h b/src/Mod/Points/App/Properties.h index 9442e68f6e..fc059d111b 100644 --- a/src/Mod/Points/App/Properties.h +++ b/src/Mod/Points/App/Properties.h @@ -156,7 +156,7 @@ private: /** Curvature information. */ struct PointsExport CurvatureInfo { - float fMaxCurvature, fMinCurvature; + float fMaxCurvature {}, fMinCurvature {}; Base::Vector3f cMaxCurvDir, cMinCurvDir; }; diff --git a/src/Mod/Points/Gui/DlgPointsReadImp.cpp b/src/Mod/Points/Gui/DlgPointsReadImp.cpp index 1d42bc04b7..ff9f0384d5 100644 --- a/src/Mod/Points/Gui/DlgPointsReadImp.cpp +++ b/src/Mod/Points/Gui/DlgPointsReadImp.cpp @@ -31,9 +31,9 @@ using namespace PointsGui; DlgPointsReadImp::DlgPointsReadImp(const char* FileName, QWidget* parent, Qt::WindowFlags fl) : QDialog(parent, fl) , ui(new Ui_DlgPointsRead) + , _FileName(FileName) { ui->setupUi(this); - _FileName = FileName; } /* diff --git a/src/Mod/Points/Gui/DlgPointsReadImp.h b/src/Mod/Points/Gui/DlgPointsReadImp.h index 157fad19f9..abe5103fcb 100644 --- a/src/Mod/Points/Gui/DlgPointsReadImp.h +++ b/src/Mod/Points/Gui/DlgPointsReadImp.h @@ -46,6 +46,8 @@ public: private: std::unique_ptr ui; std::string _FileName; + + Q_DISABLE_COPY_MOVE(DlgPointsReadImp) }; } // namespace PointsGui diff --git a/src/Mod/Points/Gui/Resources/translations/Points_fr.ts b/src/Mod/Points/Gui/Resources/translations/Points_fr.ts index 48a32d9775..94d8a32045 100644 --- a/src/Mod/Points/Gui/Resources/translations/Points_fr.ts +++ b/src/Mod/Points/Gui/Resources/translations/Points_fr.ts @@ -155,7 +155,7 @@ Cut points - Couper des points + Enlever des points @@ -173,7 +173,7 @@ Special lines - Ligne spéciales + Lignes spéciales @@ -193,7 +193,7 @@ Cluster by lines starting with: - Ensemble de lignes commençant par : + Regrouper des lignes commençant par : @@ -223,7 +223,7 @@ Points format: - Format de points : + Format des points : @@ -254,21 +254,21 @@ I,J,K (normal vector) - I,J,K (vecteur normal) + I, J, K (vecteur normal) I,K (normal vector 2D) - I,K (vecteur normal 2D) + I, K (vecteur normal 2D) R,G,B (color) - R,V,B (couleur) + R, V, B (couleur) @@ -285,7 +285,7 @@ Number of previewed lines: - Nombre de lignes prévisualisés : + Nombre de lignes prévisualisées : @@ -294,7 +294,7 @@ Point formats - Formats de points + Formats des points @@ -310,7 +310,7 @@ Enter maximum distance: - Entrez la distance maximale : + Entrer la distance maximale : @@ -318,7 +318,7 @@ Points tools - Outils points + Outils des points diff --git a/src/Mod/Points/Gui/ViewProvider.cpp b/src/Mod/Points/Gui/ViewProvider.cpp index b90e8fe7f0..36423a85ed 100644 --- a/src/Mod/Points/Gui/ViewProvider.cpp +++ b/src/Mod/Points/Gui/ViewProvider.cpp @@ -62,7 +62,7 @@ ViewProviderPoints::ViewProviderPoints() { static const char* osgroup = "Object Style"; - ADD_PROPERTY_TYPE(PointSize, (2.0f), osgroup, App::Prop_None, "Set point size"); + ADD_PROPERTY_TYPE(PointSize, (2.0F), osgroup, App::Prop_None, "Set point size"); PointSize.setConstraints(&floatRange); // Create the selection node diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot.ts b/src/Mod/Robot/Gui/Resources/translations/Robot.ts index 3c6badb3b0..b19ef91df4 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection @@ -381,11 +381,11 @@ + - Select one Robot and one Trajectory object. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_be.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_be.ts index f9a98c9346..c76282a92e 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_be.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_be.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Няправільны выбар @@ -381,11 +381,11 @@ Абраць адзін Робат + - Select one Robot and one Trajectory object. Абраць адзін Робат і адну траекторыю аб'екта. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ca.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_ca.ts index 5f8c645615..a02dfefd82 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_ca.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_ca.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Selecció incorrecta @@ -381,11 +381,11 @@ Selecciona un Robot + - Select one Robot and one Trajectory object. Selecciona un Robot i un objecte de trajectòria. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_cs.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_cs.ts index 5642dcf410..561a969ce6 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_cs.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_cs.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Neplatný výběr @@ -381,11 +381,11 @@ Vyberte robota + - Select one Robot and one Trajectory object. Vyberte jednoho robota a objekt jedné trakjektorie. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_de.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_de.ts index e31671a77f..22e49eaf5e 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_de.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_de.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Falsche Auswahl @@ -381,11 +381,11 @@ Einen Roboter auswählen + - Select one Robot and one Trajectory object. Wählen Sie einen Roboter und eine Bewegungsbahn. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_el.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_el.ts index 8da49c9e66..6fc0886aae 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_el.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_el.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Λάθος επιλογή @@ -381,11 +381,11 @@ Επιλέξτε ένα Ρομπότ + - Select one Robot and one Trajectory object. Επιλέξτε ένα Ρομπότ και ένα Αντικείμενο Τροχιάς. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_es-AR.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_es-AR.ts index 687d00e642..da049fd396 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_es-AR.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_es-AR.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Selección Incorrecta @@ -381,11 +381,11 @@ Seleccionar un Robot + - Select one Robot and one Trajectory object. Seleccione un Robot y un objeto de Trayectoria. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.ts index d64118f388..e5b14c54e4 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Selección incorrecta @@ -381,11 +381,11 @@ Seleccione un Robot + - Select one Robot and one Trajectory object. Seleccione un robot y un objeto trayectoria. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts index 79c1f97bd4..3f65cc6252 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Hautapen okerra @@ -381,11 +381,11 @@ Hautatu robot bat + - Select one Robot and one Trajectory object. Hautatu robot bat eta ibilbide-objektu bat. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_fi.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_fi.ts index 8cf2cc0a6a..deac431050 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_fi.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_fi.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Väärä valinta @@ -381,11 +381,11 @@ Valitse yksi robotti + - Select one Robot and one Trajectory object. Valitse yksi robotti ja yksi liikeradan objekti. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_fr.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_fr.ts index fae14135ff..48b5cd1ab7 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_fr.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_fr.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Mauvaise sélection @@ -381,11 +381,11 @@ Sélectionnez un robot + - Select one Robot and one Trajectory object. Sélectionnez un robot et une trajectoire. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_gl.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_gl.ts index 1a27322382..66eb63a7b5 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_gl.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_gl.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Escolma errada @@ -381,11 +381,11 @@ Escolmar un Robot + - Select one Robot and one Trajectory object. Escolmar un robot mais un obxecto traxectoria. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_hr.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_hr.ts index 1f7cf55b61..674e89910e 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_hr.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_hr.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Pogrešan odabir @@ -381,11 +381,11 @@ Odaberite jedan Robot + - Select one Robot and one Trajectory object. Odaberite jedan robot i jedanu putanju objekta. @@ -819,7 +819,7 @@ Type - Tip + Vrsta diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_hu.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_hu.ts index 670290542b..f005c5e35d 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_hu.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_hu.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Rossz kiválasztás @@ -381,11 +381,11 @@ Válasszon ki egy robotot + - Select one Robot and one Trajectory object. Egy Robot és egy útvonal objektum kijelölése. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_id.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_id.ts index 0bff826128..7c543b659b 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_id.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_id.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Pilihan salah @@ -381,11 +381,11 @@ Pilih satu Robot + - Select one Robot and one Trajectory object. Pilih satu Robot dan satu objek lintasan. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_it.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_it.ts index 4414eca537..db5bd61462 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_it.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_it.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Selezione errata @@ -381,11 +381,11 @@ Selezionare un Robot + - Select one Robot and one Trajectory object. Selezionare un Robot e un oggetto Traiettoria. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ja.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_ja.ts index 28c7b889b4..7919f39aab 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_ja.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_ja.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection 誤った選択 @@ -381,11 +381,11 @@ 1台のロボットを選択する + - Select one Robot and one Trajectory object. 1 つのロボットと軌道オブジェクトを 1 つ選択します。 diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ka.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_ka.ts index 33aaaeaf20..37bc1b6f9d 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_ka.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_ka.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection არასწორი არჩევანი @@ -381,11 +381,11 @@ ერთი რობოტის ჩასმა + - Select one Robot and one Trajectory object. აირჩიეთ ერთი რობოტი და ერთი ტრაექტორიის ობიექტი. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ko.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_ko.ts index 89a27ec4f4..204759c62c 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_ko.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_ko.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection 잘못 된 선택 @@ -381,11 +381,11 @@ 로봇 하나 선택하기 + - Select one Robot and one Trajectory object. Select one Robot and one Trajectory object. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_nl.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_nl.ts index f48b0abaa8..fd51839b2f 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_nl.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_nl.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Verkeerde selectie @@ -381,11 +381,11 @@ Selecteer een Robot + - Select one Robot and one Trajectory object. Selecteer één robot en één traject-object. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_pl.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_pl.ts index 4d508b5679..1943bfd16f 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_pl.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_pl.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Nieprawidłowy wybór @@ -381,11 +381,11 @@ Zaznacz jednego Robota + - Select one Robot and one Trajectory object. Wybierz jednego robota i jedną trasę pracy. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.ts index 252d55dbad..4fa4def969 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Seleção errada @@ -381,11 +381,11 @@ Selecione um robô + - Select one Robot and one Trajectory object. Selecione um robô e uma trajetória. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.ts index 423305db44..01eaf72e63 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Seleção errada @@ -381,11 +381,11 @@ Selecione um robô + - Select one Robot and one Trajectory object. Selecionar um Robô e um Objeto da Trajetória diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ro.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_ro.ts index ff7463f704..9f289d875e 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_ro.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_ro.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Selecţie greşită @@ -381,11 +381,11 @@ Selectaţi un Robot + - Select one Robot and one Trajectory object. Selectaţi un obiect Robot şi un obiect de Traiectorie. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ru.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_ru.ts index 6135b1bfc6..6071e0458b 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_ru.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_ru.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Неверный выбор @@ -381,11 +381,11 @@ Выберите одного робота + - Select one Robot and one Trajectory object. Выберите робота и траекторию движения. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sl.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_sl.ts index 26ebc501ec..82c6f1712b 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_sl.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_sl.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Napačen izbor @@ -381,11 +381,11 @@ Izberite enega robota + - Select one Robot and one Trajectory object. Izberite enega robota in eno pot @@ -824,7 +824,7 @@ Name - Ime + Naziv diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sr-CS.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_sr-CS.ts index 9f65287703..f2e30d1d47 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_sr-CS.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_sr-CS.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Pogrešan izbor @@ -381,11 +381,11 @@ Izaberi jednog Robota + - Select one Robot and one Trajectory object. Izaberi jednog Robota i jedan objekat Putanje. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sr.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_sr.ts index 5fb684d63f..11c7752ed1 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_sr.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_sr.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Погрешан избор @@ -381,11 +381,11 @@ Изабери једног Робота + - Select one Robot and one Trajectory object. Изабери једног Робота и један објекат Путање. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.ts index 2ecf140b29..6d0078dd1f 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Fel val @@ -381,11 +381,11 @@ Välj en Robot + - Select one Robot and one Trajectory object. Välj en robot och ett banobjekt. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_tr.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_tr.ts index 8dbaf3739f..e0743df78b 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_tr.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_tr.ts @@ -357,17 +357,17 @@ QObject + + + + + - - - - - Wrong selection Yanlış seçim @@ -382,11 +382,11 @@ Bir Robot seç + - Select one Robot and one Trajectory object. Bir Robot ve bir Yörünge nesnesi seçin. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_uk.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_uk.ts index d3d607219c..fbd1e18c77 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_uk.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_uk.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Невірний вибір @@ -381,11 +381,11 @@ Оберіть одного Робота + - Select one Robot and one Trajectory object. Виберіть один робот і одну траєкторію об'єкта. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.ts index f4ff305278..e57253638a 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection Selecció incorrecta @@ -381,11 +381,11 @@ Seleccioneu un robot + - Select one Robot and one Trajectory object. Seleccioneu un robot i una trajectòria diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.ts index fdb1f14e53..a71e9b6955 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection 选择错误 @@ -381,11 +381,11 @@ 选择一个机器人 + - Select one Robot and one Trajectory object. 选择一个机器人和一个轨迹对象. diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.ts index 6ed8841aeb..0a7ea720ef 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.ts @@ -356,17 +356,17 @@ QObject + + + + + - - - - - Wrong selection 錯誤的選取 @@ -381,11 +381,11 @@ 選取一機器人 + - Select one Robot and one Trajectory object. 選取一個機器人和一軌跡物件 diff --git a/src/Mod/Sandbox/exportDRAWEXE.py b/src/Mod/Sandbox/exportDRAWEXE.py index b86cce5220..f06f4b10fe 100644 --- a/src/Mod/Sandbox/exportDRAWEXE.py +++ b/src/Mod/Sandbox/exportDRAWEXE.py @@ -513,7 +513,7 @@ class Drawexporter(object): curname=nxtname i+=1 elif (isDraftPolygon(ob) and ob.ChamferSize.Value == 0 and\ - ob.FilletRadius.Value == 0 and ob.Support is None) or\ + ob.FilletRadius.Value == 0 and ob.AttachmentSupport is None) or\ ob.TypeId == "Part::Prism" or \ ob.TypeId == "Part::RegularPolygon": if checksupported: return True # The object is supported diff --git a/src/Mod/Sketcher/App/Sketch.cpp b/src/Mod/Sketcher/App/Sketch.cpp index a86d8afcee..bf68f40fae 100644 --- a/src/Mod/Sketcher/App/Sketch.cpp +++ b/src/Mod/Sketcher/App/Sketch.cpp @@ -197,7 +197,7 @@ int Sketch::setUpSketch(const std::vector& GeoList, const std::vector& ConstraintList, int extGeoCount) { - Base::TimeInfo start_time; + Base::TimeElapsed start_time; clear(); @@ -339,10 +339,10 @@ int Sketch::setUpSketch(const std::vector& GeoList, calculateDependentParametersElements(); if (debugMode == GCS::Minimal || debugMode == GCS::IterationLevel) { - Base::TimeInfo end_time; + Base::TimeElapsed end_time; Base::Console().Log("Sketcher::setUpSketch()-T:%s\n", - Base::TimeInfo::diffTime(start_time, end_time).c_str()); + Base::TimeElapsed::diffTime(start_time, end_time).c_str()); } return GCSsys.dofsNumber(); @@ -3206,7 +3206,12 @@ int Sketch::addAngleAtPointConstraint(int geoId1, if (e2e) { tag = ++ConstraintsCounter; GCSsys.addConstraintP2PCoincident(p, *p2, tag, driving); - GCSsys.addConstraintAngleViaPoint(*crv1, *crv2, p, angle, tag, driving); + if (Geoms[geoId1].type == BSpline && Geoms[geoId2].type == BSpline) { + GCSsys.addConstraintAngleViaTwoPoints(*crv1, *crv2, p, *p2, angle, tag, driving); + } + else { + GCSsys.addConstraintAngleViaPoint(*crv1, *crv2, p, angle, tag, driving); + } } if (avp) { tag = ++ConstraintsCounter; @@ -4533,21 +4538,21 @@ bool Sketch::updateNonDrivingConstraints() int Sketch::solve() { - Base::TimeInfo start_time; + Base::TimeElapsed start_time; std::string solvername; auto result = internalSolve(solvername); - Base::TimeInfo end_time; + Base::TimeElapsed end_time; if (debugMode == GCS::Minimal || debugMode == GCS::IterationLevel) { Base::Console().Log("Sketcher::Solve()-%s-T:%s\n", solvername.c_str(), - Base::TimeInfo::diffTime(start_time, end_time).c_str()); + Base::TimeElapsed::diffTime(start_time, end_time).c_str()); } - SolveTime = Base::TimeInfo::diffTimeF(start_time, end_time); + SolveTime = Base::TimeElapsed::diffTimeF(start_time, end_time); return result; } diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index ba972818a1..ecb6c9abe6 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -2065,7 +2065,7 @@ int SketchObject::transferConstraints(int fromGeoId, PointPos fromPosId, int toG return 0; } -int SketchObject::fillet(int GeoId, PointPos PosId, double radius, bool trim, bool createCorner) +int SketchObject::fillet(int GeoId, PointPos PosId, double radius, bool trim, bool createCorner, bool chamfer) { if (GeoId < 0 || GeoId > getHighestCurveIndex()) return -1; @@ -2081,12 +2081,12 @@ int SketchObject::fillet(int GeoId, PointPos PosId, double radius, bool trim, bo const Part::Geometry* geo2 = getGeometry(GeoIdList[1]); if (geo1->is() && geo2->is()) { - const Part::GeomLineSegment* lineSeg1 = static_cast(geo1); - const Part::GeomLineSegment* lineSeg2 = static_cast(geo2); + auto* lineSeg1 = static_cast(geo1); + auto* lineSeg2 = static_cast(geo2); Base::Vector3d midPnt1 = (lineSeg1->getStartPoint() + lineSeg1->getEndPoint()) / 2; Base::Vector3d midPnt2 = (lineSeg2->getStartPoint() + lineSeg2->getEndPoint()) / 2; - return fillet(GeoIdList[0], GeoIdList[1], midPnt1, midPnt2, radius, trim, createCorner); + return fillet(GeoIdList[0], GeoIdList[1], midPnt1, midPnt2, radius, trim, createCorner, chamfer); } } @@ -2094,11 +2094,11 @@ int SketchObject::fillet(int GeoId, PointPos PosId, double radius, bool trim, bo } int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, - const Base::Vector3d& refPnt2, double radius, bool trim, bool createCorner) + const Base::Vector3d& refPnt2, double radius, bool trim, bool createCorner, bool chamfer) { - if (GeoId1 < 0 || GeoId1 > getHighestCurveIndex() || GeoId2 < 0 - || GeoId2 > getHighestCurveIndex()) + if (GeoId1 < 0 || GeoId1 > getHighestCurveIndex() || GeoId2 < 0 || GeoId2 > getHighestCurveIndex()) { return -1; + } // If either of the two input lines are locked, don't try to trim since it won't work anyway const Part::Geometry* geo1 = getGeometry(GeoId1); @@ -2107,14 +2107,19 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, trim = false; } - if (geo1->is() - && geo2->is()) { - const Part::GeomLineSegment* lineSeg1 = static_cast(geo1); - const Part::GeomLineSegment* lineSeg2 = static_cast(geo2); + Base::Vector3d p1, p2; + PointPos PosId1 = PointPos::none; + PointPos PosId2 = PointPos::none; + int filletId; + + if (geo1->is() && geo2->is()) { + auto* lineSeg1 = static_cast(geo1); + auto* lineSeg2 = static_cast(geo2); Base::Vector3d filletCenter; - if (!Part::findFilletCenter(lineSeg1, lineSeg2, radius, refPnt1, refPnt2, filletCenter)) + if (!Part::findFilletCenter(lineSeg1, lineSeg2, radius, refPnt1, refPnt2, filletCenter)) { return -1; + } Base::Vector3d dir1 = lineSeg1->getEndPoint() - lineSeg1->getStartPoint(); Base::Vector3d dir2 = lineSeg2->getEndPoint() - lineSeg2->getStartPoint(); @@ -2123,27 +2128,27 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, Base::Vector3d intersection, dist1, dist2; // create arc from known parameters and lines - int filletId; std::unique_ptr arc( Part::createFilletGeometry(lineSeg1, lineSeg2, filletCenter, radius)); - if (!arc) + if (!arc) { return -1; + } // calculate intersection and distances before we invalidate lineSeg1 and lineSeg2 if (!find2DLinesIntersection(lineSeg1, lineSeg2, intersection)) { return -1; } + p1 = arc->getStartPoint(); + p2 = arc->getEndPoint(); + dist1.ProjectToLine(arc->getStartPoint(/*emulateCCW=*/true) - intersection, dir1); dist2.ProjectToLine(arc->getStartPoint(/*emulateCCW=*/true) - intersection, dir2); - Part::Geometry* newgeo = arc.get(); - filletId = addGeometry(newgeo); + filletId = addGeometry(arc.get()); if (trim) { - PointPos PosId1 = - (filletCenter - intersection) * dir1 > 0 ? PointPos::start : PointPos::end; - PointPos PosId2 = - (filletCenter - intersection) * dir2 > 0 ? PointPos::start : PointPos::end; + PosId1 = (filletCenter - intersection) * dir1 > 0 ? PointPos::start : PointPos::end; + PosId2 = (filletCenter - intersection) * dir2 > 0 ? PointPos::start : PointPos::end; if (createCorner) { transferFilletConstraints(GeoId1, PosId1, GeoId2, PosId2); @@ -2182,16 +2187,8 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, addConstraint(std::move(tangent1)); addConstraint(std::move(tangent2)); } - - // if we do not have a recompute after the geometry creation, the sketch must be solved to - // update the DoF of the solver - if (noRecomputes) - solve(); - - return 0; } - else if (geo1->isDerivedFrom() - && geo2->isDerivedFrom()) { + else if (geo1->isDerivedFrom() && geo2->isDerivedFrom()) { auto distancetorefpoints = [](Base::Vector3d ip1, Base::Vector3d ip2, Base::Vector3d ref1, Base::Vector3d ref2) { @@ -2284,40 +2281,35 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, // look for coincident constraints between curves, take the coincident closest to the // refpoints - Sketcher::PointPos curve1PosId = Sketcher::PointPos::none; - Sketcher::PointPos curve2PosId = Sketcher::PointPos::none; - double dist = INFINITY; const std::vector& constraints = this->Constraints.getValues(); - for (std::vector::const_iterator it = constraints.begin(); - it != constraints.end(); - ++it) { - if ((*it)->Type == Sketcher::Coincident || (*it)->Type == Sketcher::Perpendicular - || (*it)->Type == Sketcher::Tangent) { - if ((*it)->First == GeoId1 && (*it)->Second == GeoId2 - && (*it)->FirstPos != Sketcher::PointPos::none - && (*it)->SecondPos != Sketcher::PointPos::none) { - Base::Vector3d tmpp1 = getPoint((*it)->First, (*it)->FirstPos); - Base::Vector3d tmpp2 = getPoint((*it)->Second, (*it)->SecondPos); + for (auto& constr : constraints) { + if (constr->Type == Sketcher::Coincident || constr->Type == Sketcher::Perpendicular + || constr->Type == Sketcher::Tangent) { + if (constr->First == GeoId1 && constr->Second == GeoId2 + && constr->FirstPos != PointPos::none + && constr->SecondPos != PointPos::none) { + Base::Vector3d tmpp1 = getPoint(constr->First, constr->FirstPos); + Base::Vector3d tmpp2 = getPoint(constr->Second, constr->SecondPos); double tmpdist = distancetorefpoints(tmpp1, tmpp2, refPnt1, refPnt2); if (tmpdist < dist) { - curve1PosId = (*it)->FirstPos; - curve2PosId = (*it)->SecondPos; + PosId1 = constr->FirstPos; + PosId2 = constr->SecondPos; dist = tmpdist; interpoints = std::make_pair(tmpp1, tmpp2); } } - else if ((*it)->First == GeoId2 && (*it)->Second == GeoId1 - && (*it)->FirstPos != Sketcher::PointPos::none - && (*it)->SecondPos != Sketcher::PointPos::none) { - Base::Vector3d tmpp2 = getPoint((*it)->First, (*it)->FirstPos); - Base::Vector3d tmpp1 = getPoint((*it)->Second, (*it)->SecondPos); + else if (constr->First == GeoId2 && constr->Second == GeoId1 + && constr->FirstPos != PointPos::none + && constr->SecondPos != PointPos::none) { + Base::Vector3d tmpp2 = getPoint(constr->First, constr->FirstPos); + Base::Vector3d tmpp1 = getPoint(constr->Second, constr->SecondPos); double tmpdist = distancetorefpoints(tmpp1, tmpp2, refPnt1, refPnt2); if (tmpdist < dist) { - curve2PosId = (*it)->FirstPos; - curve1PosId = (*it)->SecondPos; + PosId2 = constr->FirstPos; + PosId1 = constr->SecondPos; dist = tmpdist; interpoints = std::make_pair(tmpp1, tmpp2); } @@ -2325,15 +2317,13 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, } } - if (curve1PosId == Sketcher::PointPos::none) { + if (PosId1 == PointPos::none) { // no coincident was found, try basis curve intersection if GeomTrimmedCurve - if (geo1->isDerivedFrom(Part::GeomTrimmedCurve::getClassTypeId()) - && geo2->isDerivedFrom(Part::GeomTrimmedCurve::getClassTypeId())) { + if (geo1->isDerivedFrom() + && geo2->isDerivedFrom()) { - const Part::GeomTrimmedCurve* tcurve1 = - static_cast(geo1); - const Part::GeomTrimmedCurve* tcurve2 = - static_cast(geo2); + auto* tcurve1 =static_cast(geo1); + auto* tcurve2 = static_cast(geo2); try { if (!tcurve1->intersectBasisCurves(tcurve2, points)) @@ -2350,11 +2340,13 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, int res = selectintersection(points, interpoints, refPnt1, refPnt2); - if (res != 0) + if (res != 0) { return res; + } } - else + else { return -1;// not a GeomTrimmedCurve and no coincident point. + } } // Now that we know where the curves intersect, get the parameters in the curves of those @@ -2363,8 +2355,9 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, double intparam2; try { - if (!curve1->closestParameter(interpoints.first, intparam1)) + if (!curve1->closestParameter(interpoints.first, intparam1)) { return -1; + } } catch (Base::CADKernelError& e) { e.ReportException(); @@ -2374,8 +2367,9 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, } try { - if (!curve2->closestParameter(interpoints.second, intparam2)) + if (!curve2->closestParameter(interpoints.second, intparam2)) { return -1; + } } catch (Base::CADKernelError& e) { e.ReportException(); @@ -2439,8 +2433,7 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, / det, 0); - radius = - ((refp1 - normalintersect).Length() + (refp2 - normalintersect).Length()) / 2; + radius = ((refp1 - normalintersect).Length() + (refp2 - normalintersect).Length()) / 2; } catch (const Base::Exception&) { radius = ref21.Length();// fall-back to simplest estimation. @@ -2543,8 +2536,9 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, int res = selectintersection(offsetintersectionpoints, filletcenterpoint, refPnt1, refPnt2); - if (res != 0) + if (res != 0) { return res; + } #ifdef DEBUG Base::Console().Log( @@ -2555,8 +2549,9 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, double refoparam2; try { - if (!curve1->closestParameter(filletcenterpoint.first, refoparam1)) + if (!curve1->closestParameter(filletcenterpoint.first, refoparam1)) { return -1; + } } catch (Base::CADKernelError& e) { e.ReportException(); @@ -2564,8 +2559,9 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, } try { - if (!curve2->closestParameter(filletcenterpoint.second, refoparam2)) + if (!curve2->closestParameter(filletcenterpoint.second, refoparam2)) { return -1; + } } catch (Base::CADKernelError& e) { e.ReportException(); @@ -2599,25 +2595,29 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, endAngle = startAngle + range; - if (endAngle < startAngle) + if (endAngle < startAngle) { std::swap(startAngle, endAngle); + } - if (endAngle > 2 * M_PI) + if (endAngle > 2 * M_PI) { endAngle -= 2 * M_PI; + } - if (startAngle < 0) + if (startAngle < 0) { endAngle += 2 * M_PI; + } // Create Arc Segment - Part::GeomArcOfCircle* arc = new Part::GeomArcOfCircle(); + auto* arc = new Part::GeomArcOfCircle(); arc->setRadius(radDir1.Length()); arc->setCenter(filletcenterpoint.first); arc->setRange(startAngle, endAngle, /*emulateCCWXY=*/true); + p1 = arc->getStartPoint(); + p2 = arc->getEndPoint(); + // add arc to sketch geometry - int filletId; - Part::Geometry* newgeo = arc; - filletId = addGeometry(newgeo); + filletId = addGeometry(arc); if (filletId < 0) { delete arc; return -1; @@ -2639,27 +2639,27 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, // b) we used the basis curve intersection - if (curve1PosId == Sketcher::PointPos::none) { - curve1PosId = selectend(intparam1, refoparam1, spc1); - curve2PosId = selectend(intparam2, refoparam2, spc2); + if (PosId1 == Sketcher::PointPos::none) { + PosId1 = selectend(intparam1, refoparam1, spc1); + PosId2 = selectend(intparam2, refoparam2, spc2); } - delConstraintOnPoint(GeoId1, curve1PosId, false); - delConstraintOnPoint(GeoId2, curve2PosId, false); + delConstraintOnPoint(GeoId1, PosId1, false); + delConstraintOnPoint(GeoId2, PosId2, false); - Sketcher::Constraint* tangent1 = new Sketcher::Constraint(); - Sketcher::Constraint* tangent2 = new Sketcher::Constraint(); + auto* tangent1 = new Sketcher::Constraint(); + auto* tangent2 = new Sketcher::Constraint(); tangent1->Type = Sketcher::Tangent; tangent1->First = GeoId1; - tangent1->FirstPos = curve1PosId; + tangent1->FirstPos = PosId1; tangent1->Second = filletId; tangent2->Type = Sketcher::Tangent; tangent2->First = GeoId2; - tangent2->FirstPos = curve2PosId; + tangent2->FirstPos = PosId2; tangent2->Second = filletId; double dist1 = (refp1 - arc->getStartPoint(true)).Length(); @@ -2670,14 +2670,14 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, if (dist1 < dist2) { tangent1->SecondPos = PointPos::start; tangent2->SecondPos = PointPos::end; - movePoint(GeoId1, curve1PosId, arc->getStartPoint(true), false, true); - movePoint(GeoId2, curve2PosId, arc->getEndPoint(true), false, true); + movePoint(GeoId1, PosId1, arc->getStartPoint(true), false, true); + movePoint(GeoId2, PosId2, arc->getEndPoint(true), false, true); } else { tangent1->SecondPos = PointPos::end; tangent2->SecondPos = PointPos::start; - movePoint(GeoId1, curve1PosId, arc->getEndPoint(true), false, true); - movePoint(GeoId2, curve2PosId, arc->getStartPoint(true), false, true); + movePoint(GeoId1, PosId1, arc->getEndPoint(true), false, true); + movePoint(GeoId2, PosId2, arc->getStartPoint(true), false, true); } addConstraint(tangent1); @@ -2692,15 +2692,53 @@ int SketchObject::fillet(int GeoId1, int GeoId2, const Base::Vector3d& refPnt1, #ifdef DEBUG Base::Console().Log("\n\nEND OF FILLET DEBUG\n\n"); #endif - - // if we do not have a recompute after the geometry creation, the sketch must be solved to - // update the DoF of the solver - if (noRecomputes) - solve(); - - return 0; } - return -1; + else { + return -1; + } + + if (chamfer) { + auto line = std::make_unique(); + line->setPoints(p1, p2); + int lineGeoId = addGeometry(line.get()); + + auto coinc1 = std::make_unique(); + auto coinc2 = std::make_unique(); + + coinc1->Type = Sketcher::Coincident; + coinc1->First = lineGeoId; + coinc1->FirstPos = PointPos::start; + + coinc2->Type = Sketcher::Coincident; + coinc2->First = lineGeoId; + coinc2->FirstPos = PointPos::end; + + if (trim) { + coinc1->Second = GeoId1; + coinc1->SecondPos = PosId1; + coinc2->Second = GeoId2; + coinc2->SecondPos = PosId2; + } + else { + coinc1->Second = filletId; + coinc1->SecondPos = PointPos::start; + coinc2->Second = filletId; + coinc2->SecondPos = PointPos::end; + } + + addConstraint(std::move(coinc1)); + addConstraint(std::move(coinc2)); + + setConstruction(filletId, true); + } + + // if we do not have a recompute after the geometry creation, the sketch must be solved to + // update the DoF of the solver + if (noRecomputes) { + solve(); + } + + return 0; } int SketchObject::extend(int GeoId, double increment, PointPos endpoint) @@ -3840,7 +3878,7 @@ int SketchObject::split(int GeoId, const Base::Vector3d& point) return -1; } -int SketchObject::join(int geoId1, Sketcher::PointPos posId1, int geoId2, Sketcher::PointPos posId2) +int SketchObject::join(int geoId1, Sketcher::PointPos posId1, int geoId2, Sketcher::PointPos posId2, int continuity) { // No need to check input data validity as this is an sketchobject managed operation @@ -3901,7 +3939,25 @@ int SketchObject::join(int geoId1, Sketcher::PointPos posId1, int geoId2, Sketch else if (bsp2->getDegree() < bsp1->getDegree()) bsp2->increaseDegree(bsp1->getDegree()); - // TODO: set up vectors for new poles, knots, mults + // TODO: Check for tangent constraint here + bool makeC1Continuous = (continuity >= 1); + + // TODO: Rescale one or both sections to fulfill some purpose. + // This could include making param between [0,1], and/or making + // C1 continuity possible. + if (makeC1Continuous) { + // We assume here that there is already G1 continuity. + // Just scale parameters to get C1. + Base::Vector3d slope1 = bsp1->firstDerivativeAtParameter(bsp1->getLastParameter()); + Base::Vector3d slope2 = bsp2->firstDerivativeAtParameter(bsp2->getFirstParameter()); + // TODO: slope2 can technically be a zero vector + // But that seems not possible unless the spline is trivial. + // Prove or account for the possibility. + double scale = slope2.Length() / slope1.Length(); + bsp2->scaleKnotsToBounds(0, scale * (bsp2->getLastParameter() - bsp2->getFirstParameter())); + } + + // set up vectors for new poles, knots, mults std::vector poles1 = bsp1->getPoles(); std::vector weights1 = bsp1->getWeights(); std::vector knots1 = bsp1->getKnots(); @@ -3916,13 +3972,18 @@ int SketchObject::join(int geoId1, Sketcher::PointPos posId1, int geoId2, Sketch std::vector newKnots(std::move(knots1)); std::vector newMults(std::move(mults1)); + poles2.erase(poles2.begin()); + if (makeC1Continuous) + newPoles.erase(newPoles.end()-1); newPoles.insert(newPoles.end(), std::make_move_iterator(poles2.begin()), std::make_move_iterator(poles2.end())); // TODO: Weights might need to be scaled weights2.erase(weights2.begin()); + if (makeC1Continuous) + newWeights.erase(newWeights.end()-1); newWeights.insert(newWeights.end(), std::make_move_iterator(weights2.begin()), std::make_move_iterator(weights2.end())); @@ -3937,8 +3998,15 @@ int SketchObject::join(int geoId1, Sketcher::PointPos posId1, int geoId2, Sketch std::make_move_iterator(knots2.end())); // end knots can have a multiplicity of (degree + 1) - if (bsp1->getDegree() < newMults.back()) - newMults.back() = bsp1->getDegree(); + if (bsp1->getDegree() < newMults.back()) { + if (makeC1Continuous) { + newMults.back() = bsp1->getDegree()-1; + } + else { + newMults.back() = bsp1->getDegree(); + } + } + mults2.erase(mults2.begin()); newMults.insert(newMults.end(), std::make_move_iterator(mults2.begin()), @@ -4003,7 +4071,7 @@ bool SketchObject::isExternalAllowed(App::Document* pDoc, App::DocumentObject* p // Note: Checking for the body of the support doesn't work when the support are the three base // planes - // App::DocumentObject *support = this->Support.getValue(); + // App::DocumentObject *support = this->AttachmentSupport.getValue(); Part::BodyBase* body_this = Part::BodyBase::findBodyOf(this); Part::BodyBase* body_obj = Part::BodyBase::findBodyOf(pObj); App::Part* part_this = App::Part::getPartOfObject(this); @@ -4068,7 +4136,7 @@ bool SketchObject::isCarbonCopyAllowed(App::Document* pDoc, App::DocumentObject* // Note: Checking for the body of the support doesn't work when the support are the three base // planes - // App::DocumentObject *support = this->Support.getValue(); + // App::DocumentObject *support = this->AttachmentSupport.getValue(); Part::BodyBase* body_this = Part::BodyBase::findBodyOf(this); Part::BodyBase* body_obj = Part::BodyBase::findBodyOf(pObj); App::Part* part_this = App::Part::getPartOfObject(this); @@ -7375,7 +7443,7 @@ Part::Geometry* projectLine(const BRepAdaptor_Curve& curve, const Handle(Geom_Pl bool SketchObject::evaluateSupport() { // returns false if the shape is broken, null or non-planar - App::DocumentObject* link = Support.getValue(); + App::DocumentObject* link = AttachmentSupport.getValue(); if (!link || !link->isDerivedFrom()) return false; return true; @@ -8331,6 +8399,20 @@ void SketchObject::getDirectlyCoincidentPoints(int GeoId, PointPos PosId, PosIdList.push_back((*it)->FirstPos); } } + if ((*it)->Type == Sketcher::Tangent) { + if ((*it)->First == GeoId && (*it)->FirstPos == PosId && + ((*it)->SecondPos == Sketcher::PointPos::start || + (*it)->SecondPos == Sketcher::PointPos::end)) { + GeoIdList.push_back((*it)->Second); + PosIdList.push_back((*it)->SecondPos); + } + if ((*it)->Second == GeoId && (*it)->SecondPos == PosId && + ((*it)->FirstPos == Sketcher::PointPos::start || + (*it)->FirstPos == Sketcher::PointPos::end)) { + GeoIdList.push_back((*it)->First); + PosIdList.push_back((*it)->FirstPos); + } + } } if (GeoIdList.size() == 1) { GeoIdList.clear(); @@ -8863,7 +8945,7 @@ void SketchObject::onChanged(const App::Property* prop) #if 0 // For now do not delete anything (#0001791). When changing the support // face it might be better to check which external geometries can be kept. - else if (prop == &Support) { + else if (prop == &AttachmentSupport) { // make sure not to change anything while restoring this object if (!isRestoring()) { // if support face has changed then clear the external geometry diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index 8a72250b67..5d748bdadb 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -323,8 +323,12 @@ public: \param createCorner - keep geoId/pos as a Point and keep as many constraints as possible \retval - 0 on success, -1 on failure */ - int - fillet(int geoId, PointPos pos, double radius, bool trim = true, bool preserveCorner = false); + int fillet(int geoId, + PointPos pos, + double radius, + bool trim = true, + bool preserveCorner = false, + bool chamfer = false); /*! \brief More general form of fillet \param geoId1, geoId2 - geoId for two lines (which don't necessarily have to coincide) @@ -340,7 +344,8 @@ public: const Base::Vector3d& refPnt2, double radius, bool trim = true, - bool createCorner = false); + bool createCorner = false, + bool chamfer = false); /// trim a curve int trim(int geoId, const Base::Vector3d& point); @@ -354,7 +359,11 @@ public: \param geoId1, posId1, geoId2, posId2: the end points to join \retval - 0 on success, -1 on failure */ - int join(int geoId1, Sketcher::PointPos posId1, int geoId2, Sketcher::PointPos posId2); + int join(int geoId1, + Sketcher::PointPos posId1, + int geoId2, + Sketcher::PointPos posId2, + int continuity = 0); /// adds symmetric geometric elements with respect to the refGeoId (line or point) int addSymmetric(const std::vector& geoIdList, diff --git a/src/Mod/Sketcher/App/SketchObjectPyImp.cpp b/src/Mod/Sketcher/App/SketchObjectPyImp.cpp index ee192870f5..54d2eac944 100644 --- a/src/Mod/Sketcher/App/SketchObjectPyImp.cpp +++ b/src/Mod/Sketcher/App/SketchObjectPyImp.cpp @@ -1196,11 +1196,12 @@ PyObject* SketchObjectPy::fillet(PyObject* args) int geoId1, geoId2, posId1; int trim = true; PyObject* createCorner = Py_False; + PyObject* chamfer = Py_False; double radius; // Two Lines, radius if (PyArg_ParseTuple(args, - "iiO!O!d|iO!", + "iiO!O!d|iO!O!", &geoId1, &geoId2, &(Base::VectorPy::Type), @@ -1210,15 +1211,23 @@ PyObject* SketchObjectPy::fillet(PyObject* args) &radius, &trim, &PyBool_Type, - &createCorner)) { + &createCorner, + &PyBool_Type, + &chamfer)) { // The i for &trim should probably have been a bool like &createCorner, but we'll leave it // an int for backward compatibility (and because python will accept a bool there anyway) Base::Vector3d v1 = static_cast(pcObj1)->value(); Base::Vector3d v2 = static_cast(pcObj2)->value(); - if (this->getSketchObjectPtr() - ->fillet(geoId1, geoId2, v1, v2, radius, trim, Base::asBoolean(createCorner))) { + if (this->getSketchObjectPtr()->fillet(geoId1, + geoId2, + v1, + v2, + radius, + trim, + Base::asBoolean(createCorner), + Base::asBoolean(chamfer))) { std::stringstream str; str << "Not able to fillet curves with ids : (" << geoId1 << ", " << geoId2 << ") and points (" << v1.x << ", " << v1.y << ", " << v1.z << ") & " @@ -1232,18 +1241,21 @@ PyObject* SketchObjectPy::fillet(PyObject* args) PyErr_Clear(); // Point, radius if (PyArg_ParseTuple(args, - "iid|iO!", + "iid|iO!O!", &geoId1, &posId1, &radius, &trim, &PyBool_Type, - &createCorner)) { + &createCorner, + &PyBool_Type, + &chamfer)) { if (this->getSketchObjectPtr()->fillet(geoId1, static_cast(posId1), radius, trim, - Base::asBoolean(createCorner))) { + Base::asBoolean(createCorner), + Base::asBoolean(chamfer))) { std::stringstream str; str << "Not able to fillet point with ( geoId: " << geoId1 << ", PointPos: " << posId1 << " )"; @@ -1336,15 +1348,17 @@ PyObject* SketchObjectPy::join(PyObject* args) int GeoId1(Sketcher::GeoEnum::GeoUndef), GeoId2(Sketcher::GeoEnum::GeoUndef); int PosId1 = static_cast(Sketcher::PointPos::none), PosId2 = static_cast(Sketcher::PointPos::none); + int continuity = 0; - if (!PyArg_ParseTuple(args, "iiii", &GeoId1, &PosId1, &GeoId2, &PosId2)) { + if (!PyArg_ParseTuple(args, "iiii|i", &GeoId1, &PosId1, &GeoId2, &PosId2, &continuity)) { return nullptr; } if (this->getSketchObjectPtr()->join(GeoId1, (Sketcher::PointPos)PosId1, GeoId2, - (Sketcher::PointPos)PosId2)) { + (Sketcher::PointPos)PosId2, + continuity)) { std::stringstream str; str << "Not able to join the curves with end points: (" << GeoId1 << ", " << PosId1 << "), (" << GeoId2 << ", " << PosId2 << ")"; diff --git a/src/Mod/Sketcher/App/planegcs/Constraints.cpp b/src/Mod/Sketcher/App/planegcs/Constraints.cpp index f99bfbb69d..5a66be5bee 100644 --- a/src/Mod/Sketcher/App/planegcs/Constraints.cpp +++ b/src/Mod/Sketcher/App/planegcs/Constraints.cpp @@ -2650,6 +2650,108 @@ double ConstraintAngleViaPoint::grad(double* param) return scale * deriv; } +// -------------------------------------------------------- +// ConstraintAngleViaTwoPoints +ConstraintAngleViaTwoPoints::ConstraintAngleViaTwoPoints(Curve& acrv1, + Curve& acrv2, + Point p1, + Point p2, + double* angle) +{ + pvec.push_back(angle); + pvec.push_back(p1.x); + pvec.push_back(p1.y); + pvec.push_back(p2.x); + pvec.push_back(p2.y); + acrv1.PushOwnParams(pvec); + acrv2.PushOwnParams(pvec); + crv1 = acrv1.Copy(); + crv2 = acrv2.Copy(); + origpvec = pvec; + pvecChangedFlag = true; + rescale(); +} + +ConstraintAngleViaTwoPoints::~ConstraintAngleViaTwoPoints() +{ + delete crv1; + crv1 = nullptr; + delete crv2; + crv2 = nullptr; +} + +void ConstraintAngleViaTwoPoints::ReconstructGeomPointers() +{ + int cnt = 0; + cnt++; // skip angle - we have an inline function for that + poa1.x = pvec[cnt]; + cnt++; + poa1.y = pvec[cnt]; + cnt++; + poa2.x = pvec[cnt]; + cnt++; + poa2.y = pvec[cnt]; + cnt++; + crv1->ReconstructOnNewPvec(pvec, cnt); + crv2->ReconstructOnNewPvec(pvec, cnt); + pvecChangedFlag = false; +} + +ConstraintType ConstraintAngleViaTwoPoints::getTypeId() +{ + return AngleViaTwoPoints; +} + +void ConstraintAngleViaTwoPoints::rescale(double coef) +{ + scale = coef * 1.; +} + +double ConstraintAngleViaTwoPoints::error() +{ + if (pvecChangedFlag) { + ReconstructGeomPointers(); + } + double ang = *angle(); + DeriVector2 n1 = crv1->CalculateNormal(poa1); + DeriVector2 n2 = crv2->CalculateNormal(poa2); + + // rotate n1 by angle + DeriVector2 n1r(n1.x * cos(ang) - n1.y * sin(ang), n1.x * sin(ang) + n1.y * cos(ang)); + + // calculate angle between n1r and n2. Since we have rotated the n1, the angle is the error + // function. for our atan2, y is a dot product (n2) * (n1r rotated ccw by 90 degrees). + // x is a dot product (n2) * (n1r) + double err = atan2(-n2.x * n1r.y + n2.y * n1r.x, n2.x * n1r.x + n2.y * n1r.y); + // essentially, the function is equivalent to atan2(n2)-(atan2(n1)+angle). The only difference + // is behavior when normals are zero (the intended result is also zero in this case). + return scale * err; +} + +double ConstraintAngleViaTwoPoints::grad(double* param) +{ + // first of all, check that we need to compute anything. + if (findParamInPvec(param) == -1) { + return 0.0; + } + + double deriv = 0.; + + if (pvecChangedFlag) { + ReconstructGeomPointers(); + } + + if (param == angle()) { + deriv += -1.0; + } + DeriVector2 n1 = crv1->CalculateNormal(poa1, param); + DeriVector2 n2 = crv2->CalculateNormal(poa2, param); + deriv -= ((-n1.dx) * n1.y / pow(n1.length(), 2) + n1.dy * n1.x / pow(n1.length(), 2)); + deriv += ((-n2.dx) * n2.y / pow(n2.length(), 2) + n2.dy * n2.x / pow(n2.length(), 2)); + + return scale * deriv; +} + // -------------------------------------------------------- // ConstraintAngleViaPointAndParam ConstraintAngleViaPointAndParam::ConstraintAngleViaPointAndParam(Curve& acrv1, diff --git a/src/Mod/Sketcher/App/planegcs/Constraints.h b/src/Mod/Sketcher/App/planegcs/Constraints.h index d092789e96..017165ca6f 100644 --- a/src/Mod/Sketcher/App/planegcs/Constraints.h +++ b/src/Mod/Sketcher/App/planegcs/Constraints.h @@ -80,7 +80,8 @@ enum ConstraintType C2LDistance = 31, P2CDistance = 32, AngleViaPointAndParam = 33, - AngleViaPointAndTwoParams = 34 + AngleViaPointAndTwoParams = 34, + AngleViaTwoPoints = 35 }; enum InternalAlignmentType @@ -1126,6 +1127,41 @@ public: double grad(double*) override; }; +class ConstraintAngleViaTwoPoints: public Constraint +{ +private: + inline double* angle() + { + return pvec[0]; + }; + Curve* crv1; + Curve* crv2; + // These two pointers hold copies of the curves that were passed on + // constraint creation. The curves must be deleted upon destruction of + // the constraint. It is necessary to have copies, since messing with + // original objects that were passed is a very bad idea (but messing is + // necessary, because we need to support redirectParams()/revertParams + // functions. + // The pointers in the curves need to be reconstructed if pvec was redirected + // (test pvecChangedFlag variable before use!) + // poa=point of angle //needs to be reconstructed if pvec was redirected/reverted. The points + // are easily shallow-copied by C++, so no pointer type here and no delete is necessary. We use + // two points in this method as a workaround for B-splines (and friends). There, normals at + // general points are not implemented, just at their stored start/end points. + Point poa1; + Point poa2; + // writes pointers in pvec to the parameters of crv1, crv2 and poa + void ReconstructGeomPointers(); + +public: + ConstraintAngleViaTwoPoints(Curve& acrv1, Curve& acrv2, Point p1, Point p2, double* angle); + ~ConstraintAngleViaTwoPoints() override; + ConstraintType getTypeId() override; + void rescale(double coef = 1.) override; + double error() override; + double grad(double*) override; +}; + // snell's law angles constrainer. Point needs to lie on all three curves to be constraied. class ConstraintSnell: public Constraint { diff --git a/src/Mod/Sketcher/App/planegcs/GCS.cpp b/src/Mod/Sketcher/App/planegcs/GCS.cpp index c7e9a19d96..cb87fc5892 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.cpp +++ b/src/Mod/Sketcher/App/planegcs/GCS.cpp @@ -774,6 +774,20 @@ int System::addConstraintAngleViaPoint(Curve& crv1, return addConstraint(constr); } +int System::addConstraintAngleViaTwoPoints(Curve& crv1, + Curve& crv2, + Point& p1, + Point& p2, + double* angle, + int tagId, + bool driving) +{ + Constraint* constr = new ConstraintAngleViaTwoPoints(crv1, crv2, p1, p2, angle); + constr->setTag(tagId); + constr->setDriving(driving); + return addConstraint(constr); +} + int System::addConstraintAngleViaPointAndParam(Curve& crv1, Curve& crv2, Point& p, @@ -5029,7 +5043,7 @@ int System::diagnose(Algorithm alg) if (qrAlgorithm == EigenDenseQR) { #ifdef PROFILE_DIAGNOSE - Base::TimeInfo DenseQR_start_time; + Base::TimeElapsed DenseQR_start_time; #endif if (J.rows() > 0) { int rank = 0; // rank is not cheap to retrieve from qrJT in DenseQR @@ -5087,9 +5101,9 @@ int System::diagnose(Algorithm alg) } } #ifdef PROFILE_DIAGNOSE - Base::TimeInfo DenseQR_end_time; + Base::TimeElapsed DenseQR_end_time; - auto SolveTime = Base::TimeInfo::diffTimeF(DenseQR_start_time, DenseQR_end_time); + auto SolveTime = Base::TimeElapsed::diffTimeF(DenseQR_start_time, DenseQR_end_time); Base::Console().Log("\nDenseQR - Lapsed Time: %f seconds\n", SolveTime); #endif @@ -5098,7 +5112,7 @@ int System::diagnose(Algorithm alg) #ifdef EIGEN_SPARSEQR_COMPATIBLE else if (qrAlgorithm == EigenSparseQR) { #ifdef PROFILE_DIAGNOSE - Base::TimeInfo SparseQR_start_time; + Base::TimeElapsed SparseQR_start_time; #endif if (J.rows() > 0) { int rank = 0; @@ -5164,9 +5178,9 @@ int System::diagnose(Algorithm alg) } #ifdef PROFILE_DIAGNOSE - Base::TimeInfo SparseQR_end_time; + Base::TimeElapsed SparseQR_end_time; - auto SolveTime = Base::TimeInfo::diffTimeF(SparseQR_start_time, SparseQR_end_time); + auto SolveTime = Base::TimeElapsed::diffTimeF(SparseQR_start_time, SparseQR_end_time); Base::Console().Log("\nSparseQR - Lapsed Time: %f seconds\n", SolveTime); #endif diff --git a/src/Mod/Sketcher/App/planegcs/GCS.h b/src/Mod/Sketcher/App/planegcs/GCS.h index 68175e3e18..5d941a9f91 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.h +++ b/src/Mod/Sketcher/App/planegcs/GCS.h @@ -317,6 +317,13 @@ public: double* angle, int tagId = 0, bool driving = true); + int addConstraintAngleViaTwoPoints(Curve& crv1, + Curve& crv2, + Point& p1, + Point& p2, + double* angle, + int tagId = 0, + bool driving = true); int addConstraintAngleViaPointAndParam(Curve& crv1, Curve& crv2, Point& p, diff --git a/src/Mod/Sketcher/App/planegcs/Geo.h b/src/Mod/Sketcher/App/planegcs/Geo.h index c19a5d7ebd..b021ef2e84 100644 --- a/src/Mod/Sketcher/App/planegcs/Geo.h +++ b/src/Mod/Sketcher/App/planegcs/Geo.h @@ -433,7 +433,7 @@ public: DeriVector2 CalculateNormal(const double* param, const double* derivparam = nullptr) const override; DeriVector2 Value(double u, double du, const double* derivparam = nullptr) const override; - // Returns value in homogenous coordinates (x*w, y*w, w) at given parameter u + // Returns value in homogeneous coordinates (x*w, y*w, w) at given parameter u void valueHomogenous(const double u, double* xw, double* yw, diff --git a/src/Mod/Sketcher/Gui/Command.cpp b/src/Mod/Sketcher/Gui/Command.cpp index 544f2228be..817436f0af 100644 --- a/src/Mod/Sketcher/Gui/Command.cpp +++ b/src/Mod/Sketcher/Gui/Command.cpp @@ -240,7 +240,7 @@ void CmdSketcherNewSketch::activated(int iMsg) else assert(0 /* mapmode index out of range */); doCommand( - Gui, "App.activeDocument().%s.Support = %s", FeatName.c_str(), supportString.c_str()); + Gui, "App.activeDocument().%s.AttachmentSupport = %s", FeatName.c_str(), supportString.c_str()); doCommand(Gui, "App.activeDocument().recompute()");// recompute the sketch placement based // on its support doCommand(Gui, "Gui.activeDocument().setEdit('%s')", FeatName.c_str()); @@ -414,7 +414,7 @@ CmdSketcherReorientSketch::CmdSketcherReorientSketch() sGroup = "Sketcher"; sMenuText = QT_TR_NOOP("Reorient sketch..."); sToolTipText = QT_TR_NOOP("Place the selected sketch on one of the global coordinate planes.\n" - "This will clear the 'Support' property, if any."); + "This will clear the 'AttachmentSupport' property, if any."); sWhatsThis = "Sketcher_ReorientSketch"; sStatusTip = sToolTipText; sPixmap = "Sketcher_ReorientSketch"; @@ -425,7 +425,7 @@ void CmdSketcherReorientSketch::activated(int iMsg) Q_UNUSED(iMsg); Sketcher::SketchObject* sketch = Gui::Selection().getObjectsOfType().front(); - if (sketch->Support.getValue()) { + if (sketch->AttachmentSupport.getValue()) { int ret = QMessageBox::question( Gui::getMainWindow(), qApp->translate("Sketcher_ReorientSketch", "Sketch has support"), @@ -435,7 +435,7 @@ void CmdSketcherReorientSketch::activated(int iMsg) QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::No) return; - sketch->Support.setValue(nullptr); + sketch->AttachmentSupport.setValue(nullptr); } // ask user for orientation @@ -551,7 +551,7 @@ CmdSketcherMapSketch::CmdSketcherMapSketch() sGroup = "Sketcher"; sMenuText = QT_TR_NOOP("Map sketch to face..."); sToolTipText = QT_TR_NOOP( - "Set the 'Support' of a sketch.\n" + "Set the 'AttachmentSupport' of a sketch.\n" "First select the supporting geometry, for example, a face or an edge of a solid object,\n" "then call this command, then choose the desired sketch."); sWhatsThis = "Sketcher_MapSketch"; @@ -707,7 +707,7 @@ void CmdSketcherMapSketch::activated(int iMsg) openCommand(QT_TRANSLATE_NOOP("Command", "Attach sketch")); Gui::cmdAppObjectArgs( sketch, "MapMode = \"%s\"", AttachEngine::getModeName(suggMapMode).c_str()); - Gui::cmdAppObjectArgs(sketch, "Support = %s", supportString.c_str()); + Gui::cmdAppObjectArgs(sketch, "AttachmentSupport = %s", supportString.c_str()); commitCommand(); doCommand(Gui, "App.activeDocument().recompute()"); } @@ -715,7 +715,7 @@ void CmdSketcherMapSketch::activated(int iMsg) openCommand(QT_TRANSLATE_NOOP("Command", "Detach sketch")); Gui::cmdAppObjectArgs( sketch, "MapMode = \"%s\"", AttachEngine::getModeName(suggMapMode).c_str()); - Gui::cmdAppObjectArgs(sketch, "Support = None"); + Gui::cmdAppObjectArgs(sketch, "AttachmentSupport = None"); commitCommand(); doCommand(Gui, "App.activeDocument().recompute()"); } @@ -1078,6 +1078,7 @@ bool CmdSketcherViewSection::isActive() /* Grid tool */ class GridSpaceAction: public QWidgetAction { + Q_DECLARE_TR_FUNCTIONS(GridSpaceAction) public: GridSpaceAction(QObject* parent) : QWidgetAction(parent) @@ -1315,6 +1316,7 @@ bool CmdSketcherGrid::isActive() /* Snap tool */ class SnapSpaceAction: public QWidgetAction { + Q_DECLARE_TR_FUNCTIONS(SnapSpaceAction) public: SnapSpaceAction(QObject* parent) : QWidgetAction(parent) @@ -1583,6 +1585,7 @@ bool CmdSketcherSnap::isActive() /* Rendering Order */ class RenderingOrderAction: public QWidgetAction { + Q_DECLARE_TR_FUNCTIONS(RenderingOrderAction) public: RenderingOrderAction(QObject* parent) : QWidgetAction(parent) diff --git a/src/Mod/Sketcher/Gui/CommandConstraints.cpp b/src/Mod/Sketcher/Gui/CommandConstraints.cpp index 64c277a960..8371a57744 100644 --- a/src/Mod/Sketcher/Gui/CommandConstraints.cpp +++ b/src/Mod/Sketcher/Gui/CommandConstraints.cpp @@ -844,7 +844,7 @@ int SketchSelection::setUp() if (selection[0].getObject()->isDerivedFrom()) { SketchObj = static_cast(selection[0].getObject()); // check if the none sketch object is the support of the sketch - if (selection[1].getObject() != SketchObj->Support.getValue()) { + if (selection[1].getObject() != SketchObj->AttachmentSupport.getValue()) { ErrorMsg = QObject::tr("Only sketch and its support are allowed to be selected."); return -1; } @@ -856,7 +856,7 @@ int SketchSelection::setUp() else if (selection[1].getObject()->isDerivedFrom()) { SketchObj = static_cast(selection[1].getObject()); // check if the none sketch object is the support of the sketch - if (selection[0].getObject() != SketchObj->Support.getValue()) { + if (selection[0].getObject() != SketchObj->AttachmentSupport.getValue()) { ErrorMsg = QObject::tr("Only sketch and its support are allowed to be selected."); return -1; } @@ -2735,7 +2735,7 @@ public: addCommand("Sketcher_ConstrainVertical"); } - const char* className() const override { return "CmdSketcherCompDimensionTools"; } + const char* className() const override { return "CmdSketcherCompHorizontalVertical"; } }; // ============================================================================ @@ -6427,8 +6427,8 @@ CmdSketcherConstrainTangent::CmdSketcherConstrainTangent() { sAppModule = "Sketcher"; sGroup = "Sketcher"; - sMenuText = QT_TR_NOOP("Constrain tangent"); - sToolTipText = QT_TR_NOOP("Create a tangent constraint between two entities"); + sMenuText = QT_TR_NOOP("Constrain tangent or colinear"); + sToolTipText = QT_TR_NOOP("Create a tangent or colinear constraint between two entities"); sWhatsThis = "Sketcher_ConstrainTangent"; sStatusTip = sToolTipText; sPixmap = "Constraint_Tangent"; diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 5d5fb442d6..2b66c0874d 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -1431,8 +1431,9 @@ CmdSketcherCreateFillet::CmdSketcherCreateFillet() void CmdSketcherCreateFillet::activated(int iMsg) { Q_UNUSED(iMsg); - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerFillet(DrawSketchHandlerFillet::SimpleFillet)); + ActivateHandler( + getActiveGuiDocument(), + new DrawSketchHandlerFillet(ConstructionMethods::FilletConstructionMethod::Fillet)); } bool CmdSketcherCreateFillet::isActive() @@ -1442,149 +1443,62 @@ bool CmdSketcherCreateFillet::isActive() // ====================================================================================== -DEF_STD_CMD_A(CmdSketcherCreatePointFillet) +DEF_STD_CMD_A(CmdSketcherCreateChamfer) -CmdSketcherCreatePointFillet::CmdSketcherCreatePointFillet() - : Command("Sketcher_CreatePointFillet") +CmdSketcherCreateChamfer::CmdSketcherCreateChamfer() + : Command("Sketcher_CreateChamfer") { sAppModule = "Sketcher"; sGroup = "Sketcher"; - sMenuText = QT_TR_NOOP("Create corner-preserving fillet"); - sToolTipText = QT_TR_NOOP("Fillet that preserves intersection point and most constraints"); - sWhatsThis = "Sketcher_CreatePointFillet"; + sMenuText = QT_TR_NOOP("Create chamfer"); + sToolTipText = QT_TR_NOOP("Create a chamfer between two lines or at a coincident point"); + sWhatsThis = "Sketcher_CreateChamfer"; sStatusTip = sToolTipText; - sPixmap = "Sketcher_CreatePointFillet"; - sAccel = "G, F, P"; + sPixmap = "Sketcher_CreateChamfer"; + sAccel = "G, F, C"; eType = ForEdit; } -void CmdSketcherCreatePointFillet::activated(int iMsg) +void CmdSketcherCreateChamfer::activated(int iMsg) { Q_UNUSED(iMsg); ActivateHandler( getActiveGuiDocument(), - new DrawSketchHandlerFillet(DrawSketchHandlerFillet::ConstraintPreservingFillet)); + new DrawSketchHandlerFillet(ConstructionMethods::FilletConstructionMethod::Chamfer)); } -bool CmdSketcherCreatePointFillet::isActive() +bool CmdSketcherCreateChamfer::isActive() { return isCommandActive(getActiveGuiDocument()); } -/// @brief Macro that declares a new sketcher command class 'CmdSketcherCompCreateFillets' -DEF_STD_CMD_ACLU(CmdSketcherCompCreateFillets) -/** - * @brief ctor - */ -CmdSketcherCompCreateFillets::CmdSketcherCompCreateFillets() - : Command("Sketcher_CompCreateFillets") +class CmdSketcherCompCreateFillets: public Gui::GroupCommand { - sAppModule = "Sketcher"; - sGroup = "Sketcher"; - sMenuText = QT_TR_NOOP("Create fillet"); - sToolTipText = QT_TR_NOOP("Create a fillet between two lines"); - sWhatsThis = "Sketcher_CompCreateFillets"; - sStatusTip = sToolTipText; - eType = ForEdit; -} +public: + CmdSketcherCompCreateFillets() + : GroupCommand("Sketcher_CompCreateFillets") + { + sAppModule = "Sketcher"; + sGroup = "Sketcher"; + sMenuText = QT_TR_NOOP("Create fillet or chamfer"); + sToolTipText = QT_TR_NOOP("Create a fillet or chamfer between two lines"); + sWhatsThis = "Sketcher_CompCreateFillets"; + sStatusTip = sToolTipText; + eType = ForEdit; -/** - * @brief Instantiates the fillet handler when the fillet command activated - * @param int iMsg - */ -void CmdSketcherCompCreateFillets::activated(int iMsg) -{ - if (iMsg == 0) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerFillet(DrawSketchHandlerFillet::SimpleFillet)); - } - else if (iMsg == 1) { - ActivateHandler( - getActiveGuiDocument(), - new DrawSketchHandlerFillet(DrawSketchHandlerFillet::ConstraintPreservingFillet)); - } - else { - return; + setCheckable(false); + + addCommand("Sketcher_CreateFillet"); + addCommand("Sketcher_CreateChamfer"); } - // Since the default icon is reset when enabling/disabling the command we have - // to explicitly set the icon of the used command. - Gui::ActionGroup* pcAction = qobject_cast(_pcAction); - QList a = pcAction->actions(); - - assert(iMsg < a.size()); - pcAction->setIcon(a[iMsg]->icon()); -} - -Gui::Action* CmdSketcherCompCreateFillets::createAction() -{ - Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow()); - pcAction->setDropDownMenu(true); - applyCommandData(this->className(), pcAction); - - QAction* oldFillet = pcAction->addAction(QString()); - oldFillet->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateFillet")); - - QAction* pointFillet = pcAction->addAction(QString()); - pointFillet->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreatePointFillet")); - - _pcAction = pcAction; - languageChange(); - - pcAction->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreatePointFillet")); - int defaultId = 1; - pcAction->setProperty("defaultAction", QVariant(defaultId)); - - return pcAction; -} - -void CmdSketcherCompCreateFillets::updateAction(int mode) -{ - Q_UNUSED(mode); - Gui::ActionGroup* pcAction = qobject_cast(getAction()); - if (!pcAction) { - return; + const char* className() const override + { + return "CmdSketcherCompCreateFillets"; } +}; - QList a = pcAction->actions(); - int index = pcAction->property("defaultAction").toInt(); - a[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateFillet")); - a[1]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreatePointFillet")); - getAction()->setIcon(a[index]->icon()); -} - -void CmdSketcherCompCreateFillets::languageChange() -{ - Command::languageChange(); - - if (!_pcAction) { - return; - } - Gui::ActionGroup* pcAction = qobject_cast(_pcAction); - QList a = pcAction->actions(); - - QAction* oldFillet = a[0]; - oldFillet->setText(QApplication::translate("CmdSketcherCompCreateFillets", "Sketch fillet")); - oldFillet->setToolTip( - QApplication::translate("Sketcher_CreateFillet", "Creates a radius between two lines")); - oldFillet->setStatusTip( - QApplication::translate("Sketcher_CreateFillet", "Creates a radius between two lines")); - QAction* pointFillet = a[1]; - pointFillet->setText( - QApplication::translate("CmdSketcherCompCreateFillets", "Corner-preserving sketch fillet")); - pointFillet->setToolTip( - QApplication::translate("Sketcher_CreatePointFillet", - "Fillet that preserves constraints and intersection point")); - pointFillet->setStatusTip( - QApplication::translate("Sketcher_CreatePointFillet", - "Fillet that preserves constraints and intersection point")); -} - -bool CmdSketcherCompCreateFillets::isActive() -{ - return isCommandActive(getActiveGuiDocument()); -} // ====================================================================================== @@ -2323,9 +2237,9 @@ void CreateSketcherCommandsCreateGeo() rcCmdMgr.addCommand(new CmdSketcherCreateSlot()); rcCmdMgr.addCommand(new CmdSketcherCreateArcSlot()); rcCmdMgr.addCommand(new CmdSketcherCompSlot()); - rcCmdMgr.addCommand(new CmdSketcherCompCreateFillets()); rcCmdMgr.addCommand(new CmdSketcherCreateFillet()); - rcCmdMgr.addCommand(new CmdSketcherCreatePointFillet()); + rcCmdMgr.addCommand(new CmdSketcherCreateChamfer()); + rcCmdMgr.addCommand(new CmdSketcherCompCreateFillets()); // rcCmdMgr.addCommand(new CmdSketcherCreateText()); // rcCmdMgr.addCommand(new CmdSketcherCreateDraftLine()); rcCmdMgr.addCommand(new CmdSketcherTrimming()); diff --git a/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp b/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp index 3fa34fcbed..0ff88432d7 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp @@ -1052,16 +1052,30 @@ void CmdSketcherJoinCurves::activated(int iMsg) } } + // TODO: Check for tangent constraints between these the two points. + // These need to be explicit: indirect tangency because poles are collinear will not work. + bool tangentConstraintExists = false; + for (const auto& constr : Obj->Constraints.getValues()) { + if (constr->Type == Sketcher::ConstraintType::Tangent + && ((constr->First == GeoIds[0] && constr->FirstPos == PosIds[0] + && constr->Second == GeoIds[1] && constr->SecondPos == PosIds[1]) + || (constr->First == GeoIds[1] && constr->FirstPos == PosIds[1] + && constr->Second == GeoIds[0] && constr->SecondPos == PosIds[0]))) { + tangentConstraintExists = true; + } + } + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Join Curves")); bool applied = false; try { Gui::cmdAppObjectArgs(selection[0].getObject(), - "join(%d, %d, %d, %d) ", + "join(%d, %d, %d, %d, %d) ", GeoIds[0], static_cast(PosIds[0]), GeoIds[1], - static_cast(PosIds[1])); + static_cast(PosIds[1]), + tangentConstraintExists ? 1 : 0); applied = true; // Warning: GeoId list will have changed diff --git a/src/Mod/Sketcher/Gui/DrawSketchController.h b/src/Mod/Sketcher/Gui/DrawSketchController.h index e58b53db22..03906081a8 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchController.h +++ b/src/Mod/Sketcher/Gui/DrawSketchController.h @@ -520,7 +520,7 @@ protected: virtual void afterEnforceControlParameters() { // Give focus to current on-view parameter. In case user interacted outside of 3dview. - if (parameterWithFocus >= 0) { + if (focusAutoPassing && parameterWithFocus >= 0) { setFocusToOnViewParameter(parameterWithFocus); } } @@ -736,6 +736,8 @@ protected: return keymanager.get(); } + bool focusAutoPassing = true; + private: /** @name helper functions */ //@{ diff --git a/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h b/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h index f52ff94594..b9e210e947 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h +++ b/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h @@ -100,7 +100,7 @@ private: using Connection = boost::signals2::connection; - Connection connectionParameterFocusOut; + Connection connectionParameterTabOrEnterPressed; Connection connectionParameterValueChanged; Connection connectionCheckboxCheckedChanged; Connection connectionComboboxSelectionChanged; @@ -128,7 +128,7 @@ public: ~DrawSketchDefaultWidgetController() override { - connectionParameterFocusOut.disconnect(); + connectionParameterTabOrEnterPressed.disconnect(); connectionParameterValueChanged.disconnect(); connectionCheckboxCheckedChanged.disconnect(); connectionComboboxSelectionChanged.disconnect(); @@ -147,10 +147,16 @@ public: { adaptDrawingToParameterChange(parameterindex, value); // specialisation interface + // we block the auto passing of focus back to OVP that would occur in mouseMove + // triggered in finishControlsChanged + ControllerBase::focusAutoPassing = false; + ControllerBase::finishControlsChanged(); + + ControllerBase::focusAutoPassing = true; } - void parameterFocusOut(int parameterindex) + void parameterTabOrEnterPressed(int parameterindex) { Q_UNUSED(parameterindex); passFocusToNextParameter(); @@ -355,8 +361,10 @@ private: { toolWidget = static_cast(widget); // NOLINT - connectionParameterFocusOut = toolWidget->registerParameterFocusOut( - std::bind(&DrawSketchDefaultWidgetController::parameterFocusOut, this, sp::_1)); + connectionParameterTabOrEnterPressed = toolWidget->registerParameterTabOrEnterPressed( + std::bind(&DrawSketchDefaultWidgetController::parameterTabOrEnterPressed, + this, + sp::_1)); connectionParameterValueChanged = toolWidget->registerParameterValueChanged( std::bind(&DrawSketchDefaultWidgetController::parameterValueChanged, @@ -380,7 +388,8 @@ private: /// Resets the widget void resetDefaultWidget() { - boost::signals2::shared_connection_block parameter_focus_block(connectionParameterFocusOut); + boost::signals2::shared_connection_block parameter_focus_block( + connectionParameterTabOrEnterPressed); boost::signals2::shared_connection_block parameter_block(connectionParameterValueChanged); boost::signals2::shared_connection_block checkbox_block(connectionCheckboxCheckedChanged); boost::signals2::shared_connection_block combobox_block(connectionComboboxSelectionChanged); diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h index a37f1ff8c2..924d7b9254 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h @@ -465,7 +465,8 @@ template<> void DSHArcController::configureToolWidget() { if (!init) { // Code to be executed only upon initialisation - QStringList names = {QStringLiteral("Center"), QStringLiteral("3 rim points")}; + QStringList names = {QApplication::translate("Sketcher_CreateArc", "Center"), + QApplication::translate("Sketcher_CreateArc", "3 rim points")}; toolWidget->setComboboxElements(WCombobox::FirstCombo, names); if (isConstructionMode()) { diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h index 948edf6992..52b2d94733 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h @@ -546,7 +546,8 @@ template<> void DSHArcSlotController::configureToolWidget() { if (!init) { // Code to be executed only upon initialisation - QStringList names = {QStringLiteral("Arc ends"), QStringLiteral("Flat ends")}; + QStringList names = {QApplication::translate("Sketcher_CreateArcSlot", "Arc ends"), + QApplication::translate("Sketcher_CreateArcSlot", "Flat ends")}; toolWidget->setComboboxElements(WCombobox::FirstCombo, names); if (isConstructionMode()) { diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerBSplineByInterpolation.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerBSplineByInterpolation.h index 3880a0c741..14b73d03bb 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerBSplineByInterpolation.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerBSplineByInterpolation.h @@ -416,11 +416,25 @@ private: } void drawBSplineToPosition(Base::Vector2d position) + { + try { + tryInterpolateSpline(position); + } + catch (const Standard_Failure&) { + // Since it happens very frequently that the interpolation fails + // it's sufficient to report this as log message to avoid to pollute + // the output window + Base::Console().Log(std::string("drawBSplineToPosition"), "interpolation failed\n"); + } + } + + void tryInterpolateSpline(Base::Vector2d position) { std::vector editcurve(BSplineKnots); editcurve.push_back(position); std::vector editCurveForOCCT; + editCurveForOCCT.reserve(editcurve.size()); for (auto& p : editcurve) { editCurveForOCCT.emplace_back(p.x, p.y, 0.0); } diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h index 70c208d81e..e2c6c9d9f5 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h @@ -363,7 +363,8 @@ template<> void DSHCircleController::configureToolWidget() { if (!init) { // Code to be executed only upon initialisation - QStringList names = {QStringLiteral("Center"), QStringLiteral("3 rim points")}; + QStringList names = {QApplication::translate("Sketcher_CreateCircle", "Center"), + QApplication::translate("Sketcher_CreateCircle", "3 rim points")}; toolWidget->setComboboxElements(WCombobox::FirstCombo, names); if (isConstructionMode()) { diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h index f043373881..32aa29e6a0 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h @@ -430,7 +430,8 @@ void DSHEllipseController::configureToolWidget() { if (!init) { // Code to be executed only upon initialisation - QStringList names = {QStringLiteral("Center"), QStringLiteral("Axis endpoints")}; + QStringList names = {QApplication::translate("Sketcher_CreateEllipse", "Center"), + QApplication::translate("Sketcher_CreateEllipse", "Axis endpoints")}; toolWidget->setComboboxElements(WCombobox::FirstCombo, names); if (isConstructionMode()) { diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerFillet.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerFillet.h index b6c5aa1366..0fd4e12442 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerFillet.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerFillet.h @@ -35,6 +35,8 @@ #include "Utils.h" #include "ViewProviderSketch.h" +using namespace Sketcher; + namespace SketcherGui { @@ -86,80 +88,106 @@ public: }; -class DrawSketchHandlerFillet: public DrawSketchHandler -{ -public: - enum FilletType - { - SimpleFillet, - ConstraintPreservingFillet - }; +class DrawSketchHandlerFillet; - explicit DrawSketchHandlerFillet(FilletType filletType) - : filletType(filletType) - , Mode(STATUS_SEEK_First) - , firstCurve(0) +namespace ConstructionMethods +{ + +enum class FilletConstructionMethod +{ + Fillet, + Chamfer, + End // Must be the last one +}; + +} + +using DSHFilletController = + DrawSketchDefaultWidgetController, // NOLINT + /*WidgetParametersT =*/WidgetParameters<0, 0>, // NOLINT + /*WidgetCheckboxesT =*/WidgetCheckboxes<1, 1>, // NOLINT + /*WidgetComboboxesT =*/WidgetComboboxes<1, 1>, // NOLINT + ConstructionMethods::FilletConstructionMethod, + /*bool PFirstComboboxIsConstructionMethod =*/true>; + +using DSHFilletControllerBase = DSHFilletController::ControllerBase; + +using DrawSketchHandlerFilletBase = DrawSketchControllableHandler; + +class DrawSketchHandlerFillet: public DrawSketchHandlerFilletBase +{ + friend DSHFilletController; + friend DSHFilletControllerBase; + +public: + explicit DrawSketchHandlerFillet(ConstructionMethod constrMethod = ConstructionMethod::Fillet) + : DrawSketchHandlerFilletBase(constrMethod) + , preserveCorner(true) + , vtId(-1) + , geoId1(GeoEnum::GeoUndef) + , geoId2(GeoEnum::GeoUndef) {} ~DrawSketchHandlerFillet() override { Gui::Selection().rmvSelectionGate(); } - enum SelectMode +private: + void updateDataAndDrawToPosition(Base::Vector2d onSketchPos) override { - STATUS_SEEK_First, - STATUS_SEEK_Second - }; - - void mouseMove(Base::Vector2d onSketchPos) override - { - Q_UNUSED(onSketchPos); + switch (state()) { + case SelectMode::SeekFirst: { + vtId = getPreselectPoint(); + geoId1 = getPreselectCurve(); + firstPos = onSketchPos; + } break; + case SelectMode::SeekSecond: { + geoId2 = getPreselectCurve(); + secondPos = onSketchPos; + } break; + default: + break; + } } - bool pressButton(Base::Vector2d onSketchPos) override + void executeCommands() override { - Q_UNUSED(onSketchPos); - return true; - } + SketchObject* obj = sketchgui->getSketchObject(); - bool releaseButton(Base::Vector2d onSketchPos) override - { bool construction = false; - int VtId = getPreselectPoint(); - if (Mode == STATUS_SEEK_First && VtId != -1) { + bool isChamfer = constructionMethod() == ConstructionMethod::Chamfer; + + if (vtId != -1) { int GeoId; - Sketcher::PointPos PosId = Sketcher::PointPos::none; - sketchgui->getSketchObject()->getGeoVertexIndex(VtId, GeoId, PosId); - const Part::Geometry* geom = sketchgui->getSketchObject()->getGeometry(GeoId); - if (geom->is() - && (PosId == Sketcher::PointPos::start || PosId == Sketcher::PointPos::end)) { + PointPos PosId = PointPos::none; + obj->getGeoVertexIndex(vtId, GeoId, PosId); + const Part::Geometry* geom = obj->getGeometry(GeoId); + if (isLineSegment(*geom) && (PosId == PointPos::start || PosId == PointPos::end)) { // guess fillet radius double radius = -1; std::vector GeoIdList; std::vector PosIdList; - sketchgui->getSketchObject()->getDirectlyCoincidentPoints(GeoId, - PosId, - GeoIdList, - PosIdList); + obj->getDirectlyCoincidentPoints(GeoId, PosId, GeoIdList, PosIdList); if (GeoIdList.size() == 2 && GeoIdList[0] >= 0 && GeoIdList[1] >= 0) { - const Part::Geometry* geom1 = - sketchgui->getSketchObject()->getGeometry(GeoIdList[0]); - const Part::Geometry* geom2 = - sketchgui->getSketchObject()->getGeometry(GeoIdList[1]); - construction = Sketcher::GeometryFacade::getConstruction(geom1) - && Sketcher::GeometryFacade::getConstruction(geom2); - if (geom1->is() && geom2->is()) { - const Part::GeomLineSegment* lineSeg1 = - static_cast(geom1); - const Part::GeomLineSegment* lineSeg2 = - static_cast(geom2); - Base::Vector3d dir1 = lineSeg1->getEndPoint() - lineSeg1->getStartPoint(); - Base::Vector3d dir2 = lineSeg2->getEndPoint() - lineSeg2->getStartPoint(); - if (PosIdList[0] == Sketcher::PointPos::end) { + const Part::Geometry* geo1 = obj->getGeometry(GeoIdList[0]); + const Part::Geometry* geo2 = obj->getGeometry(GeoIdList[1]); + + construction = GeometryFacade::getConstruction(geo1) + && GeometryFacade::getConstruction(geo2); + + if (isLineSegment(*geo1) && isLineSegment(*geo2)) { + auto* line1 = static_cast(geo1); + auto* line2 = static_cast(geo2); + Base::Vector3d dir1 = line1->getEndPoint() - line1->getStartPoint(); + Base::Vector3d dir2 = line2->getEndPoint() - line2->getStartPoint(); + if (PosIdList[0] == PointPos::end) { dir1 *= -1; } - if (PosIdList[1] == Sketcher::PointPos::end) { + if (PosIdList[1] == PointPos::end) { dir2 *= -1; } double l1 = dir1.Length(); @@ -169,55 +197,197 @@ public: } } if (radius < 0) { - return false; + return; } - int currentgeoid = getHighestCurveIndex(); + int filletGeoId = getHighestCurveIndex() + (isChamfer ? 2 : 1); // create fillet at point try { - bool pointFillet = (filletType == 1); Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create fillet")); - Gui::cmdAppObjectArgs(sketchgui->getObject(), - "fillet(%d,%d,%f,%s,%s)", + Gui::cmdAppObjectArgs(obj, + "fillet(%d,%d,%f,%s,%s,%s)", GeoId, static_cast(PosId), radius, "True", - pointFillet ? "True" : "False"); + preserveCorner ? "True" : "False", + isChamfer ? "True" : "False"); if (construction) { - Gui::cmdAppObjectArgs(sketchgui->getObject(), - "toggleConstruction(%d) ", - currentgeoid + 1); + Gui::cmdAppObjectArgs(obj, "toggleConstruction(%d) ", filletGeoId); } Gui::Command::commitCommand(); } catch (const Base::Exception& e) { Gui::NotifyUserError( - sketchgui->getObject(), + obj, QT_TRANSLATE_NOOP("Notifications", "Failed to create fillet"), e.what()); Gui::Command::abortCommand(); } - tryAutoRecomputeIfNotSolve( - static_cast(sketchgui->getObject())); + tryAutoRecomputeIfNotSolve(obj); } - return true; } - int GeoId = getPreselectCurve(); - if (GeoId > -1) { - const Part::Geometry* geom = sketchgui->getSketchObject()->getGeometry(GeoId); - if (geom->isDerivedFrom()) { - if (Mode == STATUS_SEEK_First) { - firstCurve = GeoId; - firstPos = onSketchPos; - Mode = STATUS_SEEK_Second; - // add the line to the selection + else { + Base::Vector3d refPnt1(firstPos.x, firstPos.y, 0.f); + Base::Vector3d refPnt2(secondPos.x, secondPos.y, 0.f); + + const Part::Geometry* geo1 = obj->getGeometry(geoId1); + const Part::Geometry* geo2 = obj->getGeometry(geoId2); + + construction = + GeometryFacade::getConstruction(geo1) && GeometryFacade::getConstruction(geo2); + + double radius = 0; + + if (isLineSegment(*geo1) && isLineSegment(*geo2)) { + // guess fillet radius + auto* line1 = static_cast(geo1); + auto* line2 = static_cast(geo2); + + radius = Part::suggestFilletRadius(line1, line2, refPnt1, refPnt2); + if (radius < 0) { + return; + } + } + + int filletGeoId = getHighestCurveIndex() + (isChamfer ? 2 : 1); + + // create fillet between lines + try { + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create fillet")); + Gui::cmdAppObjectArgs( + obj, + "fillet(%d,%d,App.Vector(%f,%f,0),App.Vector(%f,%f,0),%f,%s,%s,%s)", + geoId1, + geoId2, + firstPos.x, + firstPos.y, + secondPos.x, + secondPos.y, + radius, + "True", + preserveCorner ? "True" : "False", + isChamfer ? "True" : "False"); + Gui::Command::commitCommand(); + } + catch (const Base::CADKernelError& e) { + if (e.getTranslatable()) { + Gui::TranslatedUserError(sketchgui, + QObject::tr("CAD Kernel Error"), + QObject::tr(e.getMessage().c_str())); + } + Gui::Selection().clearSelection(); + Gui::Command::abortCommand(); + } + catch (const Base::ValueError& e) { + Gui::TranslatedUserError(sketchgui, + QObject::tr("Value Error"), + QObject::tr(e.getMessage().c_str())); + Gui::Selection().clearSelection(); + Gui::Command::abortCommand(); + } + + tryAutoRecompute(obj); + + if (construction) { + Gui::cmdAppObjectArgs(obj, "toggleConstruction(%d) ", filletGeoId); + } + + + Gui::Selection().clearSelection(); + } + } + + std::string getToolName() const override + { + return "DSH_Fillet"; + } + + QString getCrosshairCursorSVGName() const override + { + Gui::Selection().rmvSelectionGate(); + Gui::Selection().addSelectionGate(new FilletSelection(sketchgui->getObject())); + + if (constructionMethod() == DrawSketchHandlerFillet::ConstructionMethod::Fillet) { + if (preserveCorner) { + return QString::fromLatin1("Sketcher_Pointer_Create_PointFillet"); + } + else { + return QString::fromLatin1("Sketcher_Pointer_Create_Fillet"); + } + } + else { + if (preserveCorner) { + return QString::fromLatin1("Sketcher_Pointer_Create_PointChamfer"); + } + else { + return QString::fromLatin1("Sketcher_Pointer_Create_Chamfer"); + } + } + } + + std::unique_ptr createWidget() const override + { + return std::make_unique(); + } + + bool isWidgetVisible() const override + { + return true; + }; + + QPixmap getToolIcon() const override + { + return Gui::BitmapFactory().pixmap("Sketcher_CreateFillet"); + } + + QString getToolWidgetText() const override + { + return QString(QObject::tr("Fillet/Chamfer parameters")); + } + + bool canGoToNextMode() override + { + if (state() == SelectMode::SeekFirst) { + if (vtId != -1) { + return true; + } + if (geoId1 >= 0) { + const Part::Geometry* geo = sketchgui->getSketchObject()->getGeometry(geoId1); + if (geo->isDerivedFrom()) { + return true; + } + } + } + + if (state() == SelectMode::SeekSecond) { + if (geoId2 >= 0) { + const Part::Geometry* geo = sketchgui->getSketchObject()->getGeometry(geoId2); + if (geo->isDerivedFrom()) { + return true; + } + } + } + + return false; + } + + void onButtonPressed(Base::Vector2d onSketchPos) override + { + this->updateDataAndDrawToPosition(onSketchPos); + if (canGoToNextMode()) { + if (state() == SelectMode::SeekFirst) { + if (vtId != -1) { + setState(SelectMode::End); + } + else { + // add the edge to the selection std::stringstream ss; - ss << "Edge" << firstCurve + 1; + ss << "Edge" << geoId1 + 1; Gui::Selection().addSelection( sketchgui->getSketchObject()->getDocument()->getName(), sketchgui->getSketchObject()->getNameInDocument(), @@ -225,128 +395,66 @@ public: onSketchPos.x, onSketchPos.y, 0.f); - } - else if (Mode == STATUS_SEEK_Second) { - int secondCurve = GeoId; - Base::Vector2d secondPos = onSketchPos; - - Base::Vector3d refPnt1(firstPos.x, firstPos.y, 0.f); - Base::Vector3d refPnt2(secondPos.x, secondPos.y, 0.f); - - const Part::Geometry* geom1 = - sketchgui->getSketchObject()->getGeometry(firstCurve); - - double radius = 0; - - if (geom->is() && geom1->is()) { - // guess fillet radius - const Part::GeomLineSegment* lineSeg1 = - static_cast( - sketchgui->getSketchObject()->getGeometry(firstCurve)); - const Part::GeomLineSegment* lineSeg2 = - static_cast( - sketchgui->getSketchObject()->getGeometry(secondCurve)); - - radius = Part::suggestFilletRadius(lineSeg1, lineSeg2, refPnt1, refPnt2); - if (radius < 0) { - return false; - } - - construction = Sketcher::GeometryFacade::getConstruction(lineSeg1) - && Sketcher::GeometryFacade::getConstruction(lineSeg2); - } - else { // other supported curves - const Part::Geometry* geo1 = static_cast( - sketchgui->getSketchObject()->getGeometry(firstCurve)); - const Part::Geometry* geo2 = static_cast( - sketchgui->getSketchObject()->getGeometry(secondCurve)); - - construction = Sketcher::GeometryFacade::getConstruction(geo1) - && Sketcher::GeometryFacade::getConstruction(geo2); - } - - - int currentgeoid = getHighestCurveIndex(); - - // create fillet between lines - try { - bool pointFillet = (filletType == 1); - Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create fillet")); - Gui::cmdAppObjectArgs( - sketchgui->getObject(), - "fillet(%d,%d,App.Vector(%f,%f,0),App.Vector(%f,%f,0),%f,%s,%s)", - firstCurve, - secondCurve, - firstPos.x, - firstPos.y, - secondPos.x, - secondPos.y, - radius, - "True", - pointFillet ? "True" : "False"); - Gui::Command::commitCommand(); - } - catch (const Base::CADKernelError& e) { - if (e.getTranslatable()) { - Gui::TranslatedUserError(sketchgui, - QObject::tr("CAD Kernel Error"), - QObject::tr(e.getMessage().c_str())); - } - Gui::Selection().clearSelection(); - Gui::Command::abortCommand(); - Mode = STATUS_SEEK_First; - } - catch (const Base::ValueError& e) { - Gui::TranslatedUserError(sketchgui, - QObject::tr("Value Error"), - QObject::tr(e.getMessage().c_str())); - Gui::Selection().clearSelection(); - Gui::Command::abortCommand(); - Mode = STATUS_SEEK_First; - } - - tryAutoRecompute(static_cast(sketchgui->getObject())); - - if (construction) { - Gui::cmdAppObjectArgs(sketchgui->getObject(), - "toggleConstruction(%d) ", - currentgeoid + 1); - } - - - Gui::Selection().clearSelection(); - Mode = STATUS_SEEK_First; + moveToNextMode(); } } + else { + moveToNextMode(); + } } - - if (VtId < 0 && GeoId < 0) { // exit the fillet tool if the user clicked on empty space - sketchgui - ->purgeHandler(); // no code after this line, Handler get deleted in ViewProvider - } - - return true; } + private: - QString getCrosshairCursorSVGName() const override - { - Gui::Selection().rmvSelectionGate(); - Gui::Selection().addSelectionGate(new FilletSelection(sketchgui->getObject())); - if (filletType == SimpleFillet) { - return QString::fromLatin1("Sketcher_Pointer_Create_Fillet"); - } - else { - return QString::fromLatin1("Sketcher_Pointer_Create_PointFillet"); - } + bool preserveCorner; + int vtId, geoId1, geoId2; + Base::Vector2d firstPos, secondPos; +}; + +template<> +void DSHFilletController::configureToolWidget() +{ + if (!init) { // Code to be executed only upon initialisation + QStringList names = {QStringLiteral("Fillet"), QStringLiteral("Chamfer")}; + toolWidget->setComboboxElements(WCombobox::FirstCombo, names); + + toolWidget->setComboboxItemIcon( + WCombobox::FirstCombo, + 0, + Gui::BitmapFactory().iconFromTheme("Sketcher_CreateFillet")); + toolWidget->setComboboxItemIcon( + WCombobox::FirstCombo, + 1, + Gui::BitmapFactory().iconFromTheme("Sketcher_CreateChamfer")); + + toolWidget->setCheckboxLabel( + WCheckbox::FirstBox, + QApplication::translate("TaskSketcherTool_c1_fillet", "Preserve corner (U)")); + toolWidget->setCheckboxToolTip( + WCheckbox::FirstBox, + QApplication::translate("TaskSketcherTool_c1_fillet", + "Preserves intersection point and most constraints")); + + toolWidget->setCheckboxIcon( + WCheckbox::FirstBox, + Gui::BitmapFactory().iconFromTheme("Sketcher_CreatePointFillet")); + } + syncCheckboxToHandler(WCheckbox::FirstBox, handler->preserveCorner); +} + +template<> +void DSHFilletController::adaptDrawingToCheckboxChange(int checkboxindex, bool value) +{ + Q_UNUSED(checkboxindex); + + switch (checkboxindex) { + case WCheckbox::FirstBox: + handler->preserveCorner = value; + break; } -protected: - int filletType; - SelectMode Mode; - int firstCurve; - Base::Vector2d firstPos; -}; + handler->updateCursor(); +} } // namespace SketcherGui diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h index 068cd814f6..f67e1e3539 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h @@ -276,9 +276,9 @@ template<> void DSHLineController::configureToolWidget() { if (!init) { // Code to be executed only upon initialisation - QStringList names = {QStringLiteral("Point, length, angle"), - QStringLiteral("Point, width, height"), - QStringLiteral("2 points")}; + QStringList names = {QApplication::translate("Sketcher_CreateLine", "Point, length, angle"), + QApplication::translate("Sketcher_CreateLine", "Point, width, height"), + QApplication::translate("Sketcher_CreateLine", "2 points")}; toolWidget->setComboboxElements(WCombobox::FirstCombo, names); if (isConstructionMode()) { diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h index 7fd191df0e..547adab98b 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h @@ -1081,7 +1081,8 @@ template<> void DSHOffsetController::configureToolWidget() { if (!init) { // Code to be executed only upon initialisation - QStringList names = {QStringLiteral("Arc"), QStringLiteral("Intersection")}; + QStringList names = {QApplication::translate("Sketcher_CreateOffset", "Arc"), + QApplication::translate("Sketcher_CreateOffset", "Intersection")}; toolWidget->setComboboxElements(WCombobox::FirstCombo, names); toolWidget->setComboboxItemIcon(WCombobox::FirstCombo, diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h index 5211037237..64a48ee202 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h @@ -1647,10 +1647,11 @@ template<> void DSHRectangleController::configureToolWidget() { if (!init) { // Code to be executed only upon initialisation - QStringList names = {QStringLiteral("Corner, width, height"), - QStringLiteral("Center, width, height"), - QStringLiteral("3 corners"), - QStringLiteral("Center, 2 corners")}; + QStringList names = { + QApplication::translate("TaskSketcherTool_c1_rectangle", "Corner, width, height"), + QApplication::translate("TaskSketcherTool_c1_rectangle", "Center, width, height"), + QApplication::translate("TaskSketcherTool_c1_rectangle", "3 corners"), + QApplication::translate("TaskSketcherTool_c1_rectangle", "Center, 2 corners")}; toolWidget->setComboboxElements(WCombobox::FirstCombo, names); toolWidget->setCheckboxLabel( diff --git a/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp b/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp index 0af1df62e6..04fc7cdaa8 100644 --- a/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp +++ b/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp @@ -1749,9 +1749,11 @@ void EditModeConstraintCoinManager::updateConstraintColor( SoMaterial* m = nullptr; if (!hasDatumLabel && type != Sketcher::Coincident && type != Sketcher::InternalAlignment) { - hasMaterial = true; - m = static_cast( - s->getChild(static_cast(ConstraintNodePosition::MaterialIndex))); + int matIndex = static_cast(ConstraintNodePosition::MaterialIndex); + if (matIndex < s->getNumChildren()) { + hasMaterial = true; + m = static_cast(s->getChild(matIndex)); + } } auto selectpoint = [this, pcolor, PtNum](int geoid, Sketcher::PointPos pos) { diff --git a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc index 936b246e64..6572d92280 100644 --- a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc +++ b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc @@ -139,6 +139,7 @@ icons/geometry/Sketcher_CreateBSplineByInterpolation_Constr.svg icons/geometry/Sketcher_Create_Periodic_BSplineByInterpolation.svg icons/geometry/Sketcher_Create_Periodic_BSplineByInterpolation_Constr.svg + icons/geometry/Sketcher_CreateChamfer.svg icons/geometry/Sketcher_CreateCircle.svg icons/geometry/Sketcher_CreateCircle_Constr.svg icons/geometry/Sketcher_CreateEllipse_3points.svg @@ -229,6 +230,7 @@ icons/pointers/Sketcher_Pointer_Create_BSpline.svg icons/pointers/Sketcher_Pointer_Create_BSplineByInterpolation.svg icons/pointers/Sketcher_Pointer_Create_Circle.svg + icons/pointers/Sketcher_Pointer_Create_Chamfer.svg icons/pointers/Sketcher_Pointer_Create_EllipseByCenter.svg icons/pointers/Sketcher_Pointer_Create_Ellipse_3points.svg icons/pointers/Sketcher_Pointer_Create_Fillet.svg @@ -238,6 +240,7 @@ icons/pointers/Sketcher_Pointer_Create_Periodic_BSpline.svg icons/pointers/Sketcher_Pointer_Create_Periodic_BSplineByInterpolation.svg icons/pointers/Sketcher_Pointer_Create_Point.svg + icons/pointers/Sketcher_Pointer_Create_PointChamfer.svg icons/pointers/Sketcher_Pointer_Create_PointFillet.svg icons/pointers/Sketcher_Pointer_Create_Translate.svg icons/pointers/Sketcher_Pointer_Create_Offset.svg diff --git a/src/Mod/Sketcher/Gui/Resources/icons/geometry/Sketcher_CreateChamfer.svg b/src/Mod/Sketcher/Gui/Resources/icons/geometry/Sketcher_CreateChamfer.svg new file mode 100644 index 0000000000..d2032be3c9 --- /dev/null +++ b/src/Mod/Sketcher/Gui/Resources/icons/geometry/Sketcher_CreateChamfer.svg @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + [maxwxyz] + + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateArc.svg + + + FreeCAD LGPL2+ + + + 2023-12-19 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Sketcher/Gui/Resources/icons/pointers/Sketcher_Pointer_Create_Chamfer.svg b/src/Mod/Sketcher/Gui/Resources/icons/pointers/Sketcher_Pointer_Create_Chamfer.svg new file mode 100644 index 0000000000..6ed3ce1ce3 --- /dev/null +++ b/src/Mod/Sketcher/Gui/Resources/icons/pointers/Sketcher_Pointer_Create_Chamfer.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Sketcher/Gui/Resources/icons/pointers/Sketcher_Pointer_Create_PointChamfer.svg b/src/Mod/Sketcher/Gui/Resources/icons/pointers/Sketcher_Pointer_Create_PointChamfer.svg new file mode 100644 index 0000000000..6f1587fb76 --- /dev/null +++ b/src/Mod/Sketcher/Gui/Resources/icons/pointers/Sketcher_Pointer_Create_PointChamfer.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts index da89c4ae52..fb5169dee2 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy - + Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle - + Constrain an arc or a circle - + Constrain radius - + Constrain diameter - + Constrain auto radius/diameter @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints - - End points and rim point + + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline - + Create a B-spline in the sketch @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle - + Create a circle in the sketcher - + Center and rim point - + 3 rim points @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic - + Create a conic in the sketch - - Ellipse by center, major radius, point + + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius + + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints + + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints + + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints @@ -266,23 +266,23 @@ CmdSketcherCompCreateFillets - + Create fillet - + Create a fillet between two lines - + Sketch fillet - - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon - + Create a regular polygon in the sketcher - + Triangle - + Square - + Pentagon - + Hexagon - + Heptagon - + Octagon - + Regular polygon @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle - + Fix the angle of a line or the angle between two lines @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block - + Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter - + Fix the diameter of a circle or an arc @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance - + Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance - + Fix the horizontal distance between two points or line ends @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance - + Fix the vertical distance between two points or line ends @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal - + Create an equality constraint between two lines or between circles and arcs @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally - + Create a horizontal constraint on the selected item @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock - + Create both a horizontal and a vertical distance constraint on the selected vertex @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel - + Create a parallel constraint between two lines @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular - + Create a perpendicular constraint between two lines @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object - + Fix a point onto an object @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. @@ -585,12 +585,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical - + Create a symmetry constraint between two points with respect to a line or a third point @@ -599,12 +599,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent - + Create a tangent constraint between two entities @@ -612,12 +612,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically - + Create a vertical constraint on the selected item @@ -664,12 +664,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points - + Create a circle by 3 perimeter points @@ -690,12 +690,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse - + Create an arc of ellipse in the sketch @@ -703,12 +703,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola - + Create an arc of hyperbola in the sketch @@ -716,12 +716,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola - + Create an arc of parabola in the sketch @@ -729,12 +729,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline - + Create a B-spline by control points in the sketch. @@ -742,12 +742,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle - + Create a circle in the sketch @@ -755,12 +755,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points - + Create an ellipse by 3 points in the sketch @@ -768,12 +768,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center - + Create an ellipse by center in the sketch @@ -781,12 +781,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet - + Create a fillet between two lines or at a coincident point @@ -794,12 +794,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon - + Create a heptagon in the sketch @@ -807,12 +807,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon - + Create a hexagon in the sketch @@ -846,12 +846,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon - + Create an octagon in the sketch @@ -859,12 +859,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon - + Create a pentagon in the sketch @@ -872,12 +872,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline - + Create a periodic B-spline by control points in the sketch. @@ -885,12 +885,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point - + Create a point in the sketch @@ -898,12 +898,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet - + Fillet that preserves intersection point and most constraints @@ -950,12 +950,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon - + Create a regular polygon in the sketch @@ -963,12 +963,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot - + Create a slot in the sketch @@ -976,12 +976,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square - + Create a square in the sketch @@ -989,12 +989,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle - + Create an equilateral triangle in the sketch @@ -1067,12 +1067,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge - + Extend an edge with respect to the picked position @@ -1080,12 +1080,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry - + Create an edge linked to an external geometry @@ -1419,12 +1419,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge - + Splits an edge into two while preserving constraints @@ -1471,12 +1471,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint - + Activates or deactivates the selected constraints @@ -1497,12 +1497,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint - + Set the toolbar, or the selected constraints, into driving or reference mode @@ -1511,12 +1511,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge - + Trim an edge with respect to the picked position @@ -1574,79 +1574,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint - + Add relative 'Lock' constraint - + Add fixed constraint - + Add 'Block' constraint - + Add block constraint - - + + Add coincident constraint - - + + Add distance from horizontal axis constraint - - + + Add distance from vertical axis constraint - - + + Add point to point distance constraint - - + + Add point to line Distance constraint - - + + Add circle to circle distance constraint - + Add circle to line distance constraint - - - - - - + + + + + + Add length constraint @@ -1669,8 +1669,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint @@ -1696,7 +1696,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints @@ -1707,220 +1707,220 @@ invalid constraints, degenerated geometry, etc. - + Add Horizontal constraint - + Add Vertical constraint - + Add Block constraint - + Add Angle constraint - - - - + + + + Add Equality constraint - + Add Equality constraints - - - + + + Add Radius constraint - - + + Add arc angle constraint - + Add concentric and length constraint - + Add DistanceX constraint - + Add DistanceY constraint - + Add point to circle Distance constraint - - + + Add point on object constraint - - + + Add point to point horizontal distance constraint - + Add fixed x-coordinate constraint - - + + Add point to point vertical distance constraint - + Add fixed y-coordinate constraint - - + + Add parallel constraint - - - - - - - + + + + + + + Add perpendicular constraint - + Add perpendicularity constraint - + Swap coincident+tangency with ptp tangency - + Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point - - - - + + + + Add radius constraint - - - - + + + + Add diameter constraint - - - - + + + + Add radiam constraint - - - - + + + + Add angle constraint - - + + Add equality constraint - - - - - + + + + + Add symmetric constraint - + Add Snell's law constraint - + Toggle constraint to driving/reference - + Activate/Deactivate constraint @@ -2005,7 +2005,7 @@ invalid constraints, degenerated geometry, etc. - + Add sketch arc of hyperbola @@ -2149,8 +2149,8 @@ invalid constraints, degenerated geometry, etc. - + Add auto constraints @@ -2175,12 +2175,12 @@ invalid constraints, degenerated geometry, etc. - + Drag Constraint - + Modify sketch constraints @@ -2271,59 +2271,59 @@ invalid constraints, degenerated geometry, etc. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. - - + + BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. - + Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. @@ -2403,127 +2403,11 @@ invalid constraints, degenerated geometry, etc. + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2533,6 +2417,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2550,9 +2553,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection @@ -2605,106 +2605,106 @@ invalid constraints, degenerated geometry, etc. - + Select an edge from the sketch. - - - - - - + + + + + + Impossible constraint - - + + The selected edge is not a line segment. - - - + + + Double constraint - + The selected edge already has a horizontal constraint! - + The selected edge already has a vertical constraint! - - - + + + The selected edge already has a Block constraint! - + There are more than one fixed points selected. Select a maximum of one fixed point! - - - + + + Select vertices from the sketch. - + Select one vertex from the sketch other than the origin. - + Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. - + Select one edge from the sketch. - + Select only edges from the sketch. - + Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 - + Error @@ -2714,80 +2714,80 @@ invalid constraints, degenerated geometry, etc. - + The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. - + Cannot add a length constraint on an axis! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. @@ -2797,92 +2797,92 @@ invalid constraints, degenerated geometry, etc. - + Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. - + Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. - + Cannot add a horizontal length constraint on an axis! - + Cannot add a fixed x-coordinate constraint on the origin point! - - + + This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! - + Cannot add a fixed y-coordinate constraint on the origin point! - + Select two or more lines from the sketch. - + One selected edge is not a valid line. - - + + Select at least two lines from the sketch. - + The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2890,35 +2890,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + Select some geometry from the sketch. perpendicular constraint - - + + Cannot add a perpendicularity constraint at an unconnected point! - - + + One of the selected edges should be a line. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2926,67 +2926,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + Select some geometry from the sketch. tangent constraint - - - + + + Cannot add a tangency constraint at an unconnected point! - - + + Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! - - + + With 3 objects, there must be 2 curves and 1 point. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. - - - + + + Constraint only applies to arcs or circles. - - + + Select one or two lines from the sketch. Or select two edges and a point. @@ -3001,88 +3001,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + Cannot add an angle constraint on an axis! - + Select two edges from the sketch. - + Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. - - - - + + + + Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. - - + + Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw - + Selected objects are not just geometry from one sketch. - + Cannot create constraint with external geometry only. - + Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. @@ -3104,9 +3104,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c + - CAD Kernel Error @@ -3249,14 +3249,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - - + + Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3640,12 +3640,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + Refractive index ratio - + Ratio n2/n1: @@ -3653,72 +3653,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal - + Construction - + Internal - + External - + All types - + Point - + Line - + Circle - + Ellipse - + Arc of circle - + Arc of ellipse - + Arc of hyperbola - + Arc of parabola - + B-Spline @@ -3841,27 +3841,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + Layer - + Layer 0 - + Layer 1 - + Hidden - + Delete @@ -4709,120 +4709,120 @@ However, no constraints linking to the endpoints were found. - - - - - - - - - - + + + + + + + + + + Construction - + Elements - - - - + + + + Point - - - - - - - - - - + + + + + + + + + + Internal - - - - + + + + Line - - - - + + + + Arc - - - - + + + + Circle - - - - + + + + Ellipse - - - - + + + + Elliptical Arc - - - - + + + + Hyperbolic Arc - - - - + + + + Parabolic Arc - - - - + + + + BSpline - - - - + + + + Other - + Extended information @@ -5041,119 +5041,119 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch - + A dialog is already open in the task panel - + Do you want to close this dialog? - + Invalid sketch - + Do you want to open the sketch validation tool? - + The sketch is invalid and cannot be edited. - + Please remove the following constraint: - + Please remove at least one of the following constraints: - + Please remove the following redundant constraint: - + Please remove the following redundant constraints: - + The following constraint is partially redundant: - + The following constraints are partially redundant: - + Please remove the following malformed constraint: - + Please remove the following malformed constraints: - + Empty sketch - + Over-constrained: - + Malformed constraints: - + Redundant constraints: - + Partially redundant: - + Solver failed to converge - + Under constrained: - + %n DoF(s) - + Fully constrained @@ -5251,8 +5251,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc @@ -5260,8 +5260,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc @@ -5269,8 +5269,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc @@ -5284,70 +5284,25 @@ This is done by analyzing the sketch geometries and constraints. - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - - - Sketcher_CreateBSpline - + B-spline by control points - - + + Create a B-spline by control points @@ -5355,35 +5310,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - - - Sketcher_CreateFillet - - + + Creates a radius between two lines @@ -5391,8 +5328,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner @@ -5400,8 +5337,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner @@ -5417,14 +5354,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner + - Create a regular polygon by its center and by one corner @@ -5432,8 +5369,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner @@ -5441,8 +5378,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point @@ -5466,8 +5403,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner @@ -5475,8 +5412,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner @@ -5484,13 +5421,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points + - Create a periodic B-spline by control points @@ -5883,7 +5820,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more @@ -6104,45 +6041,45 @@ The grid spacing change if it becomes smaller than this number of pixel. - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error @@ -6178,16 +6115,16 @@ The grid spacing change if it becomes smaller than this number of pixel. + + + - - - - - + + Invalid Constraint @@ -6204,12 +6141,12 @@ The grid spacing change if it becomes smaller than this number of pixel. - + Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola @@ -6229,8 +6166,8 @@ The grid spacing change if it becomes smaller than this number of pixel. - + Error creating B-spline @@ -6286,17 +6223,17 @@ The grid spacing change if it becomes smaller than this number of pixel. - - - - - - - + + + + + + + Tool execution aborted @@ -6331,9 +6268,9 @@ The grid spacing change if it becomes smaller than this number of pixel. - + Value Error @@ -6396,13 +6333,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots - - + + Create a B-spline by knots @@ -6410,13 +6347,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots + - Create a periodic B-spline by knots @@ -6521,12 +6458,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6534,12 +6471,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6547,12 +6484,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6588,12 +6525,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius - + Fix the radius of a circle or an arc @@ -6768,7 +6705,7 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. @@ -6783,12 +6720,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. @@ -6796,12 +6733,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6809,12 +6746,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition - + Curve Edition tools. @@ -6822,12 +6759,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots - + Slot tools. @@ -6835,12 +6772,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot - + Create an arc slot in the sketch @@ -6848,12 +6785,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7273,4 +7210,67 @@ Left clicking on empty space will validate the current constraint. Right clickin + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_be.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_be.ts index 18e30df46a..479e537d89 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_be.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_be.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Стварыць дакладную копію - + Copy the geometry of another sketch Скапіраваць геаметрыю іншага эскіза @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Абмежаванне дугі альбо акружнасці - + Constrain an arc or a circle Абмежаванне дугі альбо акружнасці - + Constrain radius Абмежаванне радыуса - + Constrain diameter Абмежаванне дыяметра - + Constrain auto radius/diameter Аўтаматычнае абмежаванне радыуса/дыяметра @@ -180,24 +180,24 @@ - Center and end points - Па цэнтральнай і канчатковым кропкам + Center and endpoints + Па цэнтральнай і канчатковых кропках - - End points and rim point - Па канчатковым і датычнай кропцы + + Endpoints and rim point + Па канчатковых кропках і датычнай кропцы CmdSketcherCompCreateBSpline - + Create B-spline Стварыць B-сплайн - + Create a B-spline in the sketch Стварыць B-сплайн на эскізе @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Стварыць акружнасць - + Create a circle in the sketcher Стварыць акружнасць у варштаце эскізу - + Center and rim point Па цэнтру і датычнай кропцы - + 3 rim points Па тром кропкам @@ -228,62 +228,62 @@ CmdSketcherCompCreateConic - + Create conic Стварыць канічную - + Create a conic in the sketch Стварыць канічную на эскізе - - Ellipse by center, major radius, point - Эліпс па цэнтральнай кропцы, вялікай паўвосі, кропцы + + Ellipse by center, radius, rim point + Эліпс па цэнтральнай кропцы, радыусе, датычнай кропцы - - Ellipse by periapsis, apoapsis, minor radius - Эліпс па перыцэнтру, апацэнтру, малой паўвосі + + Ellipse by axis endpoints, rim point + Эліпс па канчатковых кропках восі, датычнай кропцы - - Arc of ellipse by center, major radius, endpoints - Дуга эліпсу па цэнтральнай кропцы, вялікай паўвосі, канчатковым кропкам + + Arc of ellipse by center, radius, endpoints + Дуга эліпсу па цэнтральнай кропцы, радыусу, канчатковых кропках - - Arc of hyperbola by center, major radius, endpoints - Дуга гіпербалы па цэнтры, вялікай паўвосі, канчатковым кропкам + + Arc of hyperbola by center, vertex, endpoints + Дуга гіпербалы па цэнтры, вяршыні, канчатковых кропках - + Arc of parabola by focus, vertex, endpoints - Дуга парабалы па фокусу, вяршыні, канчатковым кропкам + Дуга парабалы па фокусу, вяршыні, канчатковых кропках CmdSketcherCompCreateFillets - + Create fillet Стварыць акругленне - + Create a fillet between two lines Сварыць акругленне паміж дзвюма лініямі - + Sketch fillet Акругленне - - Constraint-preserving sketch fillet - Акругленне эскіза з захаваннем абмежаванняў + + Corner-preserving sketch fillet + Акругленне эскізу з захаваннем кутоў @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Стварыць правільны шматкутнік - + Create a regular polygon in the sketcher Стварыць правільны шматкутнік у варштаце эскізу - + Triangle Трыкутнік - + Square Квадрат - + Pentagon Пяцікутнік - + Hexagon Шасцікутнік - + Heptagon Сямікутнік - + Octagon Васьмікутнік - + Regular polygon Правільны шматкутнік @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Абмежаванне вугла - + Fix the angle of a line or the angle between two lines Фіксаваць вугал лініі ці вугал паміж дзвюма лініямі @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Абмежаванне руху - + Block the selected edge from moving Абмежаваць рух абранага рабра @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Абмежаванне накладання кропак - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Стварыць абмежаванне супадзення паміж кропкамі, ці канцэнтрычнае абмежаванне паміж акружнасцямі, дугамі і эліпсамі @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Абмежаванне дыяметра - + Fix the diameter of a circle or an arc Задаць дыяметр акружнасці ці дугі @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Абмежаванне адлегласці - + Fix a length of a line or the distance between a line and a vertex or between two circles Задаць даўжыню лініі, альбо адлегласць паміж лініяй і вяршыняй, альбо паміж дзвюма акружнасцямі @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Абмежаванне гарызантальнай адлегласці - + Fix the horizontal distance between two points or line ends Задаць адлегласць па гарызанталі паміж дзвюма кропкамі ці канцамі лініі @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Абмежаванне вертыкальнай адлегласці - + Fix the vertical distance between two points or line ends Задаць вертыкальную адлегласць паміж дзвюма кропкамі ці канцамі лініі @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Абмежаванне роўнасцю - + Create an equality constraint between two lines or between circles and arcs Стварыць абмежаванне роўнасці паміж дзвюма лініямі ці паміж акружнасцямі і дугамі @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Абмежаванне гарызантальнасці - + Create a horizontal constraint on the selected item Стварыць абмежаванне гарызантальнасці для абранага элемента @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Абмежаванне блакавання - + Create both a horizontal and a vertical distance constraint on the selected vertex Стварыць абмежаванне адлегласці па гарызанталі і вертыкалі для абранай вяршыні @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Абмежаванне паралельнасці - + Create a parallel constraint between two lines Стварыць паралельнае абмежаванне паміж дзвюма лініямі @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Абмежаванне перпендыкулярнасці - + Create a perpendicular constraint between two lines Стварыць перпендыкулярнае абмежаванне паміж дзвюма адрэзкамі @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Абмежаваць кропку на аб'екце - + Fix a point onto an object Прывязаць кропку да аб'екта @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Аўтаматычнае абмежаванне радыуса/дыяметра - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Задаць дыяметр, калі абрана акружнасць, альбо радыус, калі абраны полюс дугі/сплайну @@ -571,26 +571,26 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Абмежаванне праламлення (закон Снеліуса) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. - Стварыць абмежаванне па закону праламлення свету (закон Снеліуса) паміж дзвюма канчатковымі кропкамі прамянёў і рабром у якасці мяжы падзелу асяроддзя. + Стварыць абмежаванне па закону праламлення свету (закон Снеліуса) паміж дзвюма канчатковых кропак прамянёў і рабром у якасці мяжы падзелу асяроддзя. CmdSketcherConstrainSymmetric - + Constrain symmetrical Абмежаванне сіметрычнасці - + Create a symmetry constraint between two points with respect to a line or a third point Стварыць абмежаванне сіметрыі паміж дзвюма кропкамі адносна лініі ці трэцяй кропкі @@ -599,12 +599,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Абмежаванне датычнай - + Create a tangent constraint between two entities Стварыць датычнае абмежаванне паміж дзвюма сутнасцямі @@ -612,12 +612,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Абмежаванне вертыкальнасці - + Create a vertical constraint on the selected item Стварыць абмежаванне вертыкальнасці для абранага элемента @@ -658,18 +658,18 @@ with respect to a line or a third point Create an arc by its end points and a point along the arc - Стварыць дугу па яе канчатковым кропках і кропку наўздоўж дугі + Стварыць дугу па яе канчатковых кропках і кропку наўздоўж дугі CmdSketcherCreate3PointCircle - + Create circle by three points Стварыць акружнасць па трох кропках - + Create a circle by 3 perimeter points Стварыць акружнасць па трох кропках перыметра @@ -690,12 +690,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Стварыць эліптычную дугу - + Create an arc of ellipse in the sketch Стварыць дугу эліпса на эскізе @@ -703,12 +703,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Стварыць гіпербалічную дугу - + Create an arc of hyperbola in the sketch Стварыць дугу гіпербалы на эскізе @@ -716,12 +716,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Стварыць парабалічную дугу - + Create an arc of parabola in the sketch Стварыць дугу парабалы на эскізе @@ -729,12 +729,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Стварыць B-сплайн - + Create a B-spline by control points in the sketch. Стварыць B-сплайн па кантрольных кропках на эскізе. @@ -742,12 +742,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Стварыць акружнасць - + Create a circle in the sketch Стварыць акружнасць на эскізе @@ -755,12 +755,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Стварыць эліпс па трох кропках - + Create an ellipse by 3 points in the sketch Стварыць эліпс па трох кропкам на эскізе @@ -768,12 +768,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Стварыць эліпс па цэнтральнай кропцы - + Create an ellipse by center in the sketch Стварыць эліпс па цэнтральнай кропцы на эскізе @@ -781,12 +781,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Стварыць акругленне - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -794,12 +794,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Стварыць сямікутнік - + Create a heptagon in the sketch Стварыць сямікутнік на эскізе @@ -807,12 +807,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Стварыць шасцікутнік - + Create a hexagon in the sketch Стварыць шасцікутнік на эскізе @@ -846,12 +846,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Стварыць васьмікутнік - + Create an octagon in the sketch Стварыць васьмікутнік на эскізе @@ -859,12 +859,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Стварыць пяцікутнік - + Create a pentagon in the sketch Стварыць пяцікутнік на эскізе @@ -872,12 +872,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Стварыць перыядычны B-сплайн - + Create a periodic B-spline by control points in the sketch. Стварыць перыядычны B-сплайн па кантрольных кропках на эскізе. @@ -885,12 +885,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Стварыць кропку - + Create a point in the sketch Стварыць кропку на эскізе @@ -898,12 +898,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Стварыць акругленне з захаванне кропкі скрыжавання - + Fillet that preserves intersection point and most constraints Акругленне, якое захоўвае кропку скрыжавання і большасці абмежаванняў @@ -950,12 +950,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Стварыць правільны шматкутнік - + Create a regular polygon in the sketch Стварыць правільны шматкутнік на эскізе @@ -963,12 +963,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Стварыць паз - + Create a slot in the sketch Стварыць паз на эскізе @@ -976,12 +976,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Стварыць квадрат - + Create a square in the sketch Стварыць квадрат на эскізе @@ -989,12 +989,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Стварыць роўнабаковы трыкутнік - + Create an equilateral triangle in the sketch Стварыць роўнабаковы трыкутнік на эскізе @@ -1067,12 +1067,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Выцягнуць рабро - + Extend an edge with respect to the picked position Выцягнуць рабро адносна абранага становішча @@ -1080,12 +1080,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Стварыць вонкавую геаметрыю - + Create an edge linked to an external geometry Стварыць рабро, звязанае з вонкавай геаметрыяй @@ -1422,12 +1422,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Падзяліць рабро - + Splits an edge into two while preserving constraints Падзяліць рабро на дзве часткі з захаваннем абмежаванняў @@ -1474,12 +1474,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Задзейнічаць/адключыць абмежаванні - + Activates or deactivates the selected constraints Задзейнічае ці адключае абраныя абмежаванні @@ -1500,12 +1500,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Пераключыць кіруючае/апорнае абмежаванне - + Set the toolbar, or the selected constraints, into driving or reference mode Пераключае панэль інструментаў ці пераўтварае абраныя абмежаванні @@ -1515,12 +1515,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Абрэзаць рабро - + Trim an edge with respect to the picked position Абрэзаць рабро адносна абранага становішча @@ -1578,79 +1578,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Дадаць абмежаванне 'Блакаванне' - + Add relative 'Lock' constraint Дадаць адноснае абмежаванне 'Блакаванне' - + Add fixed constraint Дадаць фіксаванае абмежаванне - + Add 'Block' constraint Дадаць абмежаванне 'Абмежаванне' - + Add block constraint Дадаць абмежаванае абмежаванне - - + + Add coincident constraint Дадаць абмежаванне супадзення - - + + Add distance from horizontal axis constraint Дадаць абмежаванне адлегласці ад гарызантальнай восі - - + + Add distance from vertical axis constraint Дадаць абмежаванне адлегласці ад вертыкальнай восі - - + + Add point to point distance constraint Дадаць абмежаванне кропкі да адлегласці кропкі - - + + Add point to line Distance constraint Дадаць абмежаванне кропкі да адлегласці лініі - - + + Add circle to circle distance constraint Дадаць абмежаванне акружнасці да адлегласці акружнасці - + Add circle to line distance constraint Дадаць абмежаванне акружнасці да адлегласці акружнасці - - - - - - + + + + + + Add length constraint Дадаць абмежаванне даўжыні @@ -1673,8 +1673,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Дадаць абмежаванне адлегласці @@ -1700,7 +1700,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Дадаць абмежаванні сіметрычнасці @@ -1711,220 +1711,220 @@ invalid constraints, degenerated geometry, etc. Дадаць абмежаванні адлегласці - + Add Horizontal constraint Дадаць абмежаванне гарызантальнасці - + Add Vertical constraint Дадаць абмежаванне вертыкальнасці - + Add Block constraint Дадаць абмежаванне блакавання - + Add Angle constraint Дадаць абмежаванне вугла - - - - + + + + Add Equality constraint Дадаць абмежаванне роўнасці - + Add Equality constraints Дадаць абмежаванні роўнасці - - - + + + Add Radius constraint Дадаць абмежаванне радыусу - - + + Add arc angle constraint Дадаць абмежаванне вугла дугі - + Add concentric and length constraint Дадаць абмежаванне канцентрычнасці і даўжыні - + Add DistanceX constraint Дадаць абмежаванне адлегласці X - + Add DistanceY constraint Дадаць абмежаванне адлегласці Y - + Add point to circle Distance constraint Дадаць абмежаванне кропкі да адлегласці акружнасці - - + + Add point on object constraint Дадаць кропку на абмежаванне аб'екта - - + + Add point to point horizontal distance constraint Дадаць абмежаванне кропкі да адлегласці па гарызанталі - + Add fixed x-coordinate constraint Дадаць фіксаванае абмежаванне x-каардынаты - - + + Add point to point vertical distance constraint Дадаць абмежаванне кропкі да адлегласці па вертыкалі - + Add fixed y-coordinate constraint Дадаць фіксаванае абмежаванне y-каардынаты - - + + Add parallel constraint Дадаць абмежаванні паралельнасці - - - - - - - + + + + + + + Add perpendicular constraint Дадаць абмежаванні перпендыкуляру - + Add perpendicularity constraint Дадаць абмежаванні перпендыкулярнасці - + Swap coincident+tangency with ptp tangency Памяняць супадзенне+дотык з дотыкам кропка-кропка - + Swap PointOnObject+tangency with point to curve tangency Памяняць КропкаНаАб'еце+дотык з кропкай дотыку крывой - - - - - - - + + + + + + + Add tangent constraint Дадаць абмежаванне датычнай - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Дадаць абмежаванне датычнай да кропкі - - - - + + + + Add radius constraint Дадаць абмежаванне радыусу - - - - + + + + Add diameter constraint Дадаць абмежаванне дыяметру - - - - + + + + Add radiam constraint Дадаць абмежаванне радыусу/дыяметру - - - - + + + + Add angle constraint Дадаць абмежаванне кута - - + + Add equality constraint Дадаць абмежаванне роўнасці - - - - - + + + + + Add symmetric constraint Дадаць абмежаванне сіметрычнасці - + Add Snell's law constraint Дадаць абмежаванне па закону Снеліуса - + Toggle constraint to driving/reference Пераключае абмежаванне паміж кіруючым і апорным - + Activate/Deactivate constraint Задзейнічаць/Адключыць абмежаванне @@ -2009,7 +2009,7 @@ invalid constraints, degenerated geometry, etc. Дадаць эскіз дугі эліпса - + Add sketch arc of hyperbola Дадаць эскіз дугі гіпербалы @@ -2153,8 +2153,8 @@ invalid constraints, degenerated geometry, etc. Абнавіць абмежаванне віртуальнай прасторы - + Add auto constraints Дадаць аўтаматычныя абмежаванні @@ -2179,12 +2179,12 @@ invalid constraints, degenerated geometry, etc. Перацягнуць крывую - + Drag Constraint Перацягнуць абмежаванні - + Modify sketch constraints Змяніць абмежаванні эскізу @@ -2226,7 +2226,7 @@ invalid constraints, degenerated geometry, etc. Translate geometries - Translate geometries + Геаметрыя пераносу @@ -2275,59 +2275,59 @@ invalid constraints, degenerated geometry, etc. Памылка аўтаматычнага абмежавання: Невырашальны эскіз пасля ўжывання абмежаванняў роўнасці. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Немагчыма разлічыць скрыжаванне крывых. Паспрабуйце дадаць абмежаванні супадзенняў паміж вяршынямі крывых, якія вы збіраецеся акругліць. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline ідэнтыфікатар геаметрыі (GeoID) знаходзіцца за межамі дапушчальных значэнняў. - + You are requesting no change in knot multiplicity. Вы не запытваеце аніякіх зменах у кратнасці вузлоў. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Ідэнтыфікатар геаметрыі (GeoId) не з'яўляецца крывой B-сплайна. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Індэкс вузла знаходзіцца за межамі дапушчальных значэнняў. Звярніце ўвагу, што ў адпаведнасці з назначэннем OCC першы вузел мае індэкс 1, а не 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. Кратнасць не можа быць павялічана звыш ступені B-сплайна. - + The multiplicity cannot be decreased beyond zero. Кратнасць не можа быць паменшана ніжэй за 0. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OpenCASCADE не можа паменшыць кратнасць у межах найбольшай дакладнасці. - + Knot cannot have zero multiplicity. Вузел не можа мець нулявую кратнасць. - + Knot multiplicity cannot be higher than the degree of the BSpline. Кратнасць вузла не можа быць вышэй ступені B-сплайна. - + Knot cannot be inserted outside the BSpline parameter range. Вузел не можа быць устаўлены за межы дыяпазону наладаў B-сплайна. @@ -2407,127 +2407,11 @@ invalid constraints, degenerated geometry, etc. Не прымацаваць + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2537,6 +2421,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2554,9 +2557,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Няправільны выбар @@ -2609,106 +2609,106 @@ invalid constraints, degenerated geometry, etc. Адзін з абраных павінен быць на эскізе. - + Select an edge from the sketch. Абраць рабро на эскізе. - - - - - - + + + + + + Impossible constraint Немагчымае абмежаванне - - + + The selected edge is not a line segment. Абранае рабро не з'яўляецца адрэзкам лініі. - - - + + + Double constraint Залішняе абмежаванне - + The selected edge already has a horizontal constraint! Абранае рабро ўжо мае гарызантальнае абмежаванне! - + The selected edge already has a vertical constraint! Абранае рабро ўжо мае вертыкальнае абмежаванне! - - - + + + The selected edge already has a Block constraint! Абранае рабро ўжо мае абмежаванне руху! - + There are more than one fixed points selected. Select a maximum of one fixed point! Абрана некалькі фіксаваных кропак. Абярыце найбольш адну фіксаваную кропку! - - - + + + Select vertices from the sketch. Абраць вяршыню на эскізе. - + Select one vertex from the sketch other than the origin. Абраць адну вяршыню з эскіза, акрамя кропкі пачатку каардынат. - + Select only vertices from the sketch. The last selected vertex may be the origin. Абраць толькі вяршыні з эскіза. Апошняя абраная вяршыня можа быць кропкай пачатку каардынат. - + Wrong solver status Няправільны статус сродку рашэння - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Абмежаванае абмежаванне не можа быць дададзена, калі эскіз не вырашаны альбо мае залішнія і абмежаванні, якія канфліктуюць. - + Select one edge from the sketch. Абраць адно рабро на эскізе. - + Select only edges from the sketch. Абраць толькі рэбры на эскізе. - + Only tangent-via-point is supported with a B-spline. З дапамогай B-сплайну падтрымліваецца толькі датычная праз кропку. - + Number of selected objects is not 3 Колькасць абраных аб'ектаў не 3 - + Error Памылка @@ -2718,80 +2718,80 @@ invalid constraints, degenerated geometry, etc. Нечаканая памылка. Больш падрабязная інфармацыя можа быць даступная ў Праглядзе справаздачы. - + The selected item(s) can't accept a horizontal or vertical constraint! Абраныя элементы не можа прымаць гарызантальнае ці вертыкальнае абмежаванне! - + Endpoint to endpoint tangency was applied instead. Замест канчатковай кропкі ўжыты дотык да канчатковай кропкі. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Абраць дзве ці болей вяршыні на эскізе для абмежавання супадзення альбо дзве ці болей акружнасцяў, эліпсаў, дуг або дуг эліпса для канцэнтрычнага абмежавання. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Абраць дзве вяршыні на эскізе для абмежавання супадзення альбо дзве акружнасці, эліпсаў, дуг або дуг эліпса для канцэнтрычнага абмежавання. - + Select exactly one line or one point and one line or two points from the sketch. Абраць на эскізе адну лінію, альбо адну кропку і адну лінію, альбо дзве кропкі. - + Cannot add a length constraint on an axis! Не атрымалася дадаць абмежаванне даўжыні на вось! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Абраць на эскізе адну лінію, альбо адну кропку і адну лінію, альбо дзве кропкі, альбо дзве акружнасці. - + This constraint does not make sense for non-linear curves. Абмежаванне не мае сэнсу для нелінейных крывых. - + Endpoint to edge tangency was applied instead. Замест канчатковай кропкі ўжыты дотык да рабра. - - - - - - + + + + + + Select the right things from the sketch. Абраць неабходныя аб'екты на эскізе. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Абраць рабро, якое не з'яўляецца вагой B-сплайна. @@ -2801,92 +2801,92 @@ invalid constraints, degenerated geometry, etc. Адно або два абмежаванні кропкі на аб'екце былі выдаленыя, паколькі апошняе абмежаванне, якое ўжываецца ўнутры, таксама прымяняецца кропкай на аб'екце. - + Select either several points, or several conics for concentricity. Абраць альбо некалькі кропак, альбо некалькі конусаў для канцэнтрычнасці. - + Select either one point and several curves, or one curve and several points Абраць альбо адну кропку і некалькі крывых, альбо адну крывую і некалькі кропак - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Абраць альбо адну кропку і некалькі крывых, альбо адну крывую і некалькі кропак для pointOnObject, альбо некалькі кропак для супадзення, альбо некалькі конусаў для канцэнтрычнасці. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Ні адна з абраных кропак не была абмежаваная адпаведнымі крывымі, таму што яны з'яўляюцца часткамі аднаго і таго ж элемента, таму што яны абодва з'яўляюцца вонкавай геаметрыяй альбо таму, што рабро не падыходзіць. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Ні адна з абраных кропак не была абмежаваная адпаведнымі крывымі, альбо таму што яны з'яўляюцца часткамі аднаго і таго ж элемента, альбо таму што яны абодва з'яўляюцца вонкавай геаметрыяй. - + Cannot add a length constraint on this selection! Не атрымалася дадаць абмежаванне даўжыні для абранага! - - - - + + + + Select exactly one line or up to two points from the sketch. Абраць на эскізе адну лінію, альбо не болей дзвюх кропак. - + Cannot add a horizontal length constraint on an axis! Не атрымалася дадаць гарызантальнае абмежаванне даўжыні на вось! - + Cannot add a fixed x-coordinate constraint on the origin point! Не атрымалася дадаць фіксаванае абмежаванне каардынаты X да кропкі пачатку каардынат! - - + + This constraint only makes sense on a line segment or a pair of points. Абмежаванне мае сэнс толькі для адрэзка лініі ці пары кропак. - + Cannot add a vertical length constraint on an axis! Не атрымалася дадаць вертыкальнае абмежаванне даўжыні на вось! - + Cannot add a fixed y-coordinate constraint on the origin point! Не атрымалася дадаць фіксаванае абмежаванне каардынаты Y да кропкі пачатку каардынат! - + Select two or more lines from the sketch. Абраць дзве ці болей ліній на эскізе. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Адно абранае рабро не з'яўляецца дапушчальнай ліняй. - - + + Select at least two lines from the sketch. Абраць па крайняй меры дзве лініі на эскізе. - + The selected edge is not a valid line. Абранае рабро не з'яўляецца дапушчальнай ліняй. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2896,35 +2896,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Дапушчальныя камбінацыі: дзве крывыя; канчатковая кропка і крывая; дзве канчатковыя кропкі; дзве крывыя і кропка. - + Select some geometry from the sketch. perpendicular constraint Абраць некаторую геаметрыю на эскізе. - - + + Cannot add a perpendicularity constraint at an unconnected point! Не атрымалася дадаць абмежаванне перпендыкулярнасці ў нязлучанай кропцы! - - + + One of the selected edges should be a line. Адно з абраных рэбраў павінна быць лініяй. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Ужыты дотык канчатковай кропкі да канчатковай кропкі. Абмежаванне супадзення было выдалена. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Ужыты дотык канчатковай кропкі да рабра. Абмежаванне кропкі на аб'екце было выдалена. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2934,67 +2934,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Дапушчальныя камбінацыі: дзве крывыя; канчатковая кропка і крывая; дзве канчатковыя кропкі; дзве крывыя і кропка. - + Select some geometry from the sketch. tangent constraint Абраць некаторую геаметрыю на эскізе. - - - + + + Cannot add a tangency constraint at an unconnected point! Не атрымалася дадаць абмежаванне дотыку ў нязлучанай кропцы! - - + + Tangent constraint at B-spline knot is only supported with lines! Датычная абмежаванне ў вузле B-сплайна падтрымліваецца толькі лініямі! - + B-spline knot to endpoint tangency was applied instead. Замест вузла B-сплайну ўжыты дотык да канчатковай кропкі. - - + + Wrong number of selected objects! Няправільная колькасць абраных аб'ектаў! - - + + With 3 objects, there must be 2 curves and 1 point. З 3 аб'ектамі павінна быць 2 крывыя і 1 кропка. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Абраць адну ці болей дуг альбо акружнасцяў на эскізе. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Абраці альбо толькі адзін ці некалькі палюсоў B-сплайну, альбо толькі адну ці некалькі дуг або акружнасцяў на эскізе, але не змешаных. - - - + + + Constraint only applies to arcs or circles. Абмежаванне прымяняецца толькі на дугах ці акружнасцях. - - + + Select one or two lines from the sketch. Or select two edges and a point. Абраць адну ці дзве лініі, альбо дзве крывыя і кропку. @@ -3009,88 +3009,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Не атрымалася задаць абмежаванне вугла паміж паралельнымі лініямі. - + Cannot add an angle constraint on an axis! Не атрымалася дадаць абмежаванне вугла на вось! - + Select two edges from the sketch. Абраць два рабра на эскізе. - + Select two or more compatible edges. Абраць два ці больш сумяшчальных рабра. - + Sketch axes cannot be used in equality constraints. Восі эскізу нельга ўжываць у абмежаваннях роўнасці. - + Equality for B-spline edge currently unsupported. Абмежаванні роўнасці на рэбры B-сплайна ў бягучым часе не падтрымліваецца. - - - - + + + + Select two or more edges of similar type. Абярыце два ці больш рэбраў аналагічнага тыпу. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Абярыце на эскізе дзве кропкі і лінію сіметрыі, альбо дзве кропкі і кропку сіметрыі, альбо лінію і кропку сіметрыі. - - + + Cannot add a symmetry constraint between a line and its end points. - Не атрымалася дадаць абмежаванне сіметрыі паміж лініяй і яе канчатковымі кропкамі. + Не атрымалася дадаць абмежаванне сіметрыі паміж лініяй і яе канчатковых кропках. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! - Не атрымалася дадаць абмежаванне сіметрыі паміж лініяй і яе канчатковымі кропкамі! + Не атрымалася дадаць абмежаванне сіметрыі паміж лініяй і яе канчатковых кропак! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Абраць дзве канчатковыя кропкі ліній, якія будуць дзейнічаць як прамяні, і рабро, якое прадстаўляе мяжу. Першая абраная кропка адпавядае індэксу n1, другая - n2, а апорнае значэнне вызначаецца суадносінамі n2/n1. - + Selected objects are not just geometry from one sketch. Абраныя аб'екты не з'яўляюцца проста геаметрыяй з аднаго эскіза. - + Cannot create constraint with external geometry only. Не атрымалася стварыць абмежаванне з ужываннем толькі вонкавай геаметрыі. - + Incompatible geometry is selected. Абрана несумяшчальная геаметрыя. - - - - - + + + + + Select constraints from the sketch. Абраць абмежаванне на эскізе. @@ -3112,9 +3112,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Вызначыць ступень B-сплайну, паміж 1 і %1: + - CAD Kernel Error Памылка ядра CAD @@ -3257,14 +3257,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Для выдалення выраўноўвання восяў патрабуецца, па меншай меры, адзін абраны не вонкавы геаметрычны элемент - - + + Unsupported visual layer operation Аперацыя візуальнага пласта не падтрымліваецца - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted У бягучым часе не падтрымліваецца рух вонкавай геаметрыі на іншы візуальны пласт. Вонкавая геаметрыя будзе апушчаная @@ -3338,7 +3338,7 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Translate parameters - Translate parameters + Налады пераносу @@ -3650,12 +3650,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Даўжыня: - + Refractive index ratio Суадносіны каэфіцыента праламлення - + Ratio n2/n1: Суадносіны n2/n1: @@ -3663,72 +3663,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Звычайны - + Construction Будаўнічы - + Internal Унутраны - + External Вонкавы - + All types Усе тыпы - + Point Кропка - + Line Лінія - + Circle Акружнасць - + Ellipse Эліпс - + Arc of circle Дуга акружнасці - + Arc of ellipse Дуга эліпса - + Arc of hyperbola Дуга гіпербалы - + Arc of parabola Дуга парабалы - + B-Spline B-сплайн @@ -3851,27 +3851,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Абраць вертыкальную вось - + Layer Пласт - + Layer 0 Пласт 0 - + Layer 1 Пласт 1 - + Hidden Нябачны - + Delete Выдаліць @@ -4075,7 +4075,7 @@ reflected on copies Number of sides: - Number of sides: + Колькасць бакоў: @@ -4746,120 +4746,120 @@ However, no constraints linking to the endpoints were found. Налады - - - - - - - - - - + + + + + + + + + + Construction Будаўнічы - + Elements Элементы - - - - + + + + Point Кропка - - - - - - - - - - + + + + + + + + + + Internal Унутраны - - - - + + + + Line Лінія - - - - + + + + Arc Дуга - - - - + + + + Circle Акружнасць - - - - + + + + Ellipse Эліпс - - - - + + + + Elliptical Arc Эліптычная дуга - - - - + + + + Hyperbolic Arc Гіпербалічная дуга - - - - + + + + Parabolic Arc Парабалічная дуга - - - - + + + + BSpline B-сплайн - - - - + + + + Other Іншы - + Extended information Пашыраная інфармацыя @@ -5080,112 +5080,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Змяніць эскіз - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch Хібны эскіз - + Do you want to open the sketch validation tool? Адчыніць інструмент праверкі эскіза? - + The sketch is invalid and cannot be edited. Эскіз хібны і не можа быць зменены. - + Please remove the following constraint: Калі ласка, выдаліце наступнае абмежаванне: - + Please remove at least one of the following constraints: Калі ласка, выдаліце, прынамсі, адное з наступных абмежаванняў: - + Please remove the following redundant constraint: Калі ласка, выдаліце наступнае залішняе абмежаванне: - + Please remove the following redundant constraints: Калі ласка, выдаліце наступныя залішнія абмежаванні: - + The following constraint is partially redundant: Наступнае абмежаванне часткова залішняе: - + The following constraints are partially redundant: Наступныя абмежаванні часткова залішнія: - + Please remove the following malformed constraint: Калі ласка, выдаліце наступнае скажонае абмежаванне: - + Please remove the following malformed constraints: Калі ласка, выдаліце наступныя скажоныя абмежаванні: - + Empty sketch Пусты эскіз - + Over-constrained: Празмерна-абмежаваны: - + Malformed constraints: Скажоныя абмежаванні: - + Redundant constraints: Залішнія абмежаванні: - + Partially redundant: Часткова залішнія: - + Solver failed to converge Сродку рашэння не атрымалася сысціся - + Under constrained: Ва ўмовах абмежавання: - + %n DoF(s) %n ступені свабоды @@ -5195,7 +5195,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Цалкам абмежаваны @@ -5293,8 +5293,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Задаць дыяметр акружнасці ці дугі @@ -5302,8 +5302,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Задаць радыус/дыяметр акружнасці ці дугі @@ -5311,8 +5311,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Задаць радыус акружнасці ці дугі @@ -5326,70 +5326,25 @@ This is done by analyzing the sketch geometries and constraints. Стварае просты клон геаметрыі, у якасці эталону бярэ апошнюю абраную кропку - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Стварыць дугу па яе канчатковым кропках і кропку наўздоўж дугі - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Стварыць акружнасць па трох кропках вобада - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Стварыць дугу па яе цэнтральнай кропцы і канчатковых кропках - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Стварыць дугу эліпса па яе цэнтральнай кропцы, вялікай паўвосі і канчатковым кропкам - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Стварыць дугу гіпербалы па яе цэнтральнай кропцы, вялікай паўвосі і канчатковым кропкам - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Стварыць дугу парабалы па яе фокусу, вяршыні і канчатковым кропках - - Sketcher_CreateBSpline - + B-spline by control points B-сплайн па кантрольным кропкам - - + + Create a B-spline by control points Стварыць B-сплайн па кантрольным кропкам @@ -5397,35 +5352,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Стварыць акружнасць па яе цэнтральнай кропцы і кропцы вобада - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Стварыць эліпс па перыцэнтру, апацэнтру і малой паўвосі - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Стварыць эліпс па цэнтральнай кропцы, вялікай паўвосі і кропцы - - Sketcher_CreateFillet - - + + Creates a radius between two lines Стварае радыус паміж дзвюма лініямі @@ -5433,8 +5370,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Стварыць семікутнік па яе цэнтральнай кропцы і адным куце @@ -5442,8 +5379,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Стварыць шасцікутнік па яе цэнтральнай кропцы і адным куце @@ -5459,14 +5396,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Стварыць васьмікутнік па яе цэнтральнай кропцы і адным куце + - Create a regular polygon by its center and by one corner Стварыць правільны шматкутнік па яе цэнтральнай кропцы і адным куце @@ -5474,8 +5411,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Стварыць пяцікутнік па яе цэнтральнай кропцы і адным куце @@ -5483,8 +5420,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Акругленне з захаванымі абмежаваннямі і кропкай скрыжавання @@ -5508,8 +5445,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Стварыць квадрат па яе цэнтральнай кропцы і адным куце @@ -5517,8 +5454,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Стварыць роўнабаковы трыкутнік па яе цэнтральнай кропцы і адным куце @@ -5526,13 +5463,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Перыядычны B-сплайн па кантрольным кропкам + - Create a periodic B-spline by control points Стварыць перыядычны B-сплайн па кантрольным кропкам @@ -5933,7 +5870,7 @@ Eigen Sparse QR - аптымізаваны для разрэджаных мат ViewProviderSketch - + and %1 more і яшчэ %1 @@ -6156,46 +6093,46 @@ The grid spacing change if it becomes smaller than this number of pixel.Эскіз мае часткова залішнія абмежаванні! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Парабалы былі перанесены. Перанесеныя файлы не будуць адчыняцца ў папярэдніх версіях FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Памылка @@ -6231,16 +6168,16 @@ The grid spacing change if it becomes smaller than this number of pixel.Абмежаванне змяшчае недапушчальную інфармацыю аб індэксе і з'яўляецца скажоным. + + + - - - - - + + Invalid Constraint @@ -6257,12 +6194,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Не атрымалася дадаць дугу эліпса - + Cannot create arc of hyperbola from invalid angles, try again! Не атрымалася стварыць дугу гіпербалы з хібнымі вугламі, паспрабуйце яшчэ раз! - + Cannot create arc of hyperbola Не атрымалася стварыць дугу гіпербалы @@ -6282,8 +6219,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Памылка стварэння полюса B-сплайну - + Error creating B-spline Памылка стварэння B-сплайну @@ -6339,17 +6276,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Немагчыма дадаць лінію - - - - - - - + + + + + + + Tool execution aborted Выкананне інструмента перапынена @@ -6384,9 +6321,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Немагчыма абрэзаць рабро - + Value Error Памылка значэння @@ -6448,19 +6385,19 @@ The grid spacing change if it becomes smaller than this number of pixel. Failed to translate - Failed to translate + Не атрымалася перанесці Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-сплайн па вузлах - - + + Create a B-spline by knots Стварыць B-сплайн па вузлах @@ -6468,13 +6405,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Перыядычны B-сплайн па вузлах + - Create a periodic B-spline by knots Стварыць перыядычны B-сплайн па вузлах @@ -6584,12 +6521,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Стварыць B-сплайн па вузлах - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Стварыць B-сплайн па вузлах, гэта значыць шляхам інтэрпаляцыі ў эскізе. @@ -6597,12 +6534,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Стварыць перыядычны B-сплайн па вузлах - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Стварыць перыядычны B-сплайн па вузлах, гэта значыць шляхам інтэрпаляцыі ў эскізе. @@ -6610,12 +6547,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Вымярэнне - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6653,12 +6590,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Абмежаванне радыуса - + Fix the radius of a circle or an arc Задаць радыус акружнасці ці дугі @@ -6836,8 +6773,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Стварыць два прастакутніка, адзін у іншым, з аднолькавай таўшчынёй. + Create two rectangles with a constant offset. + Стварыце два прастакутніка з пастаянным зрушэннем. @@ -6851,12 +6788,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Гарызантальны/вертыкальны - + Constrains a single line to either horizontal or vertical. Абмежаванне адной лініі да гарызанталі ці вертыкалі. @@ -6864,12 +6801,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Гарызантальны/вертыкальны - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Абмежаванне адной лініі да гарызанталі ці вертыкалі, у залежнасці ад таго, што бліжэй да бягучага выраўноўвання. @@ -6877,12 +6814,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Змена крывой - + Curve Edition tools. Інструменты для змены крывой. @@ -6890,12 +6827,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Пазы - + Slot tools. Інструменты паза. @@ -6903,12 +6840,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Стварыць дугу паза - + Create an arc slot in the sketch Стварыць дугу паза на эскізе @@ -6916,12 +6853,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Абмежаванне накладання кропак - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Стварыць абмежаванне супадзення паміж кропкамі, альбо зафіксаваць кропку на рабры, альбо канцэнтрычнае абмежаванне паміж акружнасцямі, дугамі і эліпсамі @@ -7306,12 +7243,13 @@ Left clicking on empty space will validate the current constraint. Right clickin Array transform - Array transform + Пераўтварыць масіў Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Перанос абранай геаметрыі. +Уключыце стварэнне i * j копій. @@ -7324,7 +7262,9 @@ Left clicking on empty space will validate the current constraint. Right clickin This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. - This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. + Гэтае тычыцца абмежаванняў зыходных дадзеных, такіх як адлегласці. +Калі вы задзейнічаеце дубліраванне, інструмент скапіруе зыходныя дадзеныя. +У адваротным выпадку ён паспрабуе замяніць іх роўнасць паміж зыходнай геаметрыяй і новымі копіямі. @@ -7332,7 +7272,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Copies (+'U'/-'J') - Copies (+'U'/-'J') + Копіі (+'U'/-'J') @@ -7340,7 +7280,70 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') - Rows (+'R'/-'F') + Радкі (+'R'/-'F') + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Стварыць дугу па яе цэнтральнай кропцы і па яе канчатковых кропках + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Стварыць дугу па яе канчатковых кропках і кропку наўздоўж дугі + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Стварыце эліпс па яго цэнтральнай кропцы, аднаму з яго радыусаў і датычнай кропцы + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Стварыце эліпс па цэнтральнай кропцы, аднаму з яго восей і датычнай кропцы + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Стварыць дугу эліпса па яе цэнтральнай кропцы, аднаму з яго радыусаў і яе канчатковых кропках + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Стварыць дугу гіпербалы па яе цэнтральнай кропцы, вяршыні і канчатковых кропках + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Стварыць дугу парабалы па яе фокусу, вяршыні і канчатковых кропках diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts index 8e944e797d..980e440bc9 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Crea un calc - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Restringeix l'arc o la circumferència - + Constrain an arc or a circle Restringeix un arc o una circumferència - + Constrain radius Restringeix el radi - + Constrain diameter Restringeix el diàmetre - + Constrain auto radius/diameter Limiteu el radi/diàmetre automàtic @@ -180,24 +180,24 @@ - Center and end points - Centre i punts finals + Center and endpoints + Center and endpoints - - End points and rim point - Punts finals i punt de vora + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Crea un B-spline - + Create a B-spline in the sketch Crea un B-spline en el croquis @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Crea un cercle - + Create a circle in the sketcher Crear un cercle en el croquis - + Center and rim point Punt centre i vora - + 3 rim points 3 punts de vora @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Crea una cònica - + Create a conic in the sketch Crear una Cònica al croquis - - Ellipse by center, major radius, point - El·lipse donats el centre, el radi major i un punt + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - El·lipse donats el periàpside, l'apoàpsi de i el radi menor + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arc d'el·lipse donats el centre, el radi major i els extrems + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arc d'hipèrbola donats el centre, el radi major i els extrems + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Arc de paràbola pel focus, el vèrtex i els extrems @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Crea un cantell - + Create a fillet between two lines Crea un cantell arrodonit entre dues línies - + Sketch fillet Cantell del croquis - - Constraint-preserving sketch fillet - Restricció conservant el cantell del croquis + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Crear polígon regular - + Create a regular polygon in the sketcher Crea un polígon regular en el croquis - + Triangle Triangle - + Square Quadrat - + Pentagon Pentàgon - + Hexagon Hexàgon - + Heptagon Heptàgon - + Octagon Octàgon - + Regular polygon Polígon regular @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Restricció de angle - + Fix the angle of a line or the angle between two lines Fixa l'angle d'una línia o l'angle entre dues línies @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Restringeix el bloc - + Block the selected edge from moving Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Restricció coincident - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Crea una restricció coincident entre punts o una restricció concèntrica entre cercles, arcs i el·lipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Restringeix el diàmetre - + Fix the diameter of a circle or an arc Fixa el diàmetre d'un cercle o d'un arc @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Restricció de distància - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Fixa la distància horitzontal entre dos punts o extrems de línia @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Restringir la distància vertical - + Fix the vertical distance between two points or line ends Fixa la distància vertical entre dos punts o extrems de línia @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Restricció igual - + Create an equality constraint between two lines or between circles and arcs Crea una restricció d'igualtat entre dues línies o entre cercles i arcs @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Restricció horitzontal - + Create a horizontal constraint on the selected item Crea una restricció horitzontal en l'element seleccionat @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Restricció de bloqueig - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Restricció de parel·lelisme - + Create a parallel constraint between two lines Crea una restricció de paral·lelisme entre dues línies @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Restricció de perpendicularitat - + Create a perpendicular constraint between two lines Crea una restricció de perpendicularitat entre dues línies @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Restricció d'un punt sobre l'objecte - + Fix a point onto an object Fixa un punt sobre un objecte @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Limiteu el radi/diàmetre automàtic - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Restricció de simetria - + Create a symmetry constraint between two points with respect to a line or a third point Crea una restricció de simetria entre dos punts respecte a una línia o a un tercer punt @@ -601,12 +601,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Restricció tangent - + Create a tangent constraint between two entities Crea una restricció tangent entre dues entitats @@ -614,12 +614,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Restricció veertical - + Create a vertical constraint on the selected item Crea una restricció vertical en l'element seleccionat @@ -666,12 +666,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Crea un cercle donats tres punts - + Create a circle by 3 perimeter points Crea un cercle donats tres punts del perímetre @@ -692,12 +692,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Crea un arc d'el·lipse - + Create an arc of ellipse in the sketch Crea un arc d'el·lipse en el croquis @@ -705,12 +705,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Crea un arc d'hipèrbole - + Create an arc of hyperbola in the sketch Crea un arc d'hipèrbola en el croquis @@ -718,12 +718,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Crea un arc de paràbola - + Create an arc of parabola in the sketch Crea un arc de paràbola en el croquis @@ -731,12 +731,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Crea un B-spline - + Create a B-spline by control points in the sketch. Crear un B-spline mitjançant punts de control del croquis. @@ -744,12 +744,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Crea un cercle - + Create a circle in the sketch Crear un cercle en el dibuix @@ -757,12 +757,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Crear l'el·lipse per 3 punts - + Create an ellipse by 3 points in the sketch Crear una el·lipse els 3 punts en el dibuix @@ -770,12 +770,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Crear el·lipse pel centre - + Create an ellipse by center in the sketch Crear una el·lipse pel centre en el dibuix @@ -783,12 +783,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Crea un cantell - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -796,12 +796,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Crear heptàgon - + Create a heptagon in the sketch Crear un heptàgon en el dibuix @@ -809,12 +809,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Crear hexàgon - + Create a hexagon in the sketch Crear un hexàgon en el dibuix @@ -848,12 +848,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Crear octàgon - + Create an octagon in the sketch Crear un octàgon en el dibuix @@ -861,12 +861,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Crear Pentàgon - + Create a pentagon in the sketch Crear un pentàgon al croquis @@ -874,12 +874,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Crea un B-spline periòdic - + Create a periodic B-spline by control points in the sketch. Crea una B-spline periòdica mitjançant punts de control del croquis. @@ -887,12 +887,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Crear punt - + Create a point in the sketch Crear un punt en el dibuix @@ -900,12 +900,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Crear un cantell que conservi les cantonades - + Fillet that preserves intersection point and most constraints Cantell que conserva el punt d'intersecció i la majoria de les restriccions @@ -952,12 +952,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Crear polígon regular - + Create a regular polygon in the sketch Crea un polígon regular en el croquis @@ -965,12 +965,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Crear ranura - + Create a slot in the sketch Crear una ranura en el dibuix @@ -978,12 +978,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Crear quadrats - + Create a square in the sketch Crear un quadrat en el dibuix @@ -991,12 +991,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Crear triangle equilàter - + Create an equilateral triangle in the sketch Crear un triangle equilàter en el dibuix @@ -1069,12 +1069,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Estén una aresta - + Extend an edge with respect to the picked position Estén una aresta respecte a la posició seleccionada @@ -1082,12 +1082,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Crea una geometria externa - + Create an edge linked to an external geometry Crear un vertex vinculat a una geometria externa @@ -1425,12 +1425,12 @@ Això esborrarà la propietat 'Suport', si existeix. CmdSketcherSplit - + Split edge Dividir aresta - + Splits an edge into two while preserving constraints Divideix una vora en dos tot conservant les restriccions @@ -1477,12 +1477,12 @@ Això esborrarà la propietat 'Suport', si existeix. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activa/desactiva la restricció - + Activates or deactivates the selected constraints Activa o desactiva les restriccions seleccionades @@ -1503,12 +1503,12 @@ Això esborrarà la propietat 'Suport', si existeix. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Canvia la restricció de guia a referència - + Set the toolbar, or the selected constraints, into driving or reference mode Estableix la barra d'eines o les restriccions seleccionades, en mode guia o referència @@ -1517,12 +1517,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Retalla l'aresta - + Trim an edge with respect to the picked position Retalla una aresta respecte a la posició seleccionada @@ -1581,79 +1581,79 @@ restriccions invàlides, geometries degenerades, etc. Command - + Add 'Lock' constraint Afegir restricció 'Bloquejar' - + Add relative 'Lock' constraint Afegeix una restricció de bloqueig relatiu - + Add fixed constraint Afegir restricció fixa - + Add 'Block' constraint Afegir restricció 'Bloqueig' - + Add block constraint Afegir restricció de Bloqueig - - + + Add coincident constraint Afegir restricció de coincidència - - + + Add distance from horizontal axis constraint Afegir distancia des-de la restricció del eix horitzontal - - + + Add distance from vertical axis constraint Afegir distancia des-de la restricció del eix vertical - - + + Add point to point distance constraint Afegeix una restricció de distància entre dos punts - - + + Add point to line Distance constraint Afegeix una restricció de distància de punt a línia - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Afegeix una restricció de longitud @@ -1676,8 +1676,8 @@ restriccions invàlides, geometries degenerades, etc. - - + + Add Distance constraint Add Distance constraint @@ -1703,7 +1703,7 @@ restriccions invàlides, geometries degenerades, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1714,220 +1714,220 @@ restriccions invàlides, geometries degenerades, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Afegeix una restricció de punt sobre l'objecte - - + + Add point to point horizontal distance constraint Afegeix una restricció punt a punt de distància horitzontal - + Add fixed x-coordinate constraint Afegeix restricció de coordenada x fixa - - + + Add point to point vertical distance constraint Afegeix una restricció de distància vertical punt a punt - + Add fixed y-coordinate constraint Afegeix una restricció de coordenada x fixe - - + + Add parallel constraint Afegeix una restricció paral·lela - - - - - - - + + + + + + + Add perpendicular constraint Afegeix una restricció perpendicular - + Add perpendicularity constraint Afegeix una restricció de perpendicularitat - + Swap coincident+tangency with ptp tangency Canvia tangència+coincident amb tangència punt a punt - + Swap PointOnObject+tangency with point to curve tangency Canvia PointOnObject+tangència amb tangència punt a corba - - - - - - - + + + + + + + Add tangent constraint Afegeix una restricció tangent - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Afegeix un punt de restricció de tangent - - - - + + + + Add radius constraint Afegeix una restricció de radi - - - - + + + + Add diameter constraint Afegeix una restricció de diàmetre - - - - + + + + Add radiam constraint Afegeix una restricció de radi - - - - + + + + Add angle constraint Afegeix una restricció d'angle - - + + Add equality constraint Afegeix una restricció d'igualtat - - - - - + + + + + Add symmetric constraint Afegeix una restricció de simetria - + Add Snell's law constraint Afegeix una restricció de Llei de Snell - + Toggle constraint to driving/reference Canvia restricció entre guia i referència - + Activate/Deactivate constraint Activa o desactiva la restricció @@ -2012,7 +2012,7 @@ restriccions invàlides, geometries degenerades, etc. Afegeix un arc d'el·lipse al croquis - + Add sketch arc of hyperbola Afegeix un arc d'hipèrbola al croquis @@ -2156,8 +2156,8 @@ restriccions invàlides, geometries degenerades, etc. Actualitza l'espai virtual de la restricció - + Add auto constraints Afegeix restriccions automàtiques @@ -2182,12 +2182,12 @@ restriccions invàlides, geometries degenerades, etc. Arrossega la corba - + Drag Constraint Arrossega la restricció - + Modify sketch constraints Modifica les restriccions del croquis @@ -2278,59 +2278,59 @@ restriccions invàlides, geometries degenerades, etc. Error d'autorestricció: croquis irresoluble si s'apliquen restriccions d'igualtat. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. No es pot esbrinar la intersecció de corbes. Proveu d'afegir una restricció de coincidència entre els vèrtexs de les corbes que intenteu arrodonir. - - + + BSpline Geometry Index (GeoID) is out of bounds. l'index de geometria BSpline (GeoID) esta fora de les restriccions. - + You are requesting no change in knot multiplicity. Se us ha demanat que no canvieu la multiplicitat del nus. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. L'índex de geometria (GeoId) proporcionada no és una corba de B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. L'índex del nus és fora dels límits. Tingueu en compte que d'acord amb la notació d'OCC, el primer nus té l'índex 1 i no zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. La multiplicitat no pot augmentar més enllà del grau de la B-spline. - + The multiplicity cannot be decreased beyond zero. La multiplicitat no es pot reduir més enllà de zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC no pot reduir la multiplicitat dins de la tolerància màxima. - + Knot cannot have zero multiplicity. El node no pot tenir multiplicitat zero. - + Knot multiplicity cannot be higher than the degree of the BSpline. La multiplicitat de nodes no pot ser superior al grau de la BSpline. - + Knot cannot be inserted outside the BSpline parameter range. El node no es pot inserir fora de l'interval de paràmetres BSpline. @@ -2410,127 +2410,11 @@ restriccions invàlides, geometries degenerades, etc. No adjuntar + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2540,6 +2424,125 @@ restriccions invàlides, geometries degenerades, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2557,9 +2560,6 @@ restriccions invàlides, geometries degenerades, etc. - - - Wrong selection Selecció incorrecta @@ -2612,106 +2612,106 @@ restriccions invàlides, geometries degenerades, etc. Un dels seleccionats ha d'estar a l'esbós. - + Select an edge from the sketch. Seleccioneu una aresta del croquis. - - - - - - + + + + + + Impossible constraint Restricció impossible - - + + The selected edge is not a line segment. L'aresta seleccionada no és un segment de línia. - - - + + + Double constraint Restricció doble - + The selected edge already has a horizontal constraint! La vora seleccionat ja té una restricció horitzontal! - + The selected edge already has a vertical constraint! La vora seleccionat ja té una restricció vertical! - - - + + + The selected edge already has a Block constraint! La vora seleccionat ja té una restricció de bloc! - + There are more than one fixed points selected. Select a maximum of one fixed point! Hi ha més d'un fix punts seleccionats. Seleccioneu un màxim d'un punt fix! - - - + + + Select vertices from the sketch. Seleccioneu vèrtexs del croquis. - + Select one vertex from the sketch other than the origin. Seleccioneu un vèrtex del croquis que no sigui l'origen. - + Select only vertices from the sketch. The last selected vertex may be the origin. Seleccioneu només vèrtexs del croquis. L'últim vèrtex seleccionat pot ser l'origen. - + Wrong solver status Estat del Solver incorrecte - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. No es pot afegir una restricció de bloqueig si el croquis no està resolt o hi ha restriccions redundants i en conflicte. - + Select one edge from the sketch. Seleccioneu una aresta del corquis. - + Select only edges from the sketch. Seleccioneu sols arestes del croquis. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Error @@ -2721,80 +2721,80 @@ restriccions invàlides, geometries degenerades, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. En el seu lloc s'ha aplicat una tangència entre extrems. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Seleccioneu exactament una línia, o un punt i una línia, o dos punts del croquis. - + Cannot add a length constraint on an axis! No es pot afegir una restricció de longitud sobre un eix! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. Aquesta restricció no té sentit per a corbes no lineals. - + Endpoint to edge tangency was applied instead. En el seu lloc, s'ha aplicat la tangència de punt final a vora. - - - - - - + + + + + + Select the right things from the sketch. Seleccioneu els elements correctes del croquis. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Seleccioneu una vora que no sigui un pes B-spline. @@ -2804,92 +2804,92 @@ restriccions invàlides, geometries degenerades, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Cap dels punts seleccionats estava restringit sobre les respectives corbes, perquè són parts del mateix element, perque ambdós són geometries externes, o perquè l'aresta no és eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Cap dels punts seleccionats estaven limitats a les respectives corbes, perquè són peces del mateix element o perquè són tant geometria externa. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Seleccioneu exactament una línia o fins a dos punts del croquis. - + Cannot add a horizontal length constraint on an axis! No es pot afegir una restricció de longitud horitzontal sobre un eix! - + Cannot add a fixed x-coordinate constraint on the origin point! No es pot afegir una limitació coordenada x fixa en el punt d'origen! - - + + This constraint only makes sense on a line segment or a pair of points. Aquesta restricció només té sentit en un segment de línia o un parell de punts. - + Cannot add a vertical length constraint on an axis! No es pot afegir una restricció de longitud vertical sobre un eix! - + Cannot add a fixed y-coordinate constraint on the origin point! No es pot afegir una limitació coordenada x fixa en el punt d'origen! - + Select two or more lines from the sketch. Seleccioneu dues o més línies del croquis. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Seleccioneu almenys dues línies del croquis. - + The selected edge is not a valid line. L'aresta seleccionada no és una línia vàlida. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2897,35 +2897,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Aquesta restricció es pot aplicar de diverses maneres. Les combinacions possibles són: dues corbes; un extrem i una corba; dos extrems; dues corbes i un punt. - + Select some geometry from the sketch. perpendicular constraint Seleccioneu alguna geometria del croquis. - - + + Cannot add a perpendicularity constraint at an unconnected point! No es pot afegir una restricció de perpendicularitat en un punt no connectat! - - + + One of the selected edges should be a line. Una de les arestes seleccionades ha de ser una línia. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. S'ha aplicat una tangència entre extrems. S'han suprimit les restriccions coincidents. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. S'ha aplicat la tangència de punt final a vora. S'ha suprimit el punt sobre la restricció d'objectes. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2933,67 +2933,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Aquesta restricció es pot aplicar de diverses maneres. Les combinacions possibles són: dues corbes; un extrem i una corba; dos extrems; dues corbes i un punt. - + Select some geometry from the sketch. tangent constraint Seleccioneu alguna geometria del croquis. - - - + + + Cannot add a tangency constraint at an unconnected point! No es pot afegir una restricció de tangència en un punt no connectat! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! El nombre d'objectes seleccionats és incorrecte! - - + + With 3 objects, there must be 2 curves and 1 point. Amb 3 objectes, hi ha d'haver 2 corbes i 1 punt. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Seleccioneu un o més arcs o cercles del croquis. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Seleccioneu o bé un o diversos pols de B-spline, o bé un o més arcs o circumferències del croquis, però no els mescleu. - - - + + + Constraint only applies to arcs or circles. La restricció només s'aplica a arcs i cercles. - - + + Select one or two lines from the sketch. Or select two edges and a point. Seleccioneu una o dues línies del croquis. O seleccioneu dues arestes i un punt. @@ -3008,88 +3008,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Una restricció d'angle no es pot definir per dues línies paral·leles. - + Cannot add an angle constraint on an axis! No es pot afegir una restricció d'angle sobre un eix! - + Select two edges from the sketch. Seleccioneu dues arestes del croquis. - + Select two or more compatible edges. Seleccioneu dues o més arestes compatibles. - + Sketch axes cannot be used in equality constraints. Els eixos d'esbós no es poden utilitzar en restriccions d'igualtat. - + Equality for B-spline edge currently unsupported. Actualment no s'admet la igualtat per a la vora del B-spline. - - - - + + + + Select two or more edges of similar type. Seleccioneu dues o més arestes de tipus similar. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Seleccioneu dos punts i una línia de simetria, dos punts i un punt de simetria, o bé una línia i un punt de simetria del croquis. - - + + Cannot add a symmetry constraint between a line and its end points. No es pot afegir una restricció de simetria entre una línia i els seus extrems. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! No es pot afegir una restricció de simetria entre una línia i els seus extrems! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Seleccioneu dos extrems de línia per actuar com a raigs, i una aresta que representi un límit. El primer punt seleccionat correspon a l'índex n1, el segon a n2, i el valor de la restricció estableix una ràtio n2/n1. - + Selected objects are not just geometry from one sketch. Els objectes seleccionats no són només geometria d'un corquis. - + Cannot create constraint with external geometry only. No es pot crear una restricció només amb geometria externa. - + Incompatible geometry is selected. S'ha seleccionat geometria incompatible. - - - - - + + + + + Select constraints from the sketch. Seleccioneu restriccions del croquis. @@ -3111,9 +3111,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Definiu el grau B-Spline, entre 1 i %1: + - CAD Kernel Error Error del nucli del CAD @@ -3256,14 +3256,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c L'eliminació de l'alineació dels eixos requereix almenys un element geomètric no extern seleccionat - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3647,12 +3647,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Longitud: - + Refractive index ratio Índex de refracció - + Ratio n2/n1: Relació n2/n1: @@ -3660,72 +3660,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Normal - + Construction Construcció - + Internal Internal - + External Extern - + All types All types - + Point Punt - + Line Línia - + Circle Cercle - + Ellipse El·lipse - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3848,27 +3848,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Select Vertical Axis - + Layer Capa - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Amagades - + Delete Elimina @@ -4733,120 +4733,120 @@ However, no constraints linking to the endpoints were found. Paràmetres - - - - - - - - - - + + + + + + + + + + Construction Construcció - + Elements Elements - - - - + + + + Point Punt - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Línia - - - - + + + + Arc Arc - - - - + + + + Circle Cercle - - - - + + + + Ellipse El·lipse - - - - + + + + Elliptical Arc Arc el·líptic - - - - + + + + Hyperbolic Arc Arc hiperbòlic - - - - + + + + Parabolic Arc Arc parabòlic - - - - + + + + BSpline BSpline - - - - + + + + Other Altres - + Extended information Informació ampliada @@ -5067,114 +5067,114 @@ Això es fa mitjançant l'anàlisi de les geometries i restriccions de l'esbós. SketcherGui::ViewProviderSketch - + Edit sketch Editar croquis - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch El croquis no és vàlid - + Do you want to open the sketch validation tool? Voleu obrir l'eina de validació d'esbossos? - + The sketch is invalid and cannot be edited. El croquis no és vàlid i no es pot editar. - + Please remove the following constraint: Suprimiu la restricció següent: - + Please remove at least one of the following constraints: Suprimiu almenys una de les restriccions següents: - + Please remove the following redundant constraint: Suprimiu la restricció redundant següent: - + Please remove the following redundant constraints: Suprimiu les restriccions redundants següents: - + The following constraint is partially redundant: La restricció següent és parcialment redundant: - + The following constraints are partially redundant: Les següents restriccions són parcialment redundants: - + Please remove the following malformed constraint: Si us plau, elimineu la restricció defectuosa següent: - + Please remove the following malformed constraints: Si us plau, elimineu les restriccions defectuoses següents: - + Empty sketch Croquis buit - + Over-constrained: Sobre-restringit: - + Malformed constraints: Selecciona restriccions defectuoses: - + Redundant constraints: Restriccions redundants: - + Partially redundant: Parcialment redundant: - + Solver failed to converge El solucionador no ha pogut convergir - + Under constrained: Sub-restringit: - + %n DoF(s) %n Grau(s) de llibertat @@ -5182,7 +5182,7 @@ El solucionador no ha pogut convergir - + Fully constrained Esbós completament restringit @@ -5280,8 +5280,8 @@ El solucionador no ha pogut convergir Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixa el diàmetre d'un cercle o d'un arc @@ -5289,8 +5289,8 @@ El solucionador no ha pogut convergir Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fixeu el radi/diàmetre d'un cercle o d'un arc @@ -5298,8 +5298,8 @@ El solucionador no ha pogut convergir Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -5313,70 +5313,25 @@ El solucionador no ha pogut convergir Crea una còpia simple de la geometria prenent com a referència l'últim punt seleccionat - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Crea un arc donats els extrems i un punt al llarg de l'arc - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Crea un cercle donats tres punts de la vora - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Crea un arc donats el centre i els extrems - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Crea un arc d'el·lipse a partir del seu centre, radi major i extrems - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Crea un arc d'hipèrbola a partir del seu centre, radi major i extrems - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Crea un arc de parabola a partir del seu focus, vèrtex i extrems - - Sketcher_CreateBSpline - + B-spline by control points B-spline per punts de control - - + + Create a B-spline by control points Crea un B-spline donats els punts de control @@ -5384,35 +5339,17 @@ El solucionador no ha pogut convergir Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Crea un cercle donats el centre i un punt de la vora - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Crea una el·lipse donats el periàpside, l'apoàpside i el radi menor - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Crea una el·lipse donats el centre, el radi major i un punt - - Sketcher_CreateFillet - - + + Creates a radius between two lines Crea un radi entre dues línies @@ -5420,8 +5357,8 @@ El solucionador no ha pogut convergir Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Crea un heptàgon donats el centre i un vèrtex @@ -5429,8 +5366,8 @@ El solucionador no ha pogut convergir Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Crea un hexàgon donats el centre i un vèrtex @@ -5446,14 +5383,14 @@ El solucionador no ha pogut convergir Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Crea un octàgon donats el centre i un vèrtex + - Create a regular polygon by its center and by one corner Crea un polígon regular donats el centre i un vèrtex @@ -5461,8 +5398,8 @@ El solucionador no ha pogut convergir Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Crea un pentàgon donats el centre i un vèrtex @@ -5470,8 +5407,8 @@ El solucionador no ha pogut convergir Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Cantell que preserva les restriccions i el punt d'intersecció @@ -5495,8 +5432,8 @@ El solucionador no ha pogut convergir Sketcher_CreateSquare + - Create a square by its center and by one corner Crea un quadrat donats el centre i un vèrtex @@ -5504,8 +5441,8 @@ El solucionador no ha pogut convergir Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Crea un triangle equilàter donats el centre i un vèrtex @@ -5513,13 +5450,13 @@ El solucionador no ha pogut convergir Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periòdic per punts de control + - Create a periodic B-spline by control points Crea un B-spline periòdic donats els punts de control @@ -5919,7 +5856,7 @@ L'algoritme Eigen Sparse QR està optimitzat per a matrius escasses; generalment ViewProviderSketch - + and %1 more i % 1 més @@ -6142,46 +6079,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Error @@ -6217,16 +6154,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6243,12 +6180,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6268,8 +6205,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6325,17 +6262,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6370,9 +6307,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6435,13 +6372,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6449,13 +6386,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6561,12 +6498,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Crea una B-spline per nusos - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Crea una B-spline per nusos, p. ex. per interpolació, en el croquis. @@ -6574,12 +6511,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Crea una B-spline periòdica per nusos - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Crea una B-spline periòdica per nusos, p. ex. per interpolació, en el croquis. @@ -6587,12 +6524,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Cota - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6630,12 +6567,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Restringeix el radi - + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -6810,8 +6747,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6825,12 +6762,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6838,12 +6775,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6851,12 +6788,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6864,12 +6801,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6877,12 +6814,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6890,12 +6827,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Restricció coincident - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7315,4 +7252,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts index eacadc89bd..43426a9bee 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Vytvořit kopii náčrtu - + Copy the geometry of another sketch Zkopírovat geometrii jiného náčrtu @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Vazba oblouku nebo kružnice - + Constrain an arc or a circle Vazba oblouku nebo kružnice - + Constrain radius Vazba poloměru - + Constrain diameter Vazba průměru - + Constrain auto radius/diameter Vazba automaticky poloměr/průměr @@ -180,24 +180,24 @@ - Center and end points - Střed a koncové body + Center and endpoints + Center and endpoints - - End points and rim point - Koncové body a okrajový bod + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Vytvořit B-splajn - + Create a B-spline in the sketch Vytvoří B-splajn v náčrtu @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Vytvořit kružnici - + Create a circle in the sketcher Vytvoří kružnici v náčrtu - + Center and rim point Střed a okrajový bod - + 3 rim points 3 okrajové body @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Vytvořit kuželosečku - + Create a conic in the sketch Vytvoří kuželosečku v náčrtu - - Ellipse by center, major radius, point - Elipsa pomocí středu, hlavní poloosy a bodu + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Elipsa pomocí perihélia, afélia a vedlejší poloosy + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Oblouk elipsy pomocí středu, hlavní poloosy a koncových bodů + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Oblouk hyperboly od středu, hlavní poloměr, koncové body + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Oblouk paraboly pomocí ohniska, vrscholu, koncových bodů @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Vytvořit zaoblení - + Create a fillet between two lines Vytvořit zaoblení mezi dvěma úsečkami - + Sketch fillet Náčrt zaoblení - - Constraint-preserving sketch fillet - Náčrt zaoblení se zachováním vazeb + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Vytvořit pravidelný mnohoúhelník - + Create a regular polygon in the sketcher Vytvoří pravidelný mnohoúhelník v náčrtu - + Triangle Trojúhelník - + Square Čtverec - + Pentagon Pětiúhelník - + Hexagon Šestiúhelník - + Heptagon Sedmiúhelník - + Octagon Osmiúhelník - + Regular polygon Pravidelný n-úhelník @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Vazba úhlu - + Fix the angle of a line or the angle between two lines Zadá úhel čáry nebo úhel mezi dvěma čarami @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Vazba blokace - + Block the selected edge from moving Blokuje pohyb vybrané hrany @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Vazba totožnosti - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Vytvoří souosou vazbu mezi body nebo soustřednou vazbu mezi kružnicemi, oblouky a elipsami @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Vazba průměru - + Fix the diameter of a circle or an arc Zadá průměr kružnice nebo oblouku @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Vazba vzdálenosti - + Fix a length of a line or the distance between a line and a vertex or between two circles Zadá délku čáry nebo vzdálenost mezi čárou a vrcholem nebo mezi dvěma kružnicemi @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Vazba vodorovné vzdálenosti - + Fix the horizontal distance between two points or line ends Zadá vodorovnou vzdálenost mezi dvěma body nebo konci čáry @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Vazba svislé vzdálenosti - + Fix the vertical distance between two points or line ends Zadá svislou vzdálenost mezi dvěma body nebo konci čáry @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Vazba shodnosti - + Create an equality constraint between two lines or between circles and arcs Vytvoří shodnost mezi dvěma čarami, kruhy nebo oblouky @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Vazba vodorovně - + Create a horizontal constraint on the selected item Vytvoří vodorovnou vazbu na vybranou položku @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Vazba uzamknutí - + Create both a horizontal and a vertical distance constraint on the selected vertex Vytvoří vodorovnou i svislou vazbu vzdálenosti na vybraném vrcholu @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Vazba rovnoběžnosti - + Create a parallel constraint between two lines Vytvoří rovnoběžnost mezi dvěma čarami @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Vazba kolmosti - + Create a perpendicular constraint between two lines Vytvoří kolmost mezi dvěma čarami @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Vazba bodu k objektu - + Fix a point onto an object Umístí bod na objekt @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Vazba automaticky poloměr/průměr - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Zadá průměr, pokud je vybrána kružnice nebo poloměr, pokud je vybrán oblouk/pól splajnu @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Vazba lomu (Snellův zákon) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Vytvoří vazbu podle zákona lomu (Snellův zákon) mezi @@ -586,12 +586,12 @@ dvěma koncovými body paprsků a hranou jako rozhraní. CmdSketcherConstrainSymmetric - + Constrain symmetrical Vazba symetrie - + Create a symmetry constraint between two points with respect to a line or a third point Vytvoří symetrii mezi dvěma body vzhledem k čáře nebo třetímu bodu @@ -600,12 +600,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Vazba tečnosti - + Create a tangent constraint between two entities Vytvoří tečnost mezi dvěma objekty @@ -613,12 +613,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Vazba svisle - + Create a vertical constraint on the selected item Vytvoří svislou vazbu na vybranou položku @@ -665,12 +665,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Vytvořit kružnici třemi body - + Create a circle by 3 perimeter points Vytvoří kružnici třemi obvodovými body @@ -691,12 +691,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Vytvořit oblouk elipsy - + Create an arc of ellipse in the sketch Vytvoří oblouk elipsy v náčrtu @@ -704,12 +704,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Vytvořit oblouk hyperboly - + Create an arc of hyperbola in the sketch Vytvoří oblouk hyperboly v náčrtu @@ -717,12 +717,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Vytvořit oblouk paraboly - + Create an arc of parabola in the sketch Vytvoří oblouk paraboly v náčrtu @@ -730,12 +730,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Vytvořit B-splajn - + Create a B-spline by control points in the sketch. Vytvoří B-splajn pomocí kontrolních bodů v náčrtu. @@ -743,12 +743,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Vytvořit kružnici - + Create a circle in the sketch Vytvoří kružnici v náčrtu @@ -756,12 +756,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Vytvořit elipsu třemi body - + Create an ellipse by 3 points in the sketch Vytvoří elipsu pomocí 3 bodů v náčrtu @@ -769,12 +769,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Vytvořit elipsu pomocí středu - + Create an ellipse by center in the sketch Vytvoří elipsu pomocí středu v náčrtu @@ -782,12 +782,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Vytvořit zaoblení - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -795,12 +795,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Vytvořit sedmiúhelník - + Create a heptagon in the sketch Vytvoří sedmiúhelník v náčrtu @@ -808,12 +808,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Vytvořit šestiúhelník - + Create a hexagon in the sketch Vytvoří šestiúhelník v náčrtu @@ -847,12 +847,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Vytvořit osmiúhelník - + Create an octagon in the sketch Vytvoří osmiúhelník v náčrtu @@ -860,12 +860,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Vytvořit pětiúhelník - + Create a pentagon in the sketch Vytvoří pětiúhelník v náčrtu @@ -873,12 +873,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Vytvořit periodický B-splajn - + Create a periodic B-spline by control points in the sketch. Vytvoří periodický B-splajn pomocí kontrolních bodů v náčrtu. @@ -886,12 +886,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Vytvořit bod - + Create a point in the sketch Vytvoří bod v náčrtu @@ -899,12 +899,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Vytvořit zaoblení zachovávající rohy - + Fillet that preserves intersection point and most constraints Zaoblení, které zachovává průsečík a většinu vazeb @@ -951,12 +951,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Vytvořit pravidelný mnohoúhelník - + Create a regular polygon in the sketch Vytvoří pravidelný mnohoúhelník v náčrtu @@ -964,12 +964,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Vytvořit drážku - + Create a slot in the sketch Vytvoří drážku v náčrtu @@ -977,12 +977,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Vytvořit čtverec - + Create a square in the sketch Vytvoří čtverec v náčrtu @@ -990,12 +990,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Vytvořit rovnostranný trojúhelník - + Create an equilateral triangle in the sketch Vytvoří rovnostranný trojúhelník v náčrtu @@ -1068,12 +1068,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Prodloužit hranu - + Extend an edge with respect to the picked position Prodlouží hranu vzhledem k vybrané poloze @@ -1081,12 +1081,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Vytvořit vnější geometrii - + Create an edge linked to an external geometry Vytvořit hranu spojenou s vnější geometií @@ -1425,12 +1425,12 @@ Tímto se vymaže vlastnost "Podpora", pokud existuje. CmdSketcherSplit - + Split edge Rozdělit hranu - + Splits an edge into two while preserving constraints Rozdělí hranu na dvě se zachováním vazeb @@ -1477,12 +1477,12 @@ Tímto se vymaže vlastnost "Podpora", pokud existuje. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Aktivovat/deaktivovat vazbu - + Activates or deactivates the selected constraints Aktivuje nebo deaktivuje vybrané vazby @@ -1503,12 +1503,12 @@ Tímto se vymaže vlastnost "Podpora", pokud existuje. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Přepnout řídící/referenční vazbu - + Set the toolbar, or the selected constraints, into driving or reference mode Nastavit panel nástrojů nebo vybrané vazby @@ -1518,12 +1518,12 @@ do řídícího nebo referenčního režimu CmdSketcherTrimming - + Trim edge Oříznout hranu - + Trim an edge with respect to the picked position Oříznout hranu podle vybrané polohy @@ -1582,79 +1582,79 @@ neplatných vazeb, degenerované geometrie atd. Command - + Add 'Lock' constraint Přidat vazbu 'Uzamčení' - + Add relative 'Lock' constraint Přidat vazbu relativního 'Uzamčení' - + Add fixed constraint Přidat pevnou vazbu - + Add 'Block' constraint Přidat vazbu 'Blokace' - + Add block constraint Přidat vazbu blokace - - + + Add coincident constraint Přidat vazbu totožnosti - - + + Add distance from horizontal axis constraint Přidat vazbu vzdálenosti od vodorovné osy - - + + Add distance from vertical axis constraint Přidat vazbu vzdálenosti od svislé osy - - + + Add point to point distance constraint Přidat vazbu vzdálenosti dvou bodů - - + + Add point to line Distance constraint Přidat vazbu vzdálenosti bodu a čáry - - + + Add circle to circle distance constraint Přidat kruh do kružnice – omezení vzdálenosti - + Add circle to line distance constraint Přidání vazby vzdálenosti kružnice od čáry - - - - - - + + + + + + Add length constraint Přidat vazbu délky @@ -1677,8 +1677,8 @@ neplatných vazeb, degenerované geometrie atd. - - + + Add Distance constraint Přidat vazbu vzdálenosti @@ -1704,7 +1704,7 @@ neplatných vazeb, degenerované geometrie atd. - + Add Symmetry constraints Přidat vazby symetrie @@ -1715,220 +1715,220 @@ neplatných vazeb, degenerované geometrie atd. Přidat vazby vzdálenosti - + Add Horizontal constraint Přidat vodorovnou vazbu - + Add Vertical constraint Přidat vertikální vazbu - + Add Block constraint Přidat vazbu blokace - + Add Angle constraint Přidat vazbu úhlu - - - - + + + + Add Equality constraint Přidat vazbu rovnosti - + Add Equality constraints Přidat vazby rovnosti - - - + + + Add Radius constraint Přidat vazbu poloměru - - + + Add arc angle constraint Přidat vazbu úhlu oblouku - + Add concentric and length constraint Přidat soustřednou a délkovou vazbu - + Add DistanceX constraint Přidat vazbu vodorovné vzdálenosti - + Add DistanceY constraint Přidat vazbu svislé vzdálenosti - + Add point to circle Distance constraint Přidat vazbu vzdálenosti bodu od kružnice - - + + Add point on object constraint Přidat vazbu bodu na objektu - - + + Add point to point horizontal distance constraint Přidat vazbu vodorovné vzdálenosti dvou bodů - + Add fixed x-coordinate constraint Přidat vazbu pevné souřadnice x - - + + Add point to point vertical distance constraint Přidat vazbu svislé vzdálenosti dvou bodů - + Add fixed y-coordinate constraint Přidat vazbu pevné souřadnice y - - + + Add parallel constraint Přidat paralelní vazbu - - - - - - - + + + + + + + Add perpendicular constraint Přidat kolmou vazbu - + Add perpendicularity constraint Přidat vazbu kolmosti - + Swap coincident+tangency with ptp tangency Prohodit shodnost+tečnost s tečností v bodech - + Swap PointOnObject+tangency with point to curve tangency Bod na křivce + tečnost prohodit s tečností v bodě křivky - - - - - - - + + + + + + + Add tangent constraint Přidat vazbu tečnosti - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Přidat vazbu bodu tečnosti - - - - + + + + Add radius constraint Přidat vazbu poloměru - - - - + + + + Add diameter constraint Přidat vazbu průměru - - - - + + + + Add radiam constraint Přidat vazbu poloměr-průměr - - - - + + + + Add angle constraint Přidat úhlovou vazbu - - + + Add equality constraint Přidat vazbu rovnosti - - - - - + + + + + Add symmetric constraint Přidat vazbu symetrie - + Add Snell's law constraint Přidat vazbu Snellova zákona - + Toggle constraint to driving/reference Přepnout vazbu na řídící/referenční - + Activate/Deactivate constraint Aktivovat/Deaktivovat vazbu @@ -2013,7 +2013,7 @@ neplatných vazeb, degenerované geometrie atd. Přidat oblouk náčrtu elipsy - + Add sketch arc of hyperbola Přidat oblouk náčrtu hyperboly @@ -2157,8 +2157,8 @@ neplatných vazeb, degenerované geometrie atd. Aktualizovat virtuální prostor vazby - + Add auto constraints Přidat automatické vazby @@ -2183,12 +2183,12 @@ neplatných vazeb, degenerované geometrie atd. Přetáhnout křivku - + Drag Constraint Přetáhnout vazbu - + Modify sketch constraints Upravit vazby náčrtu @@ -2279,59 +2279,59 @@ neplatných vazeb, degenerované geometrie atd. Chyba automatických vazeb: Neřešitelný náčrt po aplikaci vazeb rovnosti. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Nelze odhadnout průsečík křivek. Zkuste přidat vazbu totožnosti mezi vrcholy křivek, které chcete zaoblit. - - + + BSpline Geometry Index (GeoID) is out of bounds. Geometrický index (GeoID) B-splajnu je mimo meze. - + You are requesting no change in knot multiplicity. Nepožadujete změnu v násobnosti uzlů. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Daný geometrický index (GeoId) neodpovídá B-splajn křivce. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Index uzlu je mimo hranice. Všimněte si, že v souladu s OCC zápisem je index prvního uzlu 1 a ne 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. Násobnost nemůže být zvýšena nad stupeň B-splajnu. - + The multiplicity cannot be decreased beyond zero. Násobnost nemůže být snížena pod nulu. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC není schopno snížit násobnost na maximální toleranci. - + Knot cannot have zero multiplicity. Uzel nemůže mít nulovou násobnost. - + Knot multiplicity cannot be higher than the degree of the BSpline. Násobnost uzlu nemůže být vyšší než stupeň BSplajnu. - + Knot cannot be inserted outside the BSpline parameter range. Nelze vložit uzel mimo rozsah parametrů BSplajnu. @@ -2411,127 +2411,11 @@ neplatných vazeb, degenerované geometrie atd. Nelze připojit + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ neplatných vazeb, degenerované geometrie atd. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ neplatných vazeb, degenerované geometrie atd. - - - Wrong selection Neplatný výběr @@ -2613,106 +2613,106 @@ neplatných vazeb, degenerované geometrie atd. Jeden z vybraných musí být na náčrt. - + Select an edge from the sketch. Vyber hranu z náčrtu. - - - - - - + + + + + + Impossible constraint Nemožné omezení - - + + The selected edge is not a line segment. Vybraný okraj není segment čáry. - - - + + + Double constraint Dvojité omezení - + The selected edge already has a horizontal constraint! Vybraná hrana již má vodorovnou vazbu! - + The selected edge already has a vertical constraint! Vybraná hrana již má vertikální vazbu! - - - + + + The selected edge already has a Block constraint! Vybraná hrana již má vazbu blokace! - + There are more than one fixed points selected. Select a maximum of one fixed point! Je vybráno více pevných bodů. Vyberte nejvýše jeden pevný bod! - - - + + + Select vertices from the sketch. Vyberte vrcholy z náčrtu. - + Select one vertex from the sketch other than the origin. Vyberte jeden vrchol z náčrtu jiný než počátek. - + Select only vertices from the sketch. The last selected vertex may be the origin. Vyberte jen vrcholy z náčrtu. Poslední vybraný vrchol může být počátek. - + Wrong solver status Špatný status řešiče - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Vazba blokace nemůže být přidána, pokud je náčrt nevyřešený nebo pokud obsahuje nadbytečné či konfliktní vazby. - + Select one edge from the sketch. Vyberte jednu hranu z náčrtu. - + Select only edges from the sketch. Vyberte pouze hrany z náčrtu. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Počet vybraných objektů není 3 - + Error Chyba @@ -2722,80 +2722,80 @@ neplatných vazeb, degenerované geometrie atd. Neočekávaná chyba. Více informací může být k dispozici v zobrazení zprávy. - + The selected item(s) can't accept a horizontal or vertical constraint! Vybrané položky nemohou přijmout vodorovnou nebo svislou vazbu! - + Endpoint to endpoint tangency was applied instead. Namísto toho byla aplikována tečnost v koncových bodech. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Vyberte dva nebo více vrcholů z náčrtu pro vazbu totožnosti nebo dvě nebo více kružnic, elips, oblouků nebo oblouků elips pro soustřednou vazbu. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Vyberte dva vrcholy z náčrtu pro vazbu totožnosti nebo dvě kružnice, elipsy, oblouky nebo oblouky elipsy pro soustřednou vazbu. - + Select exactly one line or one point and one line or two points from the sketch. Vyberte právě jednu úsečku nebo jeden bod a úsečku nebo dva body z náčrtu. - + Cannot add a length constraint on an axis! Nelze přidat délkovou vazbu osy! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Vyberte přesně jednu čáru nebo jeden bod a jednu čáru nebo dva body nebo dvě kružnice z náčrtu. - + This constraint does not make sense for non-linear curves. Tato vazba nedává smysl pro nelineární křivky. - + Endpoint to edge tangency was applied instead. Namísto toho byla použita tečnost hrany v koncovém bodě. - - - - - - + + + + + + Select the right things from the sketch. Výberte správné věci z náčrtu. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Vyberte hranu, která není váhou B-splajnu. @@ -2805,92 +2805,92 @@ neplatných vazeb, degenerované geometrie atd. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Žádný z vybraných bodů nebyl napojen na příslušnou křivku, protože jsou součástí téhož elementu nebo tvoří oba vnější geometrii. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Žádný z vybraných bodů nebyl napojen na příslušnou křivku, protože jsou buď součístí téhož elementu nebo tvoří oba vnější geometrii. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Vyberte právě jednu úsečku nebo až dva body z náčrtu. - + Cannot add a horizontal length constraint on an axis! Nelze přidat vodorovnou délkovou vazbu osy! - + Cannot add a fixed x-coordinate constraint on the origin point! Nelze přidat vazbu souřadnice x na počátek souřadnic! - - + + This constraint only makes sense on a line segment or a pair of points. Tato vazba má smysl pouze na segmentu čáry nebo na dvojici bodů. - + Cannot add a vertical length constraint on an axis! Nelze přidat svislou délkovou vazbu osy! - + Cannot add a fixed y-coordinate constraint on the origin point! Nelze přidat vazbu souřadnice y na počátek souřadnic! - + Select two or more lines from the sketch. Vyberte dvě nebo více úseček z náčrtu. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Vyberte nejméně dvě úsečky z náčrtu. - + The selected edge is not a valid line. Vybraná hrana není platnou úsečkou. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; dvě křivky a bod. - + Select some geometry from the sketch. perpendicular constraint Vyberte geometrii z náčrtu. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nelze přidat kolmou vazbu na volný bod! - - + + One of the selected edges should be a line. Jedna z vybraných hran by měla být úsečka. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Byla aplikována tečnost v koncových bodech. Vazba totožnosti byla smazána. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Byla použita tečnost hrany v koncovém bodě. Vazba bodu na objektu byla smazána. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; dvě křivky a bod. - + Select some geometry from the sketch. tangent constraint Vyberte geometrii z náčrtu. - - - + + + Cannot add a tangency constraint at an unconnected point! Nelze přidat tangentní vazbu na volný bod! - - + + Tangent constraint at B-spline knot is only supported with lines! Omezení tečny u B-spline uzlu je podporováno pouze čarami! - + B-spline knot to endpoint tangency was applied instead. Místo toho byl použit uzel B-spline k tečnosti koncového bodu. - - + + Wrong number of selected objects! Nesprávný počet vybraných objektů! - - + + With 3 objects, there must be 2 curves and 1 point. Mezi třemi objekty musí být 2 křivky a 1 bod. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Vyberte jeden nebo více oblouků nebo kružnic z náčrtu. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Vyberte buď pouze jeden nebo více pólů B-Splajnu nebo pouze jeden oblouk nebo kružnici z náčrtu, ale ne jejich kombinace. - - - + + + Constraint only applies to arcs or circles. Vazbu lze použít jen na oblouky nebo kružnice. - - + + Select one or two lines from the sketch. Or select two edges and a point. Vyberte jednu nebo dvě úsečky z náčrtu. Nebo vyberte dvě hrany a bod. @@ -3013,88 +3013,88 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Úhlová vazba nemůže být nastavena pro dvě rovnoběžné úsečky. - + Cannot add an angle constraint on an axis! Nelze přidat úhlovou vazbu na osu! - + Select two edges from the sketch. Vyberte dvě hrany z náčrtu. - + Select two or more compatible edges. Vyberte dvě nebo více kompatibilních hran. - + Sketch axes cannot be used in equality constraints. Osy náčrtu nelze použít pro vazby rovnosti. - + Equality for B-spline edge currently unsupported. Shodnost pro hranu B-splajnu momentálně není podporována. - - - - + + + + Select two or more edges of similar type. Vyberte dvě nebo více hran podobného typu. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Vyberte dva body a čáru symetrie, dva body a bod symetrie nebo čáru a bod symetrie z náčrtu. - - + + Cannot add a symmetry constraint between a line and its end points. Nelze přidat vazbu symetrie mezi čárou a jejími koncovými body. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Nelze přidat symetrickou vazbu mezi úsečku a její koncový bod! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Vyberte koncové body úsečky představující paprsek a hranu reprezentující rozhraní. První vybraný bod odpovídá indexu n1, druhý indexu n2, zadává se hodnota poměru n2/n1. - + Selected objects are not just geometry from one sketch. Vybrané objekty nejsou geometrií jednoho náčrtu. - + Cannot create constraint with external geometry only. Nejde vytvořit vazbu jen s vnější geometrií. - + Incompatible geometry is selected. Je vybrána nekompatibilní geometrie. - - - - - + + + + + Select constraints from the sketch. Vybrat vazby z náčrtu. @@ -3116,9 +3116,9 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Definovat stupeň B-Splajnu mezi 1 a %1: + - CAD Kernel Error Chyba jádra CADu @@ -3261,14 +3261,14 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Odstranění osového zarovnání vyžaduje alespoň jeden vybraný geometrický element, který není vnější - - + + Unsupported visual layer operation Nepodporovaná operace vizuální vrstvy - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted V současné době není podporováno přesunutí vnější geometrie do jiné vizuální vrstvy. Vnější geometrie bude vynechána @@ -3652,12 +3652,12 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Délka: - + Refractive index ratio Index lomu - + Ratio n2/n1: Poměr n2/n1: @@ -3665,72 +3665,72 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; SketcherGui::ElementFilterList - + Normal Normála - + Construction Konstrukce - + Internal Interní - + External Externí - + All types Všechny typy - + Point Bod - + Line Čára - + Circle Kruh - + Ellipse Elipsa - + Arc of circle Kruhový oblouk - + Arc of ellipse Oblouk elipsy - + Arc of hyperbola Oblouk hyperboly - + Arc of parabola Oblouk paraboly - + B-Spline B-splajn @@ -3853,27 +3853,27 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Vybrat svislou osu - + Layer Vrstva - + Layer 0 Vrstva 0 - + Layer 1 Vrstva 1 - + Hidden Skryté - + Delete Odstranit @@ -4746,120 +4746,120 @@ Nebyly nalezeny vazby připojené k těmto koncovým bodům. Nastavení - - - - - - - - - - + + + + + + + + + + Construction Konstrukce - + Elements Elementy - - - - + + + + Point Bod - - - - - - - - - - + + + + + + + + + + Internal Interní - - - - + + + + Line Čára - - - - + + + + Arc Oblouk - - - - + + + + Circle Kruh - - - - + + + + Ellipse Elipsa - - - - + + + + Elliptical Arc Eliptický oblouk - - - - + + + + Hyperbolic Arc Hyperbolický oblouk - - - - + + + + Parabolic Arc Parabolický oblouk - - - - + + + + BSpline BSplajn - - - - + + + + Other Jiný - + Extended information Rozšířené informace @@ -5080,112 +5080,112 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. SketcherGui::ViewProviderSketch - + Edit sketch Upravit náčrt - + A dialog is already open in the task panel Dialog je opravdu otevřen v panelu úloh - + Do you want to close this dialog? Chcete zavřít tento dialog? - + Invalid sketch Neplatný náčrt - + Do you want to open the sketch validation tool? Chcete otevřít nástroje pro ověření náčrtu? - + The sketch is invalid and cannot be edited. Náčrt není platný a nemůže být upravován. - + Please remove the following constraint: Odstraňte, prosím, následující vazbu: - + Please remove at least one of the following constraints: Odstraňte, prosím, alespoň jednu z následujících vazeb: - + Please remove the following redundant constraint: Odstraňte, prosím, následující nadbytečnou vazbu: - + Please remove the following redundant constraints: Odstraňte, prosím, následující nadbytečné vazby: - + The following constraint is partially redundant: Toto omezení je částečně nadbytečné: - + The following constraints are partially redundant: Tato omezení jsou částečně nadbytečná: - + Please remove the following malformed constraint: Odstraňte prosím tuto poškozenou vazbu: - + Please remove the following malformed constraints: Odstraňte prosím tyto poškozené vazby: - + Empty sketch Prázdný náčrt - + Over-constrained: Převazbené: - + Malformed constraints: Poškozené vazby: - + Redundant constraints: Nadbytečné vazby: - + Partially redundant: Částečně nadbytečné: - + Solver failed to converge Řešič nezkonvergoval - + Under constrained: Nedostatečně omezené: - + %n DoF(s) %n Stupeň Volnosti(s) @@ -5196,7 +5196,7 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. - + Fully constrained Plně zavazbené @@ -5294,8 +5294,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Zadá průměr kružnice nebo oblouku @@ -5303,8 +5303,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Opravit poloměr/průměr kružnice nebo oblouku @@ -5312,8 +5312,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Zadá poloměr kružnice nebo oblouku @@ -5327,70 +5327,25 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Vytvoří jednoduchou kopii geometrie s naposledy vybraným bodem jako referenčním - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Vytvoří oblouk jeho koncovými body a bodem podél oblouku - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Vytvoří kružnici třemi okrajovými body - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Vytvoří oblouk podle jeho středu a skrz jeho koncové body - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Vytvoří oblouk elipsy pomocí středu, hlavní poloosy a koncových bodů - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Vytvoří oblouk hyperboly pomocí středu, hlavního poloměru a koncových bodů - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Vytvoří oblouk paraboly pomocí ohniska, vrcholu a koncových bodů - - Sketcher_CreateBSpline - + B-spline by control points B-splajn pomocí kontrolních bodů - - + + Create a B-spline by control points Vytvoří B-splajn pomocí kontrolních bodů @@ -5398,35 +5353,17 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Vytvoří kružnici podle jeho středu a skrz okrajový bod - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Vytvoří elipsu pomocí perihélia, afélia a vedlejší poloosy - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Vytvoří elipsu pomocí středu, hlavní poloosy a bodu - - Sketcher_CreateFillet - - + + Creates a radius between two lines Vytvoří rádius mezi dvěma čarami @@ -5434,8 +5371,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Vytvoří sedmiúhelník pomocí jeho středu a vrcholu @@ -5443,8 +5380,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Vytvoří šestiúhelník pomocí jeho středu a vrcholu @@ -5460,14 +5397,14 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Vytvoří osmiúhelník pomocí jeho středu a vrcholu + - Create a regular polygon by its center and by one corner Vyvtoří rovnostranný mnohoúhelník pomocí středu a jednoho rohu @@ -5475,8 +5412,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Vytvoří pětiúhelník pomocí jeho středu a vrcholu @@ -5484,8 +5421,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Zaoblení, které zachová omezení a průsečík @@ -5509,8 +5446,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreateSquare + - Create a square by its center and by one corner Vytvoří čtverec pomocí jeho středu a vrcholu @@ -5518,8 +5455,8 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Vytvoří pravidelný trojúhelník pomocí jeho středu a vrcholu @@ -5527,13 +5464,13 @@ Toto se provádí analýzou geometrií a vazeb náčrtu. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Periodický B-splajn pomocí kontrolních bodů + - Create a periodic B-spline by control points Vytvoří periodický B-splajn pomocí kontrolních bodů @@ -5933,7 +5870,7 @@ Eigen Sparse QR algoritmus je optimalizován pro řídké matrice; obvykle rychl ViewProviderSketch - + and %1 more a %1 další @@ -6156,46 +6093,46 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů.Náčrt má částečně nadbytečné vazby! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Paraboly byly migrovány. Migrované soubory se v předchozích verzích FreeCADu neotevřou!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Chyba @@ -6231,16 +6168,16 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů.Omezení má neplatné informace o indexu a je chybné. + + + - - - - - + + Invalid Constraint @@ -6257,12 +6194,12 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů.Nepodařilo se přidat oblouk elipsy - + Cannot create arc of hyperbola from invalid angles, try again! Nelze vytvořit oblouk hyperboly z neplatných úhlů, zkuste to znovu! - + Cannot create arc of hyperbola Nelze vytvořit oblouk hyperboly @@ -6282,8 +6219,8 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů.Chyba při vytváření B-splajn pole - + Error creating B-spline Chyba při vytváření B-splajnu @@ -6339,17 +6276,17 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů.Přidání řádku se nezdařilo - - - - - - - + + + + + + + Tool execution aborted Spuštění nástroje přerušeno @@ -6384,9 +6321,9 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů.Nepodařilo se oříznout okraj - + Value Error Chyba v hodnotě @@ -6449,13 +6386,13 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-splajn uzly - - + + Create a B-spline by knots Vytvořit B-splajn uzly @@ -6463,13 +6400,13 @@ Rozteč mřížky se změní, pokud bude menší než tento počet pixelů. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodický B-splajn uzly + - Create a periodic B-spline by knots Vytvořit periodický B-splajn uzly @@ -6575,12 +6512,12 @@ Body musí být k lince mřížky blíže než pětina rozteče mřížky, aby s CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Vytvořit B-splajn uzly - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Vytvoří B-splajn uzly, tj. interpolací, v náčrtu. @@ -6588,12 +6525,12 @@ Body musí být k lince mřížky blíže než pětina rozteče mřížky, aby s CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Vytvořit periodický B-splajn uzly - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Vytvoří periodický B-splajn uzly, tj. interpolací, v náčrtu. @@ -6601,12 +6538,12 @@ Body musí být k lince mřížky blíže než pětina rozteče mřížky, aby s CmdSketcherDimension - + Dimension Rozměr - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6644,12 +6581,12 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí CmdSketcherConstrainRadius - + Constrain radius Vazba poloměru - + Fix the radius of a circle or an arc Zadá poloměr kružnice nebo oblouku @@ -6824,8 +6761,8 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí - Create two rectangles, one in the other with a constant thickness. - Vytvořit dva obdélníky, jeden ve druhém s konstantní tloušťkou. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6839,12 +6776,12 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Vodorovné/svislé - + Constrains a single line to either horizontal or vertical. Sváže jednu čáru buď vodorovně nebo svisle. @@ -6852,12 +6789,12 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí CmdSketcherConstrainHorVer - + Horizontal/Vertical Vodorovné/svislé - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Sváže jednu čáru buď vodorovně nebo svisle, podle toho, co je blíže k aktuálnímu zarovnání. @@ -6865,12 +6802,12 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí CmdSketcherCompCurveEdition - + Curve Edition Úprava křivky - + Curve Edition tools. Nástroje úpravy křivky. @@ -6878,12 +6815,12 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí CmdSketcherCompSlot - + Slots Drážky - + Slot tools. Nástroje drážky. @@ -6891,12 +6828,12 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí CmdSketcherCreateArcSlot - + Create arc slot Vytvořit obloukovou drážku - + Create an arc slot in the sketch Vytvoří obloukovou drážku v náčrtu @@ -6904,12 +6841,12 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí CmdSketcherConstrainCoincidentUnified - + Constrain coincident Vazba totožnosti - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7330,4 +7267,67 @@ Levé kliknutí na prázdné místo ověří aktuální vazbu. Pravým kliknutí Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts index c9787df78d..bec3dfb6d5 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Blaupause erstellen - + Copy the geometry of another sketch Kopiert die Geometrie einer anderen Skizze @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Bogen oder Kreis festlegen - + Constrain an arc or a circle Krümmung eines Kreisbogens oder Kreises festlegen - + Constrain radius Radius festlegen - + Constrain diameter Durchmesser festlegen - + Constrain auto radius/diameter Automatisch Radius oder Durchmesser festlegen @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints Mittel- und Endpunkte - - End points and rim point + + Endpoints and rim point Endpunkte und Punkt auf Kreisbogen CmdSketcherCompCreateBSpline - + Create B-spline B-Spline erstellen - + Create a B-spline in the sketch B-Spline in der Skizze erstellen @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Kreis erstellen - + Create a circle in the sketcher Erstellt einen Kreis im Sketcher - + Center and rim point Mittelpunkt und Punkt auf Kreisbogen - + 3 rim points Drei Punkte auf Kreisbogen @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Kegelschnitt erstellen - + Create a conic in the sketch Kegelschnitt in der Skizze erstellen - - Ellipse by center, major radius, point - Ellipse durch Angabe von Mittelpunkt, Hauptradius und Punkt + + Ellipse by center, radius, rim point + Ellipse durch Angabe von Mittelpunkt, Hauptradius und Punkt auf Kreisbogen - - Ellipse by periapsis, apoapsis, minor radius - Ellipse durch Periapsis, Apoapsis (Endpunkte der Hauptachse), kleinem Radius + + Ellipse by axis endpoints, rim point + Ellipse durch Angabe von Achsen-Endpunkte und Punkt auf Kreisbogen - - Arc of ellipse by center, major radius, endpoints - Ellipsenbogen durch Angabe von Mittelpunkt, großem Radius und Endpunkten + + Arc of ellipse by center, radius, endpoints + Ellipsenbogen durch Angabe von Mittelpunkt, Hauptradius und Endpunkte - - Arc of hyperbola by center, major radius, endpoints - Hyperbelbogen durch Angabe von Mittelpunkt, Hauptradius sowie den Endpunkten + + Arc of hyperbola by center, vertex, endpoints + Hyperbelbogen durch Angabe von Mittelpunkt, Fokuspunkt und Endpunkte - + Arc of parabola by focus, vertex, endpoints Parabelbogen durch Angabe von Fokus, Scheitelpunkt sowie den Endpunkten @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Verrundung erstellen - + Create a fillet between two lines Erstellt eine Verrundung zwischen zwei Linien - + Sketch fillet Einfache Verrundung - - Constraint-preserving sketch fillet - Verrundung + + Corner-preserving sketch fillet + Randbedingungsserhaltende Verrundung @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Regelmäßiges Vieleck erstellen - + Create a regular polygon in the sketcher Erstelle ein regelmäßiges Polygon in der Skizze - + Triangle Dreieck - + Square Quadrat - + Pentagon Fünfeck - + Hexagon Sechseck - + Heptagon Siebeneck - + Octagon Achteck - + Regular polygon Regelmäßiges Vieleck @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Winkel festlegen - + Fix the angle of a line or the angle between two lines Winkel einer Linie (zur horizontalen Skizzenachse) oder Winkel zwischen zwei Linien festlegen @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Fixieren - + Block the selected edge from moving Ausgewählte Kante fixieren @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Koinzidenz festlegen - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Erstellt eine Randbedingung Koinzidenz festlegen zwischen Punkten oder eine Randbedingung Konzentrisch festlegen zwischen Kreisen, Bögen und Ellipsen @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Durchmesser festlegen - + Fix the diameter of a circle or an arc Legt den Durchmesser eines Kreises oder Kreisbogens fest @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Abstand festlegen - + Fix a length of a line or the distance between a line and a vertex or between two circles Legt die Länge einer Linie, den Abstand zwischen einer Linie und einem Knotenpunkt oder zwischen zwei Kreisen fest @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Horizontalen Abstand festlegen - + Fix the horizontal distance between two points or line ends Den horizontalen Abstand zwischen zwei Punkten oder Streckenenden festlegen @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Vertikalen Abstand festlegen - + Fix the vertical distance between two points or line ends Den vertikalen Abstand zwischen zwei Punkten oder Streckenenden festlegen @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Gleichheit festlegen - + Create an equality constraint between two lines or between circles and arcs Eine Gleichheitsbeschränkung zwischen zwei Linien oder zwischen Kreisen und Bögen festlegen @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Horizontal festlegen - + Create a horizontal constraint on the selected item Eine horizontale Beschränkung für das gewählte Element setzen @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Sperren - + Create both a horizontal and a vertical distance constraint on the selected vertex Erstellt gleichzeitig Randbedingungen für den horizontalen und @@ -520,12 +520,12 @@ den vertikalen Abstand eines ausgewählten Knotens zum Ursprung CmdSketcherConstrainParallel - + Constrain parallel Parallel festlegen - + Create a parallel constraint between two lines Legt die Parallelität zweier Geraden fest @@ -533,12 +533,12 @@ den vertikalen Abstand eines ausgewählten Knotens zum Ursprung CmdSketcherConstrainPerpendicular - + Constrain perpendicular Rechtwinklig festlegen - + Create a perpendicular constraint between two lines Erstellt eine Randbedingung, die zwei Linien rechtwinklig zueinander festlegt @@ -546,12 +546,12 @@ den vertikalen Abstand eines ausgewählten Knotens zum Ursprung CmdSketcherConstrainPointOnObject - + Constrain point onto object Punkt auf Objekt festlegen - + Fix a point onto an object Punkt auf ein Objekt festlegen @@ -559,12 +559,12 @@ den vertikalen Abstand eines ausgewählten Knotens zum Ursprung CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Automatisch Radius oder Durchmesser festlegen - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Legt den Durchmesser fest, wenn ein Kreis ausgewählt wird, oder den Radius, wenn ein Kreisbogen oder Spline-Kontrollpunkt ausgewählt wird @@ -572,12 +572,12 @@ den vertikalen Abstand eines ausgewählten Knotens zum Ursprung CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Lichtbrechung (nach Snellius-Gesetz) festlegen - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Erstellen Sie eine Lichtbrechung (Snellius-Gesetz) als Einschränkung zwischen zwei Endpunkten der Strahlen und einer Kante als Schnittstelle. @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Symmetrie festlegen - + Create a symmetry constraint between two points with respect to a line or a third point Die Symmetrie zwischen zwei Punkten im Bezug auf eine Linie oder einen dritten Punkt festlegen @@ -600,12 +600,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Tangential festlegen - + Create a tangent constraint between two entities Legt zwei Elementen tangential zueinander fest @@ -613,12 +613,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Vertikal festlegen - + Create a vertical constraint on the selected item Eine vertikale Beschränkung für das gewählte Element setzen @@ -665,12 +665,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Kreis durch drei Punkte erstellen - + Create a circle by 3 perimeter points Kreis erstellen aus drei Punkten auf dem Kreisbogen @@ -691,12 +691,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Ellipsenbogen erstellen - + Create an arc of ellipse in the sketch Ellipsenbogen in der Skizze erstellen @@ -704,12 +704,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Hyperbelbogen erstellen - + Create an arc of hyperbola in the sketch Hyperbelbogen in der Skizze erstellen @@ -717,12 +717,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Parabelbogen erstellen - + Create an arc of parabola in the sketch Parabelbogen in der Skizze erstellen @@ -730,12 +730,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline B-Spline erstellen - + Create a B-spline by control points in the sketch. B-Spline mittels Kontrollpunkten in der Skizze erstellen. @@ -743,12 +743,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Kreis erstellen - + Create a circle in the sketch Kreis in der Skizze erstellen @@ -756,12 +756,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Ellipse durch 3 Punkte erstellen - + Create an ellipse by 3 points in the sketch Ellipse durch 3 Punkte in der Skizze erstellen @@ -769,12 +769,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Ellipse um Mittelpunkt erstellen - + Create an ellipse by center in the sketch Ellipse um Mittelpunkt in der Skizze erzeugen @@ -782,12 +782,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet - Abrundung erstellen + Verrundung erstellen - + Create a fillet between two lines or at a coincident point Erstellen einer Abrundung zwischen zwei Geraden oder an einem anliegenden Punkt @@ -795,12 +795,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Siebeneck erstellen - + Create a heptagon in the sketch Siebeneck in der Skizze erstellen @@ -808,12 +808,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Sechseck erstellen - + Create a hexagon in the sketch Sechseck in der Skizze erstellen @@ -847,12 +847,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Achteck erstellen - + Create an octagon in the sketch Achteck in der Skizze erstellen @@ -860,12 +860,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Fünfeck erstellen - + Create a pentagon in the sketch Fünfeck in der Skizze erstellen @@ -873,12 +873,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Geschlossenen B-Spline erstellen - + Create a periodic B-spline by control points in the sketch. Geschlossenen B-Spline mittels Kontrollpunkten in der Skizze erstellen. @@ -886,12 +886,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Punkt erstellen - + Create a point in the sketch Punkt in der Skizze erstellen @@ -899,12 +899,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Eckenerhaltende Verrundung erstellen - + Fillet that preserves intersection point and most constraints Verrundung, die den Schnittpunkt und die meisten Randbedingungen beibehält @@ -951,12 +951,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Regelmäßiges Vieleck erstellen - + Create a regular polygon in the sketch Erstelle ein regelmäßiges Polygon in der Skizze @@ -964,12 +964,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Nut erzeugen - + Create a slot in the sketch Erzeugt eine Nut in der Skizze @@ -977,12 +977,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Quadrat erstellen - + Create a square in the sketch Quadrat in der Skizze erstellen @@ -990,12 +990,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Gleichseitiges Dreieck erstellen - + Create an equilateral triangle in the sketch Gleichseitiges Dreieck in der Skizze erstellen @@ -1068,12 +1068,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Kante verlängern - + Extend an edge with respect to the picked position Verlängern einer Kante in Bezug auf die ausgewählte Position @@ -1081,12 +1081,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Externe Geometrie erstellen - + Create an edge linked to an external geometry Erstellen einer Kante verknüpft mit einer externen Geometrie @@ -1424,12 +1424,12 @@ Die Eigenschaft 'Support' wird gelöscht. CmdSketcherSplit - + Split edge Kante teilen - + Splits an edge into two while preserving constraints Teilt eine Kante in zwei unter Beibehaltung der Beschränkungen @@ -1476,12 +1476,12 @@ Die Eigenschaft 'Support' wird gelöscht. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Randbedingungen aktivieren/deaktivieren - + Activates or deactivates the selected constraints Aktiviert oder deaktiviert die ausgewählten Einschränkungen @@ -1502,12 +1502,12 @@ Die Eigenschaft 'Support' wird gelöscht. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Einschränkung zwischen festlegend und anzeigend umschalten - + Set the toolbar, or the selected constraints, into driving or reference mode Die Symbolleiste oder die ausgewählten Einschränkungen @@ -1517,12 +1517,12 @@ auf den festlegenden oder den anzeigenden Modus festlegen CmdSketcherTrimming - + Trim edge Kante zuschneiden - + Trim an edge with respect to the picked position Trimmen einer Kante bezüglich der ausgewählten Position @@ -1581,79 +1581,79 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen. Command - + Add 'Lock' constraint Sperreinschränkung hinzufügen - + Add relative 'Lock' constraint Relative Sperreinschränkung hinzufügen - + Add fixed constraint Randbedingung Sperren hinzufügen - + Add 'Block' constraint Randbedingung 'Fixieren' hinzufügen - + Add block constraint Randbedingung Fixieren hinzufügen - - + + Add coincident constraint Randbedingung Koinzidenz festlegen hinzufügen - - + + Add distance from horizontal axis constraint Randbedingung Abstand von der horizontalen Achse hinzufügen - - + + Add distance from vertical axis constraint Randbedingung Abstand von der vertikalen Achse hinzufügen - - + + Add point to point distance constraint Randbedingung Punk-zu-Punkt-Abstand hinzufügen - - + + Add point to line Distance constraint Randbedingung Punkt-zu-Line-Abstand hinzufügen - - + + Add circle to circle distance constraint Randbedingung Kreis-zu-Kreis-Abstand hinzufügen - + Add circle to line distance constraint Randbedingung Kreis-zu-Line-Abstand hinzufügen - - - - - - + + + + + + Add length constraint Randbedingung Abstand hinzufügen @@ -1676,8 +1676,8 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen. - - + + Add Distance constraint Randbedingung Abstand festlegen hinzufügen @@ -1703,7 +1703,7 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen. - + Add Symmetry constraints Randbedingungen Symmetrie festlegen hinzufügen @@ -1714,220 +1714,220 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Randbedingungen Abstand festlegen hinzufügen - + Add Horizontal constraint Randbedingung Horizontal festlegen hinzufügen - + Add Vertical constraint Randbedingung Vertikal festlegen hinzufügen - + Add Block constraint Randbedingung Fixieren hinzufügen - + Add Angle constraint Randbedingung Winkel festlegen hinzufügen - - - - + + + + Add Equality constraint Randbedingung Gleichheit festlegen hinzufügen - + Add Equality constraints Randbedingungen Gleichheit festlegen hinzufügen - - - + + + Add Radius constraint Randbedingung Radius festlegen hinzufügen - - + + Add arc angle constraint Randbedingung Bogenwinkel festlegen hinzufügen - + Add concentric and length constraint Randbedingung Konzentrisch und Länge festlegen hinzufügen - + Add DistanceX constraint Randbedingung Länge X festlegen hinzufügen - + Add DistanceY constraint Randbedingung Länge Y festlegen hinzufügen - + Add point to circle Distance constraint Randbedingung Punkt-zu-Kreis-Abstand hinzufügen - - + + Add point on object constraint Randbedingung Punkt-auf-Objekt hinzufügen - - + + Add point to point horizontal distance constraint Randbedingung Horizontaler Punkt-zu-Punkt-Abstand hinzufügen - + Add fixed x-coordinate constraint Randbedingung X-Koordinate festlegen hinzufügen - - + + Add point to point vertical distance constraint Randbedingung Vertikaler Punkt-zu-Punkt-Abstand hinzufügen - + Add fixed y-coordinate constraint Randbedingung Y-Koordinate festlegen hinzufügen - - + + Add parallel constraint Randbedingung Parallel festlegen hinzufügen - - - - - - - + + + + + + + Add perpendicular constraint Randbedingung Rechtwinklig festlegen hinzufügen - + Add perpendicularity constraint Randbedingung Rechtwinkligkeit festlegen hinzufügen - + Swap coincident+tangency with ptp tangency Deckungsgleichheit + Berührung gegen tangentenstetigen Übergang in einem Punkt tauschen - + Swap PointOnObject+tangency with point to curve tangency Tausche Punkt auf Objekt + Tangentialität gegen Punkt zu Kurve Tangentialität - - - - - - - + + + + + + + Add tangent constraint Randbedingung Tangential festlegen hinzufügen - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Randbedingung Tangente im Punkt festlegen hinzufügen - - - - + + + + Add radius constraint Randbedingung Radius festlegen hinzufügen - - - - + + + + Add diameter constraint Randbedingung Durchmesser festlegen hinzufügen - - - - + + + + Add radiam constraint Randbedingung Radiam festlegen hinzufügen - - - - + + + + Add angle constraint Randbedingung Winkel festlegen hinzufügen - - + + Add equality constraint Randbedingung Gleichheit festlegen hinzufügen - - - - - + + + + + Add symmetric constraint Randbedingung Symmetrie festlegen hinzufügen - + Add Snell's law constraint Randbedingung nach Snellius-Gesetz hinzufügen - + Toggle constraint to driving/reference Randbedingung zwischen festlegend/anzeigend umschalten - + Activate/Deactivate constraint Randbedingung aktivieren / deaktivieren @@ -2012,7 +2012,7 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Ellipsenbogen hinzufügen - + Add sketch arc of hyperbola Skizzenhyperbelbogen hinzufügen @@ -2035,7 +2035,7 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen. Create fillet - Verrundung erstellen + Abrundung erstellen @@ -2156,8 +2156,8 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Virtuellen Raum der Einschränkungen aktualisieren - + Add auto constraints Automatische Randbedingungen hinzufügen @@ -2182,12 +2182,12 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Kurve ziehen - + Drag Constraint Randbedingung ziehen - + Modify sketch constraints Skizzeneinschränkung ändern @@ -2229,7 +2229,7 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen. Translate geometries - Translate geometries + Geometrie translatieren @@ -2278,59 +2278,59 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Fehler automatische Randbedingungen: unlösbare Skizze nach dem Anwenden von gleichheits Beschränkungen. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Der Schnittpunkt der Kurven kann nicht ermittelt werden. Die Randbedingung Koinzidenz festlegen, angewendet auf die Endpunkte der Kurven, die verrundet werden sollen, kann hier helfen. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometrie Index (GeoID) ist außerhalb des gültigen Bereichs. - + You are requesting no change in knot multiplicity. Sie fordern keine Änderung in der Multiplizität der Knoten. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Der bereitgestellte Geometrieindex (GeoId) ist keine B-Spline-Kurve. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Der Knotenindex ist außerhalb der Grenzen. Beachten Sie, dass der erste Knoten gemäß der OCC-Notation den Index 1 und nicht Null hat. - + The multiplicity cannot be increased beyond the degree of the B-spline. Die Vielfachheit kann nicht über den Grad des B-Splines hinaus erhöht werden. - + The multiplicity cannot be decreased beyond zero. Die Vielfachheit kann nicht über Null hinaus verringert werden. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC kann die Multiplizität innerhalb der maximalen Toleranz nicht verringern. - + Knot cannot have zero multiplicity. Ein Knoten kann nicht die Vielfachheit Null haben. - + Knot multiplicity cannot be higher than the degree of the BSpline. Die Vielfachheit kann nicht höher als der Grad des B-Splines sein. - + Knot cannot be inserted outside the BSpline parameter range. Knoten kann nicht außerhalb des BSpline-Parameterbereichs eingefügt werden. @@ -2410,127 +2410,11 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Nicht anhängen + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2540,6 +2424,125 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2557,9 +2560,6 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen. - - - Wrong selection Falsche Auswahl @@ -2612,106 +2612,106 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Eins der ausgewählten muss auf der Skizze liegen. - + Select an edge from the sketch. Wählen Sie eine Kante aus der Skizze. - - - - - - + + + + + + Impossible constraint Nicht erfüllbare Bedingung - - + + The selected edge is not a line segment. Die ausgewählte Kante ist kein Liniensegment. - - - + + + Double constraint Doppelbedingung - + The selected edge already has a horizontal constraint! Die ausgewählte Kante hat bereits eine Horizontal-Einschränkung! - + The selected edge already has a vertical constraint! Die ausgewählte Kante hat bereits eine Vertikal-Randbedingung! - - - + + + The selected edge already has a Block constraint! Die ausgewählte Kante hat bereits eine Fixier-Einschränkung! - + There are more than one fixed points selected. Select a maximum of one fixed point! Es ist mehr als ein Fixpunkt ausgewählt. Wähle maximal einen Fixpunkt! - - - + + + Select vertices from the sketch. Wählen Sie Knoten aus der Skizze aus. - + Select one vertex from the sketch other than the origin. Einen Knoten aus der Skizze auswählen, nur nicht den Ursprung. - + Select only vertices from the sketch. The last selected vertex may be the origin. Nur Knoten aus der Skizze auswählen. Der letzte gewählte Knoten darf der Ursprung sein. - + Wrong solver status Falscher Solver Status - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Eine Fixier-Randbedingung kann nicht hinzugefügt werden, solange die Skizze nicht gelöst ist oder redundante und / oder widersprüchliche Einschränkungen enthält. - + Select one edge from the sketch. Wähle eine Kante aus der Skizze aus. - + Select only edges from the sketch. Wähle nur Kanten aus der Skizze aus. - + Only tangent-via-point is supported with a B-spline. Nur Tangente-Über-Punkt wird von einem B-Spline unterstützt. - + Number of selected objects is not 3 Die Anzahl der ausgewählten Objekte ist nicht 3 - + Error Fehler @@ -2721,80 +2721,80 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Unerwarteter Fehler. Das Ausgabefenster könnte weitere Informationen enthalten. - + The selected item(s) can't accept a horizontal or vertical constraint! Die ausgewählten Elemente können nicht horizontal oder vertikal eingeschränkt werden! - + Endpoint to endpoint tangency was applied instead. Die Endpunkt zu Endpunkt Tangente wurde stattdessen angewendet. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Wähle zwei oder mehr Knotenpunkte aus der Skizze für eine Übereinstimmungseinschränkung, oder zwei oder mehr Kreise, Ellipsen, Bögen oder Ellipsenbögen für einen konzentrischen Zwang. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Wähle zwei Knotenpunkte aus der Skizze für eine Übereinstimmunseinschränkung aus, oder zwei Kreise, Ellipsen, Bögen oder Ellipsenbögen für einen konzentrischen Zwang. - + Select exactly one line or one point and one line or two points from the sketch. Wählen Sie genau eine Linie oder einen Punkt und eine Linie oder zwei Punkte aus der Skizze aus. - + Cannot add a length constraint on an axis! Keine Längenbeschränkung einer Achse möglich! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Wählen Sie genau eine Linie oder einen Punkt und eine Linie oder zwei Punkte oder zwei Kreise aus der Skizze aus. - + This constraint does not make sense for non-linear curves. Diese Randbedingung ist für nichtlineare Kurven nicht sinnvoll. - + Endpoint to edge tangency was applied instead. Die Endpunkt zu Kante Tangente wurde stattdessen angewendet. - - - - - - + + + + + + Select the right things from the sketch. Wähle die richtigen Dinge aus der Skizze. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Eine Kante auswählen, die kein B-Spline-Gewicht darstellt. @@ -2804,92 +2804,92 @@ ungültigen Einschränkungen, degenerierten Geometrien, etc überprüfen.Ein oder zwei Punkt-auf-Objekt Randbedingungen wurden gelöscht, da die neueste Einschränkung, die intern angewendet wird, auch Punkt-auf-Objekt anwendet. - + Select either several points, or several conics for concentricity. Entweder mehrere Punkte auswählen oder mehrere Kegelschnittkurven für Konzentrizität. - + Select either one point and several curves, or one curve and several points Entweder einen Punkt und mehrere Kurven oder eine Kurve und mehrere Punkte auswählen - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Entweder einen Punkt und mehrere Kurven oder eine Kurve und mehrere Punkte auswählen für PunktAufObjekt, mehrere Punkte für Koinzidenz, oder mehrere Kegelschnittkurven für Konzentrizität. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Keiner der ausgewählten Punkte wurde auf die jeweiligen Kurven beschränkt, da sie Teile desselben Elements sind, weil beide externe Geometrien sind oder weil die Kante nicht geeignet ist. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Keiner der gewählten Punkte wurde beschränkt auf die zugehörigen Kurven. Sie sind entweder Bestandteil des gleichen Elements oder Sie sind beide Externe Geometrie. - + Cannot add a length constraint on this selection! Kann keine Randbedingung Abstand festlegen auf dieser Auswahl basierend hinzufügen! - - - - + + + + Select exactly one line or up to two points from the sketch. Wählen Sie genau eine Linie oder bis zu zwei Punkte aus der Skizze aus. - + Cannot add a horizontal length constraint on an axis! Keine horizontale Längenbeschränkung einer Achse möglich! - + Cannot add a fixed x-coordinate constraint on the origin point! Eine feste x-Einschränkung auf den Ursprung kann nicht hinzugefügt werden! - - + + This constraint only makes sense on a line segment or a pair of points. Diese Randbedingung ist nur für ein Liniensegment oder ein Punktepaar sinnvoll. - + Cannot add a vertical length constraint on an axis! Keine vertikale Längenbeschränkung einer Achse möglich! - + Cannot add a fixed y-coordinate constraint on the origin point! Eine feste y-Einschränkung auf den Ursprung kann nicht hinzugefügt werden! - + Select two or more lines from the sketch. Wählen Sie zwei oder mehr Linien aus der Skizze aus. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Eine ausgewählte Kante ist keine gültige Linie. - - + + Select at least two lines from the sketch. Wählen Sie mindestens zwei Linien aus der Skizze aus. - + The selected edge is not a valid line. Die ausgewählte Kante ist keine gültige Linie. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2899,35 +2899,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Erlaubte Kombinationen: zwei Kurven; einen Endpunkt und eine Kurve; zwei Endpunkte; zwei Kurven und einen Punkt. - + Select some geometry from the sketch. perpendicular constraint Geometrie aus der Skizze auswählen. - - + + Cannot add a perpendicularity constraint at an unconnected point! Eine Rechtwinkligkeitsbedingung kann nicht zu einem unverbundenen Punkt hinzugefügt werden! - - + + One of the selected edges should be a line. Eine der ausgewählten Kanten sollte eine Gerade sein. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Eine Endpunkt-zu-Endpunkt-Tangente wurde angelegt. Die Koinzidenz-Einschränkung wurde gelöscht. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Die Endpunkt zu Kante Tangente wurde stattdessen angewendet. Die Punkt auf Objekt Beschränkung wurde gelöscht. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2937,67 +2937,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpunkte; Zwei Kurven und ein Punkt. - + Select some geometry from the sketch. tangent constraint Geometrie aus der Skizze auswählen. - - - + + + Cannot add a tangency constraint at an unconnected point! Eine Tangentialrandbedingung kann nicht zu einem unverbundenen Punkt hinzugefügt werden! - - + + Tangent constraint at B-spline knot is only supported with lines! Randbedingung Tangential festlegen wird am B-Spline-Knoten wird nur mit Linien unterstützt! - + B-spline knot to endpoint tangency was applied instead. Eine B-Spline-Knoten zu Endpunkt Tangente wurde stattdessen festgelegt. - - + + Wrong number of selected objects! Falsche Anzahl von ausgewählten Objekten! - - + + With 3 objects, there must be 2 curves and 1 point. Bei 3 Objekten müssen diese aus 2 Kurven und 1 Punkt bestehen. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Wählen Sie eine oder mehrere Bögen oder Kreise aus der Skizze. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Entweder nur einen oder mehrere B-Spline-Kontrollpunkte auswählen oder nur einen oder mehrere Bögen oder Kreise aus der Skizze auswählen, aber nicht gemischt. - - - + + + Constraint only applies to arcs or circles. Einschränkung gilt nur für Bögen oder Kreise. - - + + Select one or two lines from the sketch. Or select two edges and a point. Wählen Sie eine oder zwei Linien aus der Skizze. Oder wählen Sie zwei Kanten und einen Punkt. @@ -3012,88 +3012,88 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Es ist nicht möglich eine Winkel-Einschränkung für zwei parallele Linien festzulegen. - + Cannot add an angle constraint on an axis! Winkelbeschränkung einer Achse nicht möglich! - + Select two edges from the sketch. Wählen Sie zwei Kanten aus der Skizze aus. - + Select two or more compatible edges. Wählen Sie zwei oder mehr kompatible Kanten aus. - + Sketch axes cannot be used in equality constraints. Skizzenachsen können nicht mit der Randbedingung Gleichheit festlegen eingesetzt werden. - + Equality for B-spline edge currently unsupported. Gleichheit für B-Spline Rand wird derzeit nicht unterstützt. - - - - + + + + Select two or more edges of similar type. Zwei oder mehr gleichartige Kanten auswählen. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Wählen Sie zwei Punkte und eine Symmetrielinie, zwei Punkte und einen Symmetriepunkt oder eine Linie und einen Symmetriepunkt von der Skizze. - - + + Cannot add a symmetry constraint between a line and its end points. Es ist nicht möglich eine Symmetrieeinschränkung zwischen einer Linie und ihren Endpunkten hinzuzufügen. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Es ist nicht möglich eine Symmetrieeinschränkung zwischen einer Linie und ihren Endpunkten hinzuzufügen! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Endpunkte zweier Linien, die als Strahlen dienen sollen, und eine Kante, die eine Grenze darstellt, auswählen. Der erste gewählte Punkt entspricht dem Index n1, der zweite dem Index n2 und der Eigabewert legt das Verhältnis n2/n1 fest. - + Selected objects are not just geometry from one sketch. Ausgewählte Objekte sind nicht nur Geometrie aus einer einzigen Skizze. - + Cannot create constraint with external geometry only. Es ist nicht möglich eine Einschränkung zu erstellen, die nur auf externen Geometrien basiert. - + Incompatible geometry is selected. Es wurde unpassende Geometrie ausgewählt. - - - - - + + + + + Select constraints from the sketch. Einschränkungen aus der Skizze auswählen. @@ -3115,9 +3115,9 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun B-Spline-Grad, zwischen 1 und %1 festlegen: + - CAD Kernel Error CAD-Kernel-Fehler @@ -3260,14 +3260,14 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Das Entfernen der Achsenausrichtung erfordert mindestens ein ausgewähltes nicht-externes geometrisches Element - - + + Unsupported visual layer operation Layer-Funktion nicht unterstützt - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Derzeit kann eine externe Geometrie nicht auf eine andere visuelle Ebene verschoben werden. Die externe Geometrie wird weggelassen @@ -3339,7 +3339,7 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Translate parameters - Translate parameters + Parameter der Translation @@ -3651,12 +3651,12 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Länge: - + Refractive index ratio Brechungsindex-Verhältnis - + Ratio n2/n1: Verhältnis n2/n1: @@ -3664,72 +3664,72 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun SketcherGui::ElementFilterList - + Normal Normal - + Construction Hilfsgeometrie - + Internal Intern - + External Extern - + All types Alle Typen - + Point Punkt - + Line Linie - + Circle Kreis - + Ellipse Ellipse - + Arc of circle Kreisbogen - + Arc of ellipse Ellipsenbogen - + Arc of hyperbola Hyperbelbogen - + Arc of parabola Parabelbogen - + B-Spline B-Spline @@ -3852,27 +3852,27 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Vertikale Achse auswählen - + Layer Ebene - + Layer 0 Ebene 0 - + Layer 1 Ebene 1 - + Hidden Ausgeblendet - + Delete Löschen @@ -4075,7 +4075,7 @@ reflected on copies Number of sides: - Number of sides: + Anzahl der Seiten: @@ -4745,120 +4745,120 @@ Es wurden keine Beschränkungen zu diesen Punkten gefunden. Einstellungen - - - - - - - - - - + + + + + + + + + + Construction - Konstruktion + Hilfsgeometrie - + Elements Elemente - - - - + + + + Point Punkt - - - - - - - - - - + + + + + + + + + + Internal Intern - - - - + + + + Line Linie - - - - + + + + Arc Kreisbogen - - - - + + + + Circle Kreis - - - - + + + + Ellipse Ellipse - - - - + + + + Elliptical Arc Elliptischer Bogen - - - - + + + + Hyperbolic Arc Hyperbolischer Bogen - - - - + + + + Parabolic Arc Parabolischer Bogen - - - - + + + + BSpline B-Spline - - - - + + + + Other Andere - + Extended information Erweiterte Informationen @@ -4993,7 +4993,7 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Invalid constraints - Ungültige Randbedingungen + Ungültige Randbedingung @@ -5013,7 +5013,7 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Delete constraints to external geom. - Lösche Randbedingungen zu externen Geometrien + Lösche Beschränkungen zu externen Geometrien @@ -5079,112 +5079,112 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. SketcherGui::ViewProviderSketch - + Edit sketch Skizze bearbeiten - + A dialog is already open in the task panel Ein Dialog im Arbeitspanel ist bereits geöffnet - + Do you want to close this dialog? Möchten Sie dieses Dialogfeld schließen? - + Invalid sketch Ungültige Skizze - + Do you want to open the sketch validation tool? Soll das Werkzeug zum Überprüfen der Skizze geöffnet werden? - + The sketch is invalid and cannot be edited. Die Skizze ist ungültig und kann nicht bearbeitet werden. - + Please remove the following constraint: Bitte folgende Randbedingungen entfernen: - + Please remove at least one of the following constraints: Bitte mindestens eine der folgenden Randbedingungen entfernen: - + Please remove the following redundant constraint: Bitte folgende redundante Randbedingungen entfernen: - + Please remove the following redundant constraints: Bitte folgende, redundante Randbedingungen entfernen: - + The following constraint is partially redundant: Die folgende Randbedingung ist teilweise überflüssig: - + The following constraints are partially redundant: Die folgenden Randbedingungen sind teilweise überflüssig: - + Please remove the following malformed constraint: Bitte folgende fehlerhafte Beschränkung entfernen: - + Please remove the following malformed constraints: Bitte folgende fehlerhafte Beschränkung entfernen: - + Empty sketch Leere Skizze - + Over-constrained: Überbestimmt: - + Malformed constraints: Fehlerhafte Randbedingungen: - + Redundant constraints: Überflüssige Randbedingungen: - + Partially redundant: Teilweise redundant: - + Solver failed to converge Löser konnte nicht konvergieren - + Under constrained: Unterbestimmt: - + %n DoF(s) %n Freiheitsgrad @@ -5192,7 +5192,7 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. - + Fully constrained Vollständig bestimmt @@ -5290,8 +5290,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Legt den Durchmesser eines Kreises oder Kreisbogens fest @@ -5299,8 +5299,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Legt den Radius eines Kreisbogens oder den Durchmesser eines Kreises fest @@ -5308,8 +5308,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Legt den Radius eines Kreises oder Kreisbogens fest @@ -5323,70 +5323,25 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen.Erstellt eine einfache Kopie der Geometrie mit dem zuletzt gewählten Punkt als Referenz - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Erstellt einen Kreisbogen durch die Endpunkte und einen Punkt auf dem Bogen - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Erstellt einen Kreis durch drei Punkte auf dem Kreisbogen - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Erstellt einen Kreisbogen um den Mittelpunkt und durch die Endpunkte - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Ellipsenbogen durch Mittelpunkt, großem Radius sowie den Endpunkten erstellen - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Hyperbelbogen durch Mittelpunkt, großem Radius sowie den Endpunkten erstellen - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Parabelbogen durch Fokus, Scheitelpunkt sowie den Endpunkten erstellen - - Sketcher_CreateBSpline - + B-spline by control points B-Spline durch Kontrollpunkte - - + + Create a B-spline by control points Erzeugt einen B-Spline durch Kontrollpunkte @@ -5394,35 +5349,17 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Erstelle einen Kreis aus Mittel- und einem Randpunkt - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Ellipse aus Periapsis, Apoapsis und kleiner Halbachse erzeugen - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Ellipse aus Mittelpunkt, großer Halbachse und weiterem Punkt erzeugen - - Sketcher_CreateFillet - - + + Creates a radius between two lines Erstellt einen Bogen zwischen zwei Linien @@ -5430,8 +5367,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Siebeneck aus Mittelpunkt und einer Ecke erzeugen @@ -5439,8 +5376,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Sechseck aus Mittelpunkt und einer Ecke erzeugen @@ -5456,14 +5393,14 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Achteck aus Mittelpunkt und einer Ecke erzeugen + - Create a regular polygon by its center and by one corner Regelmäßiges Polygon aus Mittelpunkt und einer Ecke erzeugen @@ -5471,8 +5408,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Fünfeck aus Mittelpunkt und einer Ecke erzeugen @@ -5480,8 +5417,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Eine Verrundung, die Randbedingungen und den Schnittpunkt beibehält @@ -5505,8 +5442,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreateSquare + - Create a square by its center and by one corner Quadrat aus Mittelpunkt und einer Ecke erzeugen @@ -5514,8 +5451,8 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Gleichseitiges Dreieck aus Mittelpunkt und einer Ecke erzeugen @@ -5523,13 +5460,13 @@ Dies erfolgt durch Analyse der Skizzengeometrien und Randbedingungen. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Geschlossener B-Spline durch Kontrollpunkte + - Create a periodic B-spline by control points Erzeugt einen geschlossenen B-Spline durch Kontrollpunkte @@ -5928,7 +5865,7 @@ Eigen Sparse QR ein Algorithmus, der für dünn besetzte Matrizen optimiert ist; ViewProviderSketch - + and %1 more und %1 mehr @@ -6151,46 +6088,46 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Die Skizze enthält teilweise redundante Randbedingungen! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabeln wurden intern umstrukturiert. Solche Dateien lassen sich mit früheren Versionen von FreeCAD nicht mehr öffnen!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Fehlermeldungen @@ -6226,16 +6163,16 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Die Randbedingng hat eine ungültige Indexierung und ist fehlerhaft. + + + - - - - - + + Invalid Constraint @@ -6252,12 +6189,12 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Fehler beim Hinzufügen von Ellipsenbogen - + Cannot create arc of hyperbola from invalid angles, try again! Hyperbelbogen kann nicht aus ungültigen Winkeln erstellt werden. Versuche es erneut! - + Cannot create arc of hyperbola Hyperbelbogen kann nicht erstellt werden @@ -6277,8 +6214,8 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Fehler beim Erstellen des B-spline Kontrollpunktes - + Error creating B-spline Fehler beim Erstellen des B-splines @@ -6334,17 +6271,17 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Linie hinzufügen fehlgeschlagen - - - - - - - + + + + + + + Tool execution aborted Werkzeugausführung abgebrochen @@ -6379,9 +6316,9 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Trimmen der Kante fehlgeschlagen - + Value Error Wertfehler @@ -6438,19 +6375,19 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Failed to translate - Failed to translate + Translation fehlgeschlagen Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-Spline durch Knoten - - + + Create a B-spline by knots Erstellt einen B-Spline durch Knoten @@ -6458,13 +6395,13 @@ Die Rasterweite ändert sich, wenn er kleiner als diese Anzahl von Pixeln wird.< Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Geschlossener B-Spline durch Knoten + - Create a periodic B-spline by knots Erstellt einen geschlossenen B-Spline durch Knoten @@ -6570,12 +6507,12 @@ Punkte müssen näher als ein Fünftel der Rasterweite an eine Rasterlinie geset CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots B-Spline durch Knoten erstellen - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Erstellt einen B-Spline durch Knoten, d.h. durch Interpolation, in der Skizze. @@ -6583,12 +6520,12 @@ Punkte müssen näher als ein Fünftel der Rasterweite an eine Rasterlinie geset CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Geschlossenen B-Spline durch Knoten erstellen - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Erstellt einen geschlossenen B-Spline durch Knoten, d.h. durch Interpolation, in der Skizze. @@ -6596,12 +6533,12 @@ Punkte müssen näher als ein Fünftel der Rasterweite an eine Rasterlinie geset CmdSketcherDimension - + Dimension Abmessung - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6639,12 +6576,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte CmdSketcherConstrainRadius - + Constrain radius Radius festlegen - + Fix the radius of a circle or an arc Legt den Radius eines Kreises oder Kreisbogens fest @@ -6819,8 +6756,8 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte - Create two rectangles, one in the other with a constant thickness. - Erstellt zwei Rechtecke, eins im anderen, mit konstantem Abstand. + Create two rectangles with a constant offset. + Zwei Rechtecke mit einem konstanten Versatz erstellen. @@ -6834,12 +6771,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertikal - + Constrains a single line to either horizontal or vertical. Schränkt die Auswahl entweder horizontal oder vertikal ein. @@ -6847,12 +6784,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertikal - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Schränkt die Auswahl entweder horizontal oder vertikal ein, je nachdem, was näher an der aktuellen Ausrichtung liegt. @@ -6860,12 +6797,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte CmdSketcherCompCurveEdition - + Curve Edition Bogeneditor - + Curve Edition tools. Kurvenbearbeitungswerkzeuge. @@ -6873,12 +6810,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte CmdSketcherCompSlot - + Slots Nuten - + Slot tools. Nutwerkzeuge. @@ -6886,12 +6823,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte CmdSketcherCreateArcSlot - + Create arc slot Bogennut erstellen - + Create an arc slot in the sketch Erstellt eine Bogennut in der Skizze @@ -6899,12 +6836,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte CmdSketcherConstrainCoincidentUnified - + Constrain coincident Koinzidenz festlegen - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Erstellt eine Randbedingung Koinzidenz festlegen zwischen Punkten, eine Randbedingung Punkt auf Objekt festlegen zwischen einem Punkt und einer Kante oder eine Randbedingung Konzentrisch festlegen zwischen Kreisen, Bögen und Ellipsen @@ -7199,7 +7136,7 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte Copies (+'U'/ -'J') - Anzahl der Kopien (+ 'U' / - 'J') + Anzahl der Kopien (+'U' /- 'J') @@ -7288,12 +7225,12 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte Array transform - Array transform + Matrix-Transformierung Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Ausgewählte Geometrien verschieben. Aktivieren Sie die Erstellung von i * j Kopien. @@ -7306,7 +7243,7 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. - This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. + Dies betrifft die Randbedingungen wie z. B. Maße. Wenn Sie Klonen aktivieren, wird das Werkzeug die Randbedingungen kopieren. Andernfalls wird es versuchen, sie durch Ähnliche zwischen den ursprünglichen Geometrien und den neuen Kopien zu ersetzen. @@ -7314,7 +7251,7 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte Copies (+'U'/-'J') - Copies (+'U'/-'J') + Anzahl der Kopien (+'U' / -'J') @@ -7322,7 +7259,70 @@ Ein Linksklick auf einen leeren Bereich, bestätigt die aktuell vorausgewählte Rows (+'R'/-'F') - Rows (+'R'/-'F') + Zeilen (+'R' / -'F') + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Kreisbogen mit Mittelpunkt und durch die Endpunkte erstellen + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Kreisbogen durch die Endpunkte und einen Punkt auf dem Bogen erzeugen + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Ellipse durch den Mittelpunkt, einen Radius und einen Punkt auf dem Kreisbogen erzeugen + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Ellipse durch dei Endpunkte einer Achse und einen Punkt auf dem Kreisbogen erzeugen + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Ellipsenbogen durch Mittelpunkt, einen Radius und den Endpunkten erzeugen + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Hyperbelbogen durch Angabe von Mittelpunkt, Fokuspunkt und Endpunkte erzeugen + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Parabelbogen durch Fokus, Scheitelpunkt sowie den Endpunkten erzeugen diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts index 424601890a..ebc1a8fcc8 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Αντιγράφει τα γεωμετρικά στοιχεία ενός άλλου σχεδιίου @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Περιορισμός τόξου ή κύκλου - + Constrain an arc or a circle Περιόρισε ένα τόξο ή έναν κύκλο - + Constrain radius Περιορισμός ακτίνας - + Constrain diameter Περιορισμός διαμέτρου - + Constrain auto radius/diameter Περιορισμός αυτόματης ακτίνας/διαμέτρου @@ -180,24 +180,24 @@ - Center and end points - Κέντρο, αρχικό σημείο και τελικό σημείο + Center and endpoints + Center and endpoints - - End points and rim point - Αρχικό σημείο, τελικό σημείο καθώς και σημείο της περιφέρειας + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Δημιουργία καμπύλης B-spline - + Create a B-spline in the sketch Δημιουργία μιας καμπύλης B-spline στο σχέδιο @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Δημιουργία κύκλου - + Create a circle in the sketcher Δημιουργήστε έναν κύκλο - + Center and rim point Κέντρο και σημείο της περιφέρειας - + 3 rim points 3 σημεία της περιφέρειας @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Δημιουργήστε ένα κωνικό σχήμα - - Ellipse by center, major radius, point - Χάραξη έλλειψης με χρήση κέντρου, μεγάλης ακτίνας, σημείου + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Χάραξη έλλειψης με χρήση Περίκεντρου, απόκεντρου, μικρής ακτίνας + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Χάραξη τόξου έλλειψης με χρήση κέντρου, μεγάλου ημιάξονα, αρχικού και τελικού σημείου + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Χάραξη τόξου υπερβολής με χρήση κέντρου, μείζονος άξονα, αρχικού και τελικού σημείου + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Χάραξη τόξου παραβολής με χρήση εστίας, κορυφής, αρχικού και τελικού σημείου @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Δημιουργία στρογγυλέματος - + Create a fillet between two lines Δημιουργήστε ένα στρογγύλεμα μεταξύ δύο γραμμών - + Sketch fillet Σκίτσο στρογγύλεμα - - Constraint-preserving sketch fillet - Στρογγύλεμα με περιορισμούς + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Δημιουργία κανονικού πολυγώνου - + Create a regular polygon in the sketcher Δημιουργήστε ένα κανονικό πολύγωνο στο σχέδιο - + Triangle Τρίγωνο - + Square Τετράγωνο - + Pentagon Πεντάγωνο - + Hexagon Εξάγωνο - + Heptagon Επτάγωνο - + Octagon Οκτάγωνο - + Regular polygon Κανονικό πολύγωνο @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Περιορισμός γωνίας - + Fix the angle of a line or the angle between two lines Καθορισμός της γωνίας μιας γραμμής ή της γωνίας μεταξύ δύο γραμμών @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Περιορισμός Κλειδώματος - + Block the selected edge from moving Αποκλεισμός της επιλεγμένης ακμής από την κίνηση @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Περιορισμός ταύτισης - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Δημιουργία ενός περιορισμού σύμπτωσης μεταξύ σημείων ή ενός ομόκεντρου περιορισμού μεταξύ κύκλων, τόξων και ελλείψεων @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Περιορισμός διαμέτρου - + Fix the diameter of a circle or an arc Όρισε τη σταθερή διάμετρο ενός κύκλου, ή ενός τόξου @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Περιορισμός απόστασης - + Fix a length of a line or the distance between a line and a vertex or between two circles Καθορίστε ένα μήκος μιας γραμμής ή την απόσταση μεταξύ μιας γραμμής και μιας κορυφής ή μεταξύ δύο κύκλων @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Καθορισμός της οριζόντιας απόστασης μεταξύ δύο σημείων ή μεταξύ τελικών σημείων γραμμών @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Καθορισμός της κατακόρυφης απόστασης μεταξύ δύο σημείων ή μεταξύ τελικών σημείων γραμμών @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Περιορισμός ισότητας - + Create an equality constraint between two lines or between circles and arcs Δημιουργία ενός περιορισμού ισότητας μεταξύ δύο γραμμών ή μεταξύ κύκλων και τόξων @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Περιορισμός κατά την οριζόντια διεύθυνση - + Create a horizontal constraint on the selected item Δημιουργία ενός οριζόντιου περιορισμού για το επιλεγμένο αντικείμενο @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Περιορισμός κλειδώματος - + Create both a horizontal and a vertical distance constraint on the selected vertex Δημιουργήστε τόσο οριζόντιο όσο και κατακόρυφο περιορισμό απόστασης @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Περιορισμός παραλληλίας - + Create a parallel constraint between two lines Δημιουργήστε έναν περιορισμό παραλληλίας μεταξύ δύο γραμμών @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Περιορισμός καθετότητας - + Create a perpendicular constraint between two lines Δημιουργία ενός περιορισμού καθετότητας μεταξύ δύο γραμμών @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Περιορισμός θέσης σημείου σε αντικείμενο - + Fix a point onto an object Καθορισμός της θέσης ενός σημείου σε ένα αντικείμενο @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Περιορισμός αυτόματης ακτίνας/διαμέτρου - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Διορθώστε τη διάμετρο, εάν επιλέξεται κύκλο, ή την ακτίνα ενός τόξου/σπιράλ @@ -573,12 +573,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -588,12 +588,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Περιορισμός συμμετρίας - + Create a symmetry constraint between two points with respect to a line or a third point Δημιουργία περιορισμού συμμετρίας μεταξύ δύο σημείων ως προς μια γραμμή ή ένα τρίτο σημείο @@ -602,12 +602,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Περιορισμός εφαπτομένης - + Create a tangent constraint between two entities Δημιουργία ενός περιορισμού επαφής μεταξύ δύο οντοτήτων @@ -615,12 +615,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Περιορισμός κατά την κατακόρυφη διεύθυνση - + Create a vertical constraint on the selected item Δημιουργία ενός κατακόρυφου περιορισμού στο επιλεγμένο αντικείμενο @@ -667,12 +667,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Δημιουργία κύκλου από τρία σημεία - + Create a circle by 3 perimeter points Δημιουργία ενός κύκλου από τρία σημεία της περιμέτρου @@ -693,12 +693,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Δημιουργία ενός τόξου έλλειψης - + Create an arc of ellipse in the sketch Δημιουργήστε ένα τόξο έλλειψης στο σχέδιο @@ -706,12 +706,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Δημιουργία τόξου υπερβολής - + Create an arc of hyperbola in the sketch Δημιουργήστε ένα ομαλό τόξο στο σχέδιο @@ -719,12 +719,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Δημιουργία ενός τόξου παραβολής - + Create an arc of parabola in the sketch Δημιουργήστε ένα τόξο παραβολής στο σχέδιο @@ -732,12 +732,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Δημιουργία καμπύλης B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Δημιουργία κύκλου - + Create a circle in the sketch Δημιουργία ενός κύκλου στο σχέδιο @@ -758,12 +758,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Δημιουργία έλλειψης από 3 σημεία - + Create an ellipse by 3 points in the sketch Δημιουργία μιας έλλειψης από 3 σημεία στο σχέδιο @@ -771,12 +771,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Δημιουργία έλλειψης από κέντρο - + Create an ellipse by center in the sketch Δημιουργήστε μια έλλειψη στο κέντρο του σχεδίου @@ -784,12 +784,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Δημιουργία στρογγυλέματος - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Δημιουργία επταγώνου - + Create a heptagon in the sketch Δημιουργήστε ένα επτάγωνο στο σχέδιο @@ -810,12 +810,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Δημιουργία εξαγώνου - + Create a hexagon in the sketch Δημιουργήστε ένα εξάγωνο στο σχέδιο @@ -849,12 +849,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Δημιουργία οκταγώνου - + Create an octagon in the sketch Δημιουργία ενός οκταγώνου στο σχέδιο @@ -862,12 +862,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Δημιουργία πενταγώνου - + Create a pentagon in the sketch Δημιουργία ενός πενταγώνου στο σχέδιο @@ -875,12 +875,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Δημιουργία μιας περιοδικής καμπύλης B-spline - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Δημιουργία σημείου - + Create a point in the sketch Δημιουργία ενός σημείου στο σχέδιο @@ -901,12 +901,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Δημιουργία στρογγυλέματος με διατήρησης γωνίας - + Fillet that preserves intersection point and most constraints Στρογγύλεμα που διατηρεί το σημείο τομής και τους περισσότερους περιορισμούς @@ -953,12 +953,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Δημιουργία κανονικού πολυγώνου - + Create a regular polygon in the sketch Δημιουργία ενός κανονικού πολυγώνου στο σχέδιο @@ -966,12 +966,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Δημιουργία εσοχής - + Create a slot in the sketch Δημιουργία μιας εσοχής στο σχέδιο @@ -979,12 +979,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Δημιουργία τετραγώνου - + Create a square in the sketch Δημιουργία ενός τετραγώνου στο σχέδιο @@ -992,12 +992,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Δημιουργία ισόπλευρου τριγώνου - + Create an equilateral triangle in the sketch Δημιουργία ενός ισόπλευρου τριγώνου στο σχέδιο @@ -1070,12 +1070,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Επέκταση ακμής - + Extend an edge with respect to the picked position Επέκταση μιας ακμής ως προς την επιλεγμένη θέση @@ -1083,12 +1083,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Δημιουργία μιας ακμής που συνδέεται με ένα στοιχείο εξωτερικής γεωμετρίας @@ -1425,12 +1425,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Split edge - + Splits an edge into two while preserving constraints Splits an edge into two while preserving constraints @@ -1477,12 +1477,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Ενεργοποιεί ή Απενεργοποιεί την κατάσταση λειτουργίας επεξεργασίας του επιλεγμένου αντικείμενου @@ -1503,12 +1503,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Toggle driving/reference constraint - + Set the toolbar, or the selected constraints, into driving or reference mode Set the toolbar, or the selected constraints, @@ -1518,12 +1518,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Περικοπή ακμής - + Trim an edge with respect to the picked position Περικοπή μιας ακμής ως προς την επιλεγμένη θέση @@ -1581,79 +1581,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Προσθήκη περιορισμού "Κλειδώματος" - + Add relative 'Lock' constraint Προσθήκη σχετικού περιορισμού "Κλειδώματος" - + Add fixed constraint Add fixed constraint - + Add 'Block' constraint Προσθήκη περιορισμού 'Κλειδώματος' - + Add block constraint Προσθήκη περιορισμού kλειδώματος - - + + Add coincident constraint Add coincident constraint - - + + Add distance from horizontal axis constraint Add distance from vertical axis constraint - - + + Add distance from vertical axis constraint Add distance from vertical axis constraint - - + + Add point to point distance constraint Add point to point distance constraint - - + + Add point to line Distance constraint Add point to line Distance constraint - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Add length constraint @@ -1676,8 +1676,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Add Distance constraint @@ -1703,7 +1703,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1714,220 +1714,220 @@ invalid constraints, degenerated geometry, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Προσθήκη περιορισμού "Κλειδώματος" - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Add point on object constraint - - + + Add point to point horizontal distance constraint Add point to point horizontal distance constraint - + Add fixed x-coordinate constraint Add fixed x-coordinate constraint - - + + Add point to point vertical distance constraint Add point to point vertical distance constraint - + Add fixed y-coordinate constraint Add fixed y-coordinate constraint - - + + Add parallel constraint Add parallel constraint - - - - - - - + + + + + + + Add perpendicular constraint Προσθήκη κάθετου περιορισμού - + Add perpendicularity constraint Προσθήκη περιορισμού καθετότητας - + Swap coincident+tangency with ptp tangency Swap coincident+tangency with ptp tangency - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint Add tangent constraint - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Add tangent constraint point - - - - + + + + Add radius constraint Add radius constraint - - - - + + + + Add diameter constraint Προσθήκη περιορισμού διαμέτρου - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint Add angle constraint - - + + Add equality constraint Add equality constraint - - - - - + + + + + Add symmetric constraint Add symmetric constraint - + Add Snell's law constraint Προσθήκη περιορισμού νόμου Snell - + Toggle constraint to driving/reference Toggle constraint to driving/reference - + Activate/Deactivate constraint Activate/Deactivate constraint @@ -2012,7 +2012,7 @@ invalid constraints, degenerated geometry, etc. Προσθήκη ελλειπτικό τόξο - + Add sketch arc of hyperbola Προσθήκη τόξου ομαλής καμπύλης @@ -2156,8 +2156,8 @@ invalid constraints, degenerated geometry, etc. Update constraint's virtual space - + Add auto constraints Προσθήκη αυτόματων περιορισμών @@ -2182,12 +2182,12 @@ invalid constraints, degenerated geometry, etc. Drag Curve - + Drag Constraint Drag Constraint - + Modify sketch constraints Τροποποίηση περιορισμών σχεδίου @@ -2278,60 +2278,60 @@ invalid constraints, degenerated geometry, etc. Σφάλμα αυτόματου περιορισμού: Άλυτο σχέδιο μετά την εφαρμογή περιορισμών ισότητας. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Δεν είναι δυνατή η εύρεση τομής καμπυλών. Προσπαθήστε να προσθέσετε τον περιορισμό ταύτισης μεταξύ κορυφών των καμπυλών που σκοπεύετε να συμπληρώσετε. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. Δεν απαιτείτε καμία αλλαγή της πολλαπλότητας κόμβου. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. The Geometry Index (GeoId) provided is not a B-spline curve. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Ο δείκτης κόμβου είναι εκτός ορίων. Σημειώστε πως σύμφωνα με το σύστημα σημειογραφίας του OCC, ο πρώτος κόμβος έχει δείκτη 1 και όχι μηδέν. - + The multiplicity cannot be increased beyond the degree of the B-spline. The multiplicity cannot be increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. Η πολλαπλότητα δεν δύναται να είναι χαμηλότερη από το μηδέν. - + OCC is unable to decrease the multiplicity within the maximum tolerance. To ΟCC αδυνατεί να μειώσει την πολλαπλότητα εντός των ορίων μέγιστης ανοχής. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2411,127 +2411,11 @@ invalid constraints, degenerated geometry, etc. Να μην πραγματοποιηθεί επισύναψη + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Λάθος επιλογή @@ -2613,106 +2613,106 @@ invalid constraints, degenerated geometry, etc. Ένα από τα επιλεγμένα πρέπει να βρίσκεται στο σχέδιο. - + Select an edge from the sketch. Επιλέξτε μια ακμή από το σχέδιο. - - - - - - + + + + + + Impossible constraint Αδύνατος περιορισμός - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Διπλός περιορισμός - + The selected edge already has a horizontal constraint! The selected edge already has a horizontal constraint! - + The selected edge already has a vertical constraint! The selected edge already has a vertical constraint! - - - + + + The selected edge already has a Block constraint! Η επιλεγμένη ακμή έχει ήδη έναν περιορισμό! - + There are more than one fixed points selected. Select a maximum of one fixed point! Υπάρχουν περισσότερα από ένα σταθερά σημεία επιλεγμένα. Επιλέξτε το πολύ ένα σταθερό σημείο! - - - + + + Select vertices from the sketch. Επιλέξτε κορυφές από το σχέδιο. - + Select one vertex from the sketch other than the origin. Επιλέξτε μια κορυφή από το σκαρίφημα εκτός από το σημείο τομής των αξόνων. - + Select only vertices from the sketch. The last selected vertex may be the origin. Επιλέξτε μόνο τις κορυφές από το σχέδιο. Η τελευταία επιλεγμένη κορυφή δύναται να είναι το σημείο τομής των αξόνων. - + Wrong solver status Λάθος κατάσταση επιλυτή - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Δεν μπορεί να προστεθεί περιορισμός εάν το σχέδιο δεν έχει επιλυθεί ή υπάρχουν περιττοί και αντικρουόμενοι περιορισμοί. - + Select one edge from the sketch. Επιλέξτε μια ακμή από το σχέδιο. - + Select only edges from the sketch. Επιλέξτε μόνο ακμές από το σχέδιο. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Σφάλμα @@ -2722,80 +2722,80 @@ invalid constraints, degenerated geometry, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Εφαρμόστηκε περιορισμός επαφής μεταξύ άκρων εναλλακτικά. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Επιλέξτε ακριβώς μια γραμμή ή ένα σημείο και μια γραμμή ή δύο σημεία από το σχέδιο. - + Cannot add a length constraint on an axis! Αδύνατη η προσθήκη περιορισμού μήκους σε άξονα! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. Επιλέξτε τα κατάλληλα στοιχεία από το σχέδιο. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2805,92 +2805,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Κανένα από τα επιλεγμένα σημεία δεν ήταν περιορισμένο πάνω στις αντίστοιχες καμπύλες, είτε επειδή είναι τμήματα του ίδιου στοιχείου, είτε επειδή ανήκουν και τα δύο στο ίδιο στοιχείο εξωτερικής γεωμετρίας. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Επιλέξτε ακριβώς μια γραμμή ή έως και δύο σημεία από το σχέδιο. - + Cannot add a horizontal length constraint on an axis! Αδύνατη η προσθήκη περιορισμού οριζόντιου μήκους σε άξονα! - + Cannot add a fixed x-coordinate constraint on the origin point! Αδυναμία προσθήκης σταθερού περιορισμού συντεταγμένων x στο σημείο αρχής! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Αδύνατη η προσθήκη κατακόρυφου μήκους σε άξονα! - + Cannot add a fixed y-coordinate constraint on the origin point! Δεν είναι δυνατή η προσθήκη ενός σταθερού περιορισμού συντεταγμένων y στο σημείο αρχής! - + Select two or more lines from the sketch. Επιλέξτε δύο ή περισσότερες γραμμές από το σχέδιο. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Επιλέξτε τουλάχιστον δύο γραμμές από το σχέδιο. - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Αποδεκτοί συνδυασμοί: δύο καμπύλες· ένα αρχικό σημείο και μια καμπύλη· ένα αρχικό και ένα τελικό σημείο· δύο καμπύλες και ένα σημείο. - + Select some geometry from the sketch. perpendicular constraint Επιλέξτε γεωμετρικά στοιχεία από το σχέδιο. - - + + Cannot add a perpendicularity constraint at an unconnected point! Αδύνατη η προσθήκη περιορισμού καθετότητας σε ένα ασύνδετο σημείο! - - + + One of the selected edges should be a line. Μια από τις επιλεγμένες ακμές θα πρέπει να είναι γραμμή. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Εφαρμόστηκε περιορισμός επαφής μεταξύ άκρων. Ο περιορισμός ταύτισης διαγράφηκε. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Αποδεκτοί συνδυασμοί: δύο καμπύλες· ένα αρχικό σημείο και μια καμπύλη· ένα αρχικό και ένα τελικό σημείο· δύο καμπύλες και ένα σημείο. - + Select some geometry from the sketch. tangent constraint Επιλέξτε γεωμετρικά στοιχεία από το σχέδιο. - - - + + + Cannot add a tangency constraint at an unconnected point! Αδύνατη η προσθήκη περιορισμού επαφής σε ένα ασύνδετο σημείο! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Λάθος αριθμός επιλεγμένων αντικειμένων! - - + + With 3 objects, there must be 2 curves and 1 point. Με 3 αντικείμενα, πρέπει να υπάρχουν 2 καμπύλες και 1 σημείο. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Επιλέξτε ένα ή περισσότερα τόξα ή κύκλους από το σχέδιο. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Επιλέξτε έναν ή περισσότερους πόλους B-Spline είτε ένα ή περισσότερα τόξα ή κύκλους από το σχέδιο, αλλά όχι ανάμεικτα. - - - + + + Constraint only applies to arcs or circles. Ο περιορισμός εφαρμόζεται μόνο σε τόξα ή κύκλους. - - + + Select one or two lines from the sketch. Or select two edges and a point. Επιλέξτε μια ή δύο γραμμές από το σχέδιο. Ή επιλέξτε δύο ακμές και ένα σημείο. @@ -3013,88 +3013,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Δεν δύναται να οριστεί γωνιακός περιορισμός για δύο παράλληλες γραμμές. - + Cannot add an angle constraint on an axis! Αδύνατη η προσθήκη γωνιακού περιορισμού σε άξονα! - + Select two edges from the sketch. Επιλέξτε δύο ακμές από το σχέδιο. - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Οι άξονες σχεδίου δεν μπορούν να χρησιμοποιηθούν για περιορισμούς ισότητας. - + Equality for B-spline edge currently unsupported. Δεν υποστηρίζονται περιορισμοί ισότητας σε ακμές καμπύλης B-spline επί του παρόντος. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Επιλέξτε δύο σημεία και μια γραμμή συμμετρίας, δύο σημεία και ένα σημείο συμμετρίας ή μια γραμμή και ένα σημείο συμμετρίας από το σχέδιο. - - + + Cannot add a symmetry constraint between a line and its end points. Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Αδύνατη η προσθήκη περιορισμού μεταξύ μιας γραμμής και του αρχικού ή του τελικού της σημείου! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. - + Selected objects are not just geometry from one sketch. Τα επιλεγμένα στοιχεία δεν είναι μόνο γεωμετρικά στοιχεία από το ίδιο σκαρίφημα. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. Επιλέξτε τους περιορισμούς από το σχέδιο. @@ -3116,9 +3116,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error Σφάλμα Πυρήνα CAD @@ -3261,14 +3261,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Removal of axes alignment requires at least one selected non-external geometric element - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3652,12 +3652,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Μήκος: - + Refractive index ratio Δείκτης διάθλασης - + Ratio n2/n1: Λόγος n2/n1: @@ -3665,72 +3665,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Κανονικό - + Construction Κατασκευή - + Internal Internal - + External External - + All types All types - + Point Σημείο - + Line Γραμμή - + Circle Κύκλος - + Ellipse Έλλειψη - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3853,27 +3853,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Select Vertical Axis - + Layer Layer - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Hidden - + Delete Διαγραφή @@ -4747,120 +4747,120 @@ However, no constraints linking to the endpoints were found. Ρυθμίσεις - - - - - - - - - - + + + + + + + + + + Construction Κατασκευή - + Elements Στοιχεία - - - - + + + + Point Σημείο - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Γραμμή - - - - + + + + Arc Τόξο - - - - + + + + Circle Κύκλος - - - - + + + + Ellipse Έλλειψη - - - - + + + + Elliptical Arc Ελλειπτικό Τόξο - - - - + + + + Hyperbolic Arc Υπερβολικό Τόξο - - - - + + + + Parabolic Arc Παραβολικό Τόξο - - - - + + + + BSpline Καμπύλη Βασικής Συνάρτησης BSpline - - - - + + + + Other Άλλο - + Extended information Εκτεταμένες Πληροφορίες @@ -5080,112 +5080,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Επεξεργασία σκίτσου - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch Μη έγκυρο σχέδιο - + Do you want to open the sketch validation tool? Θέλετε να ανοίξετε το εργαλείο επικύρωσης σχεδίων; - + The sketch is invalid and cannot be edited. Το σχέδιο είναι μη έγκυρο και δε δύναται να υποστεί επεξεργασία. - + Please remove the following constraint: Παρακαλώ αφαιρέστε τον παρακάτω περιορισμό: - + Please remove at least one of the following constraints: Παρακαλώ αφαιρέστε τουλάχιστον έναν από τους παρακάτω περιορισμούς: - + Please remove the following redundant constraint: Παρακαλώ αφαιρέστε τον παρακάτω περιττό περιορισμό: - + Please remove the following redundant constraints: Παρακαλώ αφαιρέστε τους παρακάτω περιττούς περιορισμούς: - + The following constraint is partially redundant: Ο ακόλουθος περιορισμός είναι εν μέρει περιττός: - + The following constraints are partially redundant: Οι ακόλουθοι περιορισμοί είναι εν μέρει περιττοί: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch Κενό σχέδιο - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Περιττοί περιορισμοί: - + Partially redundant: Εν μέρει περιττό: - + Solver failed to converge Solver failed to converge - + Under constrained: Υπό περιορισμούς: - + %n DoF(s) %n DoF(s) @@ -5193,7 +5193,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fully constrained @@ -5291,8 +5291,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Όρισε τη σταθερή διάμετρο ενός κύκλου, ή ενός τόξου @@ -5300,8 +5300,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Καθορισμός της ακτίνας/διαμέτρου ενός κύκλου ή ενός τόξου @@ -5309,8 +5309,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Καθορισμός της ακτίνας ενός κύκλου ή ενός τόξου @@ -5324,70 +5324,25 @@ This is done by analyzing the sketch geometries and constraints. Δημιουργεί ένα απλό αντίγραφο του γεωμετρικού στοιχείου λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Δημιουργία ενός τόξου με χρήση του αρχικού και του τελικού του σημείου καθώς και ενός σημείου κατά μήκος του τόξου - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Δημιουργία ενός κύκλου από 3 σημεία της περιφέρειας - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Δημιουργία ενός τόξου με χρήση του κέντρου, του αρχικού και του τελικού του σημείου - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Δημιουργήστε ένα τόξο έλλειψης με βάση το κέντρο, την μεγάλη ακτίνα και τα τελικά σημεία - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Δημιουργήστε ένα τόξο υπερβολής με βάση το κέντρο, την μεγάλη ακτίνα και τα τελικά σημεία - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Δημιουργήστε ένα τόξο παραβολής από την εστία του, την κορυφή και τελικά σημεία - - Sketcher_CreateBSpline - + B-spline by control points Καμπύλη B-spline από σημεία ελέγχου - - + + Create a B-spline by control points Δημιουργία μιας καμπύλης B-spline με χρήση σημείων ελέγχου @@ -5395,35 +5350,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Δημιουργία ενός κύκλου με χρήση του κέντρου του και ενός σημείου της περιφέρειας - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Δημιουργία μιας έλλειψης με χρήση του περίκεντρου, του απόκεντρου και του μικρού ημιάξονα - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Δημιουργία μιας έλλειψης με χρήση του κέντρου της, του μεγάλου ημιάξονα και ενός σημείου - - Sketcher_CreateFillet - - + + Creates a radius between two lines Δημιουργεί ένα τόξο μεταξύ δύο γραμμών @@ -5431,8 +5368,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Δημιουργία ενός επταγώνου με χρήση του κέντρου του και μιας γωνίας @@ -5440,8 +5377,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Δημιουργία ενός εξαγώνου με χρήση του κέντρου του και μιας γωνίας @@ -5457,14 +5394,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Δημιουργία ενός οκταγώνου με χρήση του κέντρου του και μιας γωνίας + - Create a regular polygon by its center and by one corner Δημιουργία ενός κανονικού πολυγώνου με χρήση του κέντρου του και μιας γωνίας @@ -5472,8 +5409,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Δημιουργία ενός πενταγώνου με χρήση του κέντρου του και μιας γωνίας @@ -5481,8 +5418,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Στρογγύλεμα που διατηρεί τους περιορισμούς και το σημείο τομής @@ -5506,8 +5443,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Δημιουργία ενός τετραγώνου με χρήση του κέντρου του και μιας γωνίας @@ -5515,8 +5452,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Δημιουργία ενός ισόπλευρου τριγώνου με χρήση του κέντρου του και μιας γωνίας @@ -5524,13 +5461,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Περιοδική καμπύλη B-spline από σημεία ελέγχου + - Create a periodic B-spline by control points Δημιουργία μιας περιοδικής καμπύλης B-spline με χρήση σημείων ελέγχου @@ -5931,7 +5868,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more and %1 more @@ -6154,46 +6091,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Σφάλμα @@ -6229,16 +6166,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6255,12 +6192,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Αδυναμία δημιουργίας τόξου υπερβολής από μη έγκυρες γωνίες, προσπαθήστε ξανά! - + Cannot create arc of hyperbola Αδυναμία δημιουργίας τόξου υπερβολής @@ -6280,8 +6217,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6337,17 +6274,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6382,9 +6319,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6447,13 +6384,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6461,13 +6398,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6573,12 +6510,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6586,12 +6523,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6599,12 +6536,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Διάσταση - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6642,12 +6579,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Περιορισμός ακτίνας - + Fix the radius of a circle or an arc Καθορισμός της ακτίνας ενός κύκλου ή ενός τόξου @@ -6822,8 +6759,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6837,12 +6774,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6850,12 +6787,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6863,12 +6800,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6876,12 +6813,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6889,12 +6826,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6902,12 +6839,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Περιορισμός ταύτισης - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7328,4 +7265,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-AR.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-AR.ts index 45a6b709b7..1a672140ad 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-AR.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-AR.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Crear una copia carbónica - + Copy the geometry of another sketch Copia la geometría de otro croquis @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Restringir arco o circunferencia - + Constrain an arc or a circle Restringe un arco o una circunferencia - + Constrain radius Restringir radio - + Constrain diameter Restringir diámetro - + Constrain auto radius/diameter Restricción automática de radio/diámetro @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints Centro y puntos finales - - End points and rim point + + Endpoints and rim point Puntos finales y punto de borde CmdSketcherCompCreateBSpline - + Create B-spline Crear B-spline - + Create a B-spline in the sketch Crea una B-spline en el croquis @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Crear circunferencia - + Create a circle in the sketcher Crea una circunferencia en el croquis - + Center and rim point Centro y punto de borde - + 3 rim points 3 puntos del borde @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Crear una curva cónica - + Create a conic in the sketch Crea una curva cónica en el croquis - - Ellipse by center, major radius, point - Elipse mediante centro, radio mayor, punto + + Ellipse by center, radius, rim point + Elipse por centro, radio, punto de borde - - Ellipse by periapsis, apoapsis, minor radius - Elipse mediante periastro, apoastro y radio menor + + Ellipse by axis endpoints, rim point + Elipse por puntos finales del eje, punto del borde - - Arc of ellipse by center, major radius, endpoints - Arco de elipse mediante centro, radio mayor, puntos finales + + Arc of ellipse by center, radius, endpoints + Arco de elipse por centro, radio, puntos finales - - Arc of hyperbola by center, major radius, endpoints - Arco de hipérbola mediante centro, radio mayor, puntos finales + + Arc of hyperbola by center, vertex, endpoints + Arco de hipérbola por centro, vértices, puntos finales - + Arc of parabola by focus, vertex, endpoints Arco de parábola mediante foco, vértices, puntos finales @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Crear redondeo - + Create a fillet between two lines Crea un redondeo entre dos aristas - + Sketch fillet Redondeo en croquis - - Constraint-preserving sketch fillet - Restricción conservando el redondeo de croquis + + Corner-preserving sketch fillet + Redondeo de croquis que conserva las esquinas @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Crear polígono regular - + Create a regular polygon in the sketcher Crea un polígono regular en el croquis - + Triangle Triángulo - + Square Cuadrado - + Pentagon Pentágono - + Hexagon Hexágono - + Heptagon Heptágono - + Octagon Octágono - + Regular polygon Polígono regular @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Restringir ángulo - + Fix the angle of a line or the angle between two lines Fija el ángulo de una línea o el ángulo entre dos líneas @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Restricción en bloque - + Block the selected edge from moving Bloquea el movimiento del borde seleccionado @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Restringir coincidencia - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Crea una restricción coincidente entre puntos, o una restricción concéntrica entre círculos, arcos y elipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Restringir diámetro - + Fix the diameter of a circle or an arc Fija el diámetro de una circunferencia o un arco @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Restringir distancia - + Fix a length of a line or the distance between a line and a vertex or between two circles Fija una longitud de una línea o la distancia entre una línea y un vértice o entre dos círculos @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Restricción de distancia horizontal - + Fix the horizontal distance between two points or line ends Fija la distancia horizontal entre dos puntos o extremos de línea @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Restricción de distancia vertical - + Fix the vertical distance between two points or line ends Fija la distancia vertical entre dos puntos o extremos de línea @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Restringir igualdad - + Create an equality constraint between two lines or between circles and arcs Crea una restricción de igualdad entre dos líneas o entre circunferencias y arcos @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Restringir horizontalmente - + Create a horizontal constraint on the selected item Crea una restricción horizontal en el elemento seleccionado @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Restringir bloqueo - + Create both a horizontal and a vertical distance constraint on the selected vertex Crea una restricción de distancia horizontal y vertical @@ -520,12 +520,12 @@ en el vértice seleccionado CmdSketcherConstrainParallel - + Constrain parallel Restringir paralela - + Create a parallel constraint between two lines Crea una restricción paralela entre dos líneas @@ -533,12 +533,12 @@ en el vértice seleccionado CmdSketcherConstrainPerpendicular - + Constrain perpendicular Restringir perpendicular - + Create a perpendicular constraint between two lines Crea una restricción perpendicular entre dos líneas @@ -546,12 +546,12 @@ en el vértice seleccionado CmdSketcherConstrainPointOnObject - + Constrain point onto object Restringir el punto al objeto - + Fix a point onto an object Fija un punto en un objeto @@ -559,12 +559,12 @@ en el vértice seleccionado CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Restricción automática de radio/diámetro - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Corrija el diámetro si se elige un círculo, o el radio si se elige un polo arco/curva @@ -572,12 +572,12 @@ en el vértice seleccionado CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Restricción de refracción (Ley de Snell) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Crea una restricción de ley de refracción (ley de Snell) entre dos extremos de los rayos @@ -587,12 +587,12 @@ y un borde como interfaz. CmdSketcherConstrainSymmetric - + Constrain symmetrical Restringir simetría - + Create a symmetry constraint between two points with respect to a line or a third point Crea una restricción de simetría entre dos puntos @@ -602,12 +602,12 @@ con respecto a una línea o un tercer punto CmdSketcherConstrainTangent - + Constrain tangent Restringir tangente - + Create a tangent constraint between two entities Crea una restricción tangente entre dos entidades @@ -615,12 +615,12 @@ con respecto a una línea o un tercer punto CmdSketcherConstrainVertical - + Constrain vertically Restringir verticalmente - + Create a vertical constraint on the selected item Crea una restricción vertical en el elemento seleccionado @@ -667,12 +667,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreate3PointCircle - + Create circle by three points Crear una circunferencia por tres puntos - + Create a circle by 3 perimeter points Crea una circunferencia por 3 puntos perimetrales @@ -693,12 +693,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Crear arco de elipse - + Create an arc of ellipse in the sketch Crear un arco de elipse en el croquis @@ -706,12 +706,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Crear arco de hipérbola - + Create an arc of hyperbola in the sketch Crear un arco de hipérbola en el croquis @@ -719,12 +719,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateArcOfParabola - + Create arc of parabola Crear arco de parábola - + Create an arc of parabola in the sketch Crear un arco de parábola en el croquis @@ -732,12 +732,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateBSpline - + Create B-spline Crear B-spline - + Create a B-spline by control points in the sketch. Crear una B-spline por puntos de control en el croquis. @@ -745,12 +745,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateCircle - + Create circle Crear circunferencia - + Create a circle in the sketch Crea una circunferencia en el croquis @@ -758,12 +758,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Crear elipse mediante 3 puntos - + Create an ellipse by 3 points in the sketch Crear elipse mediante 3 puntos en el Croquizador @@ -771,12 +771,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateEllipseByCenter - + Create ellipse by center Crear elipse mediante centro - + Create an ellipse by center in the sketch Crear una elipse mediante centro en el Croquizador @@ -784,12 +784,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateFillet - + Create fillet Crear redondeo - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateHeptagon - + Create heptagon Crear heptágono - + Create a heptagon in the sketch Crear un heptágono en el Croquizador @@ -810,12 +810,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateHexagon - + Create hexagon Crear hexágono - + Create a hexagon in the sketch Crear un hexágono en el Croquizador @@ -849,12 +849,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateOctagon - + Create octagon Crear octágono - + Create an octagon in the sketch Crear un octágono en el Croquizador @@ -862,12 +862,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePentagon - + Create pentagon Crear pentágono - + Create a pentagon in the sketch Crear un pentágono en el Croquizador @@ -875,12 +875,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Crear una B-spline periódica - + Create a periodic B-spline by control points in the sketch. Crear una B-spline periódica por puntos de control en el croquis. @@ -888,12 +888,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePoint - + Create point Crear punto - + Create a point in the sketch Crea un punto en el croquis @@ -901,12 +901,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePointFillet - + Create corner-preserving fillet Crear un redondeo conservando las esquinas - + Fillet that preserves intersection point and most constraints Redondeo que conserva el punto de intersección y la mayoría de las restricciones @@ -953,12 +953,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateRegularPolygon - + Create regular polygon Crear polígono regular - + Create a regular polygon in the sketch Crea un polígono regular en el croquis @@ -966,12 +966,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateSlot - + Create slot Crear ranura - + Create a slot in the sketch Crea una ranura en el croquis @@ -979,12 +979,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateSquare - + Create square Crear cuadrado - + Create a square in the sketch Crear un cuadrado en el Croquizador @@ -992,12 +992,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateTriangle - + Create equilateral triangle Crear triángulo equilátero - + Create an equilateral triangle in the sketch Crear un triángulo equilátero en el Croquizador @@ -1070,12 +1070,12 @@ con respecto a una línea o un tercer punto CmdSketcherExtend - + Extend edge Extender borde - + Extend an edge with respect to the picked position Extiende un borde con respecto a la posición seleccionada @@ -1083,12 +1083,12 @@ con respecto a una línea o un tercer punto CmdSketcherExternal - + Create external geometry Crear geometría externa - + Create an edge linked to an external geometry Crea un borde vinculado a una geometría externa @@ -1426,12 +1426,12 @@ Esto borrará la propiedad 'Soporte', si la hubiera. CmdSketcherSplit - + Split edge Dividir borde - + Splits an edge into two while preserving constraints Divide un borde en dos preservando las restricciones @@ -1478,12 +1478,12 @@ Esto borrará la propiedad 'Soporte', si la hubiera. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activar/desactivar restricción - + Activates or deactivates the selected constraints Activa o desactiva las restricciones seleccionadas @@ -1504,12 +1504,12 @@ Esto borrará la propiedad 'Soporte', si la hubiera. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Alterna las restricciones entre operativas o de referencia - + Set the toolbar, or the selected constraints, into driving or reference mode Fija la barra de herramientas, o las restricciones seleccionadas, @@ -1519,12 +1519,12 @@ en modo operativo o de referencia CmdSketcherTrimming - + Trim edge Recortar borde - + Trim an edge with respect to the picked position Recorta un borde con respecto a la posición elegida @@ -1583,79 +1583,79 @@ restricciones inválidas, geometrías degeneradas, etc. Command - + Add 'Lock' constraint Añadir restricción 'Bloquear' - + Add relative 'Lock' constraint Agregar restricción relativa 'Bloquear' - + Add fixed constraint Añadir restricción fija - + Add 'Block' constraint Añadir restricción 'Bloqueo' - + Add block constraint Añadir restricción de bloqueo - - + + Add coincident constraint Añadir restricción coincidente - - + + Add distance from horizontal axis constraint Añadir distancia desde la restricción del eje horizontal - - + + Add distance from vertical axis constraint Añadir distancia desde la restricción del eje vertical - - + + Add point to point distance constraint Añadir punto a restricción de distancia de punto - - + + Add point to line Distance constraint Añadir punto a restricción de Distancia de Línea - - + + Add circle to circle distance constraint Agrega un círculo a la restricción de distancia circular - + Add circle to line distance constraint Agrega un círculo a la restricción de distancia de línea - - - - - - + + + + + + Add length constraint Añadir restricción de longitud @@ -1678,8 +1678,8 @@ restricciones inválidas, geometrías degeneradas, etc. - - + + Add Distance constraint Añadir restricción de distancia @@ -1705,7 +1705,7 @@ restricciones inválidas, geometrías degeneradas, etc. - + Add Symmetry constraints Añadir restricciones de simetría @@ -1716,220 +1716,220 @@ restricciones inválidas, geometrías degeneradas, etc. Añadir restricciones de distancia - + Add Horizontal constraint Añadir restricción de horizontalidad - + Add Vertical constraint Añadir restricción de verticalidad - + Add Block constraint Añadir restricción de bloqueo - + Add Angle constraint Añadir restricción de ángulo - - - - + + + + Add Equality constraint Añadir restricción de igualdad - + Add Equality constraints Añadir restricciones de igualdad - - - + + + Add Radius constraint Añadir restricción de radio - - + + Add arc angle constraint Añadir restricción de ángulo de arco - + Add concentric and length constraint Añadir restricción de concentricidad y longitud - + Add DistanceX constraint Añadir restricción de distancia X - + Add DistanceY constraint Añadir restricción de distancia Y - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Añadir punto a la restricción del objeto - - + + Add point to point horizontal distance constraint Añadir punto a la restricción de distancia horizontal del punto - + Add fixed x-coordinate constraint Añadir restricción de coordenada-x fija - - + + Add point to point vertical distance constraint Añadir punto a la restricción de distancia vertical del punto - + Add fixed y-coordinate constraint Añadir restricción de coordenada-y fija - - + + Add parallel constraint Añadir restricción paralela - - - - - - - + + + + + + + Add perpendicular constraint Añadir restricción perpendicular - + Add perpendicularity constraint Añadir restricción de perpendicularidad - + Swap coincident+tangency with ptp tangency Intercambia coincidencia + tangencia con la tangencia ptp - + Swap PointOnObject+tangency with point to curve tangency Intercambia Punto en Objeto+tangencia con tangencia de punto a curva - - - - - - - + + + + + + + Add tangent constraint Añadir restricción tangente - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Añadir punto de restricción tangente - - - - + + + + Add radius constraint Añadir restricción de radio - - - - + + + + Add diameter constraint Añadir restricción de diámetro - - - - + + + + Add radiam constraint Añadir restricción de radio - - - - + + + + Add angle constraint Añadir restricción de ángulo - - + + Add equality constraint Añadir restricción de igualdad - - - - - + + + + + Add symmetric constraint Añadir restricción de simetría - + Add Snell's law constraint Añadir restricción de ley de Snell - + Toggle constraint to driving/reference Cambiar la restricción a la conducción/referencia - + Activate/Deactivate constraint Activar/desactivar restricción @@ -2014,7 +2014,7 @@ restricciones inválidas, geometrías degeneradas, etc. Añadir arco de elipse de croquis - + Add sketch arc of hyperbola Añadir arco de hipérbola de croquis @@ -2158,8 +2158,8 @@ restricciones inválidas, geometrías degeneradas, etc. Actualizar el espacio virtual de la restricción - + Add auto constraints Añadir restricciones automáticas @@ -2184,12 +2184,12 @@ restricciones inválidas, geometrías degeneradas, etc. Arrastrar curva - + Drag Constraint Restricción de arrastre - + Modify sketch constraints Modificar restricciones de croquis @@ -2231,7 +2231,7 @@ restricciones inválidas, geometrías degeneradas, etc. Translate geometries - Translate geometries + Traducir geometrías @@ -2280,59 +2280,59 @@ restricciones inválidas, geometrías degeneradas, etc. Error de auto-restricción: Croquis sin solución después de aplicar restricciones de igualdad. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. No se puede adivinar la intersección de las curvas. Intente agregar una restricción coincidente entre los vértices de las curvas que pretende redondear. - - + + BSpline Geometry Index (GeoID) is out of bounds. Índice de Geometría BSpline (GeoID) está fuera de límites. - + You are requesting no change in knot multiplicity. No está solicitando ningún cambio en la multiplicidad de nudos. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. El índice de geometría (GeoId) proporcionado no es una curva B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. El índice de nudos está fuera de los límites. Tenga en cuenta que de acuerdo con la notación OCC, el primer nudo tiene índice 1 y no 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. La multiplicidad no puede incrementarse más allá del grado de la B-spline. - + The multiplicity cannot be decreased beyond zero. La multiplicidad no puede ser disminuida más allá de cero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC es incapaz de disminuir la multiplicidad dentro de la tolerancia máxima. - + Knot cannot have zero multiplicity. El nodo no puede tener una multiplicidad cero. - + Knot multiplicity cannot be higher than the degree of the BSpline. La multiplicidad del nodo no puede ser mayor que el grado de la BSpline. - + Knot cannot be inserted outside the BSpline parameter range. El nodo no puede ser insertado fuera del rango de parámetros de la B-Spline. @@ -2412,127 +2412,11 @@ restricciones inválidas, geometrías degeneradas, etc. No adjuntar + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2542,6 +2426,125 @@ restricciones inválidas, geometrías degeneradas, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2559,9 +2562,6 @@ restricciones inválidas, geometrías degeneradas, etc. - - - Wrong selection Selección Incorrecta @@ -2614,106 +2614,106 @@ restricciones inválidas, geometrías degeneradas, etc. Uno de los seleccionados tiene que estar en el croquis. - + Select an edge from the sketch. Seleccione un borde del Croquizador. - - - - - - + + + + + + Impossible constraint Restricción imposible - - + + The selected edge is not a line segment. El borde seleccionado no es un segmento de línea. - - - + + + Double constraint Restricción doble - + The selected edge already has a horizontal constraint! ¡El borde seleccionado ya tiene una restricción horizontal! - + The selected edge already has a vertical constraint! ¡El borde seleccionado ya tiene una restricción vertical! - - - + + + The selected edge already has a Block constraint! ¡El borde seleccionado ya tiene una restricción de Bloque! - + There are more than one fixed points selected. Select a maximum of one fixed point! Hay más de un punto fijo seleccionado. ¡Seleccione solamente un punto fijo! - - - + + + Select vertices from the sketch. Selecciona vértices del croquis. - + Select one vertex from the sketch other than the origin. Seleccione un vértice del croquis que no sea el origen. - + Select only vertices from the sketch. The last selected vertex may be the origin. Selecciona sólo vértices del croquis. El último vértice seleccionado puede ser el origen. - + Wrong solver status Estado de Solver incorrecto - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Una restricción de Bloqueo no puede ser añadida si el croquis está sin resolver o hay restricciones redundantes y en conflicto. - + Select one edge from the sketch. Seleccione un borde del croquis. - + Select only edges from the sketch. Seleccione solo bordes a partir del croquis. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 El número de objetos seleccionados no es 3 - + Error Error @@ -2723,80 +2723,80 @@ restricciones inválidas, geometrías degeneradas, etc. Error inesperado. Puede haber más información disponible en la vista de reporte. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. En su lugar, se aplicó la tangencia de punto final a punto final. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Seleccione dos o más vértices del croquis para una restricción coincidente, o dos o más círculos, elipses, arcos o arcos de elípse para una restricción concéntrica. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Seleccione dos vértices del croquis para una restricción coincidente, o dos círculos, elipses, arcos o arcos de elipse para una restricción concéntrica. - + Select exactly one line or one point and one line or two points from the sketch. Seleccione exactamente una línea o un punto y una línea o dos puntos del croquis. - + Cannot add a length constraint on an axis! ¡No se puede agregar una restricción de longitud en un eje! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Seleccione exactamente una línea o un punto y una línea o dos puntos o dos círculos del croquis. - + This constraint does not make sense for non-linear curves. Esta restricción no tiene sentido para curvas no lineales. - + Endpoint to edge tangency was applied instead. El punto final a la tangencia del borde se aplicó en su lugar. - - - - - - + + + + + + Select the right things from the sketch. Seleccione las cosas correctas desde el croquis. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Seleccione un borde que no sea un peso de B-spline. @@ -2806,92 +2806,92 @@ restricciones inválidas, geometrías degeneradas, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Ninguno de los puntos seleccionados fueron restringidos en sus respectivas curvas, porque son partes del mismo elemento, y porque ambos son geometría externa, o porque la arista no es elegible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Ninguno de los puntos seleccionados se restringió a las curvas respectivas, ya sea porque son partes del mismo elemento o porque ambos son geometría externa. - + Cannot add a length constraint on this selection! ¡No se puede agregar una restricción de longitud a esta selección! - - - - + + + + Select exactly one line or up to two points from the sketch. Seleccione exactamente una línea o hasta dos puntos del croquis. - + Cannot add a horizontal length constraint on an axis! ¡No se puede agregar una restricción de longitud horizontal en un eje! - + Cannot add a fixed x-coordinate constraint on the origin point! ¡No se puede agregar una restricción fija de coordenadas X en el punto de origen! - - + + This constraint only makes sense on a line segment or a pair of points. Esta restricción sólo tiene sentido en un segmento de línea o un par de puntos. - + Cannot add a vertical length constraint on an axis! ¡No se puede agregar una restricción de longitud vertical sobre un eje! - + Cannot add a fixed y-coordinate constraint on the origin point! ¡No se puede agregar una restricción fija de coordenadas Y en el punto de origen! - + Select two or more lines from the sketch. Seleccione dos o más líneas del croquis. - + One selected edge is not a valid line. - One selected edge is not a valid line. + La arista seleccionada no es una línea válida. - - + + Select at least two lines from the sketch. Seleccione al menos dos líneas del croquis. - + The selected edge is not a valid line. El borde seleccionado no es una línea válida. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2901,35 +2901,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos finales; dos curvas y un punto. - + Select some geometry from the sketch. perpendicular constraint Seleccione alguna geometría del croquis. - - + + Cannot add a perpendicularity constraint at an unconnected point! ¡No se puede agregar una restricción de perpendicularidad en un punto desconectado! - - + + One of the selected edges should be a line. Uno de los bordes seleccionados debe ser una línea. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Se aplicó la tangencia de punto final a punto final. La restricción coincidente fue eliminada. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Se aplicó la restricción del punto final a la tangencia. Se eliminó la restricción del punto sobre el objeto. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2939,67 +2939,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos finales; dos curvas y un punto. - + Select some geometry from the sketch. tangent constraint Seleccione alguna geometría del croquis. - - - + + + Cannot add a tangency constraint at an unconnected point! ¡No se puede agregar una restricción de tangencia en un punto desconectado! - - + + Tangent constraint at B-spline knot is only supported with lines! La restricción tangente en nudo de B-spline sólo es compatible con líneas! - + B-spline knot to endpoint tangency was applied instead. En su lugar, se aplicó el punto de la B-spline al extremo de la tangencia. - - + + Wrong number of selected objects! ¡Número incorrecto de objetos seleccionados! - - + + With 3 objects, there must be 2 curves and 1 point. Con 3 objetos, debe haber 2 curvas y 1 punto. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Seleccione uno o más arcos o circunferencias del croquis. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Seleccione sólo uno o más polos de B-Spline o sólo uno o más arcos o circunferencias del croquis, pero no mezclado. - - - + + + Constraint only applies to arcs or circles. La restricción sólo se aplica a los arcos o circunferencias. - - + + Select one or two lines from the sketch. Or select two edges and a point. Seleccione una o dos líneas del croquis. O seleccione dos bordes y un punto. @@ -3014,88 +3014,88 @@ Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos fina No se puede establecer una restricción de ángulo para dos líneas paralelas. - + Cannot add an angle constraint on an axis! ¡No se puede agregar una restricción de ángulo en un eje! - + Select two edges from the sketch. Seleccione dos bordes del croquis. - + Select two or more compatible edges. Seleccione dos o más bordes compatibles. - + Sketch axes cannot be used in equality constraints. Los ejes de dibujo no pueden utilizarse en restricciones de igualdad. - + Equality for B-spline edge currently unsupported. La igualdad para el borde de B-spline no está soportada actualmente. - - - - + + + + Select two or more edges of similar type. Seleccione dos o más bordes de tipo similar. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Seleccione dos puntos y una línea de simetría, dos puntos y un punto de simetría o una línea y un punto de simetría del croquis. - - + + Cannot add a symmetry constraint between a line and its end points. No se puede añadir una restricción de simetría entre una línea y sus extremos. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! ¡No se puede agregar una restricción de simetría entre una línea y sus puntos finales! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Seleccione dos extremos de líneas para actuar como rayos, y una arista que representa un límite. El primer punto seleccionado corresponde al índice n1, segundo a n2, y el valor de referencia establece la relación n2/n1. - + Selected objects are not just geometry from one sketch. Los objetos seleccionados no son solo geometría de un croquis. - + Cannot create constraint with external geometry only. No se puede crear restricción sólo con geometría externa. - + Incompatible geometry is selected. Se ha seleccionado geometría incompatible. - - - - - + + + + + Select constraints from the sketch. Seleccione restricciones del croquis. @@ -3117,9 +3117,9 @@ Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos fina Definir el grado de la B-Spline, entre 1 y %1: + - CAD Kernel Error Error de Kernel CAD @@ -3262,14 +3262,14 @@ Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos fina La eliminación de alineación de ejes requiere al menos un elemento geométrico no externo seleccionado - - + + Unsupported visual layer operation Operación de capa visual no soportada - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Actualmente no está soportado el mover la geometría externa a otra capa visual. Se omitirá la geometría externa @@ -3341,7 +3341,7 @@ Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos fina Translate parameters - Translate parameters + Parámetros de traducción @@ -3653,12 +3653,12 @@ Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos fina Longitud: - + Refractive index ratio Índice de refracción - + Ratio n2/n1: Relación n2/n1: @@ -3666,72 +3666,72 @@ Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos fina SketcherGui::ElementFilterList - + Normal Normal - + Construction Construcción - + Internal Interno - + External Externo - + All types Todos los tipos - + Point Punto - + Line Línea - + Circle Círculo - + Ellipse Elipse - + Arc of circle Arco del círculo - + Arc of ellipse Arco de elipse - + Arc of hyperbola Arco de hipérbola - + Arc of parabola Arco de parábola - + B-Spline B-spline @@ -3854,27 +3854,27 @@ Combinaciones aceptadas: dos curvas; un punto final y una curva; dos puntos fina Seleccionar eje vertical - + Layer Capa - + Layer 0 Capa 0 - + Layer 1 Capa 1 - + Hidden Oculto - + Delete Eliminar @@ -4079,7 +4079,7 @@ reflejado en copias Number of sides: - Number of sides: + Número de lados: @@ -4749,120 +4749,120 @@ Sin embargo, no se encontraron restricciones que vinculen a los puntos finales.< Configuración - - - - - - - - - - + + + + + + + + + + Construction Construcción - + Elements Elementos - - - - + + + + Point Punto - - - - - - - - - - + + + + + + + + + + Internal Interno - - - - + + + + Line Línea - - - - + + + + Arc Arco - - - - + + + + Circle Círculo - - - - + + + + Ellipse Elipse - - - - + + + + Elliptical Arc Arco Elíptico - - - - + + + + Hyperbolic Arc Arco Hiperbólico - - - - + + + + Parabolic Arc Arco Parabólico - - - - + + + + BSpline BSpline - - - - + + + + Other Otro - + Extended information Información extendida @@ -5083,112 +5083,112 @@ Esto se hace al analizar las geometrías y restricciones del croquis. SketcherGui::ViewProviderSketch - + Edit sketch Editar croquis - + A dialog is already open in the task panel Un diálogo ya está abierto en el panel de tareas - + Do you want to close this dialog? ¿Desea cerrar este diálogo? - + Invalid sketch Croquis no válido - + Do you want to open the sketch validation tool? ¿Quieres abrir la herramienta de validación de croquis? - + The sketch is invalid and cannot be edited. El croquis no es válido y no puede editarse. - + Please remove the following constraint: Por favor, elimine la siguiente restricción: - + Please remove at least one of the following constraints: Por favor, elimine al menos una de las siguientes restricciones: - + Please remove the following redundant constraint: Por favor, elimine la siguiente restricción redundante: - + Please remove the following redundant constraints: Por favor, elimine las siguientes restricciones redundantes: - + The following constraint is partially redundant: La siguiente restricción es parcialmente redundante: - + The following constraints are partially redundant: Las siguientes restricciones son parcialmente redundantes: - + Please remove the following malformed constraint: Por favor, elimine la siguiente restricción mal formada: - + Please remove the following malformed constraints: Por favor, elimine las siguientes restricciones mal formadas: - + Empty sketch Croquis vacío - + Over-constrained: Sobre-restringido: - + Malformed constraints: Restricciones mal formadas: - + Redundant constraints: Restricciones redundantes: - + Partially redundant: Parcialmente redundante: - + Solver failed to converge El solver falló al converger - + Under constrained: Sub-restringido: - + %n DoF(s) %n DoF @@ -5196,7 +5196,7 @@ Esto se hace al analizar las geometrías y restricciones del croquis. - + Fully constrained Totalmente restringido @@ -5294,8 +5294,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fija el diámetro de una circunferencia o un arco @@ -5303,8 +5303,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fija el diámetro/radio de una circunferencia o de un arco @@ -5312,8 +5312,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fija el radio de una circunferencia o arco @@ -5327,70 +5327,25 @@ Esto se hace al analizar las geometrías y restricciones del croquis.Crea una copia simple de la geometría tomando como referencia el último punto seleccionado - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Crea un arco por sus puntos finales y un punto a lo largo del arco - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Crea una circunferencia por 3 puntos de borde - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Crea un arco por su centro y sus extremos - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Crea un arco de elipse por su centro, radio mayor y extremos - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Crea un arco de hipérbola por su centro, radio mayor y extremos - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Crea un arco de parábola por su foco, vértice y extremos - - Sketcher_CreateBSpline - + B-spline by control points B-spline por puntos de control - - + + Create a B-spline by control points Crea una B-spline por puntos de control @@ -5398,35 +5353,17 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Crea una circunferencia por su centro y un punto exterior - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Crea una elipse mediante periastro, apoastro y radio menor - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Crea una elipse por centro, radio mayor y punto - - Sketcher_CreateFillet - - + + Creates a radius between two lines Crea un radio entre dos líneas @@ -5434,8 +5371,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Crea un heptágono por su centro y por una esquina @@ -5443,8 +5380,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Crea un hexágono por su centro y por una esquina @@ -5460,14 +5397,14 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Crea un octágono por su centro y por una esquina + - Create a regular polygon by its center and by one corner Crea un polígono regular por su centro y por una esquina @@ -5475,8 +5412,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Crea un pentágono por su centro y por una esquina @@ -5484,8 +5421,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Redondeo que conserva restricciones y punto de intersección @@ -5509,8 +5446,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateSquare + - Create a square by its center and by one corner Crea un cuadrado por su centro y por una esquina @@ -5518,8 +5455,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Crea un triángulo equilátero por su centro y por una esquina @@ -5527,13 +5464,13 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periódica por puntos de control + - Create a periodic B-spline by control points Crea una B-spline periódica por puntos de control @@ -5933,7 +5870,7 @@ El algoritmo QR de Eigen Sparse está optimizado para matrices dispersas; genera ViewProviderSketch - + and %1 more y %1 más @@ -6156,46 +6093,46 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< ¡El croquis tiene restricciones parcialmente redundantes! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas ha sido migrado. Los archivos migrados no se abrirán en versiones anteriores de FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Error @@ -6231,16 +6168,16 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< La restricción tiene información de índice inválida y está mal formada. + + + - - - - - + + Invalid Constraint @@ -6257,12 +6194,12 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Fallo al añadir el arco de elipse - + Cannot create arc of hyperbola from invalid angles, try again! No se puede crear el arco de hipérbola desde ángulos inválidos, ¡inténtalo de nuevo! - + Cannot create arc of hyperbola No se puede crear el arco de hipérbola @@ -6282,8 +6219,8 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Error al crear el polo de B-Spline - + Error creating B-spline Error al crear B-spline @@ -6339,17 +6276,17 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Fallo al añadir línea - - - - - - - + + + + + + + Tool execution aborted Se interrumpió la ejecución de la herramienta @@ -6384,9 +6321,9 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Fallo al recortar arista - + Value Error Error del valor @@ -6443,19 +6380,19 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Failed to translate - Failed to translate + Error al traducir Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline por nudos - - + + Create a B-spline by knots Crea una curva B por nudos @@ -6463,13 +6400,13 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots B-spline periódica por nudos + - Create a periodic B-spline by knots Crea una B-spline periódica por nudos @@ -6575,12 +6512,12 @@ Los puntos deben estar más cerca de una quinta parte del espacio de la cuadríc CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Crear curva B-spline por nodos - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Crear una B-spline por nodos, es decir, por interpolación, en el croquis. @@ -6588,12 +6525,12 @@ Los puntos deben estar más cerca de una quinta parte del espacio de la cuadríc CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Crear B-spline periódica mediante nudos - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Crear una B-spline periódica por nodos, es decir, por interpolación, en el croquis. @@ -6601,12 +6538,12 @@ Los puntos deben estar más cerca de una quinta parte del espacio de la cuadríc CmdSketcherDimension - + Dimension Cota - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6644,12 +6581,12 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A CmdSketcherConstrainRadius - + Constrain radius Restringir radio - + Fix the radius of a circle or an arc Fija el radio de una circunferencia o arco @@ -6786,7 +6723,7 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A Clone constraints - Clone constraints + Clonar restricciones @@ -6824,8 +6761,8 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Crea dos rectángulos con un desplazamiento constante. @@ -6839,12 +6776,12 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Restricción horizontal/vertical - + Constrains a single line to either horizontal or vertical. Restringe una sola línea tanto horizontal como vertical. @@ -6852,12 +6789,12 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A CmdSketcherConstrainHorVer - + Horizontal/Vertical Restricción horizontal/vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Restringe una sola línea tanto horizontal como vertical, cualquiera que esté más cerca del alineamiento actual. @@ -6865,12 +6802,12 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6878,12 +6815,12 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6891,12 +6828,12 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A CmdSketcherCreateArcSlot - + Create arc slot Crear ranura arqueada - + Create an arc slot in the sketch Crea una ranura arqueada en el croquis @@ -6904,12 +6841,12 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A CmdSketcherConstrainCoincidentUnified - + Constrain coincident Restringir coincidencia - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Crea una restricción coincidente entre puntos, o fija un punto en un borde, o una restricción concéntrica entre círculos, arcos y elipses @@ -7306,7 +7243,7 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A Clone constraints - Clone constraints + Clonar restricciones @@ -7319,7 +7256,7 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A Copies (+'U'/-'J') - Copies (+'U'/-'J') + Copias (+'U'/-'J') @@ -7327,7 +7264,70 @@ Al hacer clic izquierdo en el espacio vacío validará la restricción actual. A Rows (+'R'/-'F') - Rows (+'R'/-'F') + Filas (+'R'/-'F') + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Crea un arco por su centro y por sus puntos finales + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Crea un arco por sus puntos finales y un punto a lo largo del arco + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Crea una elipse por su centro, uno de sus radios y un punto de borde + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Crea una elipse por los puntos finales de uno de sus ejes y un punto de borde + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Crea un arco de elipse por su centro, uno de su radio y sus puntos finales + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Crea un arco de hipérbola por su centro, vértices y puntos finales + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Crea un arco de parábola por su enfoque, vértices y puntos finales diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.ts index 67f818e633..e11c5cf0fc 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Crear copia de carbón - + Copy the geometry of another sketch Copiar la geometría de otro croquis @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Restringir arco o circunferencia - + Constrain an arc or a circle Restringir un arco o una circunferencia - + Constrain radius Restringir radio - + Constrain diameter Restringir diámetro - + Constrain auto radius/diameter Restricción automática de radio/diámetro @@ -180,24 +180,24 @@ - Center and end points - Centro y puntos finales + Center and endpoints + Center and endpoints - - End points and rim point - Puntos finales y punto de borde + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Crear B-spline - + Create a B-spline in the sketch Crea una B-spline en el croquis @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Crear circunferencia - + Create a circle in the sketcher Crea una circunferencia en el croquis - + Center and rim point Punto centro y borde - + 3 rim points 3 puntos del borde @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Crear una curva cónica - + Create a conic in the sketch Crea una curva cónica en el croquis - - Ellipse by center, major radius, point - Elipse mediante centro, radio mayor y punto + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Elipse mediante periastro, apoastro y radio menor + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arco de elipse mediante centro, radio mayor y extremos + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arco de hipérbola mediante centro, radio mayor y extremos + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Arco de parábola por foco, vértices, extremos @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Crear redondeo - + Create a fillet between two lines Crea un redondeo entre dos lineas - + Sketch fillet Redondeo de croquis - - Constraint-preserving sketch fillet - Redondeo de croquis que conserva las restricciones + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Crear polígono regular - + Create a regular polygon in the sketcher Crea un polígono regular en el croquis - + Triangle Triángulo - + Square Cuadrado - + Pentagon Pentágono - + Hexagon Hexágono - + Heptagon Heptágono - + Octagon Octágono - + Regular polygon Polígono regular @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Restringir ángulo - + Fix the angle of a line or the angle between two lines Fijar el ángulo de una línea o el ángulo entre dos líneas @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Restricción de bloqueo - + Block the selected edge from moving Bloquear al borde seleccionado de moverse @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Restricción de coincidencia - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Crea una restricción coincidente entre puntos, o una restricción concéntrica entre círculos, arcos y elipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Restringir diámetro - + Fix the diameter of a circle or an arc Fijar el diámetro de una circunferencia o un arco @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Restricción de distancia - + Fix a length of a line or the distance between a line and a vertex or between two circles Fija una longitud de una línea o la distancia entre una línea y un vértice o entre dos círculos @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Restricción de distancia horizontal - + Fix the horizontal distance between two points or line ends Fijar la distancia horizontal entre dos puntos o extremos de línea @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Restricción de distancia vertical - + Fix the vertical distance between two points or line ends Fijar la distancia vertical entre dos puntos o extremos de línea @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Restringir igualdad - + Create an equality constraint between two lines or between circles and arcs Crear una restricción de igualdad entre dos líneas o entre circunferencias y arcos @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Restringir horizontalmente - + Create a horizontal constraint on the selected item Crear una restricción horizontal en el elemento seleccionado @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Restricción de bloqueo - + Create both a horizontal and a vertical distance constraint on the selected vertex Crea una restricción de distancia horizontal y vertical @@ -520,12 +520,12 @@ en el vértice seleccionado CmdSketcherConstrainParallel - + Constrain parallel Restricción de paralelismo - + Create a parallel constraint between two lines Crear una restricción entre dos líneas paralelas @@ -533,12 +533,12 @@ en el vértice seleccionado CmdSketcherConstrainPerpendicular - + Constrain perpendicular Restricción perpendicular - + Create a perpendicular constraint between two lines Crear una restricción perpendicular entre dos líneas @@ -546,12 +546,12 @@ en el vértice seleccionado CmdSketcherConstrainPointOnObject - + Constrain point onto object Restringir punto en objeto - + Fix a point onto an object Fijar un punto sobre un objeto @@ -559,12 +559,12 @@ en el vértice seleccionado CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Restricción automática de radio/diámetro - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Corrija el diámetro si se elige un círculo, o el radio si se elige un polo arco/curva @@ -572,12 +572,12 @@ en el vértice seleccionado CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Restricción de refracción (Ley de Snell) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Crea una restricción de ley de refracción (ley de Snell) entre dos extremos de los rayos y una arista como interfaz. @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Restricción de simetría - + Create a symmetry constraint between two points with respect to a line or a third point Crear una restricción de simetría entre dos puntos @@ -601,12 +601,12 @@ con respecto a una línea o un tercer punto CmdSketcherConstrainTangent - + Constrain tangent Restricción tangencial - + Create a tangent constraint between two entities Crear una restricción tangencial entre dos entidades @@ -614,12 +614,12 @@ con respecto a una línea o un tercer punto CmdSketcherConstrainVertical - + Constrain vertically Restringir verticalmente - + Create a vertical constraint on the selected item Crear una restricción vertical en el elemento seleccionado @@ -666,12 +666,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreate3PointCircle - + Create circle by three points Crear una circunferencia por tres puntos - + Create a circle by 3 perimeter points Crear una circunferencia por 3 puntos perimetrales @@ -692,12 +692,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Crear arco de elipse - + Create an arc of ellipse in the sketch Crear un arco de elipse en el croquis @@ -705,12 +705,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Crear arco de hipérbola - + Create an arc of hyperbola in the sketch Crear un arco de hipérbola en el croquis @@ -718,12 +718,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateArcOfParabola - + Create arc of parabola Crear arco de parábola - + Create an arc of parabola in the sketch Crear un arco de parábola en el croquis @@ -731,12 +731,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateBSpline - + Create B-spline Crear B-spline - + Create a B-spline by control points in the sketch. Crear un B-spline a través de puntos de control en el croquis. @@ -744,12 +744,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateCircle - + Create circle Crear circunferencia - + Create a circle in the sketch Crea una circunferencia en el croquis @@ -757,12 +757,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Crear elipse mediante 3 puntos - + Create an ellipse by 3 points in the sketch Crear elipse en el croquis mediante 3 puntos @@ -770,12 +770,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateEllipseByCenter - + Create ellipse by center Crear elipse mediante centro - + Create an ellipse by center in the sketch Crear una elipse en el croquis mediante centro @@ -783,12 +783,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateFillet - + Create fillet Crear redondeo - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -796,12 +796,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateHeptagon - + Create heptagon Crear heptágono - + Create a heptagon in the sketch Crear un heptágono en el croquis @@ -809,12 +809,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateHexagon - + Create hexagon Crear hexágono - + Create a hexagon in the sketch Crear un hexágono en el croquis @@ -848,12 +848,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateOctagon - + Create octagon Crear octágono - + Create an octagon in the sketch Crear un octágono en el croquis @@ -861,12 +861,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePentagon - + Create pentagon Crear pentágono - + Create a pentagon in the sketch Crear un pentágono en el croquis @@ -874,12 +874,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Crear una B-spline periódica - + Create a periodic B-spline by control points in the sketch. Crear un B-spline periódica mediante puntos de control en el croquis. @@ -887,12 +887,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePoint - + Create point Crear punto - + Create a point in the sketch Crea un punto en el croquis @@ -900,12 +900,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreatePointFillet - + Create corner-preserving fillet Crear redondeo que conserva las esquinas - + Fillet that preserves intersection point and most constraints Redondeo que conserva el punto de intersección y la mayoría de las restricciones @@ -952,12 +952,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateRegularPolygon - + Create regular polygon Crear polígono regular - + Create a regular polygon in the sketch Crea un polígono regular en el croquis @@ -965,12 +965,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateSlot - + Create slot Crear ranura - + Create a slot in the sketch Crea una ranura en el croquis @@ -978,12 +978,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateSquare - + Create square Crear cuadrado - + Create a square in the sketch Crear un cuadrado en el croquis @@ -991,12 +991,12 @@ con respecto a una línea o un tercer punto CmdSketcherCreateTriangle - + Create equilateral triangle Crear triángulo equilátero - + Create an equilateral triangle in the sketch Crear un triángulo equilátero en el croquis @@ -1069,12 +1069,12 @@ con respecto a una línea o un tercer punto CmdSketcherExtend - + Extend edge Extender borde - + Extend an edge with respect to the picked position Extender un borde con respecto a la posición seleccionada @@ -1082,12 +1082,12 @@ con respecto a una línea o un tercer punto CmdSketcherExternal - + Create external geometry Crear geometría externa - + Create an edge linked to an external geometry Crear una arista vinculada a una geometría externa @@ -1425,12 +1425,12 @@ Esto borrará la propiedad 'Soporte', si la hubiera. CmdSketcherSplit - + Split edge Dividir borde - + Splits an edge into two while preserving constraints Divida un borde en dos preservando las restricciones @@ -1477,12 +1477,12 @@ Esto borrará la propiedad 'Soporte', si la hubiera. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activar/desactivar restricción - + Activates or deactivates the selected constraints Activa o desactiva las restricciones seleccionadas @@ -1503,12 +1503,12 @@ Esto borrará la propiedad 'Soporte', si la hubiera. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Alternar restricción/referencia - + Set the toolbar, or the selected constraints, into driving or reference mode Establece la barra de herramientas, o las restricciones seleccionadas, @@ -1518,12 +1518,12 @@ en modo de conducción o referencia CmdSketcherTrimming - + Trim edge Recortar arista - + Trim an edge with respect to the picked position Recortar una arista con respecto a la posición elegida @@ -1582,79 +1582,79 @@ restricciones inválidas, geometrías degeneradas, etc. Command - + Add 'Lock' constraint Añadir restricción 'Bloquear' - + Add relative 'Lock' constraint Agregar restricción relativa 'Bloquear' - + Add fixed constraint Añadir restricción fija - + Add 'Block' constraint Añadir restricción 'Bloqueo' - + Add block constraint Añadir restricción de bloqueo - - + + Add coincident constraint Añadir restricción de coincidencia - - + + Add distance from horizontal axis constraint Añadir distancia desde la restricción del eje horizontal - - + + Add distance from vertical axis constraint Añadir distancia desde la restricción del eje vertical - - + + Add point to point distance constraint Añadir punto a restricción de distancia de punto - - + + Add point to line Distance constraint Añadir punto a restricción de Distancia de Línea - - + + Add circle to circle distance constraint Agrega un círculo a la restricción de distancia circular - + Add circle to line distance constraint Agrega un círculo a la restricción de distancia de línea - - - - - - + + + + + + Add length constraint Añadir restricción de longitud @@ -1677,8 +1677,8 @@ restricciones inválidas, geometrías degeneradas, etc. - - + + Add Distance constraint Añadir restricción de distancia @@ -1704,7 +1704,7 @@ restricciones inválidas, geometrías degeneradas, etc. - + Add Symmetry constraints Añadir restricciones de simetría @@ -1715,220 +1715,220 @@ restricciones inválidas, geometrías degeneradas, etc. Añadir restricciones de distancia - + Add Horizontal constraint Añadir restricción de horizontalidad - + Add Vertical constraint Añadir restricción de verticalidad - + Add Block constraint Añadir restricción de bloqueo - + Add Angle constraint Añadir restricción de ángulo - - - - + + + + Add Equality constraint Añadir restricción de igualdad - + Add Equality constraints Añadir restricciones de igualdad - - - + + + Add Radius constraint Añadir restricción de radio - - + + Add arc angle constraint Añadir restricción de ángulo de arco - + Add concentric and length constraint Añadir restricción de concentricidad y longitud - + Add DistanceX constraint Añadir restricción de distancia X - + Add DistanceY constraint Añadir restricción de distancia Y - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Añadir punto a la restricción del objeto - - + + Add point to point horizontal distance constraint Añadir punto a la restricción de distancia horizontal del punto - + Add fixed x-coordinate constraint Añadir restricción de coordenada-x fija - - + + Add point to point vertical distance constraint Añadir punto a la restricción de distancia vertical del punto - + Add fixed y-coordinate constraint Añadir restricción de coordenada-y fija - - + + Add parallel constraint Añadir restricción paralela - - - - - - - + + + + + + + Add perpendicular constraint Añadir restricción perpendicular - + Add perpendicularity constraint Añadir restricción de perpendicularidad - + Swap coincident+tangency with ptp tangency Intercambia coincidencia + tangencia con la tangencia ptp - + Swap PointOnObject+tangency with point to curve tangency Intercambia Punto en Objeto+tangencia con tangencia de punto a curva - - - - - - - + + + + + + + Add tangent constraint Añadir restricción tangente - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Añadir punto de restricción tangente - - - - + + + + Add radius constraint Añadir restricción de radio - - - - + + + + Add diameter constraint Añadir restricción de diámetro - - - - + + + + Add radiam constraint Añadir restricción radiam - - - - + + + + Add angle constraint Añadir restricción de ángulo - - + + Add equality constraint Añadir restricción de igualdad - - - - - + + + + + Add symmetric constraint Añadir restricción de simetría - + Add Snell's law constraint Añadir restricción de ley de Snell - + Toggle constraint to driving/reference Cambiar la restricción a la conducción/referencia - + Activate/Deactivate constraint Activar/desactivar restricción @@ -2013,7 +2013,7 @@ restricciones inválidas, geometrías degeneradas, etc. Añadir arco de elipse de croquis - + Add sketch arc of hyperbola Añadir arco de hipérbola de croquis @@ -2157,8 +2157,8 @@ restricciones inválidas, geometrías degeneradas, etc. Actualizar el espacio virtual de la restricción - + Add auto constraints Añadir restricciones automáticas @@ -2183,12 +2183,12 @@ restricciones inválidas, geometrías degeneradas, etc. Arrastrar curva - + Drag Constraint Restricción de arrastre - + Modify sketch constraints Modificar restricciones de croquis @@ -2220,7 +2220,7 @@ restricciones inválidas, geometrías degeneradas, etc. Rotate geometries - Rotate geometries + Girar geometrías @@ -2230,7 +2230,7 @@ restricciones inválidas, geometrías degeneradas, etc. Translate geometries - Translate geometries + Traducir geometrías @@ -2279,59 +2279,59 @@ restricciones inválidas, geometrías degeneradas, etc. Error de autorestricción: croquis sin solución después de aplicar restricciones de igualdad. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. No se puede adivinar la intersección de curvas. Intente agregar una restricción coincidente entre los vértices de las curvas que pretende redondear. - - + + BSpline Geometry Index (GeoID) is out of bounds. Índice de geometría BSpline (GeoID) está fuera de restricciones. - + You are requesting no change in knot multiplicity. Usted esta solicitando no cambio en multiplicidad de nudo. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. El índice de geometría (GeoID) proporcionado no es una curva B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. El índice de nudo es fuera de los limites. Note que según en concordancia con notación de la OCC, el primer nudo tiene índice 1 y no 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. La multiplicidad no puede incrementarse más allá del grado de la B-spline. - + The multiplicity cannot be decreased beyond zero. La multiplicidad no puede ser disminuida más allá de cero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC es incapaz de disminuir la multiplicidad dentro de la tolerancia máxima. - + Knot cannot have zero multiplicity. El nodo no puede tener una multiplicidad cero. - + Knot multiplicity cannot be higher than the degree of the BSpline. La multiplicidad del nodo no puede ser mayor que el grado de la BSpline. - + Knot cannot be inserted outside the BSpline parameter range. El nodo no puede ser insertado fuera del rango de parámetros de la B-Spline. @@ -2411,127 +2411,11 @@ restricciones inválidas, geometrías degeneradas, etc. No adjuntar + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ restricciones inválidas, geometrías degeneradas, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ restricciones inválidas, geometrías degeneradas, etc. - - - Wrong selection Selección incorrecta @@ -2613,106 +2613,106 @@ restricciones inválidas, geometrías degeneradas, etc. Uno de los seleccionados tiene que estar en el croquis. - + Select an edge from the sketch. Seleccione una arista del croquis. - - - - - - + + + + + + Impossible constraint Restricción imposible - - + + The selected edge is not a line segment. El borde seleccionado no es un segmento de línea. - - - + + + Double constraint Restricción doble - + The selected edge already has a horizontal constraint! ¡La arista seleccionada ya tiene una restricción horizontal! - + The selected edge already has a vertical constraint! ¡El borde seleccionado ya tiene una restricción vertical! - - - + + + The selected edge already has a Block constraint! ¡La arista seleccionada ya tiene una restricción de Bloque! - + There are more than one fixed points selected. Select a maximum of one fixed point! Hay mas de un punto fijo seleccionado. Debe seleccionar solamente un punto Fijo! - - - + + + Select vertices from the sketch. Selecciona vértices del croquis. - + Select one vertex from the sketch other than the origin. Seleccione un vértice del croquis que no sea el origen. - + Select only vertices from the sketch. The last selected vertex may be the origin. Selecciona sólo vértices del croquis. El último vértice seleccionado puede ser el origen. - + Wrong solver status Estado de Solver Incorrecto - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Una restricción de Bloqueo no puede ser añadida si el croquis está sin resolver o hay restricciones redundantes y en conflicto. - + Select one edge from the sketch. Seleccione una arista del croquis. - + Select only edges from the sketch. Seleccione únicamente aristas de el Croquis. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 El número de objetos seleccionados no es 3 - + Error Error @@ -2722,80 +2722,80 @@ restricciones inválidas, geometrías degeneradas, etc. Error inesperado. Puede haber más información disponible en la vista de reporte. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Una Tangente de Puntos de Extremo se aplicó en su lugar. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Seleccione dos o más vértices del croquis para una restricción coincidente, o dos o más círculos, elipses, arcos o arcos de elípse para una restricción concéntrica. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Seleccione dos vértices del croquis para una restricción coincidente, o dos círculos, elipses, arcos o arcos de elipse para una restricción concéntrica. - + Select exactly one line or one point and one line or two points from the sketch. Seleccione exactamente una línea o un punto y una línea o dos puntos del croquis. - + Cannot add a length constraint on an axis! ¡No se puede añadir una restricción de longitud en un eje! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Seleccione exactamente una línea o un punto y una línea o dos puntos o dos círculos del croquis. - + This constraint does not make sense for non-linear curves. Esta restricción no tiene sentido para curvas no lineales. - + Endpoint to edge tangency was applied instead. El punto final a la tangencia del borde se aplicó en su lugar. - - - - - - + + + + + + Select the right things from the sketch. Seleccione las cosas correctas desde el croquis. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Seleccione un borde que no sea un peso de B-spline. @@ -2805,92 +2805,92 @@ restricciones inválidas, geometrías degeneradas, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Ninguno de los puntos seleccionados fueron restringidos en sus respectivas curvas, porque son partes del mismo elemento, y porque ambos son geometría externa, o porque la arista no es elegible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Ninguno de los puntos seleccionados fueron limitados en las curvas respectivas, porque son partes de un mismo elemento, o porque son ambos de geometría externa. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Seleccione exactamente una línea o hasta dos puntos del croquis. - + Cannot add a horizontal length constraint on an axis! ¡No se puede añadir una restricción de longitud horizontal en un eje! - + Cannot add a fixed x-coordinate constraint on the origin point! ¡No se puede agregar una restricción de coordenada x fija en el punto de origen! - - + + This constraint only makes sense on a line segment or a pair of points. Esta restricción sólo tiene sentido en un segmento de línea o un par de puntos. - + Cannot add a vertical length constraint on an axis! ¡No se puede añadir una restricción de longitud vertical sobre un eje! - + Cannot add a fixed y-coordinate constraint on the origin point! ¡No se puede agregar una restricción de coordenada y fija en el punto de origen! - + Select two or more lines from the sketch. Seleccione dos o más líneas del croquis. - + One selected edge is not a valid line. - One selected edge is not a valid line. + La arista seleccionada no es una línea válida. - - + + Select at least two lines from the sketch. Seleccione al menos dos líneas del croquis. - + The selected edge is not a valid line. El borde seleccionado no es una línea válida. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2899,35 +2899,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Las combinaciones posibles son: dos curvas; extremo y curva; dos extremos; dos curvas y un punto. - + Select some geometry from the sketch. perpendicular constraint Seleccione alguna geometría del croquis. - - + + Cannot add a perpendicularity constraint at an unconnected point! ¡No se puede añadir una restricción de perpendicularidad en un punto no conectado! - - + + One of the selected edges should be a line. ¡Una de las aristas seleccionadas debe ser una línea. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Una Tangente de Puntos de Estremo fue aplicada, La restricción coincidente fue eliminada. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Se aplicó un punto final al borde tangencial. Se eliminó el punto sobre la restricción del objeto. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2937,67 +2937,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos curvas y un punto. - + Select some geometry from the sketch. tangent constraint Seleccione alguna geometría del croquis. - - - + + + Cannot add a tangency constraint at an unconnected point! ¡No se puede añadir una restricción de tangencia en un punto no conectado! - - + + Tangent constraint at B-spline knot is only supported with lines! La restricción tangente en nudo de B-spline sólo es compatible con líneas! - + B-spline knot to endpoint tangency was applied instead. En su lugar, se aplicó tangecia entre el nudo de B-spline y el punto final. - - + + Wrong number of selected objects! ¡Número incorrecto de objetos seleccionados! - - + + With 3 objects, there must be 2 curves and 1 point. Con 3 objetos, debe haber 2 curvas y 1 punto. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Seleccione uno o más arcos o circunferencias del croquis. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Seleccione sólo uno o más polos de B-Spline o sólo uno o más arcos o circunferencias del croquis, pero no mezclado. - - - + + + Constraint only applies to arcs or circles. La restricción sólo se aplica a los arcos o circunferencias. - - + + Select one or two lines from the sketch. Or select two edges and a point. Seleccione una o dos líneas del croquis. O seleccione un punto y dos aristas. @@ -3012,88 +3012,88 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Una restricción de ángulo no puede ser establecida por dos lineas paralelas. - + Cannot add an angle constraint on an axis! ¡No se puede añadir una restricción angular en un eje! - + Select two edges from the sketch. Seleccione dos aristas del croquis. - + Select two or more compatible edges. Seleccione dos o más bordes compatibles. - + Sketch axes cannot be used in equality constraints. Los ejes de dibujo no pueden utilizarse en restricciones de igualdad. - + Equality for B-spline edge currently unsupported. Igualdad para arista de B-Spline no compatible por el momento. - - - - + + + + Select two or more edges of similar type. Seleccione dos o más bordes de tipo similar. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Seleccione dos puntos y una línea de simetría, dos puntos y un punto de simetría o una línea y un punto de simetría del croquis. - - + + Cannot add a symmetry constraint between a line and its end points. No se puede añadir una restricción de simetría entre una línea y sus extremos. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! ¡No se puede añadir una restricción de simetría entre una línea y sus extremos! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Seleccione dos extremos de líneas para actuar como rayos, y una arista que representa un límite. El primer punto seleccionado corresponde al índice n1, segundo a n2, y el valor de referencia establece la relación n2/n1. - + Selected objects are not just geometry from one sketch. Los objetos seleccionados no son sólo la geometría de un croquis. - + Cannot create constraint with external geometry only. No se puede crear restricción sólo con geometría externa. - + Incompatible geometry is selected. Se ha seleccionado geometría incompatible. - - - - - + + + + + Select constraints from the sketch. Seleccione restricciones del croquis. @@ -3115,9 +3115,9 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Definir el grado de la B-Spline, entre 1 y %1: + - CAD Kernel Error Error del Kernel CAD @@ -3260,14 +3260,14 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c La eliminación de alineación de ejes requiere al menos un elemento geométrico no externo seleccionado - - + + Unsupported visual layer operation Operación de capa visual no soportada - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Actualmente no está soportado para mover la geometría externa a otra capa visual. Se omitirá la geometría externa @@ -3329,7 +3329,7 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Rotate parameters - Rotate parameters + Girar parámetros @@ -3339,7 +3339,7 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Translate parameters - Translate parameters + Parámetros de traducción @@ -3651,12 +3651,12 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Longitud: - + Refractive index ratio Índice refracción - + Ratio n2/n1: Razón n2/n1: @@ -3664,72 +3664,72 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c SketcherGui::ElementFilterList - + Normal Normal - + Construction Construcción - + Internal Interno - + External Externo - + All types Todos los tipos - + Point Punto - + Line Línea - + Circle Circunferencia - + Ellipse Elipse - + Arc of circle Arco del círculo - + Arc of ellipse Arco de elipse - + Arc of hyperbola Arco de hipérbola - + Arc of parabola Arco de parábola - + B-Spline B-spline @@ -3852,27 +3852,27 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Seleccione el eje vertical - + Layer Capa - + Layer 0 Capa 0 - + Layer 1 Capa 1 - + Hidden Oculto - + Delete Borrar @@ -4075,7 +4075,7 @@ reflected on copies Number of sides: - Number of sides: + Número de lados: @@ -4745,120 +4745,120 @@ Sin embargo, no se encontraron restricciones a los extremos. Opciones - - - - - - - - - - + + + + + + + + + + Construction Construcción - + Elements Elementos - - - - + + + + Point Punto - - - - - - - - - - + + + + + + + + + + Internal Interno - - - - + + + + Line Línea - - - - + + + + Arc Arco - - - - + + + + Circle Circunferencia - - - - + + + + Ellipse Elipse - - - - + + + + Elliptical Arc Arco elíptico - - - - + + + + Hyperbolic Arc Arco hiperbólico - - - - + + + + Parabolic Arc Arco parabólico - - - - + + + + BSpline BSpline - - - - + + + + Other Otros - + Extended information Información extendida @@ -5079,112 +5079,112 @@ Esto se hace al analizar las geometrías y restricciones del croquis. SketcherGui::ViewProviderSketch - + Edit sketch Editar croquis - + A dialog is already open in the task panel Un diálogo ya está abierto en el panel de tareas - + Do you want to close this dialog? ¿Desea cerrar este diálogo? - + Invalid sketch Croquis inválido - + Do you want to open the sketch validation tool? ¿Desea abrir la herramienta de validación del croquis? - + The sketch is invalid and cannot be edited. El croquis no es válido y no puede editarse. - + Please remove the following constraint: Elimine la siguiente restricción: - + Please remove at least one of the following constraints: Por favor elimine al menos una de las siguientes restricciones: - + Please remove the following redundant constraint: Por favor elimine la siguiente restricción redundante: - + Please remove the following redundant constraints: Por favor elimine las siguientes restricciones redundante: - + The following constraint is partially redundant: La siguiente restricción es parcialmente redundante: - + The following constraints are partially redundant: Las siguientes restricciones son parcialmente redundantes: - + Please remove the following malformed constraint: Por favor, elimine la siguiente restricción mal formada: - + Please remove the following malformed constraints: Por favor, elimine las siguientes restricciones mal formadas: - + Empty sketch Croquis vacío - + Over-constrained: Sobre-restringido: - + Malformed constraints: Restricciones mal formadas: - + Redundant constraints: Restricciones redundantes: - + Partially redundant: Parcialmente redundante: - + Solver failed to converge El solver falló al converger - + Under constrained: Sub-restringido: - + %n DoF(s) %n DoF @@ -5192,7 +5192,7 @@ Esto se hace al analizar las geometrías y restricciones del croquis. - + Fully constrained Totalmente restringido @@ -5290,8 +5290,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fijar el diámetro de una circunferencia o un arco @@ -5299,8 +5299,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fijar el diámetro/radio de una circunferencia o un arco @@ -5308,8 +5308,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fijar el radio de una circunferencia o arco @@ -5323,70 +5323,25 @@ Esto se hace al analizar las geometrías y restricciones del croquis.Crea una copia simple de la geometría tomando como referencia el último punto seleccionado - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Crear un arco por sus extremos y un punto a lo largo del arco - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Crear circunferencia por 3 puntos - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Crear un arco por su centro y sus extremos - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Crear un arco de elipse por su centro, radio mayor y extremos - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Crear un arco de hipérbola por su centro, radio mayor y puntos finales - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Crea un arco de parábola por su foco, vértice y extremos - - Sketcher_CreateBSpline - + B-spline by control points B-spline por puntos de control o polos - - + + Create a B-spline by control points Crear una B-spline por puntos de control o polos @@ -5394,35 +5349,17 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Crear una circunferencia por centro y un punto exterior - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Crear una elipse mediante periapsis, apoapsis y radio menor - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Crear una elipse mediante centro, radio mayor y un punto - - Sketcher_CreateFillet - - + + Creates a radius between two lines Crea un radio entre dos líneas @@ -5430,8 +5367,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Crear un heptágono mediante centro y vértice @@ -5439,8 +5376,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Crear un hexágono mediante centro y vértice @@ -5456,14 +5393,14 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Crear un octágono mediante centro y vértice + - Create a regular polygon by its center and by one corner Crear un polígono regular por su centro y por una esquina @@ -5471,8 +5408,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Crear un pentágono mediante centro y vértice @@ -5480,8 +5417,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Redondeo que conserva restricciones y punto de intersección @@ -5505,8 +5442,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateSquare + - Create a square by its center and by one corner Crear un cuadrado mediante centro y vértice @@ -5514,8 +5451,8 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Crear un triángulo equilátero mediante centro y vértice @@ -5523,13 +5460,13 @@ Esto se hace al analizar las geometrías y restricciones del croquis. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periódica por puntos de control o polos + - Create a periodic B-spline by control points Crear un B-spline periódico mediante puntos de control @@ -5929,7 +5866,7 @@ El algoritmo QR de Eigen Sparse está optimizado para matrices dispersas; genera ViewProviderSketch - + and %1 more y %1 más @@ -6152,46 +6089,46 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< El croquis contiene restricciones parcialmente redundantes! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas ha sido migrado. Los archivos migrados no se abrirán en versiones anteriores de FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Error @@ -6214,7 +6151,7 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Selection has no valid geometries. - Selection has no valid geometries. + La selección no incluye ninguna geometría válida. @@ -6227,16 +6164,16 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< La restricción tiene información de índice inválida y está mal formada. + + + - - - - - + + Invalid Constraint @@ -6253,12 +6190,12 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Fallo al añadir el arco de elipse - + Cannot create arc of hyperbola from invalid angles, try again! No se puede crear el arco de hiperbola desde ángulos inválidos, ¡inténte de nuevo! - + Cannot create arc of hyperbola No se puede crear el arco de hipérbola @@ -6278,8 +6215,8 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Error al crear el polo de B-Spline - + Error creating B-spline Error al crear B-Spline @@ -6335,17 +6272,17 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Fallo al añadir línea - - - - - - - + + + + + + + Tool execution aborted Se interrumpió la ejecución de la herramienta @@ -6380,9 +6317,9 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Fallo al recortar arista - + Value Error Error del valor @@ -6429,7 +6366,7 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Failed to rotate - Failed to rotate + No se pudo girar @@ -6439,19 +6376,19 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Failed to translate - Failed to translate + Error al traducir Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline por nudos - - + + Create a B-spline by knots Crear una curva B-spline por nudos @@ -6459,13 +6396,13 @@ El espaciado de la cuadrícula cambia si es menor que este número de píxeles.< Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots B-spline periódica por nudos + - Create a periodic B-spline by knots Crear un B-spline periódica mediante nudos @@ -6571,12 +6508,12 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Crear curva B-spline por nodos - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Crear una B-spline por nodos, es decir, por interpolación, en el croquis. @@ -6584,12 +6521,12 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Crear B-spline periódica mediante nudos - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Crear una B-spline periódica por nodos, es decir, por interpolación, en el croquis. @@ -6597,12 +6534,12 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc CmdSketcherDimension - + Dimension Cota - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6640,12 +6577,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Restringir radio - + Fix the radius of a circle or an arc Fijar el radio de una circunferencia o arco @@ -6782,7 +6719,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Clone constraints - Clone constraints + Clonar restricciones @@ -6820,8 +6757,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6835,12 +6772,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6848,12 +6785,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical - Horizontal/Vertical + Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6861,12 +6798,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6874,12 +6811,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6887,12 +6824,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6900,12 +6837,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Restricción de coincidencia - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7302,7 +7239,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Clone constraints - Clone constraints + Clonar restricciones @@ -7315,7 +7252,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Copies (+'U'/-'J') - Copies (+'U'/-'J') + Copias (+'U'/-'J') @@ -7323,7 +7260,70 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') - Rows (+'R'/-'F') + Filas (+'R'/-'F') + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts index 3f4e37727b..56e5156973 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Sortu kopia bat - + Copy the geometry of another sketch Kopiatu beste krokis bateko geometria @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Murriztu arkua edo zirkulua - + Constrain an arc or a circle Murriztu arku bat edo zirkulu bat - + Constrain radius Murriztu erradioa - + Constrain diameter Murriztu diametroa - + Constrain auto radius/diameter Murriztu erradio/diametro automatikoa @@ -180,24 +180,24 @@ - Center and end points - Puntu zentrala eta bukaerakoa + Center and endpoints + Center and endpoints - - End points and rim point - Bukaera puntuak eta ertzeko puntua + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Sortu B-spline elementua - + Create a B-spline in the sketch Sortu B-spline bat krokisean @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Sortu zirkulua - + Create a circle in the sketcher Sortu zirkulu bat krokisgilean - + Center and rim point Puntu zentrala eta ertzeko puntua - + 3 rim points 3 ertzeko puntu @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Sortu koniko bat - + Create a conic in the sketch Sortu kono bat krokisgilean - - Ellipse by center, major radius, point - Elipsea puntu zentrala, erradio handia eta puntu baten bidez + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Elipsea periapsi, apoapsi eta erradio txikiaren bidez + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Elipse-arku bat puntu zentrala, erradio handia eta amaiera-puntuak erabiliz + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Hiperbola-arku bat puntu zentrala, erradio handia eta amaiera-puntuak erabiliz + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Parabola-arku bat fokua, erpina eta amaiera-puntuak erabiliz @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Sortu biribiltzea - + Create a fillet between two lines Sortu biribiltze bat bi lerroren artean - + Sketch fillet Krokis-biribiltzea - - Constraint-preserving sketch fillet - Murrizketak mantentzen dituen krokis-biribiltzea + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Sortu poligono erregularra - + Create a regular polygon in the sketcher Sortu poligono erregular bat krokisgilean - + Triangle Triangelua - + Square Laukia - + Pentagon Pentagonoa - + Hexagon Hexagonoa - + Heptagon Heptagonoa - + Octagon Oktagonoa - + Regular polygon Poligono erregularra @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Murriztu angelua - + Fix the angle of a line or the angle between two lines Finkatu lerro baten angelua edo bi lerroren arteko angelua @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Murriztu blokea - + Block the selected edge from moving Blokeatu hautatutako ertza, lekuz aldatu ez dadin @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Murriztu bat datozenak - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Sortu bat datorren murrizketa bat puntuen artean, edo murrizketa kontzentriko bat zirkuluen, arkuen eta elipseen artean @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Murriztu diametroa - + Fix the diameter of a circle or an arc Finkatu zirkulu baten edo arku baten diametroa @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Murriztu distantzia - + Fix a length of a line or the distance between a line and a vertex or between two circles Finkatu lerro baten luzera edo lerro baten eta erpin baten arteko edo bi zirkuluren arteko distantzia @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Murriztu distantzia horizontala - + Fix the horizontal distance between two points or line ends Finkatu bi punturen edo bi lerro-amaieren arteko distantzia horizontala @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Murriztu distantzia bertikala - + Fix the vertical distance between two points or line ends Finkatu bi punturen edo bi lerro-amaieren arteko distantzia bertikala @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Murriztu berdin - + Create an equality constraint between two lines or between circles and arcs Sortu berdintasun-murrizketa bat bi lerroren artean edo zirkuluen eta arkuen artean @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Murriztu horizontalean - + Create a horizontal constraint on the selected item Sortu murrizketa horizontala hautatutako elementuan @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Blokeo-murrizketa - + Create both a horizontal and a vertical distance constraint on the selected vertex Sortu distantzia-murrizketa horizontala eta bertikala @@ -520,12 +520,12 @@ hautatutako erpinean CmdSketcherConstrainParallel - + Constrain parallel Murriztu paraleloa - + Create a parallel constraint between two lines Sortu murrizketa paraleloa bi lerroren artean @@ -533,12 +533,12 @@ hautatutako erpinean CmdSketcherConstrainPerpendicular - + Constrain perpendicular Murriztu perpendikularra - + Create a perpendicular constraint between two lines Sortu murrizketa perpendikularra bi lerroren artean @@ -546,12 +546,12 @@ hautatutako erpinean CmdSketcherConstrainPointOnObject - + Constrain point onto object Murriztu puntua objektuan - + Fix a point onto an object Finkatu puntu bat objektu batean @@ -559,12 +559,12 @@ hautatutako erpinean CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Murriztu erradio/diametro automatikoa - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Finkatu diamteroa zirkulu bat hautatu bada, edo erradioa arku/spline polo bat hautatu bada @@ -572,12 +572,12 @@ hautatutako erpinean CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Murriztu errefrakzioa (Snell-en legea) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Sortu Snell-en errefrakzio-legearen murrizketa bat, izpien bi amaiera-punturen @@ -587,12 +587,12 @@ artean eta ertz bat interfaze modura erabilita. CmdSketcherConstrainSymmetric - + Constrain symmetrical Murriztu simetrikoki - + Create a symmetry constraint between two points with respect to a line or a third point Sortu simetria-murrizketa bat bi punturen artean, @@ -602,12 +602,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherConstrainTangent - + Constrain tangent Murriztu tangentea - + Create a tangent constraint between two entities Sortu murrizketa tangentea bi lerroren artean @@ -615,12 +615,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherConstrainVertical - + Constrain vertically Murriztu bertikalean - + Create a vertical constraint on the selected item Sortu murrizketa bertikala hautatutako elementuan @@ -667,12 +667,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreate3PointCircle - + Create circle by three points Sortu zirkulua hiru puntutik abiatuz - + Create a circle by 3 perimeter points Sortu zirkulu bat 3 perimetro-puntutik abiatuz @@ -693,12 +693,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Sortu elipse-arku bat - + Create an arc of ellipse in the sketch Sortu elipse-arku bat krokisean @@ -706,12 +706,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Sortu hiperbola-arku bat - + Create an arc of hyperbola in the sketch Sortu hiperbola-arku bat krokisean @@ -719,12 +719,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateArcOfParabola - + Create arc of parabola Sortu parabola-arku bat - + Create an arc of parabola in the sketch Sortu parabola-arku bat krokisean @@ -732,12 +732,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateBSpline - + Create B-spline Sortu B-spline elementua - + Create a B-spline by control points in the sketch. Sortu B-spline bat krokiseko kontrol-puntuak erabilita. @@ -745,12 +745,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateCircle - + Create circle Sortu zirkulua - + Create a circle in the sketch Sortu zirkulu bat krokisean @@ -758,12 +758,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Sortu elipsea hiru puntutik abiatuz - + Create an ellipse by 3 points in the sketch Sortu elipse bat krokisean 3 puntutik abiatuz @@ -771,12 +771,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateEllipseByCenter - + Create ellipse by center Sortu elipsea erdigunetik abiatuz - + Create an ellipse by center in the sketch Sortu elipse bat krokisean erdigunetik abiatuz @@ -784,12 +784,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateFillet - + Create fillet Sortu biribiltzea - + Create a fillet between two lines or at a coincident point Sortu bi lerroren arteko biribiltzea bat datozen puntu batean @@ -797,12 +797,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateHeptagon - + Create heptagon Sortu heptagonoa - + Create a heptagon in the sketch Sortu heptagono bat krokisean @@ -810,12 +810,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateHexagon - + Create hexagon Sortu hexagonoa - + Create a hexagon in the sketch Sortu hexagono bat krokisean @@ -849,12 +849,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateOctagon - + Create octagon Sortu oktogonoa - + Create an octagon in the sketch Sortu oktogono bat krokisean @@ -862,12 +862,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreatePentagon - + Create pentagon Sortu pentagonoa - + Create a pentagon in the sketch Sortu pentagono bat krokisean @@ -875,12 +875,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Sortu B-spline periodikoa - + Create a periodic B-spline by control points in the sketch. Sortu B-spline periodiko bat krokiseko kontrol-puntuak erabilita. @@ -888,12 +888,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreatePoint - + Create point Sortu puntua - + Create a point in the sketch Sortu puntu bat krokisean @@ -901,12 +901,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreatePointFillet - + Create corner-preserving fillet Sortu izkina mantentzen duen biribiltzea - + Fillet that preserves intersection point and most constraints Ebakidura-puntua eta murrizketa gehienak mantentzen dituen biribiltzea @@ -953,12 +953,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateRegularPolygon - + Create regular polygon Sortu poligono erregularra - + Create a regular polygon in the sketch Sortu poligono erregular bat krokisean @@ -966,12 +966,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateSlot - + Create slot Sortu arteka - + Create a slot in the sketch Sortu arteka bat krokisean @@ -979,12 +979,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateSquare - + Create square Sortu laukia - + Create a square in the sketch Sortu lauki bat krokisean @@ -992,12 +992,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherCreateTriangle - + Create equilateral triangle Sortu triangelu aldeberdina - + Create an equilateral triangle in the sketch Sortu triangelu aldeberdin bat krokisean @@ -1070,12 +1070,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherExtend - + Extend edge Hedatu ertza - + Extend an edge with respect to the picked position Hedatu ertz bat aukeratutako posizioaren arabera @@ -1083,12 +1083,12 @@ lerro batekiko edo hirugarren puntu batekiko CmdSketcherExternal - + Create external geometry Sortu kanpo-geometria - + Create an edge linked to an external geometry Sortu kanpo-geometria bati estekatutako ertz bat @@ -1427,12 +1427,12 @@ Horrela 'Euskarria' propietatea garbituko da, halakorik badago. CmdSketcherSplit - + Split edge Zatitu ertza - + Splits an edge into two while preserving constraints Ertz bat bi zatitan zatitzen du murrizketak mantenduta @@ -1479,12 +1479,12 @@ Horrela 'Euskarria' propietatea garbituko da, halakorik badago. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Aktibatu/desaktibatu murrizketa - + Activates or deactivates the selected constraints Hautatutako murrizketak aktibatzen edo desaktibatzen ditu @@ -1505,12 +1505,12 @@ Horrela 'Euskarria' propietatea garbituko da, halakorik badago. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Aktibatu/desaktibatu gidatze/erreferentziako murrizketa - + Set the toolbar, or the selected constraints, into driving or reference mode Ezarri tresna-barra, edo hautatutako murrizketak, @@ -1520,12 +1520,12 @@ gidatze edo erreferentziako moduan CmdSketcherTrimming - + Trim edge Muxarratu ertza - + Trim an edge with respect to the picked position Muxarratu ertz bat aukeratutako posizioaren arabera @@ -1584,79 +1584,79 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Command - + Add 'Lock' constraint Gehitu 'Blokeo' murrizketa - + Add relative 'Lock' constraint Gehitu 'Blokeo' erlatiboko murrizketa - + Add fixed constraint Gehitu murrizketa finkoa - + Add 'Block' constraint Gehitu 'Bloke' murrizketa - + Add block constraint Gehitu bloke-murrizketa - - + + Add coincident constraint Gehitu bat datorren murrizketa - - + + Add distance from horizontal axis constraint Gehitu distantzia ardatz horizontaleko murrizketatik - - + + Add distance from vertical axis constraint Gehitu distantzia ardatz bertikaleko murrizketatik - - + + Add point to point distance constraint Gehitu puntutik punturako distantzia-murrizketa - - + + Add point to line Distance constraint Gehitu puntutik lerrorako distantzia-murrizketa - - + + Add circle to circle distance constraint Gehitu zirkulutik zirkulurako distantzia-murrizketa - + Add circle to line distance constraint Gehitu zirkulutik lerrorako distantzia-murrizketa - - - - - - + + + + + + Add length constraint Gehitu luzera-murrizketa @@ -1679,8 +1679,8 @@ murrizketak, geometria degeneratuak, etab. aztertuta. - - + + Add Distance constraint Gehitu distantzia-murrizketa @@ -1706,7 +1706,7 @@ murrizketak, geometria degeneratuak, etab. aztertuta. - + Add Symmetry constraints Gehitu simetria-murrizketak @@ -1717,220 +1717,220 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Gehitu distantzia-murrizketak - + Add Horizontal constraint Gehitu murrizketa horizontala - + Add Vertical constraint Gehitu murrizketa bertikala - + Add Block constraint Gehitu bloke-murrizketa - + Add Angle constraint Gehitu angelu-murrizketa - - - - + + + + Add Equality constraint Gehitu berdintasun-murrizketa - + Add Equality constraints Gehitu berdintasun-murrizketak - - - + + + Add Radius constraint Gehitu erradio-murrizketa - - + + Add arc angle constraint Gehitu arkuaren angelu-murrizketa - + Add concentric and length constraint Gehitu luzeraren eta zentrokidetasunaren murrizketa - + Add DistanceX constraint Gehitu X distantziaren murrizketa - + Add DistanceY constraint Gehitu Y distantziaren murrizketa - + Add point to circle Distance constraint Gehitu puntutik zirkulurako distantzia-murrizketa - - + + Add point on object constraint Gehitu objektu gaineko puntuaren murrizketa - - + + Add point to point horizontal distance constraint Gehitu puntutik punturako distantzia horizontaleko murrizketa - + Add fixed x-coordinate constraint Gehitu X koordenatu finkoko murrizketa - - + + Add point to point vertical distance constraint Gehitu puntutik punturako distantzia bertikaleko murrizketa - + Add fixed y-coordinate constraint Gehitu Y koordenatu finkoko murrizketa - - + + Add parallel constraint Gehitu murrizketa paraleloa - - - - - - - + + + + + + + Add perpendicular constraint Gehitu murrizketa perpendikularra - + Add perpendicularity constraint Gehitu perpendikulartasun-murrizketa - + Swap coincident+tangency with ptp tangency Trukatu bat etortzea+tangentzia ptp tangentziarekin - + Swap PointOnObject+tangency with point to curve tangency Trukatu PuntuaObjektuan+tangentzia puntutik kurbarako tangentziarekin - - - - - - - + + + + + + + Add tangent constraint Gehitu tangente-murrizketa - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Gehitu tangentzia-murrizketako puntua - - - - + + + + Add radius constraint Gehitu erradio-murrizketa - - - - + + + + Add diameter constraint Gehitu diametro-murrizketa - - - - + + + + Add radiam constraint Gehitu erradio/diametro-murrizketa - - - - + + + + Add angle constraint Gehitu angelu-murrizketa - - + + Add equality constraint Gehitu berdintasun-murrizketa - - - - - + + + + + Add symmetric constraint Gehitu simetria-murrizketa - + Add Snell's law constraint Gehitu Snell-en legearen murrizketa - + Toggle constraint to driving/reference Txandakatu murrizketa gidatze/erreferentziara - + Activate/Deactivate constraint Aktibatu/desaktibatu murrizketa @@ -2015,7 +2015,7 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Gehitu elipse baten arkuaren krokisa - + Add sketch arc of hyperbola Gehitu hiperbola baten arkuaren krokisa @@ -2159,8 +2159,8 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Eguneratu murrizketen espazio birtuala - + Add auto constraints Gehitu murrizketa automatikoak @@ -2185,12 +2185,12 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Arrastatu kurba - + Drag Constraint Arrastatu murrizketa - + Modify sketch constraints Aldatu krokis-murrizketak @@ -2281,59 +2281,59 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Automurrizketa-errorea: Ebatzi ezin den krokisa berdintasun-murrizketak aplikatu ondoren. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Ezin izan da kurben ebakidura antzeman. Saiatu bat datorren murrizketa bat gehitzen biribildu nahi dituzun kurben erpinen artean. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline geometria-indizea (GeoID) mugetatik kanpo dago. - + You are requesting no change in knot multiplicity. Adabegi-aniztasunean aldaketarik ez egitea eskatzen ari zara. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Hornitutako geometria-indizea (GeoId) ez da Bspline kurba bat. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Adabegi-indizea mugetatik kanpo dago. Kontuan izan, OCC notazioaren arabera, lehen adabegiaren indize-zenbakiak 1 izan behar duela, ez 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. Aniztasuna ezin da handitu Bspline-aren gradutik gora. - + The multiplicity cannot be decreased beyond zero. Aniztasuna ezin da txikitu zerotik behera. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC-k ezin du aniztasuna txikitu tolerantzia maximoaren barruan. - + Knot cannot have zero multiplicity. Adabegiak ezin du zero aniztasuna izan. - + Knot multiplicity cannot be higher than the degree of the BSpline. Adabegi-aniztasunak ezin du izan B-spline kurbaren graduak baino handiagoa. - + Knot cannot be inserted outside the BSpline parameter range. Adabegia ezin da txertatu B-spline parametro-barrutiaren kanpoaldean. @@ -2413,127 +2413,11 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Ez erantsi + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ murrizketak, geometria degeneratuak, etab. aztertuta. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ murrizketak, geometria degeneratuak, etab. aztertuta. - - - Wrong selection Hautapen okerra @@ -2615,106 +2615,106 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Hautatuetako batek krokisean egon behar du. - + Select an edge from the sketch. Hautatu krokiseko ertz bat. - - - - - - + + + + + + Impossible constraint Ezinezko murrizketa - - + + The selected edge is not a line segment. Hautatutako ertza ez da lerro segmentu bat. - - - + + + Double constraint Murrizketa bikoitza - + The selected edge already has a horizontal constraint! Hautatutako ertzak badauka murrizketa horizontal bat! - + The selected edge already has a vertical constraint! Hautatutako ertzak badauka murrizketa bertikal bat! - - - + + + The selected edge already has a Block constraint! Hautatutako ertzak badauka bloke-murrizketa bat! - + There are more than one fixed points selected. Select a maximum of one fixed point! Puntu finko bat baino gehiago dago hautatuta. Gehienez puntu finko bakarra hautatu behar duzu! - - - + + + Select vertices from the sketch. Hautatu krokiseko erpinak. - + Select one vertex from the sketch other than the origin. Hautatu krokiseko erpin bat, jatorria ez dena. - + Select only vertices from the sketch. The last selected vertex may be the origin. Hautatu krokiseko erpinak soilik. Hautatutako azken erpina jatorria izan daiteke. - + Wrong solver status Ebazle-egoera okerra - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Ezin da bloke-murrizketarik gehitu krokisa ebatzi gabe badago edo murrizketa errepikatuak eta gatazkan daudenak badaude. - + Select one edge from the sketch. Hautatu krokiseko ertz bat. - + Select only edges from the sketch. Hautatu krokiseko ertzak soilik. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Hautatutako objektuen kopurua ez da 3 - + Error Errorea @@ -2724,80 +2724,80 @@ murrizketak, geometria degeneratuak, etab. aztertuta. Ustekabeko errorea. Txosten-bistan informazio gehiago aurkitu daiteke. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Amaiera-puntutik amaiera-punturako tangentzia aplikatu da horren ordez. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Hautatu krokisaren bi erpin edo gehiago bat datorren murrizketa baterako, edo bi edo gehiago zirkulu, elipse, arku edo arkuen elipse, murrizketa kontzentriko baterako. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Hautatu krokisaren bi erpin bat datorren murrizketa baterako, edo bi zirkulu, elipse, arku edo arkuen elipse, murrizketa kontzentriko baterako. - + Select exactly one line or one point and one line or two points from the sketch. Hautatu krokiseko lerro bat edo puntu bat edo lerro bat eta bi puntu. - + Cannot add a length constraint on an axis! Ezin zaio luzera-murrizketa bat gehitu ardatz bati! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Hautatu krokiseko lerro bat edo puntu bat eta lerro bat edo bi puntu edo bi zirkulu. - + This constraint does not make sense for non-linear curves. Murrizketa honek ez du zentzurik linealak ez diren kurbekin. - + Endpoint to edge tangency was applied instead. Amaiera-puntutik ertzerako tangentzia aplikatu da horren ordez. - - - - - - + + + + + + Select the right things from the sketch. Hautatu krokiseko elementu egokiak. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Hautatu B-spline pisua ez den ertz bat. @@ -2807,92 +2807,92 @@ murrizketak, geometria degeneratuak, etab. aztertuta. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Hautatutako puntuetako bat ere ez dago murriztuta bakoitzari dagokion kurban, elementu bereko osagai direlako, kanpo-geometria direlako edo ertza hautatu ezin delako. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Hautatutako puntuetako bat ere ez dago murriztuta bakoitzari dagokion kurban, bai elementu bereko osagai direlako bai kanpo-geometria direlako. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Hautatu krokiseko lerro bat, puntu bat edo bi puntu. - + Cannot add a horizontal length constraint on an axis! Ezin zaio luzera horizontaleko murrizketa bat gehitu ardatz bati! - + Cannot add a fixed x-coordinate constraint on the origin point! Ezin zaio X koordenatu finkoko murrizketa bat gehitu jatorri-puntuari! - - + + This constraint only makes sense on a line segment or a pair of points. Murriztapen honek lerro segmentuetan edo puntu-bikoteetan soilik du zentzua. - + Cannot add a vertical length constraint on an axis! Ezin zaio luzera bertikaleko murrizketa bat gehitu ardatz bati! - + Cannot add a fixed y-coordinate constraint on the origin point! Ezin zaio Y koordenatu finkoko murrizketa bat gehitu jatorri-puntuari! - + Select two or more lines from the sketch. Hautatu krokiseko bi lerro edo gehiago. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Hautatu krokiseko bi lerro, gutxienez. - + The selected edge is not a valid line. Hautatutako ertza ez da baliozko lerro bat. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2902,35 +2902,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-puntu; bi kurba eta puntu bat. - + Select some geometry from the sketch. perpendicular constraint Hautatu krokiseko geometriaren bat. - - + + Cannot add a perpendicularity constraint at an unconnected point! Ezin zaio perpendikulartasun-murrizketa bat gehitu konektatu gabeko puntu bati! - - + + One of the selected edges should be a line. Hautatutako ertzetako batek lerroa izan behar du. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Amaiera-puntutik amaiera-punturako tangentzia aplikatu da. Bat datorren murrizketa ezabatu egin da. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Amaiera-puntutik ertzerako tangentzia aplikatu da. Objektuaren gaineko puntuaren murrizketa ezabatu egin da. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2940,67 +2940,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-puntu; bi kurba eta puntu bat. - + Select some geometry from the sketch. tangent constraint Hautatu krokiseko geometriaren bat. - - - + + + Cannot add a tangency constraint at an unconnected point! Ezin zaio tangentzia-murrizketa gehitu konektatu gabeko puntu bati! - - + + Tangent constraint at B-spline knot is only supported with lines! B-spline adabegiko tangente-murrizketa lerroekin soilik onartzen da. - + B-spline knot to endpoint tangency was applied instead. B-splinearen adabegitik amaiera-punturako tangentzia aplikatu da horren ordez. - - + + Wrong number of selected objects! Hautatutako objektu kopuru okerra! - - + + With 3 objects, there must be 2 curves and 1 point. 3 objektu badira, 2 kurba eta puntu1 egon behar dute. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Hautatu krokiseko arku edo zirkulu bat edo gehiago. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Hautatu B-spline polo bat edo gehiago edo zirkuluen arku bat edo gehiago krokisean, baina ez bi motak nahastuta. - - - + + + Constraint only applies to arcs or circles. Murrizketa arkuei edo zirkuluei soilik aplikatzen zaie. - - + + Select one or two lines from the sketch. Or select two edges and a point. Hautatu krokisaren lerro bat edo bi. Edo hautatu bi ertz eta puntu bat. @@ -3015,88 +3015,88 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Ezin da angelu-murrizketa bat ezarri bi lerro paralelotarako. - + Cannot add an angle constraint on an axis! Ezin zaio angelu-murrizketa bat gehitu ardatz bati! - + Select two edges from the sketch. Hautatu krokiseko bi ertz. - + Select two or more compatible edges. Hautatu bateragarriak diren bi ertz edo gehiago. - + Sketch axes cannot be used in equality constraints. Krokis-ardatzak ezin dira erabili berdintasun-murrizketetan. - + Equality for B-spline edge currently unsupported. Momentuz ez dago onartuta B-spline ertzen berdintasuna. - - - - + + + + Select two or more edges of similar type. Hautatu antzekoak diren bi ertz edo gehiago. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Hautatu krokiseko bi puntu eta simetria-lerro bat, bi puntu eta simetria-puntu bat edo lerro bat eta simetria-puntu bat. - - + + Cannot add a symmetry constraint between a line and its end points. Ezin da simetria-murrizketarik gehitu lerro baten eta haren amaiera-puntuen artean. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Ezin da simetria-murrizketarik gehitu lerro baten eta haren amaiera-puntuen artean! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Hautatu lerroen bi amaiera-puntu izpi gisa joka dezaten, eta muga bat adieraziko duen ertz bat. Hautatutako lehen puntua n1 indizeari dagokio, bigarrena n2 indizeari, eta zero puntuaren balioak n2/n1 erlazioa ezartzen du. - + Selected objects are not just geometry from one sketch. Hautatutako elementuak ez dira soilik krokis bateko geometria. - + Cannot create constraint with external geometry only. Ezin da murrizketa sortu kanpo-geometria soilik erabiliz. - + Incompatible geometry is selected. Bateragarria ez den geometria hautatu da. - - - - - + + + + + Select constraints from the sketch. Hautatu krokiseko murrizketak. @@ -3118,9 +3118,9 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Definitu B-spline gradua, 1 eta %1 artekoa: + - CAD Kernel Error CAD kernel-errorea @@ -3263,14 +3263,14 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Ardatzen lerrokatzea kentzeko, kanpokoa ez den elementu geometriko bat, gutxienez, hautatu behar da - - + + Unsupported visual layer operation Ikusizko geruzan onartzen ez den eragiketa - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Momentuz ez da onartzen kanpoko geometria bat ikusizko beste geruza batera eramatea. Kanpoko geometriari ez ikusiarena egingo zaio @@ -3654,12 +3654,12 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Luzera: - + Refractive index ratio Errefrakzio-indizea - + Ratio n2/n1: n2/n1 erlazioa: @@ -3667,72 +3667,72 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p SketcherGui::ElementFilterList - + Normal Normala - + Construction Eraikuntza - + Internal Barnekoa - + External Kanpokoa - + All types Mota guztiak - + Point Puntua - + Line Lerroa - + Circle Zirkulua - + Ellipse Elipsea - + Arc of circle Zirkulu-arkua - + Arc of ellipse Elipse-arkua - + Arc of hyperbola Hiperbole-arkua - + Arc of parabola Parabola-arkua - + B-Spline B-spline @@ -3855,27 +3855,27 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Hautatu ardatz bertikala - + Layer Geruza - + Layer 0 Geruza 0 - + Layer 1 Geruza 1 - + Hidden Ezkutua - + Delete Ezabatu @@ -4751,120 +4751,120 @@ Hala ere, ez da aurkitu amaiera-puntuei estekatutako murrizketarik.Ezarpenak - - - - - - - - - - + + + + + + + + + + Construction Eraikuntza - + Elements Elementuak - - - - + + + + Point Puntua - - - - - - - - - - + + + + + + + + + + Internal Barnekoa - - - - + + + + Line Lerroa - - - - + + + + Arc Arkua - - - - + + + + Circle Zirkulua - - - - + + + + Ellipse Elipsea - - - - + + + + Elliptical Arc Arku eliptikoa - - - - + + + + Hyperbolic Arc Arku hiperbolikoa - - - - + + + + Parabolic Arc Arku parabolikoa - - - - + + + + BSpline B-spline - - - - + + + + Other Beste bat - + Extended information Informazio gehiago @@ -5084,112 +5084,112 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. SketcherGui::ViewProviderSketch - + Edit sketch Editatu krokisa - + A dialog is already open in the task panel Elkarrizketa-koadro bat irekita dago ataza-panelean - + Do you want to close this dialog? Elkarrizketa-koadro hau itxi nahi duzu? - + Invalid sketch Baliogabeko krokisa - + Do you want to open the sketch validation tool? Krokisak balidatzeko tresna ireki nahi al duzu? - + The sketch is invalid and cannot be edited. Krokisa baliogabea da eta ezin da editatu. - + Please remove the following constraint: Kendu honako murrizketa: - + Please remove at least one of the following constraints: Kendu gutxienez honako murrizketetako bat: - + Please remove the following redundant constraint: Kendu erredundantea den honako murrizketa: - + Please remove the following redundant constraints: Kendu erredundanteak diren honako murriketak: - + The following constraint is partially redundant: Honako murrizketa partzialki erredundantea da: - + The following constraints are partially redundant: Honako murrizketak partzialki erredundanteak dira: - + Please remove the following malformed constraint: Kendu gaizki eratuta dagoen honako murrizketa: - + Please remove the following malformed constraints: Kendu gaizki eratuta dauden honako murrizketak: - + Empty sketch Krokis hutsa - + Over-constrained: Gehiegi murriztutakoa: - + Malformed constraints: Gaizki eratutako murrizketak: - + Redundant constraints: Murrizketa erredundanteak: - + Partially redundant: Partzialki erredundantea: - + Solver failed to converge Ebazleak ezin izan du konbergitu - + Under constrained: Gutxiegi murriztutakoa: - + %n DoF(s) Askatasun-gradu %n @@ -5197,7 +5197,7 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. - + Fully constrained Osorik murritua @@ -5295,8 +5295,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Finkatu zirkulu baten edo arku baten diametroa @@ -5304,8 +5304,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Finkatu zirkulu baten edo arku baten erradioa/diametroa @@ -5313,8 +5313,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Finkatu zirkulu baten edo arku baten erradioa @@ -5328,70 +5328,25 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako.Geometriaren kopia sinple bat sortzen du, erreferentzia gisa hautatutako azken puntua hartuz - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Sortu arku bat amaiera-puntuak eta arkuan dagoen puntu bat erabiliz - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Sortu zirkulu bat 3 ertz-puntutik abiatuz - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Sortu arku bat puntu zentrala eta amaiera-puntuak erabiliz - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Sortu elipse-arku bat erdiko puntua, erradio handia eta amaiera-puntuak erabiliz - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Sortu hiperbola-arku bat erdiko puntua, erradio handia eta amaiera-puntuak erabiliz - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Sortu parabola-arku bat fokua, erpina eta amaiera-puntuak erabiliz - - Sketcher_CreateBSpline - + B-spline by control points B-spline kontrol-puntuetatik - - + + Create a B-spline by control points Sortu B-spline bat kontrol-puntuetatik abiatuz @@ -5399,35 +5354,17 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Sortu zirkulu bat puntu zentrala eta ertz-puntu bat erabiliz - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Sortu elipse bat periapsia, apoapsia eta erradio txikia erabiliz - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Sortu elipse bat puntu zentrala, erradio handia eta puntu bat erabiliz - - Sketcher_CreateFillet - - + + Creates a radius between two lines Bi lerroren arteko erradio bat sortzen du @@ -5435,8 +5372,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Sortu heptagono bat bere erdigunea eta izkina bat erabiliz @@ -5444,8 +5381,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Sortu hexagono bat bere erdigunea eta izkina bat erabiliz @@ -5461,14 +5398,14 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Sortu oktogono bat bere erdigunea eta izkina bat erabiliz + - Create a regular polygon by its center and by one corner Sortu poligono erregular bat bere erdigunea eta izkina bat erabiliz @@ -5476,8 +5413,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Sortu pentagono bat bere erdigunea eta izkina bat erabiliz @@ -5485,8 +5422,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Murrizketak eta ebakidura-puntua mantentzen dituen biribiltzea @@ -5510,8 +5447,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreateSquare + - Create a square by its center and by one corner Sortu lauki bat bere erdigunea eta izkina bat erabiliz @@ -5519,8 +5456,8 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Sortu triangelu aldeberdin bat bere erdigunea eta izkina bat erabiliz @@ -5528,13 +5465,13 @@ Krokisaren geometriak eta murrizketak analizatzen dira horretarako. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periodikoa kontrol-puntuetatik + - Create a periodic B-spline by control points Sortu B-spline periodiko bat krokiseko kontrol-puntuetatik abiatuz @@ -5935,7 +5872,7 @@ Eigen Sparse QR algoritmoa matrize sakabanatuetarako optimizatuta dago; normalea ViewProviderSketch - + and %1 more eta %1 gehiago @@ -6158,45 +6095,45 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada.Krokisak partzialki erredundanteak diren murrizketak ditu! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolak migratu dira. Migratutako fitxategiak ezin dira ireki FreeCADen aurreko bertsioetan. - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Errorea @@ -6232,16 +6169,16 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada.Murrizketak indize-informazio baliogabea du eta gaizki eratuta dago. + + + - - - - - + + Invalid Constraint @@ -6258,12 +6195,12 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada.Huts egin du elipsearen arkua gehitzeak - + Cannot create arc of hyperbola from invalid angles, try again! Ezin da hirperbolaren arkua sortu angeluak baliogabeak badira, saiatu berriro. - + Cannot create arc of hyperbola Ezin da hiperbolaren arkua sortu @@ -6283,8 +6220,8 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada.Errorea B-spline poloa sortzean - + Error creating B-spline Errorea B-spline kurba gehitzean @@ -6340,17 +6277,17 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada.Huts egin du lerroa gehitzeak - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6385,9 +6322,9 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada.Huts egin du ertza muxarratzeak - + Value Error Balio-errorea @@ -6450,13 +6387,13 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline kurba adabegietatik - - + + Create a B-spline by knots Sortu B-spline bat adabegietatik abiatuz @@ -6464,13 +6401,13 @@ Sareta-tartea aldatuko da pixel-zenbaki hau baino txikiagoa bihurtzen bada. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots B-spline periodikoa adabegietatik + - Create a periodic B-spline by knots Sortu B-spline periodiko bat adabegietatik abiatuz @@ -6576,12 +6513,12 @@ Puntuak sareta-tartearen bosten bat baino hurbilago ezarri behar dira lerro bate CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Sortu B-spline bat adabegietatik abiatuz - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Sortu B-spline bat adabegietatik abiatuz, alegia interpolazio bidez, krokisean. @@ -6589,12 +6526,12 @@ Puntuak sareta-tartearen bosten bat baino hurbilago ezarri behar dira lerro bate CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Sortu B-spline periodiko bat adabegietatik abiatuz - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Sortu B-spline periodiko bat adabegietatik abiatuz, alegia interpolazio bidez, krokisean. @@ -6602,12 +6539,12 @@ Puntuak sareta-tartearen bosten bat baino hurbilago ezarri behar dira lerro bate CmdSketcherDimension - + Dimension Kota - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6645,12 +6582,12 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek CmdSketcherConstrainRadius - + Constrain radius Murriztu erradioa - + Fix the radius of a circle or an arc Finkatu zirkulu baten edo arku baten erradioa @@ -6825,8 +6762,8 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6840,12 +6777,12 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6853,12 +6790,12 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6866,12 +6803,12 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6879,12 +6816,12 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6892,12 +6829,12 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6905,12 +6842,12 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek CmdSketcherConstrainCoincidentUnified - + Constrain coincident Murriztu bat datozenak - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7331,4 +7268,67 @@ Hutsi dagoen espazioan klik eginda, uneko murriztapena baliozkotuko da. Eskuinek Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts index 65b81239ea..c9311bd4f7 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Rajoita ympyrän kaari - + Constrain an arc or a circle Rajoita ympyrän kaari - + Constrain radius Rajoita säde - + Constrain diameter Rajoita halkaisija - + Constrain auto radius/diameter Constrain auto radius/diameter @@ -180,24 +180,24 @@ - Center and end points - Keski- ja loppupisteet + Center and endpoints + Center and endpoints - - End points and rim point - Loppupisteet ja kehän kohta + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Luo B-splini - + Create a B-spline in the sketch Luo B-splinin luonnokseen @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Luo ympyrä - + Create a circle in the sketcher Luo ympyrä luonnostyökalulla - + Center and rim point keskipiste ja kehäpiste - + 3 rim points 3 kehän pistettä @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Luo kartio luonnokseen - - Ellipse by center, major radius, point - Ellipsi keskipisteellä, pääsäteellä tai pisteellä + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Ellipsi lähimmällä pisteellä, kauimmalla pisteellä, ja pienellä säteellä + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Ellipsin kaari keskipisteellä, suurella säteellä, päätepisteillä + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Hyperbelin kaari keskipisteen, isoakselin säteen ja päätepisteiden perusteella + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Paraabelin kaari polttopisteen, huipun ja päätepisteiden perusteella @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Luo pyöristys - + Create a fillet between two lines Luo pyöristys kahden viivan väliseen nurkkaan - + Sketch fillet Pyöristys luonnokselle - - Constraint-preserving sketch fillet - Rajoitteet säilyttävä pyöristys luonnokselle + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Luo säännöllinen monikulmio - + Create a regular polygon in the sketcher Luo säännöllinen monikulmio luonnokseen - + Triangle Kolmio - + Square Neliö - + Pentagon Viisikulmio - + Hexagon Kuusikulmio - + Heptagon Seitsenkulmio - + Octagon Kahdeksankulmio - + Regular polygon Säännöllinen monikulmio @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Rajoita kulma - + Fix the angle of a line or the angle between two lines Korjaa viivan kulmaa tai kahden viivan välistä kulma @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Rajoita esteellä - + Block the selected edge from moving Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Samanlaisuus rajoite - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Rajoita halkaisija - + Fix the diameter of a circle or an arc Kiinnitä ympyrän tai kaaren halkaisija @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Etäisyys rajoitus - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Vaakasuoran etäisyyden rajoite - + Fix the horizontal distance between two points or line ends Korjaa kahden pisteen tai viivanpään vaakasuoraa etäisyyttä @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Korjaa kahden pisteen tai viivanpään pystysuoraa etäisyyttä @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Yhtäsuuruus rajoite - + Create an equality constraint between two lines or between circles and arcs Luo yhtäsuuruus rajoite kahdelle viivan tai ympyröiden ja kaarien väliin @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Vaakasuora rajoite - + Create a horizontal constraint on the selected item Luo vaakasuora rajoite valittujen osien välille @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Rajoite lukko - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Rajoita yhdensuuntaiseksi - + Create a parallel constraint between two lines Luo rinnakkaisuus rajoite kahden viivan välille @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Rajoita kohtisuorasti - + Create a perpendicular constraint between two lines Luo kohtisuora rajoitus kahden viivan väliin @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Rajoita piste objektiin - + Fix a point onto an object Korjaa piste objektin paalle @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Constrain auto radius/diameter - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Rajoita taittuminen (Snellin laki) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Rajoita symmetrisesti - + Create a symmetry constraint between two points with respect to a line or a third point Luo symmetriarajoite kahden pisteen välille, @@ -602,12 +602,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherConstrainTangent - + Constrain tangent Rajoita tangentti - + Create a tangent constraint between two entities Luo tangenttirajoite kahden yksikön välillä @@ -615,12 +615,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherConstrainVertical - + Constrain vertically Rajoita pystysuuntaisesti - + Create a vertical constraint on the selected item Luo pystysuora rajoite valitulle kohteelle @@ -667,12 +667,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreate3PointCircle - + Create circle by three points Luo ympyrä kolmella pistettä - + Create a circle by 3 perimeter points Luo ympyrä kolmella kehän pisteellä @@ -693,12 +693,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Luo ellipsin kaaren luonnoksessa @@ -706,12 +706,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Luo hyperbelin kaari luonnokseen @@ -719,12 +719,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Lue paraabelin kaari luonnokseen @@ -732,12 +732,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateBSpline - + Create B-spline Luo B-splini - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateCircle - + Create circle Luo ympyrä - + Create a circle in the sketch Luo ympyrän luonnoksessa @@ -758,12 +758,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Luo ellipsi 3:lla pisteellä - + Create an ellipse by 3 points in the sketch Luo ellipsi 3 pisteellä luonnoksessa @@ -771,12 +771,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateEllipseByCenter - + Create ellipse by center Luo ellipsi keskipisteen avulla - + Create an ellipse by center in the sketch Luo ellipsi keskipisteen avulla luonnoksessa @@ -784,12 +784,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateFillet - + Create fillet Luo pyöristys - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateHeptagon - + Create heptagon Luo seitsenkulmio - + Create a heptagon in the sketch Luo seitsenkulmio luonnoksessa @@ -810,12 +810,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateHexagon - + Create hexagon Luo kuusikulmio - + Create a hexagon in the sketch Luo kuusikulmio luonnoksessa @@ -849,12 +849,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateOctagon - + Create octagon Luo kahdeksankulmio - + Create an octagon in the sketch Luo kahdeksankulmio luonnoksessa @@ -862,12 +862,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreatePentagon - + Create pentagon Luo viisikulmio - + Create a pentagon in the sketch Luo viisikulmio luonnoksessa @@ -875,12 +875,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Luo jaksollinen B-splini - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreatePoint - + Create point Luo piste - + Create a point in the sketch Luo pisteen luonnoksessa @@ -901,12 +901,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreatePointFillet - + Create corner-preserving fillet Luo nurkkapisteen säilyttävä pyöristys - + Fillet that preserves intersection point and most constraints Pyöristys, joka säilyttää alkuperäisen nurkkapisteen ja useimmat rajoitteet @@ -953,12 +953,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateRegularPolygon - + Create regular polygon Luo säännöllinen monikulmio - + Create a regular polygon in the sketch Luo säännöllinen monikulmio luonnokseen @@ -966,12 +966,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateSlot - + Create slot Luo rako - + Create a slot in the sketch Luo rako luonnokseen @@ -979,12 +979,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateSquare - + Create square Luo neliö - + Create a square in the sketch Luo neliö luonnoksessa @@ -992,12 +992,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherCreateTriangle - + Create equilateral triangle Luo tasasivuinen kolmio - + Create an equilateral triangle in the sketch Luo tasasivuinen kolmio luonnoksessa @@ -1070,12 +1070,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherExtend - + Extend edge Pidennä reunaa - + Extend an edge with respect to the picked position Pidennä reunaa valittuun sijaintiin asti @@ -1083,12 +1083,12 @@ käyttäen jakajana viivaa tai kolmatta pistettä CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Luo reuna joka on yhteydessä ulkoiseen geometriaan @@ -1427,12 +1427,12 @@ Tämä tyhjentää 'Tukipiste'-ominaisuuden, jos sellainen on. CmdSketcherSplit - + Split edge Split edge - + Splits an edge into two while preserving constraints Splits an edge into two while preserving constraints @@ -1479,12 +1479,12 @@ Tämä tyhjentää 'Tukipiste'-ominaisuuden, jos sellainen on. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Aktivoi/deaktivoi rajoite - + Activates or deactivates the selected constraints Aktivoi tai deaktivoi valitut rajoitteet @@ -1506,12 +1506,12 @@ rakennetilan ja tavallisen geometrian välillä edestakaisin CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Vaihda rajoite määräävän/referenssin välillä - + Set the toolbar, or the selected constraints, into driving or reference mode Vaihtaa työkalupalkin kuvakkeen, tai valitut rajoitteet, @@ -1521,12 +1521,12 @@ määräävän ja referenssimoodin välillä edestakaisin CmdSketcherTrimming - + Trim edge Trimmaa reuna - + Trim an edge with respect to the picked position Tarkenna reuna suhteessa valittuun kohtaan @@ -1585,79 +1585,79 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Command - + Add 'Lock' constraint Lisää 'Block' rajoitus - + Add relative 'Lock' constraint Lisää suhteellinen 'Lock' rajoite - + Add fixed constraint Lisää kiinteä rajoite - + Add 'Block' constraint Lisää 'Block' rajoitus - + Add block constraint Lisää lohkon rajoitus - - + + Add coincident constraint Lisää yhtenevyys-rajoite - - + + Add distance from horizontal axis constraint Lisää etäisyys vaaka-akselin rajoituksesta - - + + Add distance from vertical axis constraint Lisää etäisyys pystyakselin rajoituksesta - - + + Add point to point distance constraint Lisää pisteestä pisteeseen etäisyyden rajoite - - + + Add point to line Distance constraint Lisää piste viivalle etäisyysrajoite - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Lisää pituusrajoite @@ -1680,8 +1680,8 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. - - + + Add Distance constraint Add Distance constraint @@ -1707,7 +1707,7 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. - + Add Symmetry constraints Add Symmetry constraints @@ -1718,220 +1718,220 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Lisää piste-on-objektilla rajoite - - + + Add point to point horizontal distance constraint Lisää pisteestä pisteeseen vaakasuuntaisen etäisyyden rajoite - + Add fixed x-coordinate constraint Lisää kiinnitetyn x-koordinaatin rajoite - - + + Add point to point vertical distance constraint Lisää pisteestä pisteeseen pystysuuntaisen etäisyyden rajoite - + Add fixed y-coordinate constraint Lisää kiinnitetyn y-koordinaatin rajoite - - + + Add parallel constraint Lisää yhdensuuntaisuuden rajoite - - - - - - - + + + + + + + Add perpendicular constraint Lisää kohtisuora rajoite - + Add perpendicularity constraint Lisää kohtisuoruuden rajoite - + Swap coincident+tangency with ptp tangency Vaihda yhtenevyyden+tangentiaalisuuden ja pisteestä-pisteeseen tangentiaalisuuden välillä - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint Lisää tangentiaalisuus-rajoite - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Lisää tangenttirajoitepiste - - - - + + + + Add radius constraint Lisää säteen rajoite - - - - + + + + Add diameter constraint Lisää halkaisijan rajoite - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint Lisää kulman rajoite - - + + Add equality constraint Lisää yhtäsuuruuden rajoite - - - - - + + + + + Add symmetric constraint Lisää symmetrisyyden rajoite - + Add Snell's law constraint Lisää Snellin lain rajoite - + Toggle constraint to driving/reference Vaihda rajoite määräävän/referenssin välillä - + Activate/Deactivate constraint Aktivoi/deaktivoi rajoite @@ -2016,7 +2016,7 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Lisää luonnos ellipsin kaaresta - + Add sketch arc of hyperbola Lisää luonnos hyperbolin kaaresta @@ -2160,8 +2160,8 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Päivitä rajoituksen virtuaalinen tila - + Add auto constraints Lisää automaattisesti rajoitteita @@ -2186,12 +2186,12 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Raahaa käyrää - + Drag Constraint Raahaa rajoitetta - + Modify sketch constraints Muokkaa luonnoksen rajoitteita @@ -2282,59 +2282,59 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Automaattinen rajoitusvirhe: Ratkaisematon luonnos kun käytetään yhdenmukaisia rajoitteita. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Ei kyetty arvaamaan reunojen risteämispistettä. Kokeile lisätä yhtenevyysrajoite pyöristettävien reunojen kärkipisteiden välille. - - + + BSpline Geometry Index (GeoID) is out of bounds. B-splinin geometria-indeksi (GeoID) on sallittujen rajojen ulkopuolella. - + You are requesting no change in knot multiplicity. Solmun moninkertaisuusarvoon ei pyydetty muutosta. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Annettu geometria-indeksi (GeoID) ei vastaa B-splini-käyrää. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Solmun indeksi on rajojen ulkopuolella. Huomaa, että OCC: n notaation mukaisesti ensimmäisellä solmulla on indeksi 1 eikä nolla. - + The multiplicity cannot be increased beyond the degree of the B-spline. Monimuotoisuusarvoa ei voi kasvattaa B-splinin astetta suuremmaksi. - + The multiplicity cannot be decreased beyond zero. Moninkertaisuusarvoa ei voi pienentää negatiiviseksi. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC ei pysty pienentämään moninkertaisuusarvoa pysyäkseen suurimmassa sallitussa toleranssissa. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2414,127 +2414,11 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Älä liitä + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2544,6 +2428,125 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2561,9 +2564,6 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. - - - Wrong selection Virheellinen valinta @@ -2616,106 +2616,106 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. One of the selected has to be on the sketch. - + Select an edge from the sketch. Valitse luonnoksen reuna. - - - - - - + + + + + + Impossible constraint Mahdoton rajoite - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Kaksinkertainen rajoite - + The selected edge already has a horizontal constraint! Valitulla reunalla on jo vaakasuuntainen rajoite! - + The selected edge already has a vertical constraint! Valitulla reunalla on jo pystysuuntainen rajoite! - - - + + + The selected edge already has a Block constraint! Valitulla reunalla on jo lohkon rajoitus! - + There are more than one fixed points selected. Select a maximum of one fixed point! Valittuja pisteitä on enemmän kuin yksi. Valitse enintään yksi kiinteä piste! - - - + + + Select vertices from the sketch. Valitse kärkipisteet luonnoksesta. - + Select one vertex from the sketch other than the origin. Valitse luonnoksesta yksi muu piste kuin origo. - + Select only vertices from the sketch. The last selected vertex may be the origin. Valitse kärkipisteitä vain luonnoksesta. Viimeksi valittu piste saattaa olla origo. - + Wrong solver status Väärä ratkaisualgoritmin tila - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Lohkon rajoitusta ei voida lisätä, jos luonnos on ratkaisematon tai on olemassa tarpeettomia ja ristiriitaisia rajoituksia. - + Select one edge from the sketch. Valitse yksi reuna luonnoksesta. - + Select only edges from the sketch. Valitse vain reunoja luonnoksesta. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Virhe @@ -2725,80 +2725,80 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Valitun sijasta käytettiin tangentiaalisuutta päätepisteestä päätepisteeseen. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Valitse täsmälleen yksi viiva tai yksi piste ja yksi viiva tai kaksi pistettä sketsistä. - + Cannot add a length constraint on an axis! Akselille ei voida lisätä pituusrajoitetta! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. Valitse oikeat asiat luonnoksesta. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2808,92 +2808,92 @@ virheellisiä rajoitteita, rappeutunutta geometriaa jne. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Yksikään valituista pisteistä ei rajoittunut vastaaviin käyriin, joko koska ne ovat saman elementin osia, tai koska ne ovat molemmat ulkoisia geometrioita, tai reuna ei ole tukikelpoinen. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Yksikään valituista pisteistä ei rajoittunut vastaaviin käyriin, joko koska ne ovat saman elementin osia, tai koska ne ovat molemmat ulkoisia geometrioita. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Valitse täsmälleen yksi viiva tai enintään kaksi pistettä sketsistä. - + Cannot add a horizontal length constraint on an axis! Akselille ei voida lisätä vaakasuoraa pituusrajoitetta! - + Cannot add a fixed x-coordinate constraint on the origin point! Alkupisteeseen ei voi lisätä kiinteää x-koordinaattirajoitetta! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Akselille ei voida lisätä vaakapituusrajoitetta! - + Cannot add a fixed y-coordinate constraint on the origin point! Alkupisteeseen ei voi lisätä kiinteää y-koordinaattirajoitetta! - + Select two or more lines from the sketch. Valitse kaksi tai useampi viiva sketsistä. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Valitse vähintään kaksi viivaa sketsistä. - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2903,35 +2903,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päätepistettä; kaksi käyrää ja piste. - + Select some geometry from the sketch. perpendicular constraint Valitse jokin geometria luonnoksesta. - - + + Cannot add a perpendicularity constraint at an unconnected point! Yhdistämättömille pisteille ei voida lisätä samansuuntausuusrajoitetta! - - + + One of the selected edges should be a line. Yhden valituista reunoista pitäisi olla viiva. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Luotu päästä päähän -tangentti. Sattumarajoitus on poistettu. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2941,67 +2941,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päätepistettä; kaksi käyrää ja piste. - + Select some geometry from the sketch. tangent constraint Valitse jokin geometria luonnoksesta. - - - + + + Cannot add a tangency constraint at an unconnected point! Yhdistämättömään pisteeseen ei voi lisätä samansuuntaisuusrajoitetta! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Väärä lukumäärä valittuja kohteita! - - + + With 3 objects, there must be 2 curves and 1 point. 3 kohteella on oltava 2 käyrää ja 1 piste. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Valitse yksi tai userampia kaaria tai ympyröitä luonnoksesta. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Valitse luonnoksesta yksi tai useampi B-Splinien napa, tai yksi tai useampi kaari tai ympyrä, mutta ei molempien ryhmien sekamuotoa. - - - + + + Constraint only applies to arcs or circles. Rajoite sopii vain kaarille tai ympyröille. - - + + Select one or two lines from the sketch. Or select two edges and a point. Valitse yksi tai useampi viiva luonnoksesta. Tai valitse kaksi reunaa ja piste. @@ -3016,88 +3016,88 @@ Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päät Kulma-rajoitusta ei voi määrittää kahdelle samansuuntaiselle viivalle. - + Cannot add an angle constraint on an axis! Akseliin ei voi lisätä kulmarajoitetta! - + Select two edges from the sketch. Valitse kaksi reunaa sketsistä. - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. Ohjelma ei tällä hetkellä vielä tue yhtäsuuruutta B-splinin reunan kanssa. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Valitse kaksi pistettä ja symmetria linja, kaksi pistettä ja symmetria kohta, tai linja ja symmetriakohta luonnoksesta. - - + + Cannot add a symmetry constraint between a line and its end points. Ei voida lisätä symmetristä rajoitusta viivan ja sen päätepisteiden väliin. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Viivan ja sen päätepisteiden välille ei voi lisätä symmetriarajoitetta! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Valitse kaksi viivojen päätepistettä säteinä toimimaan sekä reuna kuvaamaan rajaa. Ensimmäinen valittu piste vastaa indeksiä n1, toinen - n2 ja viitearvo määrittää suhteen n2/n1. - + Selected objects are not just geometry from one sketch. Valitut kohteet eivät ole vain yhden luonnoksen geometriaa. - + Cannot create constraint with external geometry only. Rajoitetta ei voi luoda vain ulkoista geometriaa käyttämällä. - + Incompatible geometry is selected. Valittuna on epäyhteensopivaa geometriaa. - - - - - + + + + + Select constraints from the sketch. Valitse rajoitteet luonnoksesta. @@ -3119,9 +3119,9 @@ Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päät Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error CAD-ytimen virhe @@ -3264,14 +3264,14 @@ Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päät Removal of axes alignment requires at least one selected non-external geometric element - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3655,12 +3655,12 @@ Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päät Pituus: - + Refractive index ratio Taitekerroin suhdeluku - + Ratio n2/n1: Suhde n2/n1: @@ -3668,72 +3668,72 @@ Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päät SketcherGui::ElementFilterList - + Normal Normaali - + Construction Rakenne - + Internal Internal - + External Ulkoinen - + All types Kaikki tyypit - + Point Piste - + Line Viiva - + Circle Ympyrä - + Ellipse Ellipsi - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3856,27 +3856,27 @@ Hyväksytyt yhdistelmät: kaksi käyrää; päätepiste ja käyrä; kaksi päät Select Vertical Axis - + Layer Taso - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Piilotettu - + Delete Poista @@ -4752,120 +4752,120 @@ Kuitenkaan ei ole löytynyt rajoitteita, jotka liittyisivät päätepisteisiin.< Asetukset - - - - - - - - - - + + + + + + + + + + Construction Rakenne - + Elements Osat - - - - + + + + Point Piste - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Viiva - - - - + + + + Arc Kaari - - - - + + + + Circle Ympyrä - - - - + + + + Ellipse Ellipsi - - - - + + + + Elliptical Arc Elliptinen kaari - - - - + + + + Hyperbolic Arc Hyperbolinen Kaari - - - - + + + + Parabolic Arc Parabolinen Kaari - - - - + + + + BSpline BSpline - - - - + + + + Other Muu - + Extended information Extended information @@ -5086,112 +5086,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Muokkaa luonnosta - + A dialog is already open in the task panel Valintaikkuna on jo avoinna tehtäväpaneelissa - + Do you want to close this dialog? Haluatko sulkea tämän valintaikkunan? - + Invalid sketch Virheellinen luonnos - + Do you want to open the sketch validation tool? Haluatko avata luonnoksen validointityökalun? - + The sketch is invalid and cannot be edited. Luonnos on virheellinen eikä sitä voi muokata. - + Please remove the following constraint: Poista seuraava rajoite: - + Please remove at least one of the following constraints: Poista ainakin yksi seuraavista rajoitteista: - + Please remove the following redundant constraint: Poista seuraava turha rajoite: - + Please remove the following redundant constraints: Poista seuraavat turhat rajoitteet: - + The following constraint is partially redundant: Seuraava rajoite on osittain tarpeeton: - + The following constraints are partially redundant: Seuraavat rajoitteet ovat osittain tarpeettomia: - + Please remove the following malformed constraint: Poista seuraava virheellinen rajoite: - + Please remove the following malformed constraints: Poista seuraavat virheelliset rajoitteet: - + Empty sketch Tyhjä luonnos - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) @@ -5199,7 +5199,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fully constrained @@ -5297,8 +5297,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Kiinnitä ympyrän tai kaaren halkaisija @@ -5306,8 +5306,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fix the radius/diameter of a circle or an arc @@ -5315,8 +5315,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Korjaa ympyrän tai kaaren sädettä @@ -5330,70 +5330,25 @@ This is done by analyzing the sketch geometries and constraints. Luo yksinkertaisen kopion geometriasta käyttäen viimeistä valittua pistettä viittauksena - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Luoda kaari sen loppupisteistä ja kaarella olevasta pisteestä - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Luo ympyrä kehän 3:sta pisteestä - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Luo kaari sen keskipisteellä ja sen loppupisteillä - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Luo ellipsin kaari keskipisteellä, suurella säteellä, päätepisteillä - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Luo hyperbolin kaari sen keskipisteellä, pääsäteellä ja päätepisteillä - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Luo paraabelin kaari polttopisteen, huipun ja päätepisteiden perusteella - - Sketcher_CreateBSpline - + B-spline by control points B-splini ohjauspisteillä - - + + Create a B-spline by control points Luo B-splini ohjauspisteillä @@ -5401,35 +5356,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Luoda ympyrä sen keskipisteellä ja kehän pisteellä - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Luo ellipsi kauimmalla pisteellä, lähimmällä pisteellä ja pienellä säteellä - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Luo ellipsi keskipisteellä, suurella säteellä ja pisteellä - - Sketcher_CreateFillet - - + + Creates a radius between two lines Luo säteen kahden linjan välillä @@ -5437,8 +5374,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Luo seitsenkulmio keskipisteellä ja yhdellä kulmalla @@ -5446,8 +5383,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Luo kuusikulmio keskipisteellä ja yhdellä kulmalla @@ -5463,14 +5400,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Luo kahdeksankulmio keskipisteellä ja yhdellä kulmalla + - Create a regular polygon by its center and by one corner Luo säännöllinen monikulmio sen keskikohdan ja yhden kulman mukaan @@ -5478,8 +5415,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Luo viisikulmio keskipisteellä ja yhdellä kulmalla @@ -5487,8 +5424,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Kaistale, joka säilyttää rajoitteet ja risteyspisteen @@ -5512,8 +5449,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Luo neliö keskipisteellä ja yhdellä kulmalla @@ -5521,8 +5458,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Luo tasasivuinen kolmio keskipisteellä ja yhdellä kulmalla @@ -5530,13 +5467,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Jaksollinen B-splini ohjauspisteillä + - Create a periodic B-spline by control points Luo jaksollinen B-splini ohjauspisteillä @@ -5937,7 +5874,7 @@ Eigen-Sparse-QR -algoritmi on optimoitu matriiseille jotka ovat harvoja; yleens ViewProviderSketch - + and %1 more and %1 more @@ -6160,46 +6097,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Virhe @@ -6235,16 +6172,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6261,12 +6198,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6286,8 +6223,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Virhe luotaessa B-splinin napaa - + Error creating B-spline Virhe luotaessa B-spliniä @@ -6343,17 +6280,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6388,9 +6325,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6453,13 +6390,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6467,13 +6404,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6579,12 +6516,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6592,12 +6529,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6605,12 +6542,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Mitta - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6648,12 +6585,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Rajoita säde - + Fix the radius of a circle or an arc Korjaa ympyrän tai kaaren sädettä @@ -6828,8 +6765,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6843,12 +6780,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6856,12 +6793,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6869,12 +6806,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6882,12 +6819,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6895,12 +6832,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6908,12 +6845,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Samanlaisuus rajoite - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7334,4 +7271,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts index bd7f982ff6..28625b92d6 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Créer une copie carbone - + Copy the geometry of another sketch Copier la géométrie d’une autre esquisse @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Contrainte d'arc ou de cercle - + Constrain an arc or a circle Contraindre un arc ou un cercle - + Constrain radius Contrainte de rayon - + Constrain diameter Contrainte de diamètre - + Constrain auto radius/diameter Contrainte automatique du rayon/diamètre @@ -180,24 +180,24 @@ - Center and end points - Centre et points d'extrémité + Center and endpoints + Arc par son centre et ses extrémités - - End points and rim point - Points d'extrémité et point sur périmètre + + Endpoints and rim point + Arc par ses extrémités et un point du bord CmdSketcherCompCreateBSpline - + Create B-spline Créer une B-spline - + Create a B-spline in the sketch Créer une B-spline dans l’esquisse @@ -205,85 +205,85 @@ CmdSketcherCompCreateCircle - + Create circle Créer un cercle - + Create a circle in the sketcher Créer un cercle dans l'esquisse - + Center and rim point - Cercle par le centre et un point du bord + Cercle par son centre et un point du bord - + 3 rim points - Cercle par 3 points + Cercle par 3 points du bord CmdSketcherCompCreateConic - + Create conic Créer une conique - + Create a conic in the sketch Créer une conique dans l’esquisse - - Ellipse by center, major radius, point - Ellipse par centre, demi-grand axe, point + + Ellipse by center, radius, rim point + Ellipse par son centre, un de ses rayons, un point du bord - - Ellipse by periapsis, apoapsis, minor radius - Ellipse par périapse, apoapse, petit axe + + Ellipse by axis endpoints, rim point + Ellipse par les extrémités de ses axes, un point du bord - - Arc of ellipse by center, major radius, endpoints - Arc d'ellipse par centre, demi-grand axe, extrémités + + Arc of ellipse by center, radius, endpoints + Arc d'ellipse par son centre, son rayon, des extrémités - - Arc of hyperbola by center, major radius, endpoints - Arc d'hyperbole par centre, axe focal, extrémités + + Arc of hyperbola by center, vertex, endpoints + Arc d'hyperbole par son centre, son sommet, ses extrémités - + Arc of parabola by focus, vertex, endpoints - Arc de parabole par foyer, sommet, points d'extrémités + Arc de parabole par son foyer, son sommet, ses extrémités CmdSketcherCompCreateFillets - + Create fillet Créer un congé - + Create a fillet between two lines Créer un congé entre deux lignes - + Sketch fillet Congé d'esquisse - - Constraint-preserving sketch fillet - Congé d'esquisse préservant les contraintes + + Corner-preserving sketch fillet + Congé d'esquisse préservant les coins @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Créer un polygone régulier - + Create a regular polygon in the sketcher Créer un polygone régulier dans l'esquisse - + Triangle Triangle - + Square Carré - + Pentagon Pentagone - + Hexagon Hexagone - + Heptagon Heptagone - + Octagon Octogone - + Regular polygon Polygone régulier @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Contrainte angulaire - + Fix the angle of a line or the angle between two lines Fixer l'angle d'une ligne ou l'angle entre deux lignes @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Contrainte de blocage - + Block the selected edge from moving Bloquer le déplacement de l'arête sélectionnée @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Contrainte de coïncidence - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Créer une contrainte de coïncidence entre des points, ou une contrainte concentrique entre des cercles, des arcs et des ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Contrainte de diamètre - + Fix the diameter of a circle or an arc Fixer le diamètre d'un cercle ou d'un arc @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Contrainte de distance - + Fix a length of a line or the distance between a line and a vertex or between two circles Fixer la longueur d'une ligne ou la distance entre une ligne et un sommet ou entre deux cercles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Contrainte de distance horizontale - + Fix the horizontal distance between two points or line ends Fixer la distance horizontale entre deux points ou extrémités de ligne @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Contrainte de distance verticale - + Fix the vertical distance between two points or line ends Fixer la distance verticale entre deux points ou extrémités de ligne @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Contrainte d'égalité - + Create an equality constraint between two lines or between circles and arcs Créer une contrainte d'égalité entre deux lignes ou entre des cercles et/ou des arcs @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Contrainte horizontale - + Create a horizontal constraint on the selected item Créer une contrainte horizontale sur l'élément sélectionné @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Contrainte fixe - + Create both a horizontal and a vertical distance constraint on the selected vertex Créer deux contraintes de distance (horizontale et verticale) sur le sommet sélectionné @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Contrainte parallèle - + Create a parallel constraint between two lines Créer une contrainte parallèle entre deux lignes @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Contrainte perpendiculaire - + Create a perpendicular constraint between two lines Créer une contrainte de perpendicularité entre deux lignes @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Contrainte de point(s) sur un/des objet(s) - + Fix a point onto an object Contraindre un/des point(s) sur une/des ligne(s) @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Contrainte automatique du rayon/diamètre - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fixer le diamètre si l'on choisit un cercle ou le rayon si l'on choisit un arc ou une B-spline @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Contrainte de réfraction (loi de Snell) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Créer une contrainte de réfraction (loi de Snell) entre deux extrémités de lignes et une arête en tant qu'interface. @@ -585,12 +585,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Contrainte symétrique - + Create a symmetry constraint between two points with respect to a line or a third point Créer une contrainte de symétrie entre deux points par rapport à une ligne ou un point @@ -599,12 +599,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Contrainte tangente - + Create a tangent constraint between two entities Créer une contrainte tangente entre deux entités @@ -612,12 +612,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Contrainte verticale - + Create a vertical constraint on the selected item Créer une contrainte verticale sur l'élément sélectionné @@ -664,12 +664,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Créer un cercle par trois points - + Create a circle by 3 perimeter points Crée un cercle par 3 points @@ -690,12 +690,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Créer un arc d'ellipse - + Create an arc of ellipse in the sketch Créer un arc d'ellipse dans l'esquisse @@ -703,12 +703,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Créer un arc d'hyperbole - + Create an arc of hyperbola in the sketch Créer un arc d’hyperbole dans l’esquisse @@ -716,12 +716,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Créer un arc de parabole - + Create an arc of parabola in the sketch Créer un arc de parabole dans l'esquisse @@ -729,12 +729,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Créer une B-spline - + Create a B-spline by control points in the sketch. Créer une B-spline par des points de contrôle dans l'esquisse. @@ -742,12 +742,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Créer un cercle - + Create a circle in the sketch Créer un cercle dans l'esquisse @@ -755,12 +755,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Créer une ellipse via 3 points - + Create an ellipse by 3 points in the sketch Créer une ellipse via 3 points dans l'esquisse @@ -768,12 +768,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Créer une ellipse par son centre - + Create an ellipse by center in the sketch Créer une ellipse par son centre dans l'esquisse @@ -781,12 +781,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Créer un congé - + Create a fillet between two lines or at a coincident point Créer un congé entre deux lignes ou un sur un sommet coïncident @@ -794,12 +794,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Créer un heptagone - + Create a heptagon in the sketch Créer un heptagone dans l'esquisse @@ -807,12 +807,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Créer un hexagone - + Create a hexagon in the sketch Créer un hexagone dans l'esquisse @@ -846,12 +846,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Créer un octogone - + Create an octagon in the sketch Créer un octogone dans l'esquisse @@ -859,12 +859,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Créer un pentagone - + Create a pentagon in the sketch Créer un pentagone dans l'esquisse @@ -872,12 +872,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Créer une B-spline périodique - + Create a periodic B-spline by control points in the sketch. Créer une B-spline périodique par des points de contrôle dans l'esquisse. @@ -885,12 +885,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Créer un point - + Create a point in the sketch Créer un point dans l'esquisse @@ -898,12 +898,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Créer un congé conservant l'angle - + Fillet that preserves intersection point and most constraints Congé qui préserve le point d'intersection et la plupart des contraintes @@ -950,12 +950,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Créer un polygone régulier - + Create a regular polygon in the sketch Créer un polygone régulier dans l'esquisse @@ -963,12 +963,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Contour oblong - + Create a slot in the sketch Créer un contour oblong dans l'esquisse @@ -976,12 +976,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Créer un carré - + Create a square in the sketch Créer un carré dans l'esquisse @@ -989,12 +989,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Créer un triangle équilatéral - + Create an equilateral triangle in the sketch Créer un triangle équilatéral dans l'esquisse @@ -1067,12 +1067,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Prolonger l'arête - + Extend an edge with respect to the picked position Prolonger une arête par rapport à la position sélectionnée @@ -1080,12 +1080,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Créer une géométrie externe - + Create an edge linked to an external geometry Créer une arête liée à une géométrie externe. @@ -1422,12 +1422,12 @@ Cela effacera la propriété "Support", le cas échéant. CmdSketcherSplit - + Split edge Diviser une arête - + Splits an edge into two while preserving constraints Diviser une arête en deux tout en préservant les contraintes @@ -1474,12 +1474,12 @@ Cela effacera la propriété "Support", le cas échéant. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activer/désactiver les contraintes - + Activates or deactivates the selected constraints Activer/désactiver les contraintes sélectionnées @@ -1500,12 +1500,12 @@ Cela effacera la propriété "Support", le cas échéant. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Activer/désactiver les contraintes pilotantes/pilotées - + Set the toolbar, or the selected constraints, into driving or reference mode Activer/désactiver la barre d'outils, ou les contraintes sélectionnées, @@ -1515,12 +1515,12 @@ en mode pilotant ou piloté CmdSketcherTrimming - + Trim edge Ajuster une arête - + Trim an edge with respect to the picked position Ajuster une arête par rapport à la position sélectionnée. @@ -1579,79 +1579,79 @@ les contraintes invalides, les géométries dégénérées, etc. Command - + Add 'Lock' constraint Ajouter la contrainte 'Verrouiller' - + Add relative 'Lock' constraint Ajouter une contrainte "fixe" relative - + Add fixed constraint Ajouter une contrainte fixe - + Add 'Block' constraint Ajouter une contrainte de blocage - + Add block constraint Ajouter une contrainte de blocage - - + + Add coincident constraint Ajouter une contrainte de coïncidence - - + + Add distance from horizontal axis constraint Ajouter une contrainte de distance par rapport à l'axe horizontal - - + + Add distance from vertical axis constraint Ajouter une contrainte de distance par rapport à l'axe vertical - - + + Add point to point distance constraint Ajouter une contrainte de distance entre points - - + + Add point to line Distance constraint Ajouter une contrainte de distance point à ligne - - + + Add circle to circle distance constraint Ajouter une contrainte de distance d'un cercle à un cercle - + Add circle to line distance constraint Ajouter une contrainte de distance d'un cercle à une ligne - - - - - - + + + + + + Add length constraint Ajouter une contrainte de longueur @@ -1674,8 +1674,8 @@ les contraintes invalides, les géométries dégénérées, etc. - - + + Add Distance constraint Ajouter une contrainte de distance @@ -1701,7 +1701,7 @@ les contraintes invalides, les géométries dégénérées, etc. - + Add Symmetry constraints Ajouter des contraintes de symétrie @@ -1712,220 +1712,220 @@ les contraintes invalides, les géométries dégénérées, etc. Ajouter des contraintes de distance - + Add Horizontal constraint Ajouter une contrainte horizontale - + Add Vertical constraint Ajouter une contrainte verticale - + Add Block constraint Ajouter une contrainte de blocage - + Add Angle constraint Ajouter une contrainte d'angle - - - - + + + + Add Equality constraint Ajouter une contrainte d'égalité - + Add Equality constraints Ajouter des contraintes d'égalité - - - + + + Add Radius constraint Ajouter une contrainte de rayon - - + + Add arc angle constraint Ajouter une contrainte d'angle d'arc - + Add concentric and length constraint Ajouter une contrainte concentrique et de longueur - + Add DistanceX constraint Ajouter une contrainte de distance en X - + Add DistanceY constraint Ajouter une contrainte de distance en Y - + Add point to circle Distance constraint Ajouter une contrainte de distance d'un point à un cercle - - + + Add point on object constraint Ajouter une contrainte point sur objet - - + + Add point to point horizontal distance constraint Ajouter une contrainte de distance horizontale point à point - + Add fixed x-coordinate constraint Ajouter une contrainte fixe de coordonnée X - - + + Add point to point vertical distance constraint Ajouter une contrainte de distance verticale point à point - + Add fixed y-coordinate constraint Ajouter une contrainte fixe de coordonnée Y - - + + Add parallel constraint Ajouter une contrainte parallèle - - - - - - - + + + + + + + Add perpendicular constraint Ajouter une contrainte perpendiculaire - + Add perpendicularity constraint Ajouter une contrainte de perpendicularité - + Swap coincident+tangency with ptp tangency Permuter coincidence+tangence avec une tangente sommet/sommet - + Swap PointOnObject+tangency with point to curve tangency Échanger Point sur objet + tangence pour Point à courbe + tangence - - - - - - - + + + + + + + Add tangent constraint Ajouter une contrainte de tangence - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Ajouter un point de contrainte de tangence - - - - + + + + Add radius constraint Contraindre le rayon - - - - + + + + Add diameter constraint Contraindre le diamètre - - - - + + + + Add radiam constraint Ajouter une contrainte de rayon/diamètre - - - - + + + + Add angle constraint Ajouter une contrainte d'angle - - + + Add equality constraint Ajouter une contrainte d'égalité - - - - - + + + + + Add symmetric constraint Ajouter une contrainte de symétrie - + Add Snell's law constraint Ajouter une contrainte de loi de Snell - + Toggle constraint to driving/reference Activer/désactiver les contraintes pilotantes/pilotées - + Activate/Deactivate constraint Activer/désactiver les contraintes @@ -2010,7 +2010,7 @@ les contraintes invalides, les géométries dégénérées, etc. Ajouter un arc d'ellipse à l'esquisse - + Add sketch arc of hyperbola Ajouter un arc d'hyperbole à l'esquisse @@ -2154,8 +2154,8 @@ les contraintes invalides, les géométries dégénérées, etc. Mettre à jour l'espace virtuel de la contrainte - + Add auto constraints Ajouter des contraintes automatiques @@ -2180,12 +2180,12 @@ les contraintes invalides, les géométries dégénérées, etc. Faire glisser la Courbe - + Drag Constraint Faire glisser la Contrainte - + Modify sketch constraints Modifier les contraintes d'esquisse @@ -2227,7 +2227,7 @@ les contraintes invalides, les géométries dégénérées, etc. Translate geometries - Translate geometries + Translater les géométries @@ -2276,59 +2276,59 @@ les contraintes invalides, les géométries dégénérées, etc. Erreur de contrainte automatique : esquisse insoluble après l'application des contraintes d'égalité. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. L'intersection des courbes n'a pas pu être trouvée. Essayez d’ajouter une contrainte de coïncidence entre les sommets des courbes sur lesquels vous souhaitez appliquer un congé. - - + + BSpline Geometry Index (GeoID) is out of bounds. L'index de la géométrie de la B-spline (GeoID) est est en dehors des limites. - + You are requesting no change in knot multiplicity. Vous ne demandez aucun changement dans la multiplicité du nœud. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. L’Index de la géométrie (GeoID) fourni n’est pas une courbe B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. L’index du nœud est hors limites. Notez que, conformément à la notation OCC, le premier nœud a un indice de 1 et non pas de zéro. - + The multiplicity cannot be increased beyond the degree of the B-spline. La multiplicité ne peut pas être augmentée au-delà du degré de la B-spline. - + The multiplicity cannot be decreased beyond zero. La multiplicité ne peut pas être diminuée au-delà de zéro. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC ne parvient pas à diminuer la multiplicité selon la tolérance maximale. - + Knot cannot have zero multiplicity. Le nœud ne peut pas avoir une multiplicité nulle. - + Knot multiplicity cannot be higher than the degree of the BSpline. La multiplicité des nœuds ne peut être supérieure au degré de la B-spline. - + Knot cannot be inserted outside the BSpline parameter range. Le nœud ne peut pas être inséré en dehors de la plage de paramètres de la B-spline. @@ -2408,127 +2408,11 @@ les contraintes invalides, les géométries dégénérées, etc. Ne pas attacher + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2538,6 +2422,125 @@ les contraintes invalides, les géométries dégénérées, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2555,9 +2558,6 @@ les contraintes invalides, les géométries dégénérées, etc. - - - Wrong selection Sélection incorrecte @@ -2610,106 +2610,106 @@ les contraintes invalides, les géométries dégénérées, etc. Une des sélections doit être sur l'esquisse. - + Select an edge from the sketch. Sélectionnez une arête de l'esquisse. - - - - - - + + + + + + Impossible constraint Contrainte impossible - - + + The selected edge is not a line segment. L'arête sélectionnée n'est pas un segment de ligne. - - - + + + Double constraint Double contrainte - + The selected edge already has a horizontal constraint! L’arête sélectionnée possède déjà une contrainte horizontale ! - + The selected edge already has a vertical constraint! L’arête sélectionnée possède déjà une contrainte verticale ! - - - + + + The selected edge already has a Block constraint! L’arête sélectionnée possède déjà une contrainte de blocage ! - + There are more than one fixed points selected. Select a maximum of one fixed point! Plus d'un point fixe est sélectionné. Sélectionner au maximum un point fixe ! - - - + + + Select vertices from the sketch. Sélectionner des sommets de l’esquisse. - + Select one vertex from the sketch other than the origin. Sélectionner un sommet de l'esquisse autre que l'origine. - + Select only vertices from the sketch. The last selected vertex may be the origin. Sélectionner uniquement des sommets de l’esquisse. Le dernier sommet sélectionné peut être l’origine. - + Wrong solver status Erreur de statut du solveur - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Une contrainte de blocage ne peut pas être ajoutée si l'esquisse n'est pas résolue ou s'il y a des contraintes redondantes ou conflictuelles. - + Select one edge from the sketch. Sélectionnez une arête de l’esquisse. - + Select only edges from the sketch. Sélectionnez uniquement des arêtes de l'esquisse. - + Only tangent-via-point is supported with a B-spline. Seul le mode tangent-via-point est supporté avec une B-spline. - + Number of selected objects is not 3 Le nombre d'objets sélectionnés n'est pas 3 - + Error Erreur @@ -2719,80 +2719,80 @@ les contraintes invalides, les géométries dégénérées, etc. Erreur inattendue. Plus d'informations peuvent être disponibles dans la Vue rapport. - + The selected item(s) can't accept a horizontal or vertical constraint! Le(s) élément(s) sélectionné(s) n'accepte(nt) pas de contrainte horizontale ou verticale ! - + Endpoint to endpoint tangency was applied instead. Une contrainte de tangence entre points d'extrémité a été créée à la place. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Sélectionner deux sommets ou plus de l’esquisse pour une contrainte de coïncidence, ou deux ou plusieurs cercles, ellipses, arcs ou arcs d’ellipse pour une contrainte concentrique. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Sélectionner deux sommets de l'esquisse pour une contrainte de coïncidence, ou deux cercles, ellipses, arcs ou arcs d'ellipse pour une contrainte concentrique. - + Select exactly one line or one point and one line or two points from the sketch. Sélectionnez soit une seule ligne, ou un point et une ligne, ou deux points de l'esquisse. - + Cannot add a length constraint on an axis! Impossible d'ajouter une contrainte de longueur sur un axe ! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Sélectionner exactement une ligne ou un point et une ligne ou deux points ou deux cercles de l'esquisse. - + This constraint does not make sense for non-linear curves. Cette contrainte n'a pas de sens pour les courbes non linéaires. - + Endpoint to edge tangency was applied instead. Une tangence entre le point d'extrémité et l'arête a été appliquée à la place. - - - - - - + + + + + + Select the right things from the sketch. Sélectionner les bons éléments de l'esquisse. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Sélectionner une arête qui ne représente pas un poids d'une B-Spline. @@ -2802,92 +2802,92 @@ les contraintes invalides, les géométries dégénérées, etc. Un ou deux points sur le(s) contrainte(s) des objets ont été supprimés, la dernière contrainte appliquée en interne s'applique également point sur objet. - + Select either several points, or several conics for concentricity. Sélectionner plusieurs points ou plusieurs coniques pour la concentricité. - + Select either one point and several curves, or one curve and several points Sélectionner soit un point et plusieurs courbes, soit une courbe et plusieurs points. - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Sélectionner soit un point et plusieurs courbes, soit une courbe et plusieurs points pour une contrainte de point sur objet, soit plusieurs points pour la contrainte de coïncidence, soit plusieurs coniques pour la concentricité. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Aucun des points sélectionnés n'a été contraint aux courbes respectives, soit parce que ce sont des parties du même élément, soit parce qu'ils sont tous deux de la géométrie externe, soit parce que la ligne n'est pas éligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Aucun des points sélectionnés n'ont été contraints aux courbes respectives, soit parce qu'ils font partie du même élément, soit parce qu'ils font tous partie de géométries externes. - + Cannot add a length constraint on this selection! Impossible d'ajouter une contrainte de longueur à cette sélection ! - - - - + + + + Select exactly one line or up to two points from the sketch. Sélectionner soit une seule ligne soit jusqu'à deux points de l'esquisse. - + Cannot add a horizontal length constraint on an axis! Impossible d'ajouter une contrainte de longueur horizontale sur un axe ! - + Cannot add a fixed x-coordinate constraint on the origin point! Impossible d'ajouter une contrainte fixe de coordonnée x sur le point d'origine ! - - + + This constraint only makes sense on a line segment or a pair of points. Cette contrainte n’a de sens que sur un segment de ligne ou une paire de points. - + Cannot add a vertical length constraint on an axis! Impossible d'ajouter une contrainte de longueur verticale sur un axe ! - + Cannot add a fixed y-coordinate constraint on the origin point! Impossible d'ajouter une contrainte fixe de coordonnée y sur le point d'origine ! - + Select two or more lines from the sketch. Sélectionnez au moins deux lignes de l'esquisse. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Une arête sélectionnée n'est pas une ligne valide. - - + + Select at least two lines from the sketch. Sélectionner au moins deux lignes de l'esquisse. - + The selected edge is not a valid line. L'arête sélectionnée n'est pas une ligne valide. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2897,35 +2897,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; deux points d'extrémités ; deux courbes et un point. - + Select some geometry from the sketch. perpendicular constraint Sélectionner une géométrie de l'esquisse. - - + + Cannot add a perpendicularity constraint at an unconnected point! Impossible d'ajouter une contrainte de perpendicularité sur un point non connecté ! - - + + One of the selected edges should be a line. Une des arêtes sélectionnées doit être une ligne. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Une contrainte de tangence entre points d'extrémité a été créée. La contrainte de coïncidence a été supprimée. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Une contrainte de tangence entre point d'extrémité et arête a été créée. La contrainte point sur objet a été supprimée. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2935,67 +2935,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; deux points d'extrémités ; deux courbes et un point. - + Select some geometry from the sketch. tangent constraint Sélectionner une géométrie de l'esquisse. - - - + + + Cannot add a tangency constraint at an unconnected point! Impossible d'ajouter une contrainte de tangence à un point non connecté ! - - + + Tangent constraint at B-spline knot is only supported with lines! La contrainte de tangente au nœud de la B-spline n'est pris en charge que par des lignes ! - + B-spline knot to endpoint tangency was applied instead. Une tangence entre le noeud de la B-spline et le dernier point a été appliquée à la place. - - + + Wrong number of selected objects! Nombre d'objets sélectionnés erroné ! - - + + With 3 objects, there must be 2 curves and 1 point. Pour une sélection de 3 objets, il doit y avoir 2 courbes et 1 point. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Sélectionnez un ou plusieurs arcs ou cercles dans l'esquisse. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Sélectionner soit un ou plusieurs pôles B-Spline ou un ou plusieurs arcs ou cercles de l'esquisse, mais pas mélangés. - - - + + + Constraint only applies to arcs or circles. Contrainte applicable qu’aux arcs ou cercles. - - + + Select one or two lines from the sketch. Or select two edges and a point. Sélectionnez une ou deux lignes dans l'esquisse. Ou sélectionnez deux arêtes et un point. @@ -3010,88 +3010,88 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d Une contrainte angulaire ne peut pas être appliquée à deux lignes parallèles. - + Cannot add an angle constraint on an axis! Impossible d'ajouter une contrainte angulaire sur un axe ! - + Select two edges from the sketch. Sélectionnez deux arêtes de l'esquisse. - + Select two or more compatible edges. Sélectionner deux arêtes compatibles ou plus. - + Sketch axes cannot be used in equality constraints. Les axes de l'esquisse ne peuvent pas être utilisés comme des contraintes d'alignement interne. - + Equality for B-spline edge currently unsupported. L'égalité pour l'arête de la B-spline n'est pas prise en charge pour l'instant. - - - - + + + + Select two or more edges of similar type. Sélectionner deux arêtes de type similaire ou plus. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Sélectionnez deux points et une ligne de symétrie, deux points et un point de symétrie, ou une ligne et un point de symétrie dans l'esquisse. - - + + Cannot add a symmetry constraint between a line and its end points. Impossible d'ajouter une contrainte de symétrie entre une ligne et ses extrémités. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Impossible d'ajouter une contrainte de symétrie entre une ligne et ses points d'extrémité ! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Sélectionner deux extrémités de lignes pour agir comme des rayons, et une arête qui représente une limite. Le premier point sélectionné correspond à l'indice n1, le deuxième à n2, et la valeur définit la rapport n2/n1. - + Selected objects are not just geometry from one sketch. Les objets sélectionnés ne sont pas seulement des géométries de l'esquisse. - + Cannot create constraint with external geometry only. Impossible de créer une contrainte avec uniquement une géométrie externe. - + Incompatible geometry is selected. La géométrie sélectionnée est incompatible. - - - - - + + + + + Select constraints from the sketch. Sélectionner les contraintes de l'esquisse. @@ -3113,9 +3113,9 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d Définir le degré de la B-spline, entre 1 et %1 : + - CAD Kernel Error Erreur du noyau de CAO @@ -3258,14 +3258,14 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d La suppression de l'alignement des axes nécessite au moins un élément géométrique non externe sélectionné - - + + Unsupported visual layer operation L'opération de calque visuel n'est pas prise en charge - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Il n'est pas possible pour l'instant de déplacer une géométrie externe vers une autre calque visuel. La géométrie externe sera omise. @@ -3339,7 +3339,7 @@ Voir la documentation pour plus de détails. Translate parameters - Translate parameters + Translater les paramètres @@ -3651,12 +3651,12 @@ Voir la documentation pour plus de détails. Longueur : - + Refractive index ratio Ratio de l'indice de réfraction - + Ratio n2/n1: Ratio n2/n1 : @@ -3664,72 +3664,72 @@ Voir la documentation pour plus de détails. SketcherGui::ElementFilterList - + Normal Normal - + Construction Géométrie de construction  - + Internal Géométrie interne - + External Géométrie externe - + All types Tous les types - + Point Point - + Line Ligne - + Circle Cercle - + Ellipse Ellipse - + Arc of circle Arc de cercle - + Arc of ellipse Arc d’ellipse - + Arc of hyperbola Arc d'hyperbole - + Arc of parabola Arc de parabole - + B-Spline B-spline @@ -3852,27 +3852,27 @@ Voir la documentation pour plus de détails. Sélectionner l'axe vertical - + Layer Calque - + Layer 0 Calque 0 - + Layer 1 Calque 1 - + Hidden Caché - + Delete Supprimer @@ -4076,7 +4076,7 @@ reflected on copies Number of sides: - Number of sides: + Nombre de côtés : @@ -4748,120 +4748,120 @@ la liste ci-dessous) Réglages - - - - - - - - - - + + + + + + + + + + Construction - Construction + Géométrie de construction  - + Elements Éléments - - - - + + + + Point Point - - - - - - - - - - + + + + + + + + + + Internal Géométrie interne - - - - + + + + Line Ligne - - - - + + + + Arc Arc - - - - + + + + Circle Cercle - - - - + + + + Ellipse Ellipse - - - - + + + + Elliptical Arc Arc elliptique - - - - + + + + Hyperbolic Arc Arc hyperbolique - - - - + + + + Parabolic Arc Arc parabolique - - - - + + + + BSpline B-spline - - - - + + + + Other Autre - + Extended information Informations étendues @@ -5082,112 +5082,112 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. SketcherGui::ViewProviderSketch - + Edit sketch Modifier une esquisse - + A dialog is already open in the task panel Une boîte de dialogue est déjà ouverte dans le panneau des tâches - + Do you want to close this dialog? Voulez-vous fermer cette boîte de dialogue? - + Invalid sketch Esquisse non valide - + Do you want to open the sketch validation tool? Voulez-vous ouvrir l'outil de validation d'esquisse ? - + The sketch is invalid and cannot be edited. L'esquisse n'est pas valide et ne peut pas être éditée. - + Please remove the following constraint: Veuillez supprimer la contrainte suivante : - + Please remove at least one of the following constraints: Veuillez supprimer au moins une des contraintes suivantes : - + Please remove the following redundant constraint: Veuillez supprimer la contrainte redondante suivante : - + Please remove the following redundant constraints: Veuillez supprimer les contraintes redondantes suivantes : - + The following constraint is partially redundant: La contrainte suivante est partiellement redondante : - + The following constraints are partially redundant: Les contraintes suivantes sont partiellement redondantes : - + Please remove the following malformed constraint: Veuillez supprimer la contrainte malformée suivante : - + Please remove the following malformed constraints: Veuillez supprimer les contraintes malformées suivantes : - + Empty sketch Esquisse vide - + Over-constrained: L'esquisse comporte trop de contraintes : - + Malformed constraints: Contraintes mal formées : - + Redundant constraints: Contraintes redondantes : - + Partially redundant: Contraintes partiellement redondantes : - + Solver failed to converge Le solveur n'a pas pu converger - + Under constrained: L'esquisse manque de contraintes : - + %n DoF(s) %n Degré(s) de liberté @@ -5195,7 +5195,7 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. - + Fully constrained Esquisse entièrement contrainte @@ -5293,8 +5293,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixer le diamètre d'un cercle ou d'un arc @@ -5302,8 +5302,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fixer le rayon/diamètre d'un arc ou d'un cercle @@ -5311,8 +5311,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixer le rayon d'un cercle ou d'un arc @@ -5326,70 +5326,25 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse.Créer une copie simple de la géométrie en prenant comme référence le dernier point sélectionné - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Créer un arc par ses extrémités et un point sur l'arc - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Créer un cercle par 3 points - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Créer un arc par son centre et ses extrémités - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Créer un arc d'ellipse par son centre, le grand axe et les extrémités - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Créer un arc d’hyperbole par son centre, son grand axe et ses points d'extrémités - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Créer un arc de parabole par son foyer, son sommet, ses points d'extrémités - - Sketcher_CreateBSpline - + B-spline by control points B-spline par points de contrôle - - + + Create a B-spline by control points Créer une B-spline par points de contrôle @@ -5397,35 +5352,17 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Créer un cercle par son centre et par un point sur le périmètre - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Créer une ellipse avec le périapse, l'apoapse et le petit rayon - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Créer une ellipse par son centre, le grand rayon et un point - - Sketcher_CreateFillet - - + + Creates a radius between two lines Créer un congé entre deux lignes @@ -5433,8 +5370,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Créer un heptagone avec son centre et un sommet @@ -5442,8 +5379,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Créer un hexagone avec son centre et un sommet @@ -5459,14 +5396,14 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Créer un octogone avec son centre et un sommet + - Create a regular polygon by its center and by one corner Créer un polygone régulier par son centre et un sommet @@ -5474,8 +5411,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Créer un pentagone avec son centre et un sommet @@ -5483,8 +5420,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Congé qui préserve les contraintes et le point d'intersection @@ -5508,8 +5445,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreateSquare + - Create a square by its center and by one corner Créer un carré avec son centre et un sommet @@ -5517,8 +5454,8 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Créer un triangle équilatéral avec son centre et un sommet @@ -5526,13 +5463,13 @@ Cela est fait en analysant les géométries et les contraintes de l'esquisse. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline périodique par points de contrôle ou pôles + - Create a periodic B-spline by control points Créer une B-spline périodique par points de contrôle @@ -5931,7 +5868,7 @@ L'algorithme Eigen Sparse QR est optimisé pour les matrices peu denses, génér ViewProviderSketch - + and %1 more et %1 de plus @@ -6154,46 +6091,46 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p L'esquisse a des contraintes partiellement redondantes ! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Les paraboles ont été migrées. Les fichiers migrés ne pourront pas être ouverts par les versions précédentes de FreeCAD !! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Erreur @@ -6229,16 +6166,16 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p La contrainte a des informations d'index non valides et est mal formée. + + + - - - - - + + Invalid Constraint @@ -6255,12 +6192,12 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p Impossible d'ajouter un arc d'ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Impossible de créer un arc d'hyperbole à partir d'angles invalides, essayez à nouveau ! - + Cannot create arc of hyperbola Impossible de créer un arc d'hyperbole @@ -6280,8 +6217,8 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p Erreur lors de la création d'un pôle de B-spline - + Error creating B-spline Erreur lors de la création d'une B-spline @@ -6337,17 +6274,17 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p Impossible d'ajouter une ligne - - - - - - - + + + + + + + Tool execution aborted L'exécution de l'outil a été interrompue @@ -6382,9 +6319,9 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p Impossible d'ajuster une arête - + Value Error Erreur de valeur @@ -6441,19 +6378,19 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p Failed to translate - Failed to translate + La translation a échoué. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline par des noeuds - - + + Create a B-spline by knots Créer une B-spline par des noeuds @@ -6461,13 +6398,13 @@ L'espacement de la grille est modifié s'il devient inférieur à ce nombre de p Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots B-spline périodique par des noeuds + - Create a periodic B-spline by knots Créer une B-spline périodique par des noeuds @@ -6573,12 +6510,12 @@ Les points doivent être placés à moins d'un cinquième de l'espacement de la CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Créer une B-spline par des noeuds - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Créer une B-spline par des noeuds, c'est-à-dire par interpolation, dans l'esquisse. @@ -6586,12 +6523,12 @@ Les points doivent être placés à moins d'un cinquième de l'espacement de la CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Créer une B-spline périodique par des noeuds - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Créer une B-spline périodique par des noeuds, c'est-à-dire par interpolation, dans l'esquisse. @@ -6599,12 +6536,12 @@ Les points doivent être placés à moins d'un cinquième de l'espacement de la CmdSketcherDimension - + Dimension Dimension - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6644,12 +6581,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. CmdSketcherConstrainRadius - + Constrain radius Contrainte de rayon - + Fix the radius of a circle or an arc Fixer le rayon d'un cercle ou d'un arc @@ -6824,8 +6761,8 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. - Create two rectangles, one in the other with a constant thickness. - Créer deux rectangles, l'un dans l'autre avec un espace constant. + Create two rectangles with a constant offset. + Créer deux rectangles avec un décalage constant @@ -6839,12 +6776,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Contrainte horizontale/verticale - + Constrains a single line to either horizontal or vertical. Contraindre une seule ligne à être horizontale ou verticale. @@ -6852,12 +6789,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. CmdSketcherConstrainHorVer - + Horizontal/Vertical Contrainte horizontale/verticale - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Contraindre une seule ligne à être horizontale ou verticale, selon ce qui est le plus proche de l'alignement en cours. @@ -6865,12 +6802,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. CmdSketcherCompCurveEdition - + Curve Edition Édition d'une courbe - + Curve Edition tools. Outils d'édition d'une courbe @@ -6878,12 +6815,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. CmdSketcherCompSlot - + Slots Rainures - + Slot tools. Outils des rainures @@ -6891,12 +6828,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. CmdSketcherCreateArcSlot - + Create arc slot Rainure en arc - + Create an arc slot in the sketch Créer une rainure en arc dans l'esquisse @@ -6904,12 +6841,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. CmdSketcherConstrainCoincidentUnified - + Constrain coincident Contrainte de coïncidence - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Créer une contrainte de coïncidence entre des points, ou fixe un point sur une arête, ou créer une contrainte concentrique entre des cercles, des arcs et des ellipses. @@ -7295,12 +7232,12 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. Array transform - Array transform + Dupliquer en matrice Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Translater les géométries sélectionnées et permettre la création de copies i * j. @@ -7313,7 +7250,7 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. - This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. + Cela concerne les contraintes du point de référence, comme les distances. Si vous activez Cloner, l'outil copiera les données, sinon, il essaiera de les remplacer par des égalités entre les géométries initiales et les nouvelles copies. @@ -7321,7 +7258,7 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. Copies (+'U'/-'J') - Copies (+'U'/-'J') + Nombre de copies (+ U / - J) @@ -7329,7 +7266,70 @@ Cliquez avec le bouton droit ou appuyez sur Échap pour annuler. Rows (+'R'/-'F') - Rows (+'R'/-'F') + Nombre de rangées (+ R / - F) + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Créer un arc par son centre et par ses extrémités + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Créer un arc par ses extrémités et un point le long de l'arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Créer une ellipse par son centre, un de ses rayons et un point du bord + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Créer une ellipse par les extrémités d'un de ses axes et un point du bord + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Créer un arc d'ellipse par son centre, un de ses rayons et ses extrémités + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Créer un arc d'hyperbole par son centre, son sommet et ses extrémités + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Créer un arc de parabole par son foyer, son sommet et ses extrémités diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts index f0f6c8191c..ed71b04eb1 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Constrinxir arco ou círculo - + Constrain an arc or a circle Constrinxir un arco ou un círculo - + Constrain radius Constrinxir raio - + Constrain diameter Constrixir diámetro - + Constrain auto radius/diameter Constrain auto radius/diameter @@ -180,24 +180,24 @@ - Center and end points - Centro e puntos finais + Center and endpoints + Center and endpoints - - End points and rim point - Puntos finais e punto de bordo + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Facer B-spline - + Create a B-spline in the sketch Fai unha B-spline no esbozo @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Facer círculo - + Create a circle in the sketcher Fai un círculo no esbozo - + Center and rim point Centro e punto de bordo - + 3 rim points 3 puntos de bordo @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Fai unha cónica no esbozo - - Ellipse by center, major radius, point - Elipse mediante centro, raio maior e punto + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arco de elipse mediante centro, raio maior e cabos + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arco de hipérbole mediante centro, raio maior e cabos + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Arco de parábola mediante focos, vértice e cabos @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Facer chafrán - + Create a fillet between two lines Create a fillet between two lines - + Sketch fillet Sketch fillet - - Constraint-preserving sketch fillet - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Facer un polígono regular - + Create a regular polygon in the sketcher Crea un polígono regular no esbozo - + Triangle Triángulo - + Square Cadrado - + Pentagon Pentágono - + Hexagon Hexágono - + Heptagon Heptágono - + Octagon Octógono - + Regular polygon Polígono regular @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Constrinxir o ángulo - + Fix the angle of a line or the angle between two lines Fixar o ángulo dunha liña ou o ángulo entre dúas liñas @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Constrain block - + Block the selected edge from moving Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Constrinxir coincidentes - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Constrixir diámetro - + Fix the diameter of a circle or an arc Fixa o diámetro dun círculo ou arco @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Constrinxir a distancia - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Fixar a distancia horizontal entre dous puntos ou os cabos dunha liña @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Fixar a distancia vertical entre dous puntos ou os cabos dunha liña @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Constrinxir a igualdade - + Create an equality constraint between two lines or between circles and arcs Fai unha constrición de igualdade entre dúas liñas ou entre círculos e arcos @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Constrinxir horizontalmente - + Create a horizontal constraint on the selected item Fai unha constrición horizontal nos elementos escolmados @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Constrición fixa - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Constrinxir o paralelismo - + Create a parallel constraint between two lines Fai unha constrición de paralelismo entre dúas liñas @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Constrinxir a perpendicularidade - + Create a perpendicular constraint between two lines Fai unha constrición de perpendicularidade entre dúas liñas @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Constrinxir un punto a un obxecto - + Fix a point onto an object Fixa un punto a un obxecto @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Constrain auto radius/diameter - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Constrinxir a simetría - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -602,12 +602,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Constrinxir a tanxencia - + Create a tangent constraint between two entities Fai unha constrición de tanxencia entre dúas entidades @@ -615,12 +615,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Constrinxir verticalmente - + Create a vertical constraint on the selected item Fai unha constrición vertical nos elementos escolmados @@ -667,12 +667,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Facer un círculo mediante tres puntos - + Create a circle by 3 perimeter points Facer un círculo mediante tres puntos no perímetro @@ -693,12 +693,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Fai unha liña de construción no esbozo @@ -706,12 +706,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Fai un arco de hipérbole no esbozo @@ -719,12 +719,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Fai un arco de parábola no esbozo @@ -732,12 +732,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Facer B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Facer círculo - + Create a circle in the sketch Fai un círculo no esbozo @@ -758,12 +758,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Facer elipse mediante 3 puntos - + Create an ellipse by 3 points in the sketch Fai unha elipse mediante 3 puntos no esbozo @@ -771,12 +771,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Facer elipse mediante centro - + Create an ellipse by center in the sketch Fai unha elipse mediante centro no esbozo @@ -784,12 +784,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Facer chafrán - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Facer un heptágono - + Create a heptagon in the sketch Fai un heptágono no esbozo @@ -810,12 +810,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Facer un hexágono - + Create a hexagon in the sketch Fai un hexágono no esbozo @@ -849,12 +849,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Facer un octógono - + Create an octagon in the sketch Fai un octógono no esbozo @@ -862,12 +862,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Facer un pentágono - + Create a pentagon in the sketch Fai un pentágono no esbozo @@ -875,12 +875,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Facer unha B-spline periódica - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Facer un punto - + Create a point in the sketch Fai un punto no esbozo @@ -901,12 +901,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Create corner-preserving fillet - + Fillet that preserves intersection point and most constraints Fillet that preserves intersection point and most constraints @@ -953,12 +953,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Facer un polígono regular - + Create a regular polygon in the sketch Crea un polígono regular nun esbozo @@ -966,12 +966,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Facer unha rañura - + Create a slot in the sketch Fai unha rañura no esbozo @@ -979,12 +979,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Facer cadrado - + Create a square in the sketch Fai un cadrado no esbozo @@ -992,12 +992,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Facer un triángulo equilátero - + Create an equilateral triangle in the sketch Fai un triángulo equilátero no esbozo @@ -1070,12 +1070,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Estendido - + Extend an edge with respect to the picked position Extender un borde con respecto á posición escolmada @@ -1083,12 +1083,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Facer unha aresta ligada a unha xeometría externa @@ -1427,12 +1427,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Split edge - + Splits an edge into two while preserving constraints Splits an edge into two while preserving constraints @@ -1479,12 +1479,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1505,12 +1505,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Toggle driving/reference constraint - + Set the toolbar, or the selected constraints, into driving or reference mode Set the toolbar, or the selected constraints, @@ -1520,12 +1520,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Tallar aresta - + Trim an edge with respect to the picked position Tallar unha aresta na parte escollida hasta o/s próximo/s cruzamento/s @@ -1584,79 +1584,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Add 'Lock' constraint - + Add relative 'Lock' constraint Add relative 'Lock' constraint - + Add fixed constraint Add fixed constraint - + Add 'Block' constraint Add 'Block' constraint - + Add block constraint Add block constraint - - + + Add coincident constraint Add coincident constraint - - + + Add distance from horizontal axis constraint Add distance from horizontal axis constraint - - + + Add distance from vertical axis constraint Add distance from vertical axis constraint - - + + Add point to point distance constraint Add point to point distance constraint - - + + Add point to line Distance constraint Add point to line Distance constraint - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Add length constraint @@ -1679,8 +1679,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Add Distance constraint @@ -1706,7 +1706,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1717,220 +1717,220 @@ invalid constraints, degenerated geometry, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Add point on object constraint - - + + Add point to point horizontal distance constraint Add point to point horizontal distance constraint - + Add fixed x-coordinate constraint Add fixed x-coordinate constraint - - + + Add point to point vertical distance constraint Add point to point vertical distance constraint - + Add fixed y-coordinate constraint Add fixed y-coordinate constraint - - + + Add parallel constraint Add parallel constraint - - - - - - - + + + + + + + Add perpendicular constraint Add perpendicular constraint - + Add perpendicularity constraint Add perpendicularity constraint - + Swap coincident+tangency with ptp tangency Swap coincident+tangency with ptp tangency - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint Add tangent constraint - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Add tangent constraint point - - - - + + + + Add radius constraint Add radius constraint - - - - + + + + Add diameter constraint Add diameter constraint - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint Add angle constraint - - + + Add equality constraint Add equality constraint - - - - - + + + + + Add symmetric constraint Add symmetric constraint - + Add Snell's law constraint Add Snell's law constraint - + Toggle constraint to driving/reference Toggle constraint to driving/reference - + Activate/Deactivate constraint Activate/Deactivate constraint @@ -2015,7 +2015,7 @@ invalid constraints, degenerated geometry, etc. Add sketch arc of ellipse - + Add sketch arc of hyperbola Add sketch arc of hyperbola @@ -2159,8 +2159,8 @@ invalid constraints, degenerated geometry, etc. Update constraint's virtual space - + Add auto constraints Add auto constraints @@ -2185,12 +2185,12 @@ invalid constraints, degenerated geometry, etc. Drag Curve - + Drag Constraint Drag Constraint - + Modify sketch constraints Modify sketch constraints @@ -2281,59 +2281,59 @@ invalid constraints, degenerated geometry, etc. Erro auto constrición: esbozo sen solución despois de aplicar constricións de igualdade. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Non se pode adiviñar a intersección de curvas. Tenta engadir unha constrición entre os vértices das curvas que queres achaflanar. - - + + BSpline Geometry Index (GeoID) is out of bounds. A xeometría BSpline de Index (GeoID) está fora da construción. - + You are requesting no change in knot multiplicity. Vostede está solicitando sen troco en multiplicidade de nodo. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. A Xeometría Index (Geold) proporcionada non é unha curva BSpline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. O índice de nodo está fora dos límites. Note que según en concordancia coa notación da OCC, o primeiro nodo ten índice 1 e non 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. A multiplicidade non pode incrementada máis alá do grao da BSpline. - + The multiplicity cannot be decreased beyond zero. A multiplicidade non pode ser diminuida máis alá de cero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC non é quen de diminuir a multiplicidade dentro da tolerancia máxima. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2413,127 +2413,11 @@ invalid constraints, degenerated geometry, etc. Non xuntar + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Escolma errada @@ -2615,106 +2615,106 @@ invalid constraints, degenerated geometry, etc. One of the selected has to be on the sketch. - + Select an edge from the sketch. Escolme unha aresta do esbozo. - - - - - - + + + + + + Impossible constraint Imposible constrinxir - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Dobre constrición - + The selected edge already has a horizontal constraint! A bordo escolmado xa ten unha constrición horizontal! - + The selected edge already has a vertical constraint! A bordo escolmado xa ten unha constrición vertical! - - - + + + The selected edge already has a Block constraint! O bordo escolmado xa ten constrición de Bloque! - + There are more than one fixed points selected. Select a maximum of one fixed point! Hai máis dun punto fixo escolmado. Escolma un máximo dun punto fixo! - - - + + + Select vertices from the sketch. Escolmar vértices do esbozo. - + Select one vertex from the sketch other than the origin. Escolme un vértice do esbozo distinto da orixe. - + Select only vertices from the sketch. The last selected vertex may be the origin. Escolma só vértices do croquis. O último vértice escolmado pode ser a orixe. - + Wrong solver status Erro no estado do resolvedor - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. - + Select one edge from the sketch. Escolmado dun bordo dende o esbozo. - + Select only edges from the sketch. Escolmado só de bordos dende esbozos. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Erro @@ -2724,80 +2724,80 @@ invalid constraints, degenerated geometry, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. No seu lugar aplicouse a tanxencia de punto final ao punto final. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Escolme unicamente unha liña, unha liña mais un punto ou dous puntos do esbozo. - + Cannot add a length constraint on an axis! Non se pode engadir unha constrición de lonxitude nun eixo! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. Escolmar as cousas correctas do esbozo. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2807,92 +2807,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Ningún dos puntos escolmados foron limitados nas curvas respectivas, ben porque son partes dun mesmo elemento, ou ben porque os dous son de xeometría externa. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Escolme unicamente unha liña ou ata dous puntos do esbozo. - + Cannot add a horizontal length constraint on an axis! Non se pode engadir unha constrición de lonxitude horizontal nun eixo! - + Cannot add a fixed x-coordinate constraint on the origin point! Non se pode engadir unha constrición de coordenada X no punto de orixe! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Non se pode engadir unha constrición de lonxitude vertical nun eixo! - + Cannot add a fixed y-coordinate constraint on the origin point! Non se pode engadir unha constrición de coordenada Y no punto de orixe! - + Select two or more lines from the sketch. Escolmar dúas ou máis liñas do esbozo. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Escolmar polo menos dúas liñas do esbozo. - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2901,35 +2901,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas curvas mais un punto. - + Select some geometry from the sketch. perpendicular constraint Escolme algunha xeometría do esbozo. - - + + Cannot add a perpendicularity constraint at an unconnected point! Non se pode engadir unha constrición de perpendicularidade nun punto non conectado! - - + + One of the selected edges should be a line. Unha das arestas escolmadas debe de ser unha liña. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Aplicouse a tanxencia de punto final a punto final. Borrouse a constrición coincidente. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas curvas mais un punto. - + Select some geometry from the sketch. tangent constraint Escolme algunha xeometría do esbozo. - - - + + + Cannot add a tangency constraint at an unconnected point! Non se pode engadir unha constrición de tanxencia nun punto non conectado! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Cantidade incorrecta de obxectos escolmados! - - + + With 3 objects, there must be 2 curves and 1 point. Con 3 obxectos, debe de haber 2 curvas e 1 punto. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Escolme un ou máis arcos ou círculos no esbozo. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. - - - + + + Constraint only applies to arcs or circles. Esta constrición só aplica a arcos ou círculos. - - + + Select one or two lines from the sketch. Or select two edges and a point. Escolme unha ou dúas liñas do esbozo. Ou escolme un punto e dúas arestas. @@ -3013,88 +3013,88 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Unha constrición de ángulo non pode ser establecida por dúas liñas paralelas. - + Cannot add an angle constraint on an axis! Non se pode engadir unha constrición angular nun eixo! - + Select two edges from the sketch. Escolme dúas arestas do esbozo. - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. Igualdade para arista de B-Spline non compatible polo momento. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Escolme dous puntos e unha liña de simetría, dous puntos e un punto de simetría ou unha liña e un punto de simetría do esbozo. - - + + Cannot add a symmetry constraint between a line and its end points. Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Non se pode engadir unha constrición de simetría entre unha liña e os seus puntos finais! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. - + Selected objects are not just geometry from one sketch. Os obxectos escolmados non son a xeometría dun esbozo unicamente. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. @@ -3116,9 +3116,9 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error Erro do Kernel CAD @@ -3261,14 +3261,14 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Removal of axes alignment requires at least one selected non-external geometric element - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3652,12 +3652,12 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Lonxitude: - + Refractive index ratio Índice de refracción - + Ratio n2/n1: Razón n2/n1: @@ -3665,72 +3665,72 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu SketcherGui::ElementFilterList - + Normal Normal - + Construction Construción - + Internal Internal - + External Externo - + All types All types - + Point Punto - + Line Liña - + Circle Círculo - + Ellipse Elipse - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3853,27 +3853,27 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Select Vertical Axis - + Layer Layer - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Hidden - + Delete Desbotar @@ -4749,120 +4749,120 @@ Pola contra, non se atoparon constricións ligadas os cabos. Axustes - - - - - - - - - - + + + + + + + + + + Construction Construción - + Elements Elementos - - - - + + + + Point Punto - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Liña - - - - + + + + Arc Arco - - - - + + + + Circle Círculo - - - - + + + + Ellipse Elipse - - - - + + + + Elliptical Arc Arco elíptico - - - - + + + + Hyperbolic Arc Arco hiperbólico - - - - + + + + Parabolic Arc Arco parabólico - - - - + + + + BSpline BSpline - - - - + + + + Other Outros - + Extended information Extended information @@ -5083,112 +5083,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Edit sketch - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch Esbozo non válido - + Do you want to open the sketch validation tool? Quere abrir a ferramenta de validación do esbozo? - + The sketch is invalid and cannot be edited. O esbozo non é válido e non se pode editar. - + Please remove the following constraint: Por favor, remova a seguinte constrición: - + Please remove at least one of the following constraints: Por favor, remova polo menos unha das seguintes constricións: - + Please remove the following redundant constraint: Por favor, remova a seguinte constrición redundante: - + Please remove the following redundant constraints: Por favor, remova a seguintes constricións redundantes: - + The following constraint is partially redundant: The following constraint is partially redundant: - + The following constraints are partially redundant: The following constraints are partially redundant: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch Esbozo baleiro - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) @@ -5196,7 +5196,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fully constrained @@ -5294,8 +5294,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixa o diámetro dun círculo ou arco @@ -5303,8 +5303,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fix the radius/diameter of a circle or an arc @@ -5312,8 +5312,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixa o raio dun círculo ou arco @@ -5327,70 +5327,25 @@ This is done by analyzing the sketch geometries and constraints. Fai unha simple copia da xeometría collendo como referencia o último punto escolmado - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Fai un arco mediante os seus puntos finais mais un punto calquera no arco - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Facer un círculo mediante 3 puntos no bordo - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Facer un arco mediante o centro mais os seus puntos finais - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints - - Sketcher_CreateBSpline - + B-spline by control points B-spline por puntos de control - - + + Create a B-spline by control points Crea unha B-spline por puntos de control @@ -5398,35 +5353,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Facer un círculo mediante o centro mais un punto no bordo - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Facer unha elipse mediante periapse, apoapse e raio menor - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Facer unha elipse mediante centro, raio maior e un punto - - Sketcher_CreateFillet - - + + Creates a radius between two lines Creates a radius between two lines @@ -5434,8 +5371,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Facer un heptágono mediante o seu centro mais un vértice @@ -5443,8 +5380,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Facer un hexágono mediante o seu centro mais un vértice @@ -5460,14 +5397,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Facer un octógono mediante o seu centro mais un vértice + - Create a regular polygon by its center and by one corner Crea un polígono regular polo seu centro e por un vértice @@ -5475,8 +5412,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Facer un pentágono mediante o seu centro mais un vértice @@ -5484,8 +5421,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Fillet that preserves constraints and intersection point @@ -5509,8 +5446,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Facer un cadrado mediante o seu centro mais un vértice @@ -5518,8 +5455,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Facer un triángulo equilátero mediante o seu centro mais un vértice @@ -5527,13 +5464,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periódica por puntos de control + - Create a periodic B-spline by control points Crea unha B-spline periódica por puntos de control @@ -5933,7 +5870,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more and %1 more @@ -6156,46 +6093,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Erro @@ -6231,16 +6168,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6257,12 +6194,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6282,8 +6219,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6339,17 +6276,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6384,9 +6321,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6449,13 +6386,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6463,13 +6400,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6575,12 +6512,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6588,12 +6525,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6601,12 +6538,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Acoutamento - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6644,12 +6581,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Constrinxir raio - + Fix the radius of a circle or an arc Fixa o raio dun círculo ou arco @@ -6824,8 +6761,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6839,12 +6776,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6852,12 +6789,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6865,12 +6802,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6878,12 +6815,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6891,12 +6828,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6904,12 +6841,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Constrinxir coincidentes - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7330,4 +7267,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts index add3ee880c..803ba4cd22 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts @@ -71,12 +71,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Napravi indigo kopiju - + Copy the geometry of another sketch Kopira geometriju druge skice @@ -130,27 +130,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Ograničiti luk ili krug - + Constrain an arc or a circle Ograniči luk ili krug - + Constrain radius Ograniči radijus - + Constrain diameter Ograniči promjer - + Constrain auto radius/diameter Ograničiti automatski polumjer/promjer @@ -182,24 +182,24 @@ - Center and end points - Centar i krajnje točke + Center and endpoints + Center and endpoints - - End points and rim point - Krajnje točke i rubna točka + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Stvaranje B-spline - + Create a B-spline in the sketch Stvaranje B-spline skice @@ -207,22 +207,22 @@ CmdSketcherCompCreateCircle - + Create circle Napravi krug - + Create a circle in the sketcher Stvaranje kruga u skici - + Center and rim point Centar i rubna točka - + 3 rim points 3 rubne točke @@ -230,37 +230,37 @@ CmdSketcherCompCreateConic - + Create conic Konstruiraj konus - + Create a conic in the sketch Stvaranje konusne krivulje u skici - - Ellipse by center, major radius, point - Elipsa od: točke centra, točaka glavnih radijusa + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Elipsa od periapsis, apoapsis, manjeg polumjera + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Luk elipse od centra, velikog radijusa, krajnje točke + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Luk hiperbole od centra, velikog radijusa, krajnje točke + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Luk parabole od fokusa, tjemene točke, krajnje točke @@ -268,24 +268,24 @@ CmdSketcherCompCreateFillets - + Create fillet Napravi obrub - + Create a fillet between two lines Stvori obrube između dvije linije - + Sketch fillet Skica obruba - - Constraint-preserving sketch fillet - Skica obruba za očuvanje ograničenja + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -319,47 +319,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Stvorite pravilan višekutnik - + Create a regular polygon in the sketcher Stvara pravilan višekutnik u crtaču - + Triangle Trokut - + Square Kvadrat - + Pentagon Peterokut - + Hexagon Šesterokut - + Heptagon Sedmerokut - + Octagon Osmerokut - + Regular polygon Pravilni višekutnik @@ -390,12 +390,12 @@ CmdSketcherConstrainAngle - + Constrain angle Ograniči kut - + Fix the angle of a line or the angle between two lines Fiksiraj kut linije ili kut između dvije linije @@ -403,12 +403,12 @@ CmdSketcherConstrainBlock - + Constrain block Blok ograničenja - + Block the selected edge from moving Blokira pomjeranje izabranog ruba @@ -416,12 +416,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Ograničiti zajedničko - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Stvorite koincidentno ograničenje između točaka ili koncentrično ograničenje između krugova, lukova i elipsa @@ -429,12 +429,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Ograniči promjer - + Fix the diameter of a circle or an arc Popravi promjer kruga ili luka @@ -442,12 +442,12 @@ CmdSketcherConstrainDistance - + Constrain distance Ograniči udaljenost - + Fix a length of a line or the distance between a line and a vertex or between two circles Namjestiti duljinu linije ili rastojanje između linije i tjemene točke ili rastojanje između dva kruga @@ -455,12 +455,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Ograniči horizontalnu udaljenost - + Fix the horizontal distance between two points or line ends Ograniči horizontalnu udaljenost između dvije točke ili krajeva linije @@ -468,12 +468,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Ograničenje okomite udaljenosti - + Fix the vertical distance between two points or line ends Ograniči vertikalnu udaljenost između dvije točke ili krajeva linije @@ -481,12 +481,12 @@ CmdSketcherConstrainEqual - + Constrain equal Ograniči jednaku duljinu - + Create an equality constraint between two lines or between circles and arcs Napravite ograničenje jednakosti između dvije linije ili između kružnica i lukova @@ -494,12 +494,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Ograniči vodoravno - + Create a horizontal constraint on the selected item Napravi vodoravno ograničenje na odabranoj jedinici @@ -507,12 +507,12 @@ CmdSketcherConstrainLock - + Constrain lock Ograniči pomicanje - + Create both a horizontal and a vertical distance constraint on the selected vertex Napravi ograničenje vodoravno i okomito ograničenje udaljenosti @@ -522,12 +522,12 @@ na odabranoj tjemenoj točki CmdSketcherConstrainParallel - + Constrain parallel Ograniči paralelno - + Create a parallel constraint between two lines Napravi paralelno ograničenje između dvije linije @@ -535,12 +535,12 @@ na odabranoj tjemenoj točki CmdSketcherConstrainPerpendicular - + Constrain perpendicular Ograniči okomito - + Create a perpendicular constraint between two lines Stvara okomito ograničenje između dvije linije @@ -548,12 +548,12 @@ na odabranoj tjemenoj točki CmdSketcherConstrainPointOnObject - + Constrain point onto object Ograniči točku na objekt - + Fix a point onto an object Fiksiraj točku na objekt @@ -561,12 +561,12 @@ na odabranoj tjemenoj točki CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Ograničiti automatski polumjer/promjer - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fiksirajte promjer ako je odabrana kružnica ili radijus ako je odabran luk/spline pol @@ -574,12 +574,12 @@ na odabranoj tjemenoj točki CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Ograniči lom (Snell's zakon ') - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Stvaranje zakona loma svijetla (Snell's law) ograničenje između dvije krajnje točke zrake i ruba kao sučelja. @@ -588,12 +588,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Ograniči simetrijski - + Create a symmetry constraint between two points with respect to a line or a third point Stvoriti simetrično ograničenje između dvije točke u odnosu na liniju ili treću točku @@ -602,12 +602,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Ograniči tangentno - + Create a tangent constraint between two entities Napravi tangentno ograničenje između dva entiteta @@ -615,12 +615,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Ograniči okomito - + Create a vertical constraint on the selected item Napravi okomito ograničenje na odabranoj jedinici @@ -667,12 +667,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Stvori krug kroz tri točke - + Create a circle by 3 perimeter points Stvori krug kroz tri obodne točke @@ -693,12 +693,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Stvaranje luka elipse - + Create an arc of ellipse in the sketch Stvaranje luka elipse u skici @@ -706,12 +706,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Stvaranje luka hiperbole - + Create an arc of hyperbola in the sketch Stvaranje luka hiperbole u skici @@ -719,12 +719,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Stvaranje luka parabole - + Create an arc of parabola in the sketch Stvaranje luka parabole u skici @@ -732,12 +732,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Stvaranje B-spline - + Create a B-spline by control points in the sketch. Stvaranje B-spline krive putem kontrolnih točaka u skici. @@ -745,12 +745,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Napravi krug - + Create a circle in the sketch Napravi krug u skici @@ -758,12 +758,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Stvaranje elipse s 3 točke - + Create an ellipse by 3 points in the sketch Stvaranje elipse od 3 točke u skici @@ -771,12 +771,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Stvaranje elipse od centra - + Create an ellipse by center in the sketch Stvaranje elipse od središta u skici @@ -784,12 +784,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Napravi obrub - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Stvaranje sedmerokuta - + Create a heptagon in the sketch Stvaranje sedmerokuta u skici @@ -810,12 +810,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Stvaranje šesterokut - + Create a hexagon in the sketch Stvaranje šestero kuta u skici @@ -849,12 +849,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Stvaranje osmerokuta - + Create an octagon in the sketch Stvaranje osmero kuta u skici @@ -862,12 +862,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Stvaranje peterokuta - + Create a pentagon in the sketch Stvaranje petero kuta u skici @@ -875,12 +875,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Napravite periodične B-spline - + Create a periodic B-spline by control points in the sketch. Napravite periodične B-spline putem kontrolnih točaka u skici. @@ -888,12 +888,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Napravi točku - + Create a point in the sketch Napravi točku u skici @@ -901,12 +901,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Stvori obrub očuvanih kutova - + Fillet that preserves intersection point and most constraints Obrub koji čuva točku sjecišta i većinu ograničenja @@ -953,12 +953,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Stvorite pravilan višekutnik - + Create a regular polygon in the sketch Stvara pravilan višekutnik u skici @@ -966,12 +966,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Napravite utor - + Create a slot in the sketch Stvorite otvor u skici @@ -979,12 +979,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Stvaranje kvadrata - + Create a square in the sketch Stvaranje kvadrata u skici @@ -992,12 +992,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Stvaranje istostraničnog trokuta - + Create an equilateral triangle in the sketch Stvaranje jednostraničnih trokuta u skici @@ -1070,12 +1070,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Vanjski rub - + Extend an edge with respect to the picked position Proširiti rub u odnosu na pokupljenu poziciju @@ -1083,12 +1083,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Napravi vanjsku geometriju - + Create an edge linked to an external geometry Kreiraj rub povezan sa vanjskom geometrijom @@ -1435,12 +1435,12 @@ Ovo će očistiti svojstvo "Podrška", ako postoji. CmdSketcherSplit - + Split edge Razdjeli rub - + Splits an edge into two while preserving constraints Razdjeli rub na dva uz očuvanje ograničenja @@ -1489,14 +1489,14 @@ Ovo će očistiti svojstvo "Podrška", ako postoji. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Prebaci aktivirati / isključiti ograničenje - + Activates or deactivates the selected constraints Uključuje ili isključuje odabrana ograničenja @@ -1517,14 +1517,14 @@ Ovo će očistiti svojstvo "Podrška", ako postoji. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Prebacuj vožnje / reference ograničenje - + Set the toolbar, or the selected constraints, into driving or reference mode Postavite alatnu traku ili odabrana ograničenja, @@ -1536,12 +1536,12 @@ u režim vožnje ili referentni CmdSketcherTrimming - + Trim edge Skrati rub - + Trim an edge with respect to the picked position Odreži dio ruba s obzirom na odabranu poziciju @@ -1606,60 +1606,60 @@ nevaljana ograničenja, degenerirana geometrija itd. Command - + Add 'Lock' constraint Dodajte 'Zaključaj' ograničenje - + Add relative 'Lock' constraint Dodajte relativno 'Zaključaj' ograničenje - + Add fixed constraint Dodajte fiksno ograničenje - + Add 'Block' constraint Dodajte 'Blok' ograničenje - + Add block constraint Dodaje blok ograničenje - - + + Add coincident constraint Dodajte podudarno ograničenje - - + + Add distance from horizontal axis constraint Dodajte udaljenost od ograničenja vodoravne osi - - + + Add distance from vertical axis constraint Dodajte udaljenost od ograničenja okomite osi - - + + Add point to point distance constraint Dodajte ograničenje udaljenosti od točke do točke @@ -1667,30 +1667,30 @@ nevaljana ograničenja, degenerirana geometrija itd. - - + + Add point to line Distance constraint Dodaj ograničenje udaljenosti od točke do linije - - + + Add circle to circle distance constraint Dodaj ograničenje između dva kruga - + Add circle to line distance constraint Dodaj ograničenje između kruga i linije - - - - - - + + + + + + Add length constraint Dodajte ograničenje duljine @@ -1715,8 +1715,8 @@ nevaljana ograničenja, degenerirana geometrija itd. - - + + Add Distance constraint Dodajte ograničenje udaljenosti @@ -1742,7 +1742,7 @@ nevaljana ograničenja, degenerirana geometrija itd. - + Add Symmetry constraints Dodajte ograničenja simetrija @@ -1753,223 +1753,223 @@ nevaljana ograničenja, degenerirana geometrija itd. Dodajte ograničenja udaljenosti - + Add Horizontal constraint Dodajte ograničenje vodoravno - + Add Vertical constraint Dodajte ograničenje okomito - + Add Block constraint Dodaje zaključaj ograničenje - + Add Angle constraint Dodajte ograničenje kuta - - - - + + + + Add Equality constraint Dodajte ograničenje jednakosti - + Add Equality constraints Dodajte ograničenja jednakosti - - - + + + Add Radius constraint Dodajte ograničenje polumjera - - + + Add arc angle constraint Dodajte ograničenje kuta - + Add concentric and length constraint Dodaj dužinu i koncentrično ograničenje - + Add DistanceX constraint Dodajte ograničenje udaljenosti X - + Add DistanceY constraint Dodajte ograničenje udaljenosti Y - + Add point to circle Distance constraint Dodaj ograničenje udaljenosti od točke do kružnice - - + + Add point on object constraint Dodajte ograničenje udaljenosti točka na objektu - - + + Add point to point horizontal distance constraint Dodajte ograničenje vodoravne udaljenosti od točke do točke - + Add fixed x-coordinate constraint Dodajte fiksno x-koordinata ograničenje - - + + Add point to point vertical distance constraint Dodajte ograničenje okomite udaljenosti od točke do točke - + Add fixed y-coordinate constraint Dodajte fiksno y-koordinata ograničenje - - + + Add parallel constraint Dodajte paralelno ograničenje - - - - - - - + + + + + + + Add perpendicular constraint Dodajte vertikalno ograničenje - + Add perpendicularity constraint Dodajte vertikalno ograničenje - + Swap coincident+tangency with ptp tangency Zamijeni slučajnost + tangencija s ptp tangencijom - + Swap PointOnObject+tangency with point to curve tangency Zamijenite točka na objektu+dodiruje s točka na krivulji dodiruje - - - - - - - + + + + + + + Add tangent constraint Dodajte tangencijalno ograničenje - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Dodajte točku tangencijalno ograničenje - - - - + + + + Add radius constraint Dodajte ograničenje polumjera - - - - + + + + Add diameter constraint Dodajte ograničenje promjera - - - - + + + + Add radiam constraint Dodaj polumjer-promjer ograničenje - - - - + + + + Add angle constraint Dodajte ograničenje kuta - - + + Add equality constraint Dodajte ograničenje jednakosti - - - - - + + + + + Add symmetric constraint Dodajte ograničenje simetrije - + Add Snell's law constraint Dodajte ograničenje Snell's law - + Toggle constraint to driving/reference Uključivanje ograničenja na pogon / referencu - + Activate/Deactivate constraint Aktiviranje / deaktiviranje ograničenja @@ -2059,7 +2059,7 @@ nevaljana ograničenja, degenerirana geometrija itd. - + Add sketch arc of hyperbola Dodajte skicu luk hiperbole @@ -2217,8 +2217,8 @@ nevaljana ograničenja, degenerirana geometrija itd. - + Add auto constraints Dodajte automatska ograničenja @@ -2245,12 +2245,12 @@ nevaljana ograničenja, degenerirana geometrija itd. Povucite krivulju - + Drag Constraint Povucite ograničenje - + Modify sketch constraints Izmijenite ograničenja skica @@ -2341,61 +2341,61 @@ nevaljana ograničenja, degenerirana geometrija itd. Automatsko ograničenje, pogreška: nerješiva skica nakon primjene izjednačavajućih ograničenja. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Nije moguće odrediti sjecište krivulje. Pokušajte dodati podudarno ograničenje između vrhova krivulje koju namjeravate obrubiti. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline Indeks Geometrije (GeoID) je izvan granica. - + You are requesting no change in knot multiplicity. Vi zahtijevate: bez promjena u mnoštvu čvorova. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Indeks Geometrija (GeoId) pod uvjetom da nije B-spline krivulja. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Čvor indeks je izvan granica. Imajte na umu da u skladu s OCC notacijom, prvi čvor ima indeks 1 a ne nula. - + The multiplicity cannot be increased beyond the degree of the B-spline. Mnoštvo se ne može povećavati iznad stupanja mnoštva b-spline krive. - + The multiplicity cannot be decreased beyond zero. Mnoštvo se ne može smanjiti ispod nule. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC je uspio smanjiti mnoštvo unutar maksimalne tolerancije. - + Knot cannot have zero multiplicity. Čvor ne može sa nulom multiplicirati. - + Knot multiplicity cannot be higher than the degree of the BSpline. Mnoštvo čvorova ne može biti veće od stupnja BSplina. - + Knot cannot be inserted outside the BSpline parameter range. Čvor se ne može umetnuti izvan raspona parametara BSpline. @@ -2475,127 +2475,11 @@ nevaljana ograničenja, degenerirana geometrija itd. Nemoj pridodati + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2605,6 +2489,125 @@ nevaljana ograničenja, degenerirana geometrija itd. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2622,9 +2625,6 @@ nevaljana ograničenja, degenerirana geometrija itd. - - - Wrong selection Pogrešan odabir @@ -2677,106 +2677,106 @@ nevaljana ograničenja, degenerirana geometrija itd. Jedan od odabranih mora biti na skici. - + Select an edge from the sketch. Odaberite rub skice. - - - - - - + + + + + + Impossible constraint Nemoguće ograničenje - - + + The selected edge is not a line segment. Odabrani rub nije segment linije. - - - + + + Double constraint Ograničenje dvaput - + The selected edge already has a horizontal constraint! Odabrani rub već ima vodoravno ograničenje! - + The selected edge already has a vertical constraint! Odabrani rub već ima okomito ograničenje! - - - + + + The selected edge already has a Block constraint! Odabrani rub već ima blok ograničenje! - + There are more than one fixed points selected. Select a maximum of one fixed point! Odabrano više od jedne fiksne točke. Odaberite najviše jednu fiksnu točku! - - - + + + Select vertices from the sketch. Odaberite samo vrhove sa skice. - + Select one vertex from the sketch other than the origin. Odaberite jednu vrh točku iz skice koja nije u ishodištu. - + Select only vertices from the sketch. The last selected vertex may be the origin. Odaberite samo krajnje točke skice. Posljednje odabrana tjemena točka je možda ishodište. - + Wrong solver status Pogrešan status alata za rješavanje (solver) - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Blok ograničenja ne može biti dodan ako skica nije riješena ili postoje redundantna i/ili proturječna ograničenja. - + Select one edge from the sketch. Odaberite jedan rub skice. - + Select only edges from the sketch. Odaberite samo rubove sa skice. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Broj odabranih objekata nije 3 - + Error Pogreška @@ -2786,80 +2786,80 @@ nevaljana ograničenja, degenerirana geometrija itd. Neočekivana greška. Potražite više informacija u Pregledu izvješća. - + The selected item(s) can't accept a horizontal or vertical constraint! Odabrani predmet(i) ne mogu prihvatiti vodoravno ili uspravno ograničenje! - + Endpoint to endpoint tangency was applied instead. Tangenta od krajnje točka do krajnje točke je primijenjena umjesto toga. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Odaberite dva ili više vrhova sa skice za koincidentno ograničenje, ili dva ili više krugova, elipsa, lukova ili lukova elipse za koncentrično ograničenje. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Odaberite dva vrha sa skice za koincidentno ograničenje ili dva kruga, elipse, lukove ili lukove elipse za koncentrično ograničenje. - + Select exactly one line or one point and one line or two points from the sketch. Odaberite točno jednu liniju ili jednu točku i jednu liniju ili dvije točke iz skice. - + Cannot add a length constraint on an axis! Ne možete dodati ograničenje duljine na osi! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Izaberi točno jednu liniju ili jednu točku i jednu liniju ili dvije točke ili dva kruga na skici. - + This constraint does not make sense for non-linear curves. Ovo ograničenje nema smisla za nelinearne krivulje. - + Endpoint to edge tangency was applied instead. Tangenta od krajnje točka do ruba je primijenjena umjesto toga. - - - - - - + + + + + + Select the right things from the sketch. Odaberite prave stvari sa skice. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Odaberite rub koji nije težina B-krive. @@ -2870,94 +2870,94 @@ nevaljana ograničenja, degenerirana geometrija itd. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Odaberite nekoliko točaka ili nekoliko konusa za koncentricitet. - + Select either one point and several curves, or one curve and several points Izaberi ili jednu točku i nekoliko krivulja, ili jednu krivulju i nekoliko točaka - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Izaberite jednu točku i nekoliko krivulja ili jednu krivulju i nekoliko točaka za točkaNaObjktu, ili nekoliko točaka za podudarnost, ili nekoliko konusa za koncentričnost. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Nijedna od odabranih točaka nije ograničena na dotične krivulje, jer su dijelovi istog elementa, jer su obje vanjska geometrija ili zato što rub ne ispunjava uvjete. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Nijedna od odabranih točaka nije bila je ograničena na dotične krivulje, ili su dijelovi isti element, ili su oba vanjske geometrije. - + Cannot add a length constraint on this selection! Ne mogu dodati ograničenje duljine na ovaj odabir! - - - - + + + + Select exactly one line or up to two points from the sketch. Odaberite točno jednu liniju ili do dvije točke iz skice. - + Cannot add a horizontal length constraint on an axis! Nemoguće je dodati ograničenje duljine na os! - + Cannot add a fixed x-coordinate constraint on the origin point! Nije moguće dodati fiksno ograničenje X koordinate na izvornu točku! - - + + This constraint only makes sense on a line segment or a pair of points. Ovo ograničenje samo ima smisla na segmentu crte ili paru točaka. - + Cannot add a vertical length constraint on an axis! Nemoguće je dodati ograničenje duljine na os! - + Cannot add a fixed y-coordinate constraint on the origin point! Nije moguće dodati fiksno ograničenje Y koordinate na izvornu točku! - + Select two or more lines from the sketch. Odaberite dvije ili više linija iz skice. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Odaberite barem dvije linije iz skice. - + The selected edge is not a valid line. Odabrani rub nije valjana linija. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2967,35 +2967,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije krajnje točke; dvije krivulje i točka. - + Select some geometry from the sketch. perpendicular constraint Odaberite neke geometrije sa skice. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nemoguće je postaviti okomicu na nepovezanoj točki! - - + + One of the selected edges should be a line. Jedan od doabranih rubova bi trebala biti linija. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Primijenjena je tangenta krajnja točka do krajnje točke. Podudarna ograničenja su izbrisana. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Primijenjena je tangenta krajnja točka do ruba. Točka na objekt ograničenja su izbrisana. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -3005,69 +3005,69 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije krajnje točke; dvije krivulje i točka. - + Select some geometry from the sketch. tangent constraint Odaberite neke geometrije sa skice. - - - + + + Cannot add a tangency constraint at an unconnected point! Nemoguće je postaviti tangentu u nepovezanoj točki! - - + + Tangent constraint at B-spline knot is only supported with lines! Ograničenje tangente na B-krivulja čvoru podržano je samo s linijama! - + B-spline knot to endpoint tangency was applied instead. B-krivulja od krajnje točka do krajnje točke je primijenjena umjesto toga. - - + + Wrong number of selected objects! Pogrešan broj odabranih objekata! - - + + With 3 objects, there must be 2 curves and 1 point. Sa 3 objekta, ondje mora biti 2 krivulje i 1 točka. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Odaberite jedan ili više lukova ili krugovima iz skice. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Odaberite samo jedan ili više B-Spline stupova ili samo jedan ili više lukova ili krugova sa skice, ali ne i mejšano. - - - + + + Constraint only applies to arcs or circles. Ograničenje se odnosi samo na lukove i krugove. - - + + Select one or two lines from the sketch. Or select two edges and a point. Odaberite jednu ili dvije linije na skici. Ili odaberite dva ruba i točku. @@ -3082,90 +3082,90 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije Kut ograničenje ne može se postaviti za dvije paralelne linije. - + Cannot add an angle constraint on an axis! Nemoguće je dodati ograničenje kuta osi! - + Select two edges from the sketch. Odaberite dva ruba iz skice. - + Select two or more compatible edges. Odaberite dva ili više kompatibilnih rubova. - + Sketch axes cannot be used in equality constraints. Osi skice ne mogu se koristiti u ograničenjima jednakosti. - + Equality for B-spline edge currently unsupported. Izjednačavanje na rub B-Spline krive trenutno nije podržano. - - - - + + + + Select two or more edges of similar type. Odaberite dva ili više rubova sličnog tipa. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Odaberite dvije točke i liniju simetrije, dvije točke i točku simetrije ili liniju i točku simetrije iz skice. - - + + Cannot add a symmetry constraint between a line and its end points. Nije moguće dodati ograničenje simetrije između crte i njenih krajnjih točaka. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Nemoguće je postaviti simetriju između linije i njenih vrhova! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Odaberite dvije krajnje točke linije kao zrake, rub predstavlja granicu. Prva odabrana točka odgovara indeksu n1, druga indeksu n2 a vrijednost polazišta postavlja omjer na n2/n1. - + Selected objects are not just geometry from one sketch. Odabrani objekti nisu samo geometrije iz jedne skice. - + Cannot create constraint with external geometry only. Ne možete stvoriti ograničenja samo s vanjskom geometrijom. - + Incompatible geometry is selected. Nespojiva geometrije je odabrana. - - - - - + + + + + Select constraints from the sketch. Odaberite ograničenja sa skice. @@ -3189,9 +3189,9 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije + - CAD Kernel Error CAD Kernel greška @@ -3336,14 +3336,14 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije Uklanjanje poravnanja osi zahtijeva najmanje jedan odabrani ne-vanjski geometrijski element - - + + Unsupported visual layer operation Operacija vizualnog sloja nije moguća - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Trenutno je nemoguće premjestiti vanjsku geometriju na drugi vizualni sloj. Vanjska geometrija će biti izostavljena. @@ -3727,12 +3727,12 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije Duljina: - + Refractive index ratio Omjer indeksa loma - + Ratio n2/n1: Omjer n2/n1: @@ -3740,72 +3740,72 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije SketcherGui::ElementFilterList - + Normal Normalno - + Construction Izgradnja - + Internal Interno - + External Externi - + All types Svi tipovi - + Point Točka - + Line Linija - + Circle Krug - + Ellipse Elipsa - + Arc of circle luk kruga - + Arc of ellipse luk elipse - + Arc of hyperbola luk hiperbole - + Arc of parabola luk parabole - + B-Spline B-krivulja @@ -3930,27 +3930,27 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije Odaberite uspravnu os - + Layer Sloj - + Layer 0 Sloj 0 - + Layer 1 Sloj 1 - + Hidden Skriveno - + Delete Izbriši @@ -4848,120 +4848,120 @@ Međutim, nema povezanih ograničenja na krajnje točake. Postavke - - - - - - - - - - + + + + + + + + + + Construction Izgradnja - + Elements Elementi - - - - + + + + Point Točka - - - - - - - - - - + + + + + + + + + + Internal Interno - - - - + + + + Line Linija - - - - + + + + Arc Luk - - - - + + + + Circle Krug - - - - + + + + Ellipse Elipsa - - - - + + + + Elliptical Arc Eliptični luk - - - - + + + + Hyperbolic Arc Hiperbolni luk - - - - + + + + Parabolic Arc Parabolični luk - - - - + + + + BSpline BSpline - - - - + + + + Other Drugo - + Extended information Proširene informacije @@ -5186,112 +5186,112 @@ To se radi analizom geometrije i ograničenja skice. SketcherGui::ViewProviderSketch - + Edit sketch Uredi skicu - + A dialog is already open in the task panel Dijalog je već otvoren u ploči zadataka - + Do you want to close this dialog? Želite li zatvoriti ovaj dijalog? - + Invalid sketch Neispravna skica - + Do you want to open the sketch validation tool? Želite li otvoriti alat provjera valjanosti skice? - + The sketch is invalid and cannot be edited. Skica je neispravna i ne može se uređivati. - + Please remove the following constraint: Molim uklonite sljedeće ograničenje: - + Please remove at least one of the following constraints: Molim uklonite barem jedno od sljedećih ograničenja: - + Please remove the following redundant constraint: Molimo obrišite ovo redundantno ograničenje: - + Please remove the following redundant constraints: Molimo obrišite ova redundantna ograničenja: - + The following constraint is partially redundant: Sljedeće ograničenje je djelomično suvišno: - + The following constraints are partially redundant: Sljedeća ograničenja su djelomično suvišna: - + Please remove the following malformed constraint: Uklonite sljedeće deformirano ograničenje: - + Please remove the following malformed constraints: Uklonite sljedeća deformirana ograničenja: - + Empty sketch Prazan skica - + Over-constrained: Pretjerano ograničeno: - + Malformed constraints: Deformirana ograničenja: - + Redundant constraints: Suvišna ograničenja: - + Partially redundant: Djelomično suvišno: - + Solver failed to converge Solver nije uspio konvergirati - + Under constrained: Premalo ograničen: - + %n DoF(s) %n Stupanj slobode @@ -5300,7 +5300,7 @@ To se radi analizom geometrije i ograničenja skice. - + Fully constrained Potpuno ograničen @@ -5400,8 +5400,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Popravi promjer kruga ili luka @@ -5409,8 +5409,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Popravi polumjer/promjer kruga ili luka @@ -5418,8 +5418,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fiksiraj radijus kruga ili luka @@ -5433,70 +5433,25 @@ To se radi analizom geometrije i ograničenja skice. Stvara jednostavnu kopiju geometrije uzimajući kao referencu zadnje odabranu točku - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Stvaranje luka od svojih završnih točki i točke na luku - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Stvori krug kroz tri točke - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Stvaranje luka od njegovog središta i njegovih krajnjih točaka - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Stvaranje luka elipsa iz njegovog centra, velikog radijusa i krajnjih točaka - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Stvaranje luka hiperbole iz njegovog centra, velikog radijusa i krajnjih točaka - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Stvarane luka parabole iz fokusa, tjemene točke i krajnjih točaka - - Sketcher_CreateBSpline - + B-spline by control points B-spline kriva kroz kontrolne točke - - + + Create a B-spline by control points Stvaranje B-splinekrive kroz kontrolne točke @@ -5504,35 +5459,17 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Stvaranje kruga od njegovog središta i njegovih točaka - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Elipsa od: periapsis, apoapsis, manjeg polumjera - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Elipsa od: točke centra, točaka glavnih radijusa - - Sketcher_CreateFillet - - + + Creates a radius between two lines Stvori polumjer između dvije linije @@ -5540,8 +5477,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Stvaranje heptagona (sedmerokuta) iz središta i jednog ugla @@ -5549,8 +5486,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Stvaranje heksagona iz središta i jednog ugla @@ -5566,14 +5503,14 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Stvaranje oktagona iz središta i jednog ugla + - Create a regular polygon by its center and by one corner Stvaranje pravilnog višekutnika iz središta i jednog ugla @@ -5581,8 +5518,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Stvaranje pentagona iz središta i jednog ugla @@ -5590,8 +5527,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Obrub koji čuva ograničenja i točku presjeka @@ -5615,8 +5552,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreateSquare + - Create a square by its center and by one corner Stvaranje kvadrata iz središta i jednog ugla @@ -5624,8 +5561,8 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Stvaranje istostraničnog trokuta iz središta i jednog ugla @@ -5633,13 +5570,13 @@ To se radi analizom geometrije i ograničenja skice. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Periodična B-spline kriva kroz kontrolne točke + - Create a periodic B-spline by control points Stvaranje B-spline krive kroz kontrolne točke @@ -6056,7 +5993,7 @@ Eigen Sparse QR algoritam optimiziran je za rijetke matrice; obično brže ViewProviderSketch - + and %1 more i %1 još @@ -6284,45 +6221,45 @@ Razmak mreže se mijenja ako postane manji od ovog broja piksela. Skica ima djelomično suvišna ograničenja! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabole su migrirane. Migrirane datoteke neće se otvoriti u prethodnim verzijama FreeCAD-a!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Pogreška @@ -6358,16 +6295,16 @@ Razmak mreže se mijenja ako postane manji od ovog broja piksela. Ograničenje ima neispravnu index informaciju i neispravno je. + + + - - - - - + + Invalid Constraint @@ -6384,12 +6321,12 @@ Razmak mreže se mijenja ako postane manji od ovog broja piksela. Nije uspjelo dodavanje kuta elipse - + Cannot create arc of hyperbola from invalid angles, try again! Nemoguće stvoriti luk hiperbole zbog pogrešnih uglova, pokušajte ponovo! - + Cannot create arc of hyperbola Nemoguće napraviti luk hiperbole @@ -6409,8 +6346,8 @@ Razmak mreže se mijenja ako postane manji od ovog broja piksela. Greška stvaranja pola B-krivulje - + Error creating B-spline Greška stvaranja B-krivulje @@ -6467,17 +6404,17 @@ Greška kod brisanja zadnjeg pola B-krive Nije uspjelo dodavanje linije - - - - - - - + + + + + + + Tool execution aborted Prekinuto izvršavanje alata @@ -6512,9 +6449,9 @@ Greška kod brisanja zadnjeg pola B-krive Nije uspjelo skraćivanje ruba - + Value Error Greška vrijednosti @@ -6577,13 +6514,13 @@ Greška kod brisanja zadnjeg pola B-krive Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-krivulja kroz čvorove - - + + Create a B-spline by knots Napravi B-krivulju pomoću čvorova @@ -6591,13 +6528,13 @@ Greška kod brisanja zadnjeg pola B-krive Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodična B-krivulja kroz čvorove + - Create a periodic B-spline by knots Stvaranje periodične B-spline krive kroz kontrolne točke @@ -6703,12 +6640,12 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Napravi B-krivulju pomoću čvorova - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Napravi B-krivulju kroz čvorove tj. interpolacijom na skici. @@ -6716,12 +6653,12 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Napravi periodičnu B-spline krivulju pomoću čvorova - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Napravi periodičnu B-krivulju kroz čvorove tj. interpolacijom na skici. @@ -6729,12 +6666,12 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p CmdSketcherDimension - + Dimension Dimenzija - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6773,12 +6710,12 @@ Alati dimenzija. CmdSketcherConstrainRadius - + Constrain radius Ograniči radijus - + Fix the radius of a circle or an arc Fiksiraj radijus kruga ili luka @@ -6953,8 +6890,8 @@ Alati dimenzija. - Create two rectangles, one in the other with a constant thickness. - Stvori dva pravokutnika, jedan u drugom sa konstantnim razmakom + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6968,12 +6905,12 @@ Alati dimenzija. CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Vodoravno/Uspravno - + Constrains a single line to either horizontal or vertical. Ograniči jednu liniju ili vodoravno ili uspravno @@ -6981,12 +6918,12 @@ Alati dimenzija. CmdSketcherConstrainHorVer - + Horizontal/Vertical Vodoravno/Uspravno - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Ograničava jednu liniju ili vodoravno ili uspravno, u zavisnosti koja je bliža na trenutno poravnavanje. @@ -6994,12 +6931,12 @@ Alati dimenzija. CmdSketcherCompCurveEdition - + Curve Edition Uređivač krivulje - + Curve Edition tools. Alati uređivanja krivulje. @@ -7007,12 +6944,12 @@ Alati dimenzija. CmdSketcherCompSlot - + Slots Utori - + Slot tools. Alati utora. @@ -7020,12 +6957,12 @@ Alati dimenzija. CmdSketcherCreateArcSlot - + Create arc slot Napravite lučni utor - + Create an arc slot in the sketch Napravite lučni utor u skici @@ -7033,12 +6970,12 @@ Alati dimenzija. CmdSketcherConstrainCoincidentUnified - + Constrain coincident Ograničiti zajedničko - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Stvorite koincidentno ograničenje između točaka ili učvrstite točku na jedan rub, ili koncentrično ograničenje između krugova, lukova i elipsa @@ -7467,4 +7404,67 @@ Alati dimenzija. Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts index b6ee06ab56..0ea637daa9 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Másolat létrehozása - + Copy the geometry of another sketch Másik vázlat geometriáinak másolatai @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Kör vagy körív kényszer - + Constrain an arc or a circle Egy kör vagy körív kényszerítése - + Constrain radius Sugár illesztés - + Constrain diameter Átmérő kényszer - + Constrain auto radius/diameter Kényszeríti az automatikus sugarat/átmérőt @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints Közép és végpontok - - End points and rim point - Végpontok és perem pont + + Endpoints and rim point + Végpontok és perem pontok CmdSketcherCompCreateBSpline - + Create B-spline B-görbe létrehozása - + Create a B-spline in the sketch Hozzon létre egy B-görbét a vázlatban @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Kör rajzolása - + Create a circle in the sketcher Kör létrehozása a vázlatkészítőben - + Center and rim point Közép- és a perem pont - + 3 rim points 3 perem pont @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Kúpszelet létrehozás - + Create a conic in the sketch Létrehoz egy kúp ívet a vázlaton - - Ellipse by center, major radius, point - Ellipszis központtal, fő sugárral, ponttal + + Ellipse by center, radius, rim point + Ellipszis központtal, sugárral, perem ponttal - - Ellipse by periapsis, apoapsis, minor radius - Ellipszis periapsis-al, apoapsis-al, alárendelt sugárral + + Ellipse by axis endpoints, rim point + Ellipszis a tengely végpontjaival, peremponttal - - Arc of ellipse by center, major radius, endpoints - Ellipszis ív központtal, fő sugárral, végpontokkal + + Arc of ellipse by center, radius, endpoints + Ellipszis ív központtal, sugárral, végpontokkal - - Arc of hyperbola by center, major radius, endpoints - Hiperbola ív központtal, fő sugárral, végpontokkal + + Arc of hyperbola by center, vertex, endpoints + Hiperbola ív központtal, sugárral, végpontokkal - + Arc of parabola by focus, vertex, endpoints Parabola fókusszal, csúcsponttal, végpontokkal @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Lekerekítés létrehozása - + Create a fillet between two lines Létrehoz egy lekerekítést két vonal közt - + Sketch fillet Vázlat lekerekítés - - Constraint-preserving sketch fillet - Kényszer-megőrzési vázlat lekerekítés + + Corner-preserving sketch fillet + Sarok-megőrzési vázlat lekerekítés @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Szabályos sokszög létrehozása - + Create a regular polygon in the sketcher Szabályos sokszög létrehozása a vázlatkészítőben - + Triangle Háromszög - + Square Négyzet - + Pentagon Ötszög - + Hexagon Hatszög - + Heptagon Hétszög - + Octagon Nyolcszög - + Regular polygon Szabályos sokszög @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Szög zárolása - + Fix the angle of a line or the angle between two lines Rögzítsen szöget a vonalon, vagy a szöget két vonalon @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Kényszerítő kocka - + Block the selected edge from moving A kijelölt él mozgásának letiltása @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Egymásra llesztés - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Konvergens kényszer létrehozása pontok között vagy koncentrikus kötés létrehozása körök, ívek és ellipszisek között @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Átmérő kényszer - + Fix the diameter of a circle or an arc Rögzíteni egy kör vagy egy ív átmérőjét @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Távolság kényszer - + Fix a length of a line or the distance between a line and a vertex or between two circles Vonal hosszának rögzítése vagy adott távolság tartása két kör között @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Vízszintes távolság zárolása - + Fix the horizontal distance between two points or line ends Két pont közötti vagy vonal végek közötti vízszintes távolság zárolása @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Függőleges távolság kényszerítése - + Fix the vertical distance between two points or line ends Két pont közötti vagy vonal végek közötti függőleges távolság zárolása @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Illesztás megtartása - + Create an equality constraint between two lines or between circles and arcs Hozzon létre egy egyenlőség illesztést két vonal között, illetve körök és ívek között @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Vízszintes illesztés - + Create a horizontal constraint on the selected item Vízszintes illesztés létrehozása a kiválasztott elemen @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Illesztés zárolása - + Create both a horizontal and a vertical distance constraint on the selected vertex Vízszintes és függőleges távolságkényszerítés létrehozása @@ -520,12 +520,12 @@ a kijelölt csúcsponton CmdSketcherConstrainParallel - + Constrain parallel Párhuzamosság tartása - + Create a parallel constraint between two lines Két vonal közötti párhuzamos kényszerítés @@ -533,12 +533,12 @@ a kijelölt csúcsponton CmdSketcherConstrainPerpendicular - + Constrain perpendicular Merőleges illesztés - + Create a perpendicular constraint between two lines Merőleges illesztést hoz létre két vonal közt @@ -546,12 +546,12 @@ a kijelölt csúcsponton CmdSketcherConstrainPointOnObject - + Constrain point onto object A pont illesztése a tárgyra - + Fix a point onto an object Pont rögzítése egy tárgyra @@ -559,12 +559,12 @@ a kijelölt csúcsponton CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Kényszeríti az automatikus sugarat/átmérőt - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Beállítja az átmérőt kör kiválasztásakor, illetve a sugarat, ha ív/görbe pólus van kiválasztva @@ -572,12 +572,12 @@ a kijelölt csúcsponton CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Illesztés törésmutatója (Snellius–Descartes-törvény) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Hozzon létre egy fénytörés törvény (Snellius-törvény) kényszerítést sugarak két végpontja között és egy élt mint határfelületet. @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Szimmetria illesztés - + Create a symmetry constraint between two points with respect to a line or a third point Állítsa be a szimmetriát két pont között egy vonalhoz vagy egy harmadik ponthoz képest @@ -600,12 +600,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Érintő illesztés - + Create a tangent constraint between two entities Hozzon létre egy érintő illesztést két rész között @@ -613,12 +613,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Függőleges illesztés - + Create a vertical constraint on the selected item Függőleges kényszerítés alkalmazása a kijelölt elemen @@ -665,12 +665,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Kör létrehozása három ponttal - + Create a circle by 3 perimeter points Kör létrehozása 3 kerületi ponttal @@ -691,12 +691,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Ellipszisív létrehozása - + Create an arc of ellipse in the sketch Létrehoz egy ellipszis ívet a vázlaton @@ -704,12 +704,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Hiperbolaív létrehozása - + Create an arc of hyperbola in the sketch Létrehoz egy hiperbola ívet a vázlaton @@ -717,12 +717,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Parabolaív létrehozása - + Create an arc of parabola in the sketch Létrehoz egy parabola ívet a vázlaton @@ -730,12 +730,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline B-görbe létrehozása - + Create a B-spline by control points in the sketch. Létrehoz egy B-görbét ellenőrző ponttokkal a vázlaton. @@ -743,12 +743,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Kör rajzolása - + Create a circle in the sketch Kör rajzolása a vázlaton @@ -756,12 +756,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Létrehoz egy 3 pontos ellipszist - + Create an ellipse by 3 points in the sketch Létrehoz egy 3 pontos ellipszist a vázlaton @@ -769,12 +769,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Ellipszis létrehozása középponttal - + Create an ellipse by center in the sketch Ellipszis létrehozása középponttal a vázlaton @@ -782,12 +782,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Lekerekítés létrehozása - + Create a fillet between two lines or at a coincident point Lekerekítés létrehozása két vonal között vagy egybeeső pontok közt @@ -795,12 +795,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Hétszög létrehozása - + Create a heptagon in the sketch Egy hétszög létrehozása a vázlaton @@ -808,12 +808,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Hatszög létrehozása - + Create a hexagon in the sketch Egy hatszög létrehozása a vázlaton @@ -847,12 +847,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Nyolcszög létrehozása - + Create an octagon in the sketch Egy nyolcszög létrehozása a vázlaton @@ -860,12 +860,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Ötszög létrehozása - + Create a pentagon in the sketch Egy ötszög létrehozása a vázlaton @@ -873,12 +873,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Időszakos B-görbe létrehozása - + Create a periodic B-spline by control points in the sketch. Létrehoz egy időszakos B-görbét ellenőrző ponttokkal a vázlaton. @@ -886,12 +886,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Pont létrehozása - + Create a point in the sketch Pont létrehozása a vázlaton @@ -899,12 +899,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Sarokmegőrző lekerekítés létrehozása - + Fillet that preserves intersection point and most constraints Lekerekítés a metszéspont és a legtöbb kényszerítés megörzésével @@ -951,12 +951,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Szabályos sokszög létrehozása - + Create a regular polygon in the sketch Egy szabályos sokszög létrehozása a vázlatban @@ -964,12 +964,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Hozzon létre nyílást - + Create a slot in the sketch Hozzon létre egy nyílást a vázlatban @@ -977,12 +977,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Négyzet létrehozása - + Create a square in the sketch Egy négyszög létrehozása a vázlaton @@ -990,12 +990,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Egyenlő oldalú háromszög létrehozása - + Create an equilateral triangle in the sketch Egyenlő oldalú háromszög létrehozása a vázlaton @@ -1068,12 +1068,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Él meghosszabbítás - + Extend an edge with respect to the picked position Hosszabbítson meg egy élt a kiválasztott pozíció figyelembe vételével @@ -1081,12 +1081,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Külső geometria létrehozása - + Create an edge linked to an external geometry Hozzon létre egy szegélyt, csatolva a külső geometriához @@ -1425,12 +1425,12 @@ A 'Támogatás' tulajdonság törlődik, ha van. CmdSketcherSplit - + Split edge Él felosztás - + Splits an edge into two while preserving constraints Kettévágja az éleket, miközben megőrzi a kényszerítéseket @@ -1477,12 +1477,12 @@ A 'Támogatás' tulajdonság törlődik, ha van. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Kényszerítés bekapcsolása/kikapcsolása - + Activates or deactivates the selected constraints A kijelölt kényszerítések engedélyezése vagy letiltása @@ -1503,12 +1503,12 @@ A 'Támogatás' tulajdonság törlődik, ha van. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Kényszerítés váltása a meghatározott és a megjelenített között - + Set the toolbar, or the selected constraints, into driving or reference mode Állítsa be az eszköztárat vagy a kijelölt kényszerítéseket, @@ -1518,12 +1518,12 @@ megvezetett vagy hivatkozási üzemmódban CmdSketcherTrimming - + Trim edge Él vágása - + Trim an edge with respect to the picked position Él levágása, tekintettel a kiválasztott helyzetre @@ -1582,79 +1582,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint 'Zár' kényszerítés hozzáadása - + Add relative 'Lock' constraint Viszonyított 'Zár' kényszerítés hozzáadása - + Add fixed constraint Rögzített kényszerítést ad hozzá - + Add 'Block' constraint 'Blokk' kényszerítés hozzáadása - + Add block constraint Blokk kényszerítés hozzáadása - - + + Add coincident constraint Véletlenszerű kényszerítés hozzáadása - - + + Add distance from horizontal axis constraint Vízszintes tengelymegkötéstől való távolság hozzáadása - - + + Add distance from vertical axis constraint Függőleges tengelymegkötéstől való távolság hozzáadása - - + + Add point to point distance constraint Ponttól pontig távolság kényszerítést ad hozzá - - + + Add point to line Distance constraint Ponttól a vonalig távolság kényszerítést ad hozzá - - + + Add circle to circle distance constraint Kör hozzáadása a kör távolsági kényszerítéséhez - + Add circle to line distance constraint Kör hozzáadása a vonal távolsági kényszerítéséhez - - - - - - + + + + + + Add length constraint Hossz kényszerítés hozzáadása @@ -1677,8 +1677,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Távolság kényszerítés hozzáadása @@ -1704,7 +1704,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Szimmetria kényszerítések hozzáadása @@ -1715,220 +1715,220 @@ invalid constraints, degenerated geometry, etc. Távolság kényszerítések hozzáadása - + Add Horizontal constraint Vízszintes kényszerítés hozzáadása - + Add Vertical constraint Függőleges kényszerítést hozzáadása - + Add Block constraint Blokk kényszerítés hozzáadása - + Add Angle constraint Szöghöz kényszerítés hozzáadása - - - - + + + + Add Equality constraint Egyenlőség kényszerítés hozzáadása - + Add Equality constraints Egyenlőség kényszerítés hozzáadása - - - + + + Add Radius constraint Sugár kényszerítés hozzáadása - - + + Add arc angle constraint Ív szöghöz kényszerítés hozzáadása - + Add concentric and length constraint Koncentrikus és hosszúsági kényszerítés hozzáadása - + Add DistanceX constraint X távolság kényszerítés hozzáadása - + Add DistanceY constraint Y távolság kényszerítés hozzáadása - + Add point to circle Distance constraint Ponttól a körig távolság kényszerítés hozzáadása - - + + Add point on object constraint Pont a tárgyon kényszerítés hozzáadása - - + + Add point to point horizontal distance constraint Ponttól pontig vízszintes távolság kényszerítés hozzáadása - + Add fixed x-coordinate constraint Rögzített x-koordináta kényszerítés hozzáadása - - + + Add point to point vertical distance constraint Ponttól pontig függőleges távolság kényszerítés hozzáadása - + Add fixed y-coordinate constraint Rögzített y-koordináta kényszerítés hozzáadása - - + + Add parallel constraint Párhuzamos kényszerítés hozzáadása - - - - - - - + + + + + + + Add perpendicular constraint Merőleges kényszerítés hozzáadása - + Add perpendicularity constraint Függőlegesség kényszerítés hozzáadása - + Swap coincident+tangency with ptp tangency Egybeeső érintő felcserélése ptp érintővel - + Swap PointOnObject+tangency with point to curve tangency Felcseréli a tárgyat+érintőpontot a görbe érintőpontjához ponttal - - - - - - - + + + + + + + Add tangent constraint Érintő kényszerítés hozzáadása - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Érintő pont kényszerítés hozzáadása - - - - + + + + Add radius constraint Sugár kényszerítés hozzáadása - - - - + + + + Add diameter constraint Átmérőhöz kényszerítés hozzáadása - - - - + + + + Add radiam constraint Sugár/átm-kényszer hozzáadása - - - - + + + + Add angle constraint Szöghöz kényszerítés hozzáadása - - + + Add equality constraint Egyenlőség kényszerítés hozzáadása - - - - - + + + + + Add symmetric constraint Szimmetrikus kényszerítés hozzáadása - + Add Snell's law constraint Fénytörés (Snellius-törvény) kényszerítés hozzáadása - + Toggle constraint to driving/reference Kényszerítés váltása megvezetés/hivatkozás közt - + Activate/Deactivate constraint Kényszerítés bekapcsolása/kikapcsolása @@ -2013,7 +2013,7 @@ invalid constraints, degenerated geometry, etc. Ellipszis vázlatív hozzáadása - + Add sketch arc of hyperbola Hiperbola vázlatív hozzáadása @@ -2157,8 +2157,8 @@ invalid constraints, degenerated geometry, etc. A kényszerítés virtuális helyének frissítése - + Add auto constraints Automatikus kényszerítés hozzáadása @@ -2183,12 +2183,12 @@ invalid constraints, degenerated geometry, etc. Ív húzása - + Drag Constraint Kényszerítés húzása - + Modify sketch constraints Vázlat kényszerítés módosítása @@ -2230,7 +2230,7 @@ invalid constraints, degenerated geometry, etc. Translate geometries - Translate geometries + Geometriák fordítása @@ -2279,59 +2279,59 @@ invalid constraints, degenerated geometry, etc. Autókényszer hiba: megoldhatatlan vázlat egyenlőségi kényszer alkalmazása után. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Nem tudja meghatározni a görbék metszéspontját. Próbáljon meg hozzáadni egybeesés kényszerítést a görbék csúcsaihoz, melyeket le szeretné kerekíteni. - - + + BSpline Geometry Index (GeoID) is out of bounds. Bgörbe geometria Index (GeoID) nem rendelkezik kényszerítésekkel. - + You are requesting no change in knot multiplicity. Nem kér változtatást a csomó többszörözésére. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. A megadott geometria Index (GeoId) nem egy Bgörbe. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. A csomó jelölés határvonalakon kívülre esik. Ne feledje, hogy a megfelelő OCC jelölés szerint, az első csomót jelölése 1 és nem nulla. - + The multiplicity cannot be increased beyond the degree of the B-spline. A sokszorozás nem nőhet a B-görbe szögének értéke fölé. - + The multiplicity cannot be decreased beyond zero. A sokszorozást nem csökkentheti nulla alá. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC képtelen csökkenteni a sokszorozást a maximális megengedett tűrésen belül. - + Knot cannot have zero multiplicity. A csomónak nem lehet nulla sokszorozása. - + Knot multiplicity cannot be higher than the degree of the BSpline. Csomó sokszorozás nem lehet magasabb, mint a B-görbe mértéke. - + Knot cannot be inserted outside the BSpline parameter range. Csomó nem illeszthető be a B-görbe paramétertartományon kívülre. @@ -2411,127 +2411,11 @@ invalid constraints, degenerated geometry, etc. Ne csatolja + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Rossz kijelölés @@ -2613,106 +2613,106 @@ invalid constraints, degenerated geometry, etc. Az egyik kiválasztottnak szerepelnie kell a vázlaton. - + Select an edge from the sketch. Egy él kiválasztása a vázlaton. - - - - - - + + + + + + Impossible constraint Lehetetlen kényszerítés - - + + The selected edge is not a line segment. A kiválasztott él nem egy egyenes szakasz. - - - + + + Double constraint Kettős kényszerítés - + The selected edge already has a horizontal constraint! A kiválasztott él már rendelkezik egy vízszintes kényszerítéssel! - + The selected edge already has a vertical constraint! A kiválasztott él már rendelkezik egy függőleges kényszerítéssel! - - - + + + The selected edge already has a Block constraint! A kijelölt élnek már van blokk kényszerítése! - + There are more than one fixed points selected. Select a maximum of one fixed point! Több mint egy rögzített pontot választott. Válasszon legfeljebb egy rögzített pontot! - - - + + + Select vertices from the sketch. Válasszon sarkokat a vázlatból. - + Select one vertex from the sketch other than the origin. Jelöljön ki a vázlaton egy, a kiindulási ponttól eltérő, végpontot. - + Select only vertices from the sketch. The last selected vertex may be the origin. Csak sarkokat válasszon a vázlatból. Az utoljára kiválasztott végpont lehet a kezdőpont. - + Wrong solver status Rossz a megoldó állapota - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Egy blokk kényszerítést nem adhat hozzá, ha a vázlat megoldatlan vagy felesleges és ellentmondó kényszerítései vannak. - + Select one edge from the sketch. Válasszon egy élt a vázlaton. - + Select only edges from the sketch. Csak éleket válasszon a vázlaton. - + Only tangent-via-point is supported with a B-spline. A B-görbe csak a pont-általi-érintőt támogatja. - + Number of selected objects is not 3 A kijelölt tárgyak száma nem 3 - + Error Hiba @@ -2722,80 +2722,80 @@ invalid constraints, degenerated geometry, etc. Váratlan hiba. További információ a Jelentés nézetben érhető el. - + The selected item(s) can't accept a horizontal or vertical constraint! A kiválasztott elem(ek) nem fogadják el a függőleges illesztést! - + Endpoint to endpoint tangency was applied instead. Végpont-végpont érintőt alkalmazott helyette. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Válasszon két vagy több csúcsot a vázlatból az egybeeső kényszerítéshez, vagy legalább két kört, ellipszist, ívet vagy elliptikus ívet a koncentrikus kényszerhez. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Válasszon két csúcsot a vázlatból az egybeeső kényszerítéshez, vagy két kört, ellipszist, ívet vagy elliptikus ívet a koncentrikus kényszerhez. - + Select exactly one line or one point and one line or two points from the sketch. Válasszon ki pontosan egy sort vagy egy pontot és egy sort és két pontot a vázlatból. - + Cannot add a length constraint on an axis! Nem adható hozzá a hosszanti illesztés egy tengelyen! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Válasszon ki pontosan egy vonalat vagy egy pontot és egy vonalat vagy két pontot vagy két kört a vázlatból. - + This constraint does not make sense for non-linear curves. Ennek a kényszerítésnek nincs értelme a nem-lineáris görbéknél. - + Endpoint to edge tangency was applied instead. Ehelyett a végpont és az él érintője került alkalmazásra. - - - - - - + + + + + + Select the right things from the sketch. Válassza ki a megfelelő dolgokat a vázlatból. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Jelöljön ki egy olyan élt, amely nem B-görbe vastagságú. @@ -2805,92 +2805,92 @@ invalid constraints, degenerated geometry, etc. Egy vagy két pont-tárgyra vonatkozó kényszerítés(ek) törlésre került(ek), mivel a legutóbbi belsőleg alkalmazott kényszerítés is pont-tárgyra vonatkozik. - + Select either several points, or several conics for concentricity. Válasszon ki több pontot vagy több kúpot a koncentrikusság. - + Select either one point and several curves, or one curve and several points Válasszon ki egy pontot és több görbét, vagy egy görbét és több pontot - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Válasszon ki egy pontot és több görbét vagy egy görbét és több pontot a pontATárgyon, vagy több pontot a egybeesések, vagy több kúpot a kúpszelet esetén. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. A kijelölt pontok egyike sem volt korlátozva a megfelelő görbékre, mivel ugyanannak az elemnek a részei, valamint mindkettő külső geometria, vagy mert az éle nem megfelelő. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. A kijelölt pontok egyike sincs kényszerítve a vonatkozó görbékhez, mert azok részei ugyanannak az elemnek, vagy azért, mert mindkét külső geometria. - + Cannot add a length constraint on this selection! Nem adható hozzá a hosszanti illesztés ezen a kijelölésen! - - - - + + + + Select exactly one line or up to two points from the sketch. Válasszon ki pontosan egy vonalat, vagy legfeljebb két pontot a vázlatból. - + Cannot add a horizontal length constraint on an axis! Nem lehet hozzáadni egy vízszintes hosszanti illesztést egy tengelyen! - + Cannot add a fixed x-coordinate constraint on the origin point! Nem adható hozzá a rögzített x-koordináta illesztése a kezdő ponthoz! - - + + This constraint only makes sense on a line segment or a pair of points. Ez a kényszerítés csak egy vonalszakaszon vagy egy pont páron érvényesül. - + Cannot add a vertical length constraint on an axis! Nem adható hozzá a függőleges hosszanti illesztés egy tengelyen! - + Cannot add a fixed y-coordinate constraint on the origin point! Nem adható hozzá a rögzített y-koordináta illesztése a kezdő ponthoz! - + Select two or more lines from the sketch. Válasszon ki két vagy több vonalat a vázlatból. - + One selected edge is not a valid line. - One selected edge is not a valid line. + A kiválasztott egy él nem egy érvényes egyenes. - - + + Select at least two lines from the sketch. Válasszon ki legalább két vonalat a vázlatból. - + The selected edge is not a valid line. A kiválasztott él nem egy érvényes egyenes. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpont; két görbe és egy pont. - + Select some geometry from the sketch. perpendicular constraint Válasszon ki néhány geometriát a vázlatból. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nem lehet hozzáadni a függőlegesség illesztést a független ponton! - - + + One of the selected edges should be a line. Az egyik kijelölt élnek egy vonalnak kell lennie. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Végpont-végpont érintőt alkalmazott. Az egybeeső kényszerítést törölve lett. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Végponttól az élig érintőt alkalmaztak. A tárgy kényszerítés pontját törölték. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpont; két görbe és egy pont. - + Select some geometry from the sketch. tangent constraint Válasszon ki néhány geometriát a vázlatból. - - - + + + Cannot add a tangency constraint at an unconnected point! Nem lehet hozzáadni egy érintő illesztést a független ponton! - - + + Tangent constraint at B-spline knot is only supported with lines! A B-görbe csomó érintő kényszerítését csak vonalak támogatják! - + B-spline knot to endpoint tangency was applied instead. B-görbe csomó a végponthoz érintőt alkalmazott helyette. - - + + Wrong number of selected objects! Kijelölt objektumok téves mennyisége! - - + + With 3 objects, there must be 2 curves and 1 point. 3 tárggyal, két görbének és 1 pontnak kell lennie. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Válasszon egy vagy több ívet vagy kört a vázlatból. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Jelöljön ki egy vagy több B-görbe pólust, vagy egy vagy több ívet vagy kört a vázlatból, de nem keverve. - - - + + + Constraint only applies to arcs or circles. Kényszerítés csak az ívekre és körökre vonatkozik. - - + + Select one or two lines from the sketch. Or select two edges and a point. Válasszon egy vagy két vonalat a vázlatból. Vagy válasszon ki két élet és egy pontot. @@ -3013,88 +3013,88 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Egy szög kényszerítést nem lehet beállítani két párhuzamos vonalra. - + Cannot add an angle constraint on an axis! Nem lehet hozzáadni egy szög illesztést egy tengelyhez! - + Select two edges from the sketch. Két él kiválasztása a vázlaton. - + Select two or more compatible edges. Válasszon ki két vagy több kompatibilis élt. - + Sketch axes cannot be used in equality constraints. Vázlat tengelyek nem használhatók egyenlőségi kényszerítésekhez. - + Equality for B-spline edge currently unsupported. Egyenlőség B-görbe élével jelenleg nem támogatott. - - - - + + + + Select two or more edges of similar type. Jelöljön ki két vagy több hasonló típusú élt. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Válasszon ki két pontot és egy szimmetria vonalat, két pontot és egy szimmetria pontot vagy egy vonalat és egy szimmetria pontot a vázlatból. - - + + Cannot add a symmetry constraint between a line and its end points. Nem lehet hozzáadni a szimmetria kényszerítést a vonalhoz és annak végpontjaihoz. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Nem lehet hozzáadni a szimmetria illesztést a vonalhoz és annak végpontjaihoz! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Jelöljön ki két vonalvégpontot sugarakként, és egy szegélyt jelölő élt. Az első kijelölt pont megfelel az n1 indexnek, a második az n2-nek, és a méretadat állítja be az n2/n1 arányt. - + Selected objects are not just geometry from one sketch. A kijelölt tárgyak nem csak egy vázlat geometriái. - + Cannot create constraint with external geometry only. Kényszerítést nem lehet szimplán külső geometriával létrehozni. - + Incompatible geometry is selected. Inkompatibilis geometriát jelölt ki. - - - - - + + + + + Select constraints from the sketch. Válasszon kényszerítéseket a vázlatból. @@ -3116,9 +3116,9 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Határozza meg a B-görbe fokot 1 és %1 között: + - CAD Kernel Error CAD rendszermag hiba @@ -3261,14 +3261,14 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon A tengelyek igazításának eltávolításához legalább egy kiválasztott nem külső geometriai elemre van szükség - - + + Unsupported visual layer operation Nem támogatott vizuális réteg művelet - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Jelenleg nem támogatott a külső geometria áthelyezése egy másik vizuális rétegre. A külső geometria kimarad @@ -3340,7 +3340,7 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Translate parameters - Translate parameters + Paraméterek fordítása @@ -3652,12 +3652,12 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Hossz: - + Refractive index ratio Refraktív index arány - + Ratio n2/n1: Arány n2/n1: @@ -3665,72 +3665,72 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon SketcherGui::ElementFilterList - + Normal Alapértelmezett - + Construction Építési - + Internal Belső - + External Külső - + All types Minden típus - + Point Pont - + Line Vonal - + Circle Kör - + Ellipse Ellipszis - + Arc of circle A kör íve - + Arc of ellipse Az ellipszis íve - + Arc of hyperbola A hiperbola íve - + Arc of parabola A parabola íve - + B-Spline B-görbe @@ -3853,27 +3853,27 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Függőleges tengely kiválasztás - + Layer Réteg - + Layer 0 Réteg 0 - + Layer 1 Réteg 1 - + Hidden Rejtett - + Delete Törlés @@ -4077,7 +4077,7 @@ tükröződik a másolatokon Number of sides: - Number of sides: + Oldalak száma: @@ -4747,120 +4747,120 @@ Azonban, nem találhatók a végpontokhoz kötött kényszerítések.Beállítások - - - - - - - - - - + + + + + + + + + + Construction Építési - + Elements Elemek - - - - + + + + Point Pont - - - - - - - - - - + + + + + + + + + + Internal Belső - - - - + + + + Line Vonal - - - - + + + + Arc Ív - - - - + + + + Circle Kör - - - - + + + + Ellipse Ellipszis - - - - + + + + Elliptical Arc Elliptikus ív - - - - + + + + Hyperbolic Arc Hiperbolikus ív - - - - + + + + Parabolic Arc Parabolikus ív - - - - + + + + BSpline Folyamatos ív - - - - + + + + Other Egyéb - + Extended information Részletes információ @@ -5081,112 +5081,112 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. SketcherGui::ViewProviderSketch - + Edit sketch Vázlat szerkesztése - + A dialog is already open in the task panel Egy párbeszédablak már nyitva van a feladat panelen - + Do you want to close this dialog? Szeretné bezárni a párbeszédpanelt? - + Invalid sketch Érvénytelen vázlat - + Do you want to open the sketch validation tool? Szeretné megnyitni a vázlat érvényesítés eszközt? - + The sketch is invalid and cannot be edited. A vázlat érvénytelen, és nem szerkeszthető. - + Please remove the following constraint: Kérjük, távolítsa el az alábbi ilesztést: - + Please remove at least one of the following constraints: Kérjük, távolítsa el, legalább az egyiket a következő kényszerítésekből: - + Please remove the following redundant constraint: Kérjük, távolítsa el a következő felesleges kényszerítést: - + Please remove the following redundant constraints: Kérjük, távolítsa el a következő felesleges kényszerítéseket: - + The following constraint is partially redundant: A következő kényszerítés részben felesleges: - + The following constraints are partially redundant: A következő kényszerítések részben feleslegesek: - + Please remove the following malformed constraint: Távolítsa el a következő hibás kényszerítést: - + Please remove the following malformed constraints: Távolítsa el a következő hibás kényszerítéseket: - + Empty sketch Üres vázlat - + Over-constrained: Eltúlzott kényszertés: - + Malformed constraints: Hibásan formázott kényszerítés: - + Redundant constraints: Felesleges kényszerítések: - + Partially redundant: Részben felesleges: - + Solver failed to converge A megoldó nem tudott hasonlítani - + Under constrained: Kényszerítés alatt: - + %n DoF(s) %n szabadságfok(ok) @@ -5194,7 +5194,7 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. - + Fully constrained Teljesen kényszertett @@ -5292,8 +5292,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Rögzíteni egy kör vagy egy ív átmérőjét @@ -5301,8 +5301,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Sugár/Átmérő illesztése körre vagy ívre @@ -5310,8 +5310,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Sugár illesztése körre vagy ívre @@ -5325,70 +5325,25 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik.Egyszerű geometria másolatot hoz létre, az utolsó kiválasztott pont, mint referencia pont, figyelembevételével - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Ívet hoz létre az ív végpontjaival és egy ív menti ponttal - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Kört hoz létre 3 határoló ponttal - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Ívet hoz létre a középpontjával és a végpontokkal - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Ellipszisív létrehozása a középpontjával, a fő sugarával és a végpontjaival - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Hiperbola ív létrehozása középpontjával, fő sugarával és végpontjaival - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Létrehoz egy parabola ívet fókusszal, csúcsponttal, és végpontokkal - - Sketcher_CreateBSpline - + B-spline by control points B-görbe ellenőrzési pontokkal - - + + Create a B-spline by control points Létrehoz egy B-görbét ellenőrzési pontokkal @@ -5396,35 +5351,17 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Kört hoz létre annak középpontjával és egy határoló ponttal - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Létrehoz egy ellipszist a peri apszis, apoapszis és mellék sugárból - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Létrehoz egy ellipszist a középpontból, a fő sugárból és pontból - - Sketcher_CreateFillet - - + + Creates a radius between two lines Sugarat hoz létre két vonal között @@ -5432,8 +5369,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Létrehoz egy hétszöget a középpontból és egy sarokból @@ -5441,8 +5378,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Létrehoz egy hatszöget a középpontból és egy sarokból @@ -5458,14 +5395,14 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Létrehoz egy nyolcszöget a középpontból és egy sarokból + - Create a regular polygon by its center and by one corner Létrehoz egy egyszerű sokszöget a középpontból és egy sarokból @@ -5473,8 +5410,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Létrehoz egy ötszöget a középpontból és egy sarokból @@ -5482,8 +5419,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Kényszerítéseket és metszéspontokat fenntartó lekerekítés @@ -5507,8 +5444,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreateSquare + - Create a square by its center and by one corner Létrehoz egy négyszöget a középpontból és egy sarokból @@ -5516,8 +5453,8 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Létrehoz egy egyenlő oldalú háromszöget a középpontból és egy sarokból @@ -5525,13 +5462,13 @@ Ez a vázlat geometriáinak és kényszerítéseinek elemzésével történik. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Időszakos B-görbe ellenőrzési pontokkal + - Create a periodic B-spline by control points Létrehoz egy időszakos B-görbét ellenőrzési pontokkal @@ -5931,7 +5868,7 @@ Az Eigen Sparse QR algoritmus ritka mátrixokra van optimalizálva; általában ViewProviderSketch - + and %1 more és további %1 @@ -6154,46 +6091,46 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám.A vázlat részlegesen felesleges kényszerítéseket tartalmaz! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! A parabolákat áttelepítették. Az áttelepített fájlok nem nyílnak meg a FreeCAD korábbi verzióiban!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Hiba @@ -6229,16 +6166,16 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám.A korlátozás érvénytelen indexinformációval rendelkezik, és rosszul formázott. + + + - - - - - + + Invalid Constraint @@ -6255,12 +6192,12 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám.Ellipszis ívének hozzáadása sikertelen - + Cannot create arc of hyperbola from invalid angles, try again! Nem lehet létrehozni a hiperbola ívét érvénytelen szögekből, próbáld újra! - + Cannot create arc of hyperbola Nem tudja létrehozni a hiperbola ívét @@ -6280,8 +6217,8 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám.B-görbe pólus létrehozás hiba - + Error creating B-spline Hiba a B-görbe létrehozásakor @@ -6337,17 +6274,17 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám.Sikertelen a vonal hozzáadása - - - - - - - + + + + + + + Tool execution aborted Az eszköz végrehajtása megszakadt @@ -6382,9 +6319,9 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám.Sikertelen az él vágása - + Value Error Értékhiba @@ -6441,19 +6378,19 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám. Failed to translate - Failed to translate + Sikertelen fordítás Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-görbe csomópontokkal - - + + Create a B-spline by knots Létrehoz egy B-görbét csomópontokkal @@ -6461,13 +6398,13 @@ A rácsháló távolsága megváltozik, ha kisebb lesz, mint ez a pixelszám. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Időszakos B-görbe csomópontokkal + - Create a periodic B-spline by knots Létrehoz egy időszakos B-görbét csomópontokkal @@ -6573,12 +6510,12 @@ A pontokat a rácsháló távolságának egyötödénél közelebb kell állíta CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots B-görbe létrehozása csomópontokkal - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Hozzon létre egy B-görbét csomópontok által, azaz interpolációval a vázlatban. @@ -6586,12 +6523,12 @@ A pontokat a rácsháló távolságának egyötödénél közelebb kell állíta CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Időszakos B-görbe létrehozása csomópontok által - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Hozzon létre egy B-görbét csomópontokkal, azaz interpolációval a vázlatban. @@ -6599,12 +6536,12 @@ A pontokat a rácsháló távolságának egyötödénél közelebb kell állíta CmdSketcherDimension - + Dimension Dimenzió - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6642,12 +6579,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá CmdSketcherConstrainRadius - + Constrain radius Sugár illesztés - + Fix the radius of a circle or an arc Sugár illesztése körre vagy ívre @@ -6822,8 +6759,8 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá - Create two rectangles, one in the other with a constant thickness. - Létrehoz két téglalapot, az egyik a másikban, állandó vastagsággal. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6837,12 +6774,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Vízszintes/Függőleges - + Constrains a single line to either horizontal or vertical. Egyetlen vonal vízszintes vagy függőleges vonalra kényszeríti. @@ -6850,12 +6787,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá CmdSketcherConstrainHorVer - + Horizontal/Vertical Vízszintes/Függőleges - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Egyetlen sort vízszintes vagy függőleges vonalra kényszerít, attól függően, hogy melyik áll közelebb az aktuális igazításhoz. @@ -6863,12 +6800,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá CmdSketcherCompCurveEdition - + Curve Edition Görbe szerkesztő - + Curve Edition tools. Görbe szerkesztő eszközök. @@ -6876,12 +6813,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá CmdSketcherCompSlot - + Slots Hornyok - + Slot tools. Horony eszközök. @@ -6889,12 +6826,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá CmdSketcherCreateArcSlot - + Create arc slot Hozzon létre íves hornyot - + Create an arc slot in the sketch Íves horony létrehozása a vázlaton @@ -6902,12 +6839,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá CmdSketcherConstrainCoincidentUnified - + Constrain coincident Egymásra llesztés - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Egybevágó kényszerítés létrehozása pontok között, vagy egy pont rögzítése egy élen, vagy koncentrikus kényszerítés létrehozása körök, ívek és ellipszisek között @@ -7291,12 +7228,12 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá Array transform - Array transform + Készlet átalakítás Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Kijelölt geometriák fordítása. i * j másolatok létrehozásának engedélyezése. @@ -7309,7 +7246,7 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. - This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. + Ez a távolságokhoz hasonló adatkövető korlátozásokra vonatkozik. Ha aktiválja a Klónozás funkciót, akkor az eszköz lemásolja az adatpontot. Ellenkező esetben megpróbálja azokat a kiindulási geometriák és az új másolatok közötti egyenlőségekkel helyettesíteni. @@ -7317,7 +7254,7 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá Copies (+'U'/-'J') - Copies (+'U'/-'J') + Másolatok (+'U'/-'J') @@ -7325,7 +7262,70 @@ Az üres helyre való bal egérgombbal kattintással érvényesítheti az aktuá Rows (+'R'/-'F') - Rows (+'R'/-'F') + Sorok (+'R'/-'F') + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts index 6dfaff5c48..26c1061756 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Kendalikan radius - + Constrain diameter Constrain diameter - + Constrain auto radius/diameter Constrain auto radius/diameter @@ -181,24 +181,24 @@ - Center and end points - Pusat dan titik akhir + Center and endpoints + Center and endpoints - - End points and rim point - Titik akhir dan titik pelek + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Buat B-spline - + Create a B-spline in the sketch Buat B-spline di sketsa @@ -206,23 +206,23 @@ CmdSketcherCompCreateCircle - + Create circle Buat lingkaran - + Create a circle in the sketcher Buat lingkaran dalam & quot; sketsa & quot; "terjemahan =" bahasa indonesia "> sketsa - + Center and rim point Pusat dan titik pelek - + 3 rim points 3 titik pelek @@ -230,37 +230,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Buat kerucut di sketsa - - Ellipse by center, major radius, point - Elips oleh pusat, radius utama, titik + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arc elips oleh pusat, radius utama, titik akhir + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arc hiperbola oleh pusat, radius utama, titik akhir + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Busur parabola dengan fokus, simpul, titik akhir @@ -268,24 +268,24 @@ CmdSketcherCompCreateFillets - + Create fillet Buat fillet - + Create a fillet between two lines Create a fillet between two lines - + Sketch fillet Sketch fillet - - Constraint-preserving sketch fillet - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -319,47 +319,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Buat poligon biasa - + Create a regular polygon in the sketcher Membuat poligon beraturan di sketcher - + Triangle Segi tiga - + Square Kotak - + Pentagon Segi lima - + Hexagon Segi enam - + Heptagon Segi tujuh - + Octagon Segi delapan - + Regular polygon Poligon beraturan @@ -390,12 +390,12 @@ CmdSketcherConstrainAngle - + Constrain angle Kendalikan sudut - + Fix the angle of a line or the angle between two lines Perbaiki sudut garis atau sudut antara dua garis @@ -403,12 +403,12 @@ CmdSketcherConstrainBlock - + Constrain block Constrain block - + Block the selected edge from moving Block the selected edge from moving @@ -416,12 +416,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Kendala bertepatan - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -429,12 +429,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -442,12 +442,12 @@ CmdSketcherConstrainDistance - + Constrain distance Kendalikan jarak - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -455,12 +455,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Perbaiki jarak horizontal antara dua titik atau garis ujung @@ -468,12 +468,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Perbaiki jarak vertikal antara dua titik atau garis ujung @@ -481,12 +481,12 @@ CmdSketcherConstrainEqual - + Constrain equal Kendalikan sama - + Create an equality constraint between two lines or between circles and arcs Buat batasan kesetaraan antara dua garis atau antara lingkaran dan busur @@ -494,12 +494,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Kendalikan secara horisontal - + Create a horizontal constraint on the selected item Buat kendala horizontal pada item yang dipilih @@ -507,12 +507,12 @@ CmdSketcherConstrainLock - + Constrain lock Kendalikan kunci - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -522,12 +522,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Kendalikan sejajar - + Create a parallel constraint between two lines Buat batasan paralel antara dua baris @@ -535,12 +535,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Kendalikan tegak lurus - + Create a perpendicular constraint between two lines Buat kendala tegak lurus antara dua garis @@ -548,12 +548,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Konstruksikan titik ke objek - + Fix a point onto an object Perbaiki sebuah titik pada sebuah objek @@ -561,12 +561,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Constrain auto radius/diameter - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -574,12 +574,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -589,12 +589,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Konstruksikan simetris - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -604,12 +604,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Kendalikan singgung - + Create a tangent constraint between two entities Buat kendala singgung antara dua entitas @@ -617,12 +617,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Kendalikan secara vertikal - + Create a vertical constraint on the selected item Buat kendala vertikal pada item yang dipilih @@ -669,12 +669,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Buat lingkaran dengan tiga titik - + Create a circle by 3 perimeter points Buat lingkaran dengan 3 titik perimeter @@ -695,12 +695,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Buat busur elips di sketsa @@ -708,12 +708,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Buat busur hiperbola di sketsa @@ -721,12 +721,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Buat busur parabola di sketsa @@ -734,12 +734,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Buat B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -747,12 +747,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Buat lingkaran - + Create a circle in the sketch Buat B-spline lewat titik kontrol pada sketsa @@ -760,12 +760,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Buat elips dengan 3 poin - + Create an ellipse by 3 points in the sketch Buat elips dengan 3 poin pada sketsa @@ -773,12 +773,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Buat elips menurut pusat - + Create an ellipse by center in the sketch Buat elips dengan pusat di sketsa @@ -786,12 +786,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Buat fillet - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -799,12 +799,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Buat heptagon - + Create a heptagon in the sketch Buat heptagon di sketsa @@ -812,12 +812,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Buat segi enam - + Create a hexagon in the sketch Buat segi enam di sketsa @@ -851,12 +851,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Buat oktagon - + Create an octagon in the sketch Buat oktagon di sketsa @@ -864,12 +864,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Buat pentagon - + Create a pentagon in the sketch Buat pentagon di sketsa @@ -877,12 +877,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Buat B-spline periodik - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -890,12 +890,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Buat titik - + Create a point in the sketch Buat sebuah titik di sketsa @@ -903,12 +903,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Create corner-preserving fillet - + Fillet that preserves intersection point and most constraints Fillet that preserves intersection point and most constraints @@ -955,12 +955,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Buat poligon biasa - + Create a regular polygon in the sketch Membuat poligon beraturan di sketch @@ -968,12 +968,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Buat slot - + Create a slot in the sketch Buat slot di sketsa @@ -981,12 +981,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Buat kuadrat - + Create a square in the sketch Buat kotak di sketsa @@ -994,12 +994,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Buat segitiga sama sisi - + Create an equilateral triangle in the sketch Buat segitiga sama sisi dalam sketsa @@ -1072,12 +1072,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Perluas tepi - + Extend an edge with respect to the picked position Perluas keunggulan sehubungan dengan posisi yang dipetik @@ -1085,12 +1085,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Buat tepi yang terhubung dengan geometri eksternal @@ -1429,12 +1429,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Split edge - + Splits an edge into two while preserving constraints Splits an edge into two while preserving constraints @@ -1481,12 +1481,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1507,12 +1507,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Toggle driving/reference constraint - + Set the toolbar, or the selected constraints, into driving or reference mode Set the toolbar, or the selected constraints, @@ -1522,12 +1522,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Trim tepi - + Trim an edge with respect to the picked position Potong tepi dengan memperhatikan posisi yang dipetik @@ -1586,79 +1586,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Add 'Lock' constraint - + Add relative 'Lock' constraint Add relative 'Lock' constraint - + Add fixed constraint Add fixed constraint - + Add 'Block' constraint Add 'Block' constraint - + Add block constraint Add block constraint - - + + Add coincident constraint Add coincident constraint - - + + Add distance from horizontal axis constraint Add distance from horizontal axis constraint - - + + Add distance from vertical axis constraint Add distance from vertical axis constraint - - + + Add point to point distance constraint Add point to point distance constraint - - + + Add point to line Distance constraint Add point to line Distance constraint - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Add length constraint @@ -1681,8 +1681,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Add Distance constraint @@ -1708,7 +1708,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1719,220 +1719,220 @@ invalid constraints, degenerated geometry, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Add point on object constraint - - + + Add point to point horizontal distance constraint Add point to point horizontal distance constraint - + Add fixed x-coordinate constraint Add fixed x-coordinate constraint - - + + Add point to point vertical distance constraint Add point to point vertical distance constraint - + Add fixed y-coordinate constraint Add fixed y-coordinate constraint - - + + Add parallel constraint Add parallel constraint - - - - - - - + + + + + + + Add perpendicular constraint Add perpendicular constraint - + Add perpendicularity constraint Add perpendicularity constraint - + Swap coincident+tangency with ptp tangency Swap coincident+tangency with ptp tangency - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint Add tangent constraint - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Add tangent constraint point - - - - + + + + Add radius constraint Add radius constraint - - - - + + + + Add diameter constraint Add diameter constraint - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint Add angle constraint - - + + Add equality constraint Add equality constraint - - - - - + + + + + Add symmetric constraint Add symmetric constraint - + Add Snell's law constraint Add Snell's law constraint - + Toggle constraint to driving/reference Toggle constraint to driving/reference - + Activate/Deactivate constraint Activate/Deactivate constraint @@ -2017,7 +2017,7 @@ invalid constraints, degenerated geometry, etc. Add sketch arc of ellipse - + Add sketch arc of hyperbola Add sketch arc of hyperbola @@ -2161,8 +2161,8 @@ invalid constraints, degenerated geometry, etc. Update constraint's virtual space - + Add auto constraints Add auto constraints @@ -2187,12 +2187,12 @@ invalid constraints, degenerated geometry, etc. Drag Curve - + Drag Constraint Drag Constraint - + Modify sketch constraints Modify sketch constraints @@ -2283,59 +2283,59 @@ invalid constraints, degenerated geometry, etc. Autoconstrain error: Unsolvable sketch after applying equality constraints. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. Bspline GeoId berada di luar batas. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. The Geometry Index (GeoId) provided is not a B-spline curve. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Indeks simpul berada di luar batas. Perhatikan bahwa sesuai dengan notasi OCC, simpul pertama memiliki indeks 1 dan bukan nol. - + The multiplicity cannot be increased beyond the degree of the B-spline. The multiplicity cannot be increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. Multiplisitas tidak dapat ditingkatkan melampaui tingkat b-spline. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC tidak dapat mengurangi multiplisitas dalam toleransi maksimum. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2415,127 +2415,11 @@ invalid constraints, degenerated geometry, etc. Jangan pasang + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2545,6 +2429,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2562,9 +2565,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Pilihan salah @@ -2617,106 +2617,106 @@ invalid constraints, degenerated geometry, etc. One of the selected has to be on the sketch. - + Select an edge from the sketch. Pilih tepi dari sketsa. - - - - - - + + + + + + Impossible constraint Kendala yang tidak mungkin - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Kendala ganda - + The selected edge already has a horizontal constraint! The selected edge already has a horizontal constraint! - + The selected edge already has a vertical constraint! The selected edge already has a vertical constraint! - - - + + + The selected edge already has a Block constraint! The selected edge already has a Block constraint! - + There are more than one fixed points selected. Select a maximum of one fixed point! There are more than one fixed points selected. Select a maximum of one fixed point! - - - + + + Select vertices from the sketch. Pilih simpul dari para sketsa . - + Select one vertex from the sketch other than the origin. Pilih salah satu titik dari satu sketsa selain asal . - + Select only vertices from the sketch. The last selected vertex may be the origin. Pilih hanya simpul dari para sketsa . Yang terakhir dipilih vertex mungkin asal . - + Wrong solver status Wrong solver status - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. - + Select one edge from the sketch. Select one edge from the sketch. - + Select only edges from the sketch. Select only edges from the sketch. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Kesalahan @@ -2726,80 +2726,80 @@ invalid constraints, degenerated geometry, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Pilih tepat satu baris atau satu titik dan satu garis atau dua poin dari para sketsa . - + Cannot add a length constraint on an axis! Tidak dapat menambahkan batasan panjang pada sumbu! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. Pilih hal yang benar dari yang sketsa . - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2809,92 +2809,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Tak satu pun dari titik-titik yang dipilih dibatasi ke masing-masing kurva, entah karena mereka adalah bagian dari elemen yang sama, atau karena keduanya adalah geometri eksternal . - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Pilih tepat satu baris atau sampai dengan dua poin dari para sketsa . - + Cannot add a horizontal length constraint on an axis! Tidak dapat menambahkan batasan panjang horizontal pada sumbu! - + Cannot add a fixed x-coordinate constraint on the origin point! Cannot add a fixed x-coordinate constraint on the origin point! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Tidak dapat menambahkan batasan panjang vertikal pada sumbu! - + Cannot add a fixed y-coordinate constraint on the origin point! Cannot add a fixed y-coordinate constraint on the origin point! - + Select two or more lines from the sketch. Pilih dua atau lebih baris dari para sketsa . - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Pilih setidaknya dua baris dari para sketsa . - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2902,35 +2902,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Ada beberapa cara kendala ini bisa diterapkan. Kombinasi yang diterima: dua kurva; titik akhir dan kurva; dua titik akhir; dua tikungan dan satu titik . - + Select some geometry from the sketch. perpendicular constraint Pilih beberapa geometri dari para sketsa . - - + + Cannot add a perpendicularity constraint at an unconnected point! Tidak dapat menambahkan batasan tegak lurus pada titik yang tidak terhubung ! - - + + One of the selected edges should be a line. Salah satu tepi yang dipilih harus berupa garis . - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Ada beberapa cara kendala ini bisa diterapkan. Kombinasi yang diterima: dua kurva; titik akhir dan kurva; dua titik akhir; dua tikungan dan satu titik . - + Select some geometry from the sketch. tangent constraint Pilih beberapa geometri dari para sketsa . - - - + + + Cannot add a tangency constraint at an unconnected point! Tidak dapat menambahkan kendala singgung pada titik yang tidak terhubung ! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Salah jumlah objek terpilih ! - - + + With 3 objects, there must be 2 curves and 1 point. Dengan 3 objek, harus ada 2 kurva dan 1 titik . - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Pilih satu atau lebih busur atau lingkaran dari para sketsa . - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. - - - + + + Constraint only applies to arcs or circles. Kendala hanya berlaku untuk busur atau lingkaran. - - + + Select one or two lines from the sketch. Or select two edges and a point. Pilih satu atau dua baris dari para sketsa . Atau pilih dua sisi dan satu titik . @@ -3013,88 +3013,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Kendala sudut tidak dapat diatur untuk dua garis sejajar. - + Cannot add an angle constraint on an axis! Tidak dapat menambahkan batasan sudut pada sumbu! - + Select two edges from the sketch. Pilih dua sisi dari satu sketsa . - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. Kesetaraan untuk tepi B-spline saat ini tidak didukung. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Pilih dua poin dan simetri garis , dua poin dan simetri titik atau garis dan simetri titik dari yang sketsa . - - + + Cannot add a symmetry constraint between a line and its end points. Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Tidak dapat menambahkan batasan simetri antara garis dan titik akhirnya! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. - + Selected objects are not just geometry from one sketch. Objek yang dipilih bukan hanya geometri dari satu sketsa . - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. @@ -3116,9 +3116,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error Kernel CAD Error @@ -3261,14 +3261,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Removal of axes alignment requires at least one selected non-external geometric element - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3652,12 +3652,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Length: - + Refractive index ratio Rasio indeks bias - + Ratio n2/n1: Rasio n2 / n1: @@ -3665,72 +3665,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Normal - + Construction Konstruksi - + Internal Internal - + External External - + All types All types - + Point Titik - + Line Garis - + Circle Lingkaran - + Ellipse Elips - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3853,27 +3853,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Select Vertical Axis - + Layer Layer - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Hidden - + Delete Menghapus @@ -4747,120 +4747,120 @@ However, no constraints linking to the endpoints were found. Setelan - - - - - - - - - - + + + + + + + + + + Construction Konstruksi - + Elements Elemen - - - - + + + + Point Titik - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Garis - - - - + + + + Arc Busur - - - - + + + + Circle Lingkaran - - - - + + + + Ellipse Elips - - - - + + + + Elliptical Arc Busur elips - - - - + + + + Hyperbolic Arc Busur hiperbolik - - - - + + + + Parabolic Arc Busur parabola - - - - + + + + BSpline BSpline - - - - + + + + Other Lain - + Extended information Extended information @@ -5081,119 +5081,119 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Edit sketch - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch Sketsa tidak valid - + Do you want to open the sketch validation tool? Apakah Anda ingin membuka alat validasi sketsa ? - + The sketch is invalid and cannot be edited. sketsa tidak valid dan tidak dapat diedit. - + Please remove the following constraint: Harap hapus batasan berikut : - + Please remove at least one of the following constraints: Harap hapus setidaknya satu dari batasan berikut: - + Please remove the following redundant constraint: Harap hapus batasan berlebihan berikut ini : - + Please remove the following redundant constraints: Harap hapus batasan berlebihan berikut ini : - + The following constraint is partially redundant: The following constraint is partially redundant: - + The following constraints are partially redundant: The following constraints are partially redundant: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch Sketsa kosong - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) - + Fully constrained Fully constrained @@ -5291,8 +5291,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -5300,8 +5300,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fix the radius/diameter of a circle or an arc @@ -5309,8 +5309,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Perbaiki jari-jari lingkaran atau busur @@ -5324,70 +5324,25 @@ This is done by analyzing the sketch geometries and constraints. Membuat salinan geometri sederhana sebagai referensi titik terakhir yang dipilih - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Buat busur dengan titik ujungnya dan satu titik di sepanjang busur - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Buat lingkaran dengan 3 titik pelek - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Buat busur dengan pusatnya dan pada titik ujungnya - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints - - Sketcher_CreateBSpline - + B-spline by control points B-spline oleh titik kontrol - - + + Create a B-spline by control points Buat B-spline oleh titik kontrol @@ -5395,35 +5350,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Buat lingkaran di bagian tengahnya dan dengan titik pelek - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Buat elips dengan periapsis, apoapsis, dan jari-jari kecil - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Buat elips berdasarkan pusat, jari-jari dan titik utama - - Sketcher_CreateFillet - - + + Creates a radius between two lines Creates a radius between two lines @@ -5431,8 +5368,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Buat heptagon oleh pusatnya dan di satu sudut @@ -5440,8 +5377,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Buat segi enam dengan pusatnya dan di satu sudut @@ -5457,14 +5394,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Buat sebuah oktagon di tengahnya dan di satu sudut + - Create a regular polygon by its center and by one corner Create a regular polygon by its center and by one corner @@ -5472,8 +5409,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Buat pentagon di tengahnya dan di satu sudut @@ -5481,8 +5418,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Fillet that preserves constraints and intersection point @@ -5506,8 +5443,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Buat persegi di tengahnya dan di salah satu sudut @@ -5515,8 +5452,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Buat segitiga sama sisi dengan pusatnya dan di satu sudut @@ -5524,13 +5461,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periodik dengan titik kontrol + - Create a periodic B-spline by control points Buat B-spline periodik dengan titik kontrol @@ -5930,7 +5867,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more and %1 more @@ -6153,46 +6090,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Kesalahan @@ -6228,16 +6165,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6254,12 +6191,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6279,8 +6216,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6336,17 +6273,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6381,9 +6318,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6446,13 +6383,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6460,13 +6397,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6572,12 +6509,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6585,12 +6522,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6598,12 +6535,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Dimensi - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6641,12 +6578,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Kendalikan radius - + Fix the radius of a circle or an arc Perbaiki jari-jari lingkaran atau busur @@ -6821,8 +6758,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6836,12 +6773,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6849,12 +6786,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6862,12 +6799,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6875,12 +6812,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6888,12 +6825,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6901,12 +6838,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Kendala bertepatan - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7327,4 +7264,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts index eb82f5a130..192a390f05 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Crea copia carbone - + Copy the geometry of another sketch Copia la geometria di un altro schizzo @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Vincola l'arco o il cerchio - + Constrain an arc or a circle Vincola l'arco o il cerchio - + Constrain radius Raggio - + Constrain diameter Vincola il diametro - + Constrain auto radius/diameter Vincola raggio/diametro automatico @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints Punti finali e centro - - End points and rim point + + Endpoints and rim point Punti finali e punto sul cerchio CmdSketcherCompCreateBSpline - + Create B-spline B-spline - + Create a B-spline in the sketch Crea una B-spline nello schizzo @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Cerchio - + Create a circle in the sketcher Crea un cerchio nello schizzo - + Center and rim point Centro e punto sul cerchio - + 3 rim points 3 punti @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Crea conica - + Create a conic in the sketch Crea una sezione conica nello schizzo - - Ellipse by center, major radius, point - Ellisse da centro, raggio maggiore, punto + + Ellipse by center, radius, rim point + Ellisse da centro, raggio, punto del bordo - - Ellipse by periapsis, apoapsis, minor radius - Ellisse per periasse, apoasse e raggio minore + + Ellipse by axis endpoints, rim point + Ellisse per punti finali degli assi e punto del bordo - - Arc of ellipse by center, major radius, endpoints - Arco di ellisse da centro, raggio maggiore, punti finali + + Arc of ellipse by center, radius, endpoints + Arco di ellisse da centro, raggio, punti finali - - Arc of hyperbola by center, major radius, endpoints - Arco di iperbole da centro, raggio maggiore, punti finali + + Arc of hyperbola by center, vertex, endpoints + Arco d'iperbole da centro, vertice e punti finali - + Arc of parabola by focus, vertex, endpoints Arco di parabola da fuoco, vertice e punti finali @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Raccorda - + Create a fillet between two lines Crea un raccordo tra due linee - + Sketch fillet Raccorda schizzo - - Constraint-preserving sketch fillet - Raccorda schizzo preservando vincoli + + Corner-preserving sketch fillet + Raccorda schizzo preservando angolo @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Poligono regolare - + Create a regular polygon in the sketcher Crea un poligono regolare nello schizzo - + Triangle Triangolo - + Square Quadrato - + Pentagon Pentagono - + Hexagon Esagono - + Heptagon Ettagono - + Octagon Ottagono - + Regular polygon Poligono regolare @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Angolo - + Fix the angle of a line or the angle between two lines Fissa l'angolo di una linea o l'angolo tra due linee @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Vincolo di blocco - + Block the selected edge from moving Blocca il bordo selezionato dallo spostamento @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Coincidenza - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Crea un vincolo coincidente tra i punti, o un vincolo concentrico tra cerchi, archi ed ellissi @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Vincola il diametro - + Fix the diameter of a circle or an arc Vincola il diametro di un cerchio o di un arco @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Distanza - + Fix a length of a line or the distance between a line and a vertex or between two circles Fissare una lunghezza di una linea o la distanza tra una linea e un vertice o tra due cerchi @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Distanza orizzontale - + Fix the horizontal distance between two points or line ends Fissa la distanza orizzontale tra due punti o estremi di una linea @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Distanza verticale - + Fix the vertical distance between two points or line ends Fissa la distanza verticale tra due punti o estremi di una linea @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Uguale - + Create an equality constraint between two lines or between circles and arcs Crea un vincolo di uguaglianza tra due linee o tra cerchi e archi @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Orizzontale - + Create a horizontal constraint on the selected item Crea un vincolo orizzontale sull'elemento selezionato @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Blocca - + Create both a horizontal and a vertical distance constraint on the selected vertex Crea sia un vincolo di distanza orizzontale e che verticale @@ -520,12 +520,12 @@ sul vertice selezionato CmdSketcherConstrainParallel - + Constrain parallel Parallelo - + Create a parallel constraint between two lines Crea un vincolo di parallelismo tra due linee @@ -533,12 +533,12 @@ sul vertice selezionato CmdSketcherConstrainPerpendicular - + Constrain perpendicular Perpendicolare - + Create a perpendicular constraint between two lines Crea un vincolo di perpendicolarità tra due linee @@ -546,12 +546,12 @@ sul vertice selezionato CmdSketcherConstrainPointOnObject - + Constrain point onto object Punto su oggetto - + Fix a point onto an object Fissa un punto su un oggetto @@ -559,12 +559,12 @@ sul vertice selezionato CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Vincola raggio/diametro automatico - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fissare il diametro se si sceglie un cerchio, o il raggio se si sceglie un arco/spline @@ -572,12 +572,12 @@ sul vertice selezionato CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Vincolo di rifrazione (legge di Snell) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Crea un vincolo di rifrazione (legge di Snell) tra due punti finali di raggi e con un bordo come interfaccia. @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Simmetria - + Create a symmetry constraint between two points with respect to a line or a third point Crea un vincolo di simmetria tra due punti @@ -601,12 +601,12 @@ rispetto a una linea o a un terzo punto CmdSketcherConstrainTangent - + Constrain tangent Tangente - + Create a tangent constraint between two entities Crea un vincolo di tangenza tra due entità @@ -614,12 +614,12 @@ rispetto a una linea o a un terzo punto CmdSketcherConstrainVertical - + Constrain vertically Verticale - + Create a vertical constraint on the selected item Crea un vincolo verticale sull'elemento selezionato @@ -666,12 +666,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreate3PointCircle - + Create circle by three points Cerchio da tre punti - + Create a circle by 3 perimeter points Crea un cerchio da punti perimetrali @@ -692,12 +692,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Crea arco di ellisse - + Create an arc of ellipse in the sketch Crea un arco di ellisse nello schizzo @@ -705,12 +705,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Crea arco di iperbola - + Create an arc of hyperbola in the sketch Crea un arco di iperbole nello schizzo @@ -718,12 +718,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateArcOfParabola - + Create arc of parabola Crea arco di parabola - + Create an arc of parabola in the sketch Crea un arco di parabola nello schizzo @@ -731,12 +731,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateBSpline - + Create B-spline B-spline - + Create a B-spline by control points in the sketch. Crea una B-spline dai punti di controllo nello schizzo. @@ -744,12 +744,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateCircle - + Create circle Cerchio - + Create a circle in the sketch Crea un cerchio nello schizzo @@ -757,12 +757,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Ellisse da 3 punti - + Create an ellipse by 3 points in the sketch Crea nello schizzo un'ellisse da 3 punti @@ -770,12 +770,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateEllipseByCenter - + Create ellipse by center Ellisse da centro - + Create an ellipse by center in the sketch Crea nello schizzo un'ellisse dal suo centro @@ -783,12 +783,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateFillet - + Create fillet Raccorda - + Create a fillet between two lines or at a coincident point Crea un raccordo tra due linee o in un punto di coincidenza @@ -796,12 +796,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateHeptagon - + Create heptagon Ettagono - + Create a heptagon in the sketch Crea un ettagono nello schizzo @@ -809,12 +809,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateHexagon - + Create hexagon Esagono - + Create a hexagon in the sketch Crea un esagono nello schizzo @@ -848,12 +848,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateOctagon - + Create octagon Ottagono - + Create an octagon in the sketch Crea un ottagono nello schizzo @@ -861,12 +861,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreatePentagon - + Create pentagon Pentagono - + Create a pentagon in the sketch Crea un pentagono nello schizzo @@ -874,12 +874,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline B-spline periodica - + Create a periodic B-spline by control points in the sketch. Crea una B-spline periodica dai punti di controllo nello schizzo. @@ -887,12 +887,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreatePoint - + Create point Punto - + Create a point in the sketch Crea un punto nello schizzo @@ -900,12 +900,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreatePointFillet - + Create corner-preserving fillet Crea raccordo salva-angolo - + Fillet that preserves intersection point and most constraints Raccordo che preserva il punto di intersezione e la maggior parte dei vincoli @@ -952,12 +952,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateRegularPolygon - + Create regular polygon Poligono regolare - + Create a regular polygon in the sketch Crea un poligono regolare nello schizzo @@ -965,12 +965,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateSlot - + Create slot Asola - + Create a slot in the sketch Crea un'asola nello schizzo @@ -978,12 +978,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateSquare - + Create square Quadrato - + Create a square in the sketch Crea un quadrato nello schizzo @@ -991,12 +991,12 @@ rispetto a una linea o a un terzo punto CmdSketcherCreateTriangle - + Create equilateral triangle Triangolo equilatero - + Create an equilateral triangle in the sketch Crea un triangolo equilatero nello schizzo @@ -1069,12 +1069,12 @@ rispetto a una linea o a un terzo punto CmdSketcherExtend - + Extend edge Estendi lo spigolo - + Extend an edge with respect to the picked position Estendi uno spigolo in riferimento alla posizione selezionata @@ -1082,12 +1082,12 @@ rispetto a una linea o a un terzo punto CmdSketcherExternal - + Create external geometry Crea geometria esterna - + Create an edge linked to an external geometry Crea un bordo collegato a una geometria esterna @@ -1426,12 +1426,12 @@ Questo cancellerà la proprietà 'Supporto', se presente. CmdSketcherSplit - + Split edge Dividere spigolo - + Splits an edge into two while preserving constraints Dividere uno spingo in due preservando i vincoli @@ -1478,12 +1478,12 @@ Questo cancellerà la proprietà 'Supporto', se presente. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Attiva/disattiva vincolo - + Activates or deactivates the selected constraints Attiva o disattiva i vincoli selezionati @@ -1504,12 +1504,12 @@ Questo cancellerà la proprietà 'Supporto', se presente. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Attiva/disattiva vincolo di guida/riferimento - + Set the toolbar, or the selected constraints, into driving or reference mode Imposta la barra degli strumenti, o i vincoli selezionati, @@ -1519,12 +1519,12 @@ in modalità guida o di riferimento CmdSketcherTrimming - + Trim edge Rifila - + Trim an edge with respect to the picked position Taglia un bordo nel punto specificato @@ -1583,79 +1583,79 @@ vincoli non validi, geometria degenerata, ecc. Command - + Add 'Lock' constraint Aggiungi vincolo bloccato - + Add relative 'Lock' constraint Aggiungi vincolo di blocco relativo - + Add fixed constraint Aggiungi vincolo fisso - + Add 'Block' constraint Aggiungi vincolo di blocco - + Add block constraint Aggiungi vincolo di blocco - - + + Add coincident constraint Vincola la coincidenza - - + + Add distance from horizontal axis constraint Vincola la distanza dall'asse orizzontale - - + + Add distance from vertical axis constraint Vincola la distanza dall'asse verticale - - + + Add point to point distance constraint Vincola la distanza tra i punti - - + + Add point to line Distance constraint Vincola la Distanza da punto a linea - - + + Add circle to circle distance constraint Aggiungi il vincolo di distanza da cerchio a cerchio - + Add circle to line distance constraint Aggiungi il vincolo di distanza dal cerchio alla linea - - - - - - + + + + + + Add length constraint Vincola lunghezza @@ -1678,8 +1678,8 @@ vincoli non validi, geometria degenerata, ecc. - - + + Add Distance constraint Add Distance constraint @@ -1705,7 +1705,7 @@ vincoli non validi, geometria degenerata, ecc. - + Add Symmetry constraints Add Symmetry constraints @@ -1716,220 +1716,220 @@ vincoli non validi, geometria degenerata, ecc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Vincola il punto all'oggetto - - + + Add point to point horizontal distance constraint Vincola la distanza orizzontale tra i punti - + Add fixed x-coordinate constraint Vincola la coordinata X - - + + Add point to point vertical distance constraint Vincola la distanza verticale tra i punti - + Add fixed y-coordinate constraint Vincola la coordinata Y - - + + Add parallel constraint Vincola parallelismo - - - - - - - + + + + + + + Add perpendicular constraint Vincola perpendicolare - + Add perpendicularity constraint Aggiungi vincolo di perpendicolarità - + Swap coincident+tangency with ptp tangency Scambia coincidenza+tangenza con tangenza ptp - + Swap PointOnObject+tangency with point to curve tangency Scambiare PointOnObject+tangenza con il punto a tangenza curva - - - - - - - + + + + + + + Add tangent constraint Vincola la tangenza - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Aggiungi punto di vincolo tangente - - - - + + + + Add radius constraint Vincola il raggio - - - - + + + + Add diameter constraint Vincola il diametro - - - - + + + + Add radiam constraint Vincolare il raggio - - - - + + + + Add angle constraint Vincola l'angolo - - + + Add equality constraint Vincola uguaglianza - - - - - + + + + + Add symmetric constraint Vincola simmetria - + Add Snell's law constraint Aggiungi vincolo di legge di Snell's - + Toggle constraint to driving/reference Commuta il vincolo guida/riferimento - + Activate/Deactivate constraint Attiva/disattiva vincolo @@ -2014,7 +2014,7 @@ vincoli non validi, geometria degenerata, ecc. Aggiungi arco di ellisse di schizzo - + Add sketch arc of hyperbola Aggiungi arco di Iperbole di schizzo @@ -2158,8 +2158,8 @@ vincoli non validi, geometria degenerata, ecc. Aggiorna lo spazio virtuale del vincolo - + Add auto constraints Aggiungi vincoli automatici @@ -2184,12 +2184,12 @@ vincoli non validi, geometria degenerata, ecc. Trascina Curva - + Drag Constraint Trascina Vincolo - + Modify sketch constraints Modifica i vincoli dello schizzo @@ -2280,59 +2280,59 @@ vincoli non validi, geometria degenerata, ecc. Errore di vincolo automatico: schizzo non risolvibile dopo l'applicazione dei vincoli di uguaglianza. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Impossibile determinare l'intersezione delle curve. Provare ad aggiungere un vincolo di coincidenza tra i vertici delle curve che si intende raccordare. - - + + BSpline Geometry Index (GeoID) is out of bounds. L'indice della geometria della B-spline (GeoID) è fuori limite. - + You are requesting no change in knot multiplicity. Non stai richiedendo modifiche nella molteplicità dei nodi. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. L'indice della geometria (GeoID) fornito non è una curva B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. L'indice del nodo è fuori dai limiti. Notare che, in conformità alla numerazione OCC, il primo nodo ha indice 1 e non zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. La molteplicità non può essere aumentata oltre il grado della B-spline. - + The multiplicity cannot be decreased beyond zero. La molteplicità non può essere diminuita al di là di zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC non è in grado di diminuire la molteplicità entro la tolleranza massima. - + Knot cannot have zero multiplicity. Il nodo non può avere una molteplicità zero. - + Knot multiplicity cannot be higher than the degree of the BSpline. La molteplicità del nodo non può essere superiore al grado della BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Il nodo non può essere inserito al di fuori dell'intervallo di parametri B-Spline. @@ -2412,127 +2412,11 @@ vincoli non validi, geometria degenerata, ecc. Non allegare + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2542,6 +2426,125 @@ vincoli non validi, geometria degenerata, ecc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2559,9 +2562,6 @@ vincoli non validi, geometria degenerata, ecc. - - - Wrong selection Selezione errata @@ -2614,106 +2614,106 @@ vincoli non validi, geometria degenerata, ecc. Uno dei selezionati deve essere sullo schizzo. - + Select an edge from the sketch. Seleziona un bordo dello schizzo. - - - - - - + + + + + + Impossible constraint Vincolo Impossible - - + + The selected edge is not a line segment. Il bordo selezionato non è un segmento di linea. - - - + + + Double constraint Doppio vincolo - + The selected edge already has a horizontal constraint! Il bordo selezionato ha già un vincolo orizzontale! - + The selected edge already has a vertical constraint! Il bordo selezionato ha già un vincolo verticale! - - - + + + The selected edge already has a Block constraint! Il bordo selezionato ha già un vincolo di fissaggio! - + There are more than one fixed points selected. Select a maximum of one fixed point! Sono stati selezionati più punti bloccati. Selezionare al massimo un punto bloccato! - - - + + + Select vertices from the sketch. Selezionare i vertici nello schizzo. - + Select one vertex from the sketch other than the origin. Selezionare dallo schizzo un vertice diverso dall'origine. - + Select only vertices from the sketch. The last selected vertex may be the origin. Selezionare solo i vertici dallo schizzo. L'ultimo vertice selezionato può essere l'origine. - + Wrong solver status Stato del risolutore difettoso - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Un vincolo di blocco non può essere aggiunto se lo schizzo è irrisolto o ci sono vincoli ridondanti e conflittuali. - + Select one edge from the sketch. Seleziona un bordo dello schizzo. - + Select only edges from the sketch. Selezionare solo i bordi dallo schizzo. - + Only tangent-via-point is supported with a B-spline. Solo tangente sul punto è supportato con una B-spline. - + Number of selected objects is not 3 Il numero di oggetti selezionati non è 3 - + Error Errore @@ -2723,80 +2723,80 @@ vincoli non validi, geometria degenerata, ecc. Errore inatteso. Ulteriori informazioni possono essere disponibili nel registro eventi. - + The selected item(s) can't accept a horizontal or vertical constraint! Gli elementi selezionati non possono accettare un vincolo orizzontale o verticale! - + Endpoint to endpoint tangency was applied instead. È stata invece applicata la tangenza punto finale su punto finale. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Seleziona due o più vertici dallo schizzo per un vincolo coincidente, o due o più cerchi, ellissi, archi o archi di ellisse per un vincolo concentrico. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Seleziona due vertici dallo schizzo per un vincolo coincidente, o due cerchi, ellissi, archi o archi di ellisse per un vincolo concentrico. - + Select exactly one line or one point and one line or two points from the sketch. Selezionare una linea o un punto più una linea, oppure due punti dello schizzo. - + Cannot add a length constraint on an axis! Non è possibile aggiungere un vincolo di lunghezza su un asse! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Selezionare esattamente una linea o un punto e una linea o due punti o due cerchi dallo schizzo. - + This constraint does not make sense for non-linear curves. Questo vincolo non ha senso per le curve non lineari. - + Endpoint to edge tangency was applied instead. È stata applicata invece la tangenza segmento sul punto finale. - - - - - - + + + + + + Select the right things from the sketch. Selezionare le cose giuste dallo schizzo. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Selezionare un bordo che non è un peso B-spline. @@ -2806,92 +2806,92 @@ vincoli non validi, geometria degenerata, ecc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Nessuno dei punti selezionati è stato vincolato alle rispettive curve, perché sono parti dello stesso elemento, perché entrambi sono geometria esterna, o perché il bordo non è ammissibile. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Nessuno dei punti selezionati è stato vincolato sulla rispettiva curva, perchè essi sono parti dello stesso elemento, o perchè sono entrambi una geometria esterna. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Selezionare solo una linea oppure al massimo due punti dello schizzo. - + Cannot add a horizontal length constraint on an axis! Non è possibile aggiungere un vincolo di lunghezza orizzontale su un asse! - + Cannot add a fixed x-coordinate constraint on the origin point! Non è possibile aggiungere un vincolo di coordinata x nel punto di origine! - - + + This constraint only makes sense on a line segment or a pair of points. Questo vincolo ha senso solo su un segmento di linea o su una coppia di punti. - + Cannot add a vertical length constraint on an axis! Non è possibile aggiungere un vincolo di lunghezza verticale su un asse! - + Cannot add a fixed y-coordinate constraint on the origin point! Non è possibile aggiungere un vincolo di coordinata y nel punto di origine! - + Select two or more lines from the sketch. Selezionare due o più linee dello schizzo. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Selezionare almeno due linee dello schizzo. - + The selected edge is not a valid line. Il bordo selezionato non è una linea valida. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2901,35 +2901,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; due curve e un punto. - + Select some geometry from the sketch. perpendicular constraint Selezionare alcune geometrie dello schizzo. - - + + Cannot add a perpendicularity constraint at an unconnected point! Non è possibile aggiungere un vincolo di perpendicolarità in un punto non connesso! - - + + One of the selected edges should be a line. Uno degli spigoli selezionati deve essere una linea. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. È stato applicato il vincolo tangenza punto finale su punto finale. È stato eliminato il vincolo coincidente. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. È stato applicato il vincolo tangenza segmento su punto finale. È stato eliminato il vincolo punto su oggetto. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2939,67 +2939,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; due curve e un punto. - + Select some geometry from the sketch. tangent constraint Selezionare alcune geometrie dello schizzo. - - - + + + Cannot add a tangency constraint at an unconnected point! Non è possibile aggiungere un vincolo di tangenza in un punto non connesso! - - + + Tangent constraint at B-spline knot is only supported with lines! Il vincolo tangente al nodo B-spline è supportato solo con le linee! - + B-spline knot to endpoint tangency was applied instead. È stata invece applicata la tangenza del nodo B-spline sul punto finale. - - + + Wrong number of selected objects! Numero di oggetti selezionati errato! - - + + With 3 objects, there must be 2 curves and 1 point. Con 3 oggetti, ci devono essere 2 curve e 1 punto. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Selezionare uno o più archi o cerchi nello schizzo. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Selezionare solo uno o più poli B-Spline o solo uno o più archi o cerchi dallo schizzo, ma non miscelati. - - - + + + Constraint only applies to arcs or circles. Vincolo applicato solo ad archi o cerchi. - - + + Select one or two lines from the sketch. Or select two edges and a point. Selezionare una o due linee dello schizzo, oppure selezionare due bordi e un punto. @@ -3014,88 +3014,88 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; Un vincolo di angolo non può essere impostato per due linee parallele. - + Cannot add an angle constraint on an axis! Non è possibile aggiungere un vincolo di angolo su un asse! - + Select two edges from the sketch. Selezionare due spigoli dello schizzo. - + Select two or more compatible edges. Selezionare due o più spigoli compatibili. - + Sketch axes cannot be used in equality constraints. Gli assi dello schizzo non possono essere usati nei vincoli di uguaglianza. - + Equality for B-spline edge currently unsupported. Uguaglianza tra bordi di una B-spline attualmente non è supportato. - - - - + + + + Select two or more edges of similar type. Seleziona due o più bordi di tipo simile. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Selezionare due punti e una linea di simmetria, o due punti e un punto di simmetria, o una linea e un punto di simmetria nello schizzo. - - + + Cannot add a symmetry constraint between a line and its end points. Impossibile aggiungere un vincolo di simmetria tra una linea e i suoi punti finali. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Non è possibile aggiungere un vincolo di simmetria tra una linea e i suoi estremi! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Selezionare i due punti finali delle linee da usare come raggi e un bordo che rappresenta il limite. Il primo punto selezionato corrisponde all'indice n1, il secondo a n2 e il valore è definito dal rapporto n2/n1. - + Selected objects are not just geometry from one sketch. Gli oggetti selezionati non sono delle geometrie dello stesso schizzo. - + Cannot create constraint with external geometry only. Impossibile creare il vincolo solo con la geometria esterna. - + Incompatible geometry is selected. Le geometrie selezionate sono incompatibili. - - - - - + + + + + Select constraints from the sketch. Seleziona i vincoli dallo schizzo. @@ -3117,9 +3117,9 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; Definisci il grado B-Spline, tra 1 e %1: + - CAD Kernel Error Errore Kernel CAD @@ -3262,14 +3262,14 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; La rimozione dell'allineamento degli assi richiede almeno un elemento geometrico non esterno selezionato - - + + Unsupported visual layer operation Operazione di livello visivo non supportata - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Attualmente non è supportato spostare la geometria esterna su un altro livello visivo. La geometria esterna sarà omessa @@ -3653,12 +3653,12 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; Lunghezza: - + Refractive index ratio Indice di rifrazione - + Ratio n2/n1: Rapporto n2/n1: @@ -3666,72 +3666,72 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; SketcherGui::ElementFilterList - + Normal Normale - + Construction Costruzione - + Internal Interno - + External Esterno - + All types Tutti i tipi - + Point Punto - + Line Linea - + Circle Cerchio - + Ellipse Ellisse - + Arc of circle Arco di cerchio - + Arc of ellipse Arco di ellisse - + Arc of hyperbola Arco di iperbola - + Arc of parabola Arco di parabola - + B-Spline B-Spline @@ -3854,27 +3854,27 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; Seleziona l'asse verticale - + Layer Livello - + Layer 0 Livello 0 - + Layer 1 Livello 1 - + Hidden Nascosto - + Delete Elimina @@ -4746,120 +4746,120 @@ Tuttavia, non sono stati trovati i vincoli che riguardano i punti finali.Impostazioni - - - - - - - - - - + + + + + + + + + + Construction Costruzione - + Elements Elementi - - - - + + + + Point Punto - - - - - - - - - - + + + + + + + + + + Internal Interno - - - - + + + + Line Linea - - - - + + + + Arc Arco - - - - + + + + Circle Cerchio - - - - + + + + Ellipse Ellisse - - - - + + + + Elliptical Arc Arco ellittico - - - - + + + + Hyperbolic Arc Arco di iperbole - - - - + + + + Parabolic Arc Arco parabolico - - - - + + + + BSpline B-spline - - - - + + + + Other Altro - + Extended information Informazioni estese @@ -5080,112 +5080,112 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. SketcherGui::ViewProviderSketch - + Edit sketch Modifica lo schizzo - + A dialog is already open in the task panel Nel pannello azioni c'è già una finestra di dialogo aperta - + Do you want to close this dialog? Vuoi chiudere questa finestra di dialogo? - + Invalid sketch Schizzo non valido - + Do you want to open the sketch validation tool? Vuoi aprire lo strumento di convalida di schizzo? - + The sketch is invalid and cannot be edited. Lo schizzo non è valido e non può essere modificato. - + Please remove the following constraint: Si prega di rimuovere il seguente vincolo: - + Please remove at least one of the following constraints: Si prega di rimuovere almeno uno dei seguenti vincoli: - + Please remove the following redundant constraint: Si prega di rimuovere il seguente vincolo ridondante: - + Please remove the following redundant constraints: Si prega di rimuovere i seguenti vincoli ridondanti: - + The following constraint is partially redundant: Il seguente vincolo è parzialmente ridondante: - + The following constraints are partially redundant: I seguenti vincoli sono parzialmente ridondanti: - + Please remove the following malformed constraint: Rimuovere il seguente vincolo malformato: - + Please remove the following malformed constraints: Rimuovere i seguenti vincoli malformati: - + Empty sketch Schizzo vuoto - + Over-constrained: Sovravincolato: - + Malformed constraints: Vincoli malformati: - + Redundant constraints: Vincoli ridondanti: - + Partially redundant: Parzialmente ridondante: - + Solver failed to converge Risolutore impossibilitato a convergere - + Under constrained: Sotto vincolati: - + %n DoF(s) %n Grado(i) di libertà @@ -5193,7 +5193,7 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. - + Fully constrained Completamente vincolato @@ -5291,8 +5291,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Vincola il diametro di un cerchio o di un arco @@ -5300,8 +5300,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fissare il diametro/raggio di un cerchio o di un arco @@ -5309,8 +5309,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fissa il raggio di un cerchio o di un arco @@ -5324,70 +5324,25 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo.Crea una copia semplice della geometria prendendo come riferimento l'ultimo punto selezionato - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Crea un arco dai suoi punti finali e un punto lungo l'arco - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Crea un cerchio da 3 punti del cerchio - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Crea un arco dal suo centro e dai suoi punti finali - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Crea un arco di ellisse dal suo centro, raggio maggiore e punti finali - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Crea un arco di iperbole dal suo centro, raggio maggiore e punti finali - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Crea un arco di parabola dal suo fuoco, vertice e punti finali - - Sketcher_CreateBSpline - + B-spline by control points B-spline da punti di controllo - - + + Create a B-spline by control points Crea una B-spline dai punti di controllo @@ -5395,35 +5350,17 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Crea un cerchio dal suo centro e da un punto del cerchio - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Crea un ellisse da periasse, apoasse e raggio minore - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Crea un'ellisse da centro, raggio maggiore e punto - - Sketcher_CreateFillet - - + + Creates a radius between two lines Crea un raccordo circolare tra due linee @@ -5431,8 +5368,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Crea un ettagono dal suo centro e un vertice @@ -5440,8 +5377,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Crea un esagono dal suo centro e un vertice @@ -5457,14 +5394,14 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Crea un ottagono dal suo centro e un vertice + - Create a regular polygon by its center and by one corner Crea un poligono regolare dal suo centro e un vertice @@ -5472,8 +5409,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Crea un pentagono dal suo centro e un vertice @@ -5481,8 +5418,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Raccordo che preserva i vincoli e il punto di intersezione @@ -5506,8 +5443,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreateSquare + - Create a square by its center and by one corner Crea un quadrato dal suo centro e un vertice @@ -5515,8 +5452,8 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Crea un triangolo equilatero da centro e un vertice @@ -5524,13 +5461,13 @@ Questo viene fatto analizzando le geometrie e i vincoli dello schizzo. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periodica dai punti di controllo + - Create a periodic B-spline by control points Crea una B-spline periodica dai punti di controllo @@ -5928,7 +5865,7 @@ L'algoritmo di Eigen Sparse QR è ottimizzato per matrici sparsi; solitamente pi ViewProviderSketch - + and %1 more e %1 in più @@ -6151,46 +6088,46 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Lo schizzo contiene vincoli parzialmente ridondanti! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Le parabole sono state convertite. I file convertiti non si apriranno nelle versioni precedenti di FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Errore @@ -6226,16 +6163,16 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Il vincolo ha informazioni sull'indice non valide ed è malformato. + + + - - - - - + + Invalid Constraint @@ -6252,12 +6189,12 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Impossibile aggiungere l'arco d'elisse - + Cannot create arc of hyperbola from invalid angles, try again! Impossibile creare l'arco di iperbola da angoli non validi, riprova! - + Cannot create arc of hyperbola Impossibile creare l'arco di iperbola @@ -6277,8 +6214,8 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Errore nella creazione del polo B-Spline - + Error creating B-spline Errore nella creazione della Bspline @@ -6334,17 +6271,17 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Impossibile aggiungere la linea - - - - - - - + + + + + + + Tool execution aborted Esecuzione strumento interrotta @@ -6379,9 +6316,9 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Impossibile tagliare il bordo - + Value Error Errore di valore @@ -6444,13 +6381,13 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline da nodi - - + + Create a B-spline by knots Crea una B-spline con i nodi @@ -6458,13 +6395,13 @@ La spaziatura della griglia cambia se diventa più piccola di questo numero di p Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots B-spline periodica dai nodi + - Create a periodic B-spline by knots Crea una B-spline periodica dai nodi @@ -6570,12 +6507,12 @@ I punti devono essere impostati più vicino di un quinto della spaziatura della CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Crea B-spline con i nodi - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Creare una B-spline con i nodi, cioè per interpolazione, nello schizzo. @@ -6583,12 +6520,12 @@ I punti devono essere impostati più vicino di un quinto della spaziatura della CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Crea B-spline periodica con i nodi - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Creare una B-spline periodica con i nodi, cioè per interpolazione, nello schizzo. @@ -6596,12 +6533,12 @@ I punti devono essere impostati più vicino di un quinto della spaziatura della CmdSketcherDimension - + Dimension Dimensione - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6639,12 +6576,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Raggio - + Fix the radius of a circle or an arc Fissa il raggio di un cerchio o di un arco @@ -6819,8 +6756,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Crea due rettangoli con uno spostamento costante. @@ -6828,18 +6765,18 @@ Left clicking on empty space will validate the current constraint. Right clickin Tool parameters - Parametri dello strumento + Tool parameters CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Orizzontale/Verticale - + Constrains a single line to either horizontal or vertical. Vincola una singola linea a orizzontale o verticale. @@ -6847,12 +6784,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Orizzontale/Verticale - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Vincola una singola linea a orizzontale o verticale, a seconda di quale sia più vicina all'allineamento corrente. @@ -6860,12 +6797,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Modifica curva - + Curve Edition tools. Strumenti di modifica curva. @@ -6873,12 +6810,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6886,12 +6823,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6899,12 +6836,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Coincidenza - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7325,4 +7262,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Crea un arco dal suo centro e dai suoi punti finali + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Crea un arco dai suoi punti finali e un punto lungo l'arco + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Crea un'ellisse dal suo centro, uno dei suoi raggi e un punto del bordo + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Crea un'ellisse dai punti finali di uno dei suoi assi e un punto del bordo + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Crea un arco di ellisse dal suo centro, uno dei suoi raggi e i suoi punti finali + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Crea un arco di iperbole dal suo centro, vertice e punti finali + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Crea un arco di parabola dal suo fuoco, vertice e punti finali + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts index 2a7c7ee32c..700b4eac9d 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy カーボンコピーを作成 - + Copy the geometry of another sketch 別のスケッチのジオメトリーをコピー @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle 円弧や円を拘束する - + Constrain an arc or a circle 円弧や円を拘束する - + Constrain radius 半径拘束 - + Constrain diameter 直径拘束 - + Constrain auto radius/diameter 半径/直径を自動拘束 @@ -180,24 +180,24 @@ - Center and end points - 中心点と端点 + Center and endpoints + Center and endpoints - - End points and rim point - 端点と円周上の点から作成 + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline B-スプラインを作成 - + Create a B-spline in the sketch スケッチ上にB-スプラインを作成 @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle 円を作成 - + Create a circle in the sketcher スケッチに円を作成 - + Center and rim point 中心点と周上の点から円を作成 - + 3 rim points 円上の3点 @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic 円錐曲線を作成 - + Create a conic in the sketch スケッチに円錐曲線を作成 - - Ellipse by center, major radius, point - 中心、長半径、点を指定して楕円を作成 + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - 近点、遠点、短半径を指定して楕円を作成 + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - 中心、長半径、端点からなる楕円弧 + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - 中心、長半径、端点からなる双曲線の円弧 + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints 焦点、頂点、端点からなる放物線の円弧 @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet フィレットを作成 - + Create a fillet between two lines 2 線の間にフィレットを作成 - + Sketch fillet スケッチフィレット - - Constraint-preserving sketch fillet - 拘束を維持したスケッチフィレット + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon 正多角形を作成 - + Create a regular polygon in the sketcher スケッチャーで正多角形を作成 - + Triangle 三角形 - + Square 正方形 - + Pentagon 五角形 - + Hexagon 六角形 - + Heptagon 七角形 - + Octagon 八角形 - + Regular polygon 正多角形 @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle 角度を拘束 - + Fix the angle of a line or the angle between two lines 直線の角度または2直線間の角度を拘束 @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block ブロック拘束 - + Block the selected edge from moving 選択したエッジが動かないようブロック @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident 一致拘束 - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses 点間の一致拘束、または円、円弧、楕円の間の同心拘束を作成 @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter 直径拘束 - + Fix the diameter of a circle or an arc 円または円弧の直径を固定 @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance 距離拘束 - + Fix a length of a line or the distance between a line and a vertex or between two circles 直線の長さ、直線と節点の間の距離、または2つの円の間の距離を拘束 @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance 水平距離拘束 - + Fix the horizontal distance between two points or line ends 2点間または直線端点間の水平距離を拘束 @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance 垂直距離拘束 - + Fix the vertical distance between two points or line ends 2点間または直線端点間の垂直距離を拘束 @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal 等値拘束 - + Create an equality constraint between two lines or between circles and arcs 2直線間または円と円弧間の等値拘束を作成 @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally 水平拘束 - + Create a horizontal constraint on the selected item 選択されているアイテムに対して水平拘束を作成 @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock ロック拘束 - + Create both a horizontal and a vertical distance constraint on the selected vertex 選択した頂点に水平距離拘束と垂直距離拘束の両方を作成 @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel 平行拘束 - + Create a parallel constraint between two lines 2直線間の平行拘束を作成 @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular 直角拘束 - + Create a perpendicular constraint between two lines 2直線間の垂直拘束を作成 @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object オブジェクト上の点拘束 - + Fix a point onto an object 点をオブジェクト上に拘束 @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter 半径/直径を自動拘束 - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen 円を選択した場合は直径を拘束、円弧/スプラインを選択した場合は半径を拘束 @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) 屈折率拘束(スネルの法則) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. 光線の2端点と境界のエッジの間に屈折の法則 (スネル則の法則) による拘束を作成 @@ -585,12 +585,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical 対称拘束 - + Create a symmetry constraint between two points with respect to a line or a third point 線または第3点に対して、2点間の対称拘束を作成 @@ -599,12 +599,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent 正接拘束 - + Create a tangent constraint between two entities 2 つのエンティティ間に正接拘束を作成 @@ -612,12 +612,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically 垂直拘束 - + Create a vertical constraint on the selected item 選択されているアイテムに対して垂直拘束を作成 @@ -664,12 +664,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points 3点を指定して円を作成 - + Create a circle by 3 perimeter points 3つの境界点から円を作成 @@ -690,12 +690,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse 楕円弧を作成 - + Create an arc of ellipse in the sketch スケッチに楕円弧を作成します。 @@ -703,12 +703,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola 双曲線の円弧を作成 - + Create an arc of hyperbola in the sketch スケッチ上に双曲線の円弧を作成 @@ -716,12 +716,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola 放物線の円弧を作成 - + Create an arc of parabola in the sketch スケッチ上に放物線の円弧を作成 @@ -729,12 +729,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline B-スプラインを作成 - + Create a B-spline by control points in the sketch. スケッチの制御点からB-スプラインを作成 @@ -742,12 +742,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle 円を作成 - + Create a circle in the sketch スケッチ上に円を作成 @@ -755,12 +755,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points 3 点を指定して楕円を作成 - + Create an ellipse by 3 points in the sketch 3点を指定して楕円をスケッチに作成します。 @@ -768,12 +768,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center 中心点を指定して楕円を作成 - + Create an ellipse by center in the sketch 中心点を指定して楕円をスケッチに作成 @@ -781,12 +781,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet フィレットを作成 - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -794,12 +794,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon 七角形を作成 - + Create a heptagon in the sketch スケッチに七角形を作成 @@ -807,12 +807,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon 六角形を作成 - + Create a hexagon in the sketch スケッチに六角形を作成 @@ -846,12 +846,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon 八角形を作成 - + Create an octagon in the sketch スケッチに八角形を作成します。 @@ -859,12 +859,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon 五角形を作成 - + Create a pentagon in the sketch スケッチに五角形を作成します。 @@ -872,12 +872,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline 周期的なB-スプラインを作成 - + Create a periodic B-spline by control points in the sketch. スケッチの制御点から周期的なB-スプラインを作成 @@ -885,12 +885,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point 点を作成 - + Create a point in the sketch スケッチ上に点を作成 @@ -898,12 +898,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet コーナーを維持したフィレットを作成 - + Fillet that preserves intersection point and most constraints 交差点とほとんどの拘束を維持したフィレット @@ -950,12 +950,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon 正多角形を作成 - + Create a regular polygon in the sketch スケッチに正多角形を作成 @@ -963,12 +963,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot 長円形を作成 - + Create a slot in the sketch スケッチに長円を作成 @@ -976,12 +976,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square 正方形を作成 - + Create a square in the sketch スケッチに正方形を作成 @@ -989,12 +989,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle 正三角形を作成 - + Create an equilateral triangle in the sketch スケッチに正三角形を作成 @@ -1067,12 +1067,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge エッジを延長 - + Extend an edge with respect to the picked position ピックした位置でエッジを延長 @@ -1080,12 +1080,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry 外部ジオメトリーを作成 - + Create an edge linked to an external geometry 外部形状にリンクするエッジを作成 @@ -1422,12 +1422,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge エッジを分割 - + Splits an edge into two while preserving constraints 拘束を維持したままエッジを2つに分割 @@ -1474,12 +1474,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint 拘束をアクティブ化/非アクティブ化 - + Activates or deactivates the selected constraints 選択した拘束をアクティブ化・非アクティブ化 @@ -1500,12 +1500,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint 駆動拘束/参照拘束の切り替え - + Set the toolbar, or the selected constraints, into driving or reference mode ツールバー、または選択した拘束を駆動モードまたは参照モードに設定 @@ -1514,12 +1514,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge エッジをトリム - + Trim an edge with respect to the picked position ピックされている位置に従ってエッジをトリム @@ -1577,79 +1577,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint 「ロック」拘束を追加 - + Add relative 'Lock' constraint 相対的な「ロック」拘束を追加 - + Add fixed constraint 固定拘束を追加 - + Add 'Block' constraint 「ブロック」拘束を追加 - + Add block constraint ブロック拘束を追加 - - + + Add coincident constraint 一致拘束を追加 - - + + Add distance from horizontal axis constraint 水平軸からの距離拘束を追加 - - + + Add distance from vertical axis constraint 垂直軸からの距離拘束を追加 - - + + Add point to point distance constraint 点間の距離拘束を追加 - - + + Add point to line Distance constraint 点と線の間の距離拘束を追加 - - + + Add circle to circle distance constraint 円と円の間の距離拘束を追加 - + Add circle to line distance constraint 円と線の間の距離拘束を追加 - - - - - - + + + + + + Add length constraint 寸法拘束を追加 @@ -1672,8 +1672,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint 距離拘束を追加 @@ -1699,7 +1699,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints 対称拘束を追加 @@ -1710,220 +1710,220 @@ invalid constraints, degenerated geometry, etc. 距離拘束を追加 - + Add Horizontal constraint 水平拘束を追加 - + Add Vertical constraint 垂直拘束を追加 - + Add Block constraint Add Block constraint - + Add Angle constraint 角度拘束を追加 - - - - + + + + Add Equality constraint 等値拘束を追加 - + Add Equality constraints 等値拘束を追加 - - - + + + Add Radius constraint 半径拘束を追加 - - + + Add arc angle constraint 円弧の角度拘束を追加 - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint X軸方向の距離拘束を追加 - + Add DistanceY constraint Y軸方向の距離拘束を追加 - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint オブジェクト上への点の拘束を追加 - - + + Add point to point horizontal distance constraint 点間の水平距離拘束を追加 - + Add fixed x-coordinate constraint X座標固定拘束を追加 - - + + Add point to point vertical distance constraint 点間の垂直距離拘束を追加 - + Add fixed y-coordinate constraint Y座標固定拘束を追加 - - + + Add parallel constraint 並行拘束を追加 - - - - - - - + + + + + + + Add perpendicular constraint 直角拘束を追加 - + Add perpendicularity constraint 垂直拘束を追加 - + Swap coincident+tangency with ptp tangency 点間正接によって一致と正接を入れ替え - + Swap PointOnObject+tangency with point to curve tangency 点曲線間正接によってオブジェクト上点と正接を入れ替え - - - - - - - + + + + + + + Add tangent constraint 正接拘束を追加 - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point 正接拘束点を追加 - - - - + + + + Add radius constraint 半径拘束を追加 - - - - + + + + Add diameter constraint 直径拘束を追加 - - - - + + + + Add radiam constraint 径拘束を追加 - - - - + + + + Add angle constraint 角度拘束を追加 - - + + Add equality constraint 等値拘束を追加 - - - - - + + + + + Add symmetric constraint 対称拘束を追加 - + Add Snell's law constraint スネル則拘束を追加 - + Toggle constraint to driving/reference 拘束の駆動/参照を切り替え - + Activate/Deactivate constraint 拘束をアクティブ化/非アクティブ化 @@ -2008,7 +2008,7 @@ invalid constraints, degenerated geometry, etc. スケッチ楕円弧を追加 - + Add sketch arc of hyperbola スケッチ双曲線弧を追加 @@ -2152,8 +2152,8 @@ invalid constraints, degenerated geometry, etc. 拘束の仮想スペースを更新 - + Add auto constraints 自動拘束を追加 @@ -2178,12 +2178,12 @@ invalid constraints, degenerated geometry, etc. 曲線をドラッグ - + Drag Constraint 拘束をドラッグ - + Modify sketch constraints スケッチ拘束を変更 @@ -2274,59 +2274,59 @@ invalid constraints, degenerated geometry, etc. 自動拘束エラー: 等値拘束の適用後にスケッチの求解に失敗しました。 - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. 曲線の交点を推定できません。フィレット対象の曲線の頂点の間に一致拘束を追加してみてください。 - - + + BSpline Geometry Index (GeoID) is out of bounds. B-スプラインのジオメトリー番号(ジオID)が範囲外です。 - + You are requesting no change in knot multiplicity. ノット多重度で変更が起きないように要求しています。 - - + + The Geometry Index (GeoId) provided is not a B-spline curve. 入力されたジオメトリー番号(ジオID)がB-スプライン曲線になりません。 - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. ノット・インデックスが境界外です。OCCの記法に従うと最初のノットは1と非ゼロのインデックスを持ちます。 - + The multiplicity cannot be increased beyond the degree of the B-spline. B-スプラインの次数を越えて多重度を増やすことはできません。 - + The multiplicity cannot be decreased beyond zero. 0を越えて多重度を減らすことはできません。 - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCCは最大許容範囲内で多重度を減らすことができまぜん。 - + Knot cannot have zero multiplicity. ノットがゼロ多重性を持つことはでいません。 - + Knot multiplicity cannot be higher than the degree of the BSpline. B-スプラインの次数を超えてノット多重度を増やすことはできません。 - + Knot cannot be inserted outside the BSpline parameter range. B-スプラインパラメーターの範囲外にノットを挿入することはできません。 @@ -2406,127 +2406,11 @@ invalid constraints, degenerated geometry, etc. アタッチしない + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2536,6 +2420,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2553,9 +2556,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection 誤った選択 @@ -2608,106 +2608,106 @@ invalid constraints, degenerated geometry, etc. 選択されているアイテムの1つがスケッチ上にある必要があります. - + Select an edge from the sketch. スケッチからエッジを選択 - - - - - - + + + + + + Impossible constraint 拘束不可 - - + + The selected edge is not a line segment. 選択したエッジは線分ではありません. - - - + + + Double constraint 二重拘束 - + The selected edge already has a horizontal constraint! 選択されたエッジにはすでに水平拘束が設定されています! - + The selected edge already has a vertical constraint! 選択されたエッジにはすでに垂直拘束が設定されています! - - - + + + The selected edge already has a Block constraint! 選択されたエッジにはすでにブロック拘束が設定されています! - + There are more than one fixed points selected. Select a maximum of one fixed point! 複数の固定点が選択されています。固定点を1つだけ選択してください! - - - + + + Select vertices from the sketch. スケッチから頂点を選択 - + Select one vertex from the sketch other than the origin. スケッチから原点以外の節点を 1 つ選択します。 - + Select only vertices from the sketch. The last selected vertex may be the origin. スケッチから頂点のみを選択してください。最後に選択された頂点は原点になります。 - + Wrong solver status 不適切なソルバー状態 - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. スケッチが求解されていない場合や冗長/競合する拘束がある場合はブロック拘束を追加できません。 - + Select one edge from the sketch. スケッチから1本のエッジを選択 - + Select only edges from the sketch. スケッチからエッジのみを選択 - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 選択したオブジェクトの数が3ではありません。 - + Error エラー @@ -2717,80 +2717,80 @@ invalid constraints, degenerated geometry, etc. 予期しないエラーです。詳細についてはレポートビューで確認できます。 - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. 代わりに端点間の正接拘束が適用されました。 - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. スケッチから一致拘束のための複数の頂点、または同心拘束のための複数の円、楕円、円弧、楕円弧を選択してください。 - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. スケッチから一致拘束のための2頂点、または同心拘束のための2つの円、楕円、円弧、楕円弧を選択してください。 - + Select exactly one line or one point and one line or two points from the sketch. スケッチから1直線または1点と1直線または2点を選択してください - + Cannot add a length constraint on an axis! 軸に対して長さ拘束を追加することはできません! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. スケッチから1直線、1点と1直線、2点、または2円を選択してください。 - + This constraint does not make sense for non-linear curves. この拘束は非線形な曲線に対して無効です。 - + Endpoint to edge tangency was applied instead. 代わりに端点とエッジの正接拘束が適用されました。 - - - - - - + + + + + + Select the right things from the sketch. スケッチから正しい対象を選択してください。 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. B-スプラインの重みではないエッジを選択してください。 @@ -2800,92 +2800,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. 選択した点をそれぞれの曲線上に拘束することができません。同じ要素の一部であるか、両方とも外部ジオメトリーであるか、適切なエッジでないことが原因です。 - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. 選択した点をそれぞれの曲線上に拘束することができません。同じ要素のパーツであるか、両方とも外部ジオメトリーであることが原因です。 - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. スケッチから1直線または2つ以下の点を選択してください - + Cannot add a horizontal length constraint on an axis! 軸に対して水平距離拘束を追加することはできません! - + Cannot add a fixed x-coordinate constraint on the origin point! 原点に対してX座標を固定する拘束を追加することはできません! - - + + This constraint only makes sense on a line segment or a pair of points. この拘束は1線分または点ペアに対してのみ有効です。 - + Cannot add a vertical length constraint on an axis! 軸に対して垂直距離拘束を追加することはできません! - + Cannot add a fixed y-coordinate constraint on the origin point! 原点に対してY座標を固定する拘束を追加することはできません! - + Select two or more lines from the sketch. スケッチから2本以上の直線を選択してください - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. スケッチから2本以上の直線を選択してください - + The selected edge is not a valid line. 選択されたエッジは有効な直線ではありません。 - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2895,35 +2895,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 可能な組み合わせ: 2曲線; 1端点と1曲線; 2端点; 2曲線と1点 - + Select some geometry from the sketch. perpendicular constraint スケッチから幾つかのジオメトリを選択してください。 - - + + Cannot add a perpendicularity constraint at an unconnected point! 接続していない点に対して垂直拘束を追加することはできません! - - + + One of the selected edges should be a line. 選択されているエッジの1つが直線である必要があります - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. 端点間の正接拘束が適用されました。一致拘束は削除されました。 - + Endpoint to edge tangency was applied. The point on object constraint was deleted. 端点とエッジの正接拘束が適用されました。点のオブジェクト上への拘束は削除されました。 - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2933,67 +2933,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 可能な組み合わせ: 2曲線; 端点と曲線; 2端点; 2曲線と1点 - + Select some geometry from the sketch. tangent constraint スケッチから幾つかのジオメトリを選択してください。 - - - + + + Cannot add a tangency constraint at an unconnected point! 接続されていない点に対して正接拘束を追加することはできません! - - + + Tangent constraint at B-spline knot is only supported with lines! B-スプラインのノットでの接線拘束は線でのみサポートされています! - + B-spline knot to endpoint tangency was applied instead. 代わりにB-スプラインのノットと端点の正接拘束が適用されました。 - - + + Wrong number of selected objects! 選択したオブジェクトの数が正しくありません ! - - + + With 3 objects, there must be 2 curves and 1 point. 使用される3オブジェクトは2つの曲線と1つの点である必要があります。 - - - - - - + + + + + + Select one or more arcs or circles from the sketch. スケッチから 1 つ以上の円弧または円を選択してください。 - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. 1つ以上のB-スプラインの極、または1つ以上の円・円弧をスケッチから選択してください。ただし混在はできません。 - - - + + + Constraint only applies to arcs or circles. 円弧または円のみに適用される拘束です。 - - + + Select one or two lines from the sketch. Or select two edges and a point. スケッチから1本か2本の線分を選択してください。あるいは2つのエッジと頂点を選択します。 @@ -3008,88 +3008,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 2つの平行線に角度拘束を設定できません。 - + Cannot add an angle constraint on an axis! 軸に対して角度拘束を追加することはできません! - + Select two edges from the sketch. スケッチから2本のエッジを選択してください - + Select two or more compatible edges. 複数の互換性のあるエッジを選択してください。 - + Sketch axes cannot be used in equality constraints. スケッチ軸を等値拘束で使用することはできません。 - + Equality for B-spline edge currently unsupported. B-スプラインエッジの等値拘束は現在サポートされていません。 - - - - + + + + Select two or more edges of similar type. 複数の同じタイプのエッジを選択してください。 - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. 2つの点と対称線、2つの点と対称点、あるいは1本の直線と対称点をスケッチから選択してください。 - - + + Cannot add a symmetry constraint between a line and its end points. 直線とその端点間に対称拘束を追加することはできません。 - - - - + + + + Cannot add a symmetry constraint between a line and its end points! 直線とその端点間に対称拘束を追加することはできません! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw 光線として使用される直線の2端点と境界を表すエッジを選択してください。1つ目に選択された点がインデックスn1、2つ目の点がインデックスn2と対応し、データ値は比n2/n1を設定します。 - + Selected objects are not just geometry from one sketch. 選択されたオブジェクトは1つのスケッチから成るジオメトリーではありません。 - + Cannot create constraint with external geometry only. 外部ジオメトリーのみからなる拘束を作成することはできません。 - + Incompatible geometry is selected. 互換性のないジオメトリーが選択されています。 - - - - - + + + + + Select constraints from the sketch. スケッチから拘束を選択 @@ -3111,9 +3111,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 1から %1 の間でB-スプラインの次数を定義してください: + - CAD Kernel Error CADカーネルエラー @@ -3256,14 +3256,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 軸配置を除去するには、非外部ジオメトリー要素を1つ以上選択する必要があります。 - - + + Unsupported visual layer operation サポートされていない表示レイヤー操作です。 - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted 外部ジオメトリーの別の表示レイヤーへの移動は現在サポートされていません。外部ジオメトリーは省略されます。 @@ -3647,12 +3647,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 長さ: - + Refractive index ratio 屈折率 - + Ratio n2/n1: 比 n2/n1: @@ -3660,72 +3660,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal 標準 - + Construction 構築 - + Internal 内部 - + External 外部 - + All types 全てのタイプ - + Point - + Line 直線 - + Circle - + Ellipse 楕円 - + Arc of circle 円弧 - + Arc of ellipse 楕円弧 - + Arc of hyperbola 双曲線弧 - + Arc of parabola 放物線弧 - + B-Spline B-スプライン曲線 @@ -3848,27 +3848,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 垂直軸を選択 - + Layer Layer - + Layer 0 レイヤー 0 - + Layer 1 レイヤー 1 - + Hidden 非表示 - + Delete 削除 @@ -4739,120 +4739,120 @@ However, no constraints linking to the endpoints were found. 設定 - - - - - - - - - - + + + + + + + + + + Construction 構築 - + Elements 要素 - - - - + + + + Point - - - - - - - - - - + + + + + + + + + + Internal 内部 - - - - + + + + Line 直線 - - - - + + + + Arc 円弧 - - - - + + + + Circle - - - - + + + + Ellipse 楕円 - - - - + + + + Elliptical Arc 楕円弧 - - - - + + + + Hyperbolic Arc 双曲線の円弧 - - - - + + + + Parabolic Arc 放物線の円弧 - - - - + + + + BSpline B-スプライン - - - - + + + + Other その他 - + Extended information 拡張情報 @@ -5072,119 +5072,119 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch スケッチを編集 - + A dialog is already open in the task panel タスクパネルで既にダイアログが開かれています - + Do you want to close this dialog? このダイアログを閉じますか? - + Invalid sketch スケッチが無効です - + Do you want to open the sketch validation tool? スケッチ検証ツールを起動しますか? - + The sketch is invalid and cannot be edited. スケッチが不正で、編集できません。 - + Please remove the following constraint: 以下の拘束を削除してください: - + Please remove at least one of the following constraints: 以下の拘束から少なくとも1つを削除してください: - + Please remove the following redundant constraint: 以下の不要な拘束を削除してください: - + Please remove the following redundant constraints: 以下の不要な拘束を削除してください: - + The following constraint is partially redundant: 以下の拘束は一部が冗長です: - + The following constraints are partially redundant: 以下の拘束は一部が冗長です: - + Please remove the following malformed constraint: 次の不正な拘束を削除してください: - + Please remove the following malformed constraints: 次の不正な拘束を削除してください: - + Empty sketch スケッチが空です - + Over-constrained: 過剰拘束: - + Malformed constraints: 不正な拘束: - + Redundant constraints: 冗長な拘束: - + Partially redundant: 部分的に冗長: - + Solver failed to converge ソルバーの収束に失敗 - + Under constrained: 拘束中: - + %n DoF(s) %n 自由度 - + Fully constrained 完全拘束 @@ -5282,8 +5282,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc 円または円弧の直径を固定 @@ -5291,8 +5291,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc 円または円弧の半径/直径を固定 @@ -5300,8 +5300,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 円または円弧の半径を固定 @@ -5315,70 +5315,25 @@ This is done by analyzing the sketch geometries and constraints. 最後に選択された点を参照位置としてジオメトリーの単純コピーを作成 - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - 終点と円弧に上の点から円弧を作成 - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points 円周上の3点から円を作成 - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - 中心と終点から円弧を作成 - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - 中心点、長半径、端点から楕円弧を作成 - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - 中心、長半径、端点から双曲線の円弧を作成 - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - 焦点、頂点、端点から放物線の円弧を作成 - - Sketcher_CreateBSpline - + B-spline by control points 制御点によるB-スプライン - - + + Create a B-spline by control points 制御点によるB-スプラインを作成 @@ -5386,35 +5341,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point 中心と円周上の点から円を作成 - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - 近点、遠点、短半径から楕円を作成 - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - 中心、長半径、1点から楕円を作成 - - Sketcher_CreateFillet - - + + Creates a radius between two lines 2 線の間に半径を作成 @@ -5422,8 +5359,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner 中心点と1つの角を指定して七角形を作成 @@ -5431,8 +5368,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner 中心点と1つの角を指定して六角形を作成 @@ -5448,14 +5385,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner 中心点と1つの角を指定して八角形を作成 + - Create a regular polygon by its center and by one corner 中心点と1つの角を指定して正多角形を作成 @@ -5463,8 +5400,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner 中心点と1つの角を指定して五角形を作成 @@ -5472,8 +5409,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point 拘束と交差点を維持したフィレット @@ -5497,8 +5434,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner 中心点と1つの角を指定して正方形を作成 @@ -5506,8 +5443,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner 中心点と1つの角を指定して正三角形を作成 @@ -5515,13 +5452,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points 制御点による周期的なB-スプライン + - Create a periodic B-spline by control points 制御点による周期的なB-スプラインを作成 @@ -5919,7 +5856,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more %1 以上 @@ -6142,46 +6079,46 @@ The grid spacing change if it becomes smaller than this number of pixel.スケッチに一部が冗長な拘束があります! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! 放物線がバージョン変換されました。変換されたファイルは以前のバージョンのFreeCADでは開けません!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error エラー @@ -6217,16 +6154,16 @@ The grid spacing change if it becomes smaller than this number of pixel.この拘束には無効なインデックス情報が含まれており、形式が正しくありません。 + + + - - - - - + + Invalid Constraint @@ -6243,12 +6180,12 @@ The grid spacing change if it becomes smaller than this number of pixel.楕円弧を追加できませんでした。 - + Cannot create arc of hyperbola from invalid angles, try again! 角度が正しくないため双曲線の円弧を作成できません。再度、試してください! - + Cannot create arc of hyperbola 双曲線の円弧を作成できません。 @@ -6268,8 +6205,8 @@ The grid spacing change if it becomes smaller than this number of pixel.B-スプラインの極の作成エラー - + Error creating B-spline B-スプラインの作成エラー @@ -6325,17 +6262,17 @@ The grid spacing change if it becomes smaller than this number of pixel.線を追加できませんでした。 - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6370,9 +6307,9 @@ The grid spacing change if it becomes smaller than this number of pixel.エッジをトリムできませんでした。 - + Value Error 値エラー @@ -6435,13 +6372,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots ノットによるB-スプライン - - + + Create a B-spline by knots ノットによるB-スプラインを作成 @@ -6449,13 +6386,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots ノットによる周期的なB-スプライン + - Create a periodic B-spline by knots ノットによる周期的なB-スプラインを作成 @@ -6561,12 +6498,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots ノットによるB-スプラインを作成 - + Create a B-spline by knots, i.e. by interpolation, in the sketch. ノット、つまり補間によってスケッチにB-スプラインを作成。 @@ -6574,12 +6511,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots ノットによる周期的なB-スプラインを作成 - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. ノット、つまり補間によってスケッチに周期的なB-スプラインを作成。 @@ -6587,12 +6524,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension 寸法 - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6630,12 +6567,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius 半径拘束 - + Fix the radius of a circle or an arc 円または円弧の半径を固定 @@ -6810,8 +6747,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6825,12 +6762,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6838,12 +6775,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6851,12 +6788,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6864,12 +6801,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6877,12 +6814,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6890,12 +6827,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident 一致拘束 - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7316,4 +7253,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ka.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ka.ts index d6e36e64d4..1549e50ce8 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ka.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ka.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy ზუსტი ასლის შექმნა - + Copy the geometry of another sketch სხვა ესკიზის გეომეტრიის კოპირება @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle რკალის ან წრის შეზღუდვა - + Constrain an arc or a circle რკალის ან წრის შეზღუდვა - + Constrain radius რადიუსის სეზღუდვა - + Constrain diameter დიამეტრის შეზღუდვა - + Constrain auto radius/diameter ავტომატური რადიუსის/დიამეტრის შეზღუდვა @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints ცენტრი და საბოლოო წერტილები - - End points and rim point - რკალის შექმნა ბოლო წერტილებით და მხების წერტილით + + Endpoints and rim point + ბოლოწერტილები და მხების წერტილი CmdSketcherCompCreateBSpline - + Create B-spline B-სპლაინის შექმნა - + Create a B-spline in the sketch ესკიზზე B-სპლაინის შექმნა @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle წრის შექმნა - + Create a circle in the sketcher ესკიზზე წრეწირის შექმნა - + Center and rim point ცენტრი და მხების წერტილი - + 3 rim points სამი წერტილის მიხედვით @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic კონუსის ტიპის ფიგურის შექმნა - + Create a conic in the sketch ესკიზზე კონუსის შექმნა - - Ellipse by center, major radius, point - ოვალი ცენტრით, ძირითადი რადიუსით და წერტილით + + Ellipse by center, radius, rim point + ოვალი ცენტრით, რადიუსით და მხების წერტილით - - Ellipse by periapsis, apoapsis, minor radius - ოვალი პერიაფსისით, აპოაფსისით და მცირე რადიუსით + + Ellipse by axis endpoints, rim point + ოვალი ღერძის ბოლოწერტილებით და შეხების წერტილით - - Arc of ellipse by center, major radius, endpoints - ოვალის რკალი ცენტრის, ძირითადი რადიუსის და ბოლო წერტილების მიხედვით + + Arc of ellipse by center, radius, endpoints + ოვალის რკალი ცენტრის, რადიუსის და ბოლო წერტილების მიხედვით - - Arc of hyperbola by center, major radius, endpoints - ჰიპერბოლის რკალი ცენტრის, ძირითადი რადიუსის და ბოლო წერტილების მიხედვით + + Arc of hyperbola by center, vertex, endpoints + ჰიპერბოლის რკალი ცენტრის, წვეროს და ბოლო წერტილების მიხედვით - + Arc of parabola by focus, vertex, endpoints პარაბოლის რკალის აგება ფოკუსით, წვეროთი და ბოლო წერტილებით @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet მომრგვალების შექმნა - + Create a fillet between two lines ორ ხაზს შუა მომრგვალების შექმნა - + Sketch fillet დამრგვალება - - Constraint-preserving sketch fillet - მომრგვალება შეზღუდვის შენახვით + + Corner-preserving sketch fillet + კუთხის შემნახველი ესკიზის მომრგვალებული ნაზოლი @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon ჩვეულებრივი მრავალკუთხედის შექმნა - + Create a regular polygon in the sketcher ესკიზზე ჩვეულებრივი მრავალკუთხედის შექმნა - + Triangle სამკუთხედი - + Square კვადრატი - + Pentagon ხუთკუთხედი - + Hexagon ექვსკუთხედი - + Heptagon შვიდკუთხედი - + Octagon რვაკუთხედი - + Regular polygon ჩვეულებრივი მრავალკუთხედი @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle კუთხის შეზღუდვა - + Fix the angle of a line or the angle between two lines ხაზის ან ორ ხაზს შორს კუთხის დაფიქსირება @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block შეზღუდვის ბლოკირება - + Block the selected edge from moving მონიშნული წიბოს გადაადგილების დაბლოკვა @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident დამთხვევის შეზღუდვა - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses წერტილებს შორის დამთხვევის ან წრეწირებს, რკალებსა და ოვალებს შორის კონცენტრულობის შეზღუდვის შექმნა @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter დიამეტრის შეზღუდვა - + Fix the diameter of a circle or an arc წრის ან რკალის რადიუსის გასწორება @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance დაშორების შეზღუდვა - + Fix a length of a line or the distance between a line and a vertex or between two circles დააყენეთ ხაზის სიგრძე ან მანძილი ხაზსა და წვეროს ან ორ წრეწირს შორის @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance ჰორიზონტალური დაშორების შეზღუდვა - + Fix the horizontal distance between two points or line ends ორ წერტილს ან ხაზის ბოლოებს შორის ჰორიზონტალური დაშორების ფიქსირება @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance ვერტიკალური დაშორების შეზღუდვა - + Fix the vertical distance between two points or line ends ორ წერტილს ან ხაზის ბოლოებს შუა დაშორების ფიქსირება @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal ტოლობით შეზღუდვა - + Create an equality constraint between two lines or between circles and arcs ორ ხაზს ან წრეწირსა და რკალებს შორის თანასწორობის შეზღუდვის შექმნა @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally ჰორიზონტალურობის შეზღუდვა - + Create a horizontal constraint on the selected item არჩეულ ელემენტზე ჰორიზონტალური შეზღუდვის შექმნა @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock მდებარეობის ჩაკეტვა - + Create both a horizontal and a vertical distance constraint on the selected vertex ორივე, ჰორიზონტალური და ვერტიკალური შეზღუდვების შექმნა @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel პარალელურობის შეზღუდვა - + Create a parallel constraint between two lines ორ ხაზს შორის პარალელურობის შეზღუდვის შექმნა @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular მართობულობის შეზღუდვა - + Create a perpendicular constraint between two lines ორ ხაზს შორის მართობის შეზღუდვის შექმნა @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object წერტილის ობიექტზე დამაგრება - + Fix a point onto an object წერტილის ობიექტზე მიმაგრება @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter ავტომატური რადიუსის/დიამეტრის შეზღუდვა - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen თუ წრეწირს აირჩევთ, დიამეტრი უცვლელი იქნება, თუ რკალს/სპლაინის პოლუსი - რადიუსი @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) არეკვლის შეზღუდვა (სნელის კანონი) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. სხივების ორ ბოლო წერტილსა და წიბოს, როგორც საკონტაქტო ზედაპირს შორის გარდატეხის კანონის (სნელის კანონი) შეზღუდვის შექმნა. @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical სიმეტრიულობის შეზღუდვა - + Create a symmetry constraint between two points with respect to a line or a third point სიმეტრიის შეზღუდვის შექმნა ორ წერტილს შორის @@ -601,12 +601,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent მხების შეზღუდვა - + Create a tangent constraint between two entities ორი ობიექტს შორის მხების შეზღუდვის შექმნა @@ -614,12 +614,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically ვერტიკალურობის შეზღუდვა - + Create a vertical constraint on the selected item არჩეულ ელემენტზე ვერტიკალური შეზღუდვის შექმნა @@ -666,12 +666,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points წრეწირის შექმნა სამი წერტილით - + Create a circle by 3 perimeter points სამ პერიმეტრულ წერტილზე გამავალი წრეწირის შექმნა @@ -692,12 +692,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse ოვალის რკალის შექმნა - + Create an arc of ellipse in the sketch ესკიზში ოვალის რკალის შექმნა @@ -705,12 +705,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola ჰიპერბოლის რკალის შექმნა - + Create an arc of hyperbola in the sketch ესკიზში ჰიპერბოლის რკალის შექმნა @@ -718,12 +718,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola რკალის ან პარაბოლის შექმნა - + Create an arc of parabola in the sketch ესკიზში პარაბოლის რკალის შექმნა @@ -731,12 +731,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline B-სპლაინის შექმნა - + Create a B-spline by control points in the sketch. ესკიზში B-სპლაინის საკონტროლო წერტილებით შექმნა. @@ -744,12 +744,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle წრის შექმნა - + Create a circle in the sketch ესკიზზე წრეწირის შექმნა @@ -757,12 +757,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points ოვალის სამი წერტილით შექმნა - + Create an ellipse by 3 points in the sketch ესკიზზე ოვალის 3 წერტილით შექმნა @@ -770,12 +770,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center ოვალის ცენტრით შექმნა - + Create an ellipse by center in the sketch ესკიზში ოვალის ცენტრით შექმნა @@ -783,12 +783,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet - მომრგვალებული ნაზოლის შექმნა + მომრგვალების შექმნა - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -796,12 +796,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon შვიდკუთხედის შექმნა - + Create a heptagon in the sketch ესკიზზე შვიდკუთხედის შექმნა @@ -809,12 +809,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon ექვსკუთხედის შექმნა - + Create a hexagon in the sketch ესკიზში ექვსკუთხედის შექმნა @@ -848,12 +848,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon რვაკუთხედის შექმნა - + Create an octagon in the sketch ესკიზზე რვაკუთხედის შექმნა @@ -861,12 +861,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon ხუთკუთხედის შექმნა - + Create a pentagon in the sketch ესკიზზე ხუთკუთხედის შექმნა @@ -874,12 +874,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline პერიოდული B-სპლაინის შექნა - + Create a periodic B-spline by control points in the sketch. ესკიზში პერიოდული B-სპლაინის საკონტროლო წერტილებით შექმნა. @@ -887,12 +887,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point წერტილის შექმნა - + Create a point in the sketch ესკიზზე წერტილის შექმნა @@ -900,12 +900,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet მომრგვალების შექმნა კვეთის წერტილის შენახვით - + Fillet that preserves intersection point and most constraints მომრგვალება, რომელიც ინარჩუნებს კვეთის წერტილებს და შეზღუდვების უმრავლესობას @@ -952,12 +952,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon ჩვეულებრივი მრავალკუთხედის შექმნა - + Create a regular polygon in the sketch ესკიზზე ჩვეულებრივი მრავალკუთხედის შექმნა @@ -965,12 +965,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot სლოტის შექმნა - + Create a slot in the sketch ესკიზზე ღარის შექმნა @@ -978,12 +978,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square კვადრატის შექმნა - + Create a square in the sketch ესკიზზე ოთხკუთხედის შექმნა @@ -991,12 +991,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle ტოლგვერდა სამკუთხედის შექმნა - + Create an equilateral triangle in the sketch ესკიზზე ტოლფერდა სამკუთხედის შექმნა @@ -1069,12 +1069,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge წიბოს გაფართოვება - + Extend an edge with respect to the picked position წიბოს მონიშნული მდებარეობისკენ გაგრძელება @@ -1082,12 +1082,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry გარე გეომეტრიის შექმნა - + Create an edge linked to an external geometry გარე გეომეტრიაზე მიბმული წიბოს შექმნა @@ -1425,12 +1425,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge წიბოს გაყოფა - + Splits an edge into two while preserving constraints წიბოს ორად გაყოფა შეზღუდვების შენარჩუნებით @@ -1477,12 +1477,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint შეზღუდვის აქტივაცია/დეაქტივაცია - + Activates or deactivates the selected constraints მონიშნული შეზღუდვების ჩართ/გამორთ @@ -1503,12 +1503,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint მშენებლობის/მიმართვის შეზღუდვის გადართვა - + Set the toolbar, or the selected constraints, into driving or reference mode ხელსაწყოთა პანელის, ან მონიშნული შეზღუდვების @@ -1518,12 +1518,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge წიბოს გაჭრა - + Trim an edge with respect to the picked position წიბოს მონიშნული პოზიციის გასწვრივ წაჭრა @@ -1582,79 +1582,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint "მბლოკავი" შეზღუდვის დამატება - + Add relative 'Lock' constraint ფარდობითი „დაბლოკვის“ შეზღუდვის დამატება - + Add fixed constraint ფიქსირებული შეზღუდვის დამატება - + Add 'Block' constraint 'ბლოკის' ტიპის შეზღუდვის დამატება - + Add block constraint ბლოკის შეზღუდვის დამატება - - + + Add coincident constraint დამთხვევის შეზღუდვის დამატება - - + + Add distance from horizontal axis constraint ჰორიზონტალური ღერძის შეზღუდვამდე მანძილის დამატება - - + + Add distance from vertical axis constraint ვერიკალურ ღერძამდე მანძილის შეზღუდვის დამატება - - + + Add point to point distance constraint წერტილიდან წერტილამდე მანძილის შეზღუდვის დამატება - - + + Add point to line Distance constraint წერტილიდან ხაზამდე დაშორების შეზღუდვის დამატება - - + + Add circle to circle distance constraint წრეწირიდან წრეწირამდე მანძილის შეზღუდვის დამატება - + Add circle to line distance constraint წრეწირიდან ხაზამდე მანძილის შეზღუდვის დამატება - - - - - - + + + + + + Add length constraint სიგრძის შეზღუდვის დამატება @@ -1677,8 +1677,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint დაშორების შეზღუდვის დამატება @@ -1704,7 +1704,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints სიმეტრიის შეზღუდვების დამატება @@ -1715,220 +1715,220 @@ invalid constraints, degenerated geometry, etc. დაშორების შეზღუდვების დამატება - + Add Horizontal constraint ჰორიზონტალური შეზღუდვის დამატება - + Add Vertical constraint ვერტიკალური შეზღუდვის დამატება - + Add Block constraint ბლოკის შეზღუდვის დამატება - + Add Angle constraint კუთხის შეზღუდვის დამატება - - - - + + + + Add Equality constraint ტოლობის შეზღუდვის დამატება - + Add Equality constraints ტოლობის შეზღუდვების დამატება - - - + + + Add Radius constraint რადიუსის შეზღუდვის დამატება - - + + Add arc angle constraint რკალის კუთხის შეზღუდვის დამატება - + Add concentric and length constraint კონცენტრირებული და სიგრძის შეზღუდვის დამატებ - + Add DistanceX constraint X დაშორების შეზღუდვის დამატება - + Add DistanceY constraint Y დაშორების შეზღუდვის დამატება - + Add point to circle Distance constraint წერტილიდან წრეწირამდე დაშორების შეზღუდვის დამატება - - + + Add point on object constraint ობექტის შეზღუდვაზე წერტილის დამატება - - + + Add point to point horizontal distance constraint წერტილიდან წერტილამდე ჰორიზონტალური მანძილის შეზღუდვის დამატება - + Add fixed x-coordinate constraint X-კოორდინატის ფიქსირებული შეზღუდვის დამატება - - + + Add point to point vertical distance constraint წერტილიდან წერტილამდე ვერტიკალური მანძილის შეზღუდვის დამატება - + Add fixed y-coordinate constraint Y-კოორდინატის ფიქსირებული შეზღუდვის დამატება - - + + Add parallel constraint პარალელურობის შეზღუდვის დამატება - - - - - - - + + + + + + + Add perpendicular constraint მართკუთხა შეზღუდვის დამატება - + Add perpendicularity constraint მართკუთხობის სეზღუდვის დამატება - + Swap coincident+tangency with ptp tangency დამთხვევის+მხების ptp მხებთან მიმოცვლა - + Swap PointOnObject+tangency with point to curve tangency PointOnObject+მხების მიმოცვლა მრუდის მხების წერტილთან - - - - - - - + + + + + + + Add tangent constraint მხების შეზღუდვის დამატება - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point მხების შეზღუდვის წერტილის დამატება - - - - + + + + Add radius constraint რადიუსის შეზღუდვის დამატება - - - - + + + + Add diameter constraint დიამეტრის შეზღუდვის დამატება - - - - + + + + Add radiam constraint რადიამის შეზღუდვის დამატება - - - - + + + + Add angle constraint კუთხის შეზღუდვის დამატება - - + + Add equality constraint ტოლობის შეზღუდვის დამატება - - - - - + + + + + Add symmetric constraint სიმეტრიულობის შეზღუდვის დამატება - + Add Snell's law constraint სნელის კანონის შეზღუდვის დამატება - + Toggle constraint to driving/reference მშენებლობის/მიმართვის შეზღუდვის გადართვა - + Activate/Deactivate constraint შეზღუდვის აქტივაცია/დეაქტივაცია @@ -2013,7 +2013,7 @@ invalid constraints, degenerated geometry, etc. ესკიზზე ოვალის რკალის დამატება - + Add sketch arc of hyperbola ჰიპერბოლის ესკიზური რკალის დამატება @@ -2036,7 +2036,7 @@ invalid constraints, degenerated geometry, etc. Create fillet - მომრგვალების შექმნა + მომრგვალებული ნაზოლის შექმნა @@ -2157,8 +2157,8 @@ invalid constraints, degenerated geometry, etc. შეზღუდვის ვირტუალური სივრცის განახლება - + Add auto constraints ავტომატური შეზღუდვების დამატება @@ -2183,12 +2183,12 @@ invalid constraints, degenerated geometry, etc. რკალის გადათრევა - + Drag Constraint შეზღუდვის გადათრევა - + Modify sketch constraints ესკიზის შეზღუდვების ჩასწორება @@ -2230,7 +2230,7 @@ invalid constraints, degenerated geometry, etc. Translate geometries - Translate geometries + გეომეტრიების მოძრაობითი გადატანა @@ -2279,59 +2279,59 @@ invalid constraints, degenerated geometry, etc. ავტომატური შეზღუდვის შეცდომა: თანასწორობის შეზღუდვების გადატარების შემდეგ ესკიზი ამოხსნადი არაა. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. მრუდების კვეთის გამოცნობის შეცდომა. სცადეთ დაამატოთ დამთხვევების შეზღუდვები მრუდების წვეროებზე, რომლის მომრგვალებასაც ცდილობთ. - - + + BSpline Geometry Index (GeoID) is out of bounds. B-სპლაინის გეომეტრიის ინდექსი (GeoID) დაშვებულ ლიმიტებს გარეთაა. - + You are requesting no change in knot multiplicity. თქვენ არ ითხოვთ ცვლილებას კვანძის გაყოფადობაში. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. გეომეტრიის მითითებული ინდექსი (GeoID) B-სპლაინის მრუდს არ წარმოადგენს. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. კვანძის ინდექსი საზღვრებს გარეთაა. დაიმახსოვრეთ, რომ OCC ნოტაციების შესაბამისად, პირველი კვანძის ინდექსი 1-ია და არა 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. სიმრავლე არ შეიძლება გაიზარდოს B-სპლაინის დონის მიღმა. - + The multiplicity cannot be decreased beyond zero. სიმრავლე არ შეიძლება შემცირდეს ნულს მიღმა. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC-ს არ შეუძლია შეამციროს სიმრავლე მაქსიმალური ტოლერანტობის ფარგლებში. - + Knot cannot have zero multiplicity. კვანძებს არ შეიძლება ნულოვანი მამრავლი ჰქონდეს. - + Knot multiplicity cannot be higher than the degree of the BSpline. კვანძის მამრავლი არ შეიძლება B-სპლაინის დონეზე დიდი იყოს. - + Knot cannot be inserted outside the BSpline parameter range. კვანძის ჩასმა B-სპლაინის პარამეტრების დიაპაზონის გარეთ შეუძლებელია. @@ -2411,127 +2411,11 @@ invalid constraints, degenerated geometry, etc. არ მიამაგრო + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection არასწორი მონიშნული @@ -2613,106 +2613,106 @@ invalid constraints, degenerated geometry, etc. ერთერთი მონიშნული ესკიზზე უნდა იყოს. - + Select an edge from the sketch. ესკიზზე წიბოს მონიშვნა. - - - - - - + + + + + + Impossible constraint შეზღუდვის შეცდომა - - + + The selected edge is not a line segment. მონიშნული წიბო ხაზის სეგმენტს არ წარმოადგენს. - - - + + + Double constraint ორმაგი შეზღუდვა - + The selected edge already has a horizontal constraint! მონიშნულ წიბოს უკვე აქვს ჰორიზონტალური შეზღუდვა! - + The selected edge already has a vertical constraint! მონიშნულ წიბოს უკვე აქვს ვერტიკალური შეზღუდვა! - - - + + + The selected edge already has a Block constraint! მონიშნულ წიბოს უკვე ადევს შეზღუდვის ბლოკი! - + There are more than one fixed points selected. Select a maximum of one fixed point! მონიშნულია ერთზე მეტი დამაგრებული წერტილი. მონიშნეთ მაქსიმუმ ერთი დამაგრებული წერტილი! - - - + + + Select vertices from the sketch. ესკიზზე წვეროების მონიშვნა. - + Select one vertex from the sketch other than the origin. აირჩიეთ წიბოდან კიდევ ერთი წვერო წყაროს გარდა. - + Select only vertices from the sketch. The last selected vertex may be the origin. ესკიზზე მხოლოდ წვეროები მონიშნეთ. ბოლოს მონიშნული წვერო საწყისი შეიძლება იყოს. - + Wrong solver status ამომხსნელის არასწორი სტატუსი - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. დაბლოკვის შეზღუდვას ვერ დაამატებთ, თუ ესკიზი ამოუხსნელია ან არსებობს დამატებითი, ან ურთიერთგამომრიცხავი შეზღუდვები. - + Select one edge from the sketch. ესკიზიდან მონიშნეთ ერთი წიბო. - + Select only edges from the sketch. ესკიზიდან მონიშნეთ მხოლოდ წიბოები. - + Only tangent-via-point is supported with a B-spline. B-სპლაინთან ერთად, მხოლოდ, მხები-წერტილის-გავლითაა მხარდაჭერილი. - + Number of selected objects is not 3 მონიშნული ობიექტების რიცხვი არ უდრის სამს - + Error შეცდომა @@ -2722,80 +2722,80 @@ invalid constraints, degenerated geometry, etc. მოულოდნელი შეცდომა. მეტ ინფორმციას შეიძლება ანგარიშის ხედში მიაგნოთ. - + The selected item(s) can't accept a horizontal or vertical constraint! არჩეული ელემენტ(ებ)-ი ვერ მიიღებს ჰორიზონტალურ ან ვერტიკალურ შეზღუდვას! - + Endpoint to endpoint tangency was applied instead. სამაგიეროდ გამოყენებულია ბოლო წერტილიდან ბოლო წერტილთან მხები. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. დამთხვევის შეზღუდვისთვის ესკიზიდან აირჩიეთ ორი წვერო ან მეტი წვერო, ან, კონცენტრული შეზღუდვისთვის, ორი ან მეტი წრეწირი, ოვალები, რკალები ან ოვალის რკალები. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. დამთხვევის შეზღუდვისთვის ესკიზიდან აირჩიეთ ორი წვერო, ან, კონცენტრული შეზღუდვისთვის, ორი წრეწირი, ოვალები, რკალები ან ოვალის რკალები. - + Select exactly one line or one point and one line or two points from the sketch. ესკიზიდან აირჩიეთ მხოლოდ ერთი ხაზი ან ერთი წერტილი და ერთი ხაზი ან ორი წერტილი. - + Cannot add a length constraint on an axis! ღერძზე სიგრძის შეზღუდვის დაწესება შეუძლებელია! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. ესკიზიდან აირჩიეთ მხოლოდ ერთი ხაზი ან ერთი წერტილი და ერთი ხაზი ან ორი წერტილი ან ორი წრეწირი. - + This constraint does not make sense for non-linear curves. ამ შეზღუდვას აზრი არ აქვს არახაზოვანი მრუდებისთვის. - + Endpoint to edge tangency was applied instead. სამაგიეროდ გამოყენებულია ბოლო წერტილიდან წიბოსთნ მხები. - - - - - - + + + + + + Select the right things from the sketch. ესკიზიდან სწორი რამეების არჩევა. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. აირჩიეთ წიბო, რომელიც არაა B-სპლაინის წონა. @@ -2805,92 +2805,92 @@ invalid constraints, degenerated geometry, etc. წაიშალა ერთი ან ორი წერტილი ობიექტის შეზღუდვაზე, რადგან უკანასკნელი გადატარებული შეზღუდვა შინაგანად შეცვლის ობიექტზე მყოფ წერტილებსაც. - + Select either several points, or several conics for concentricity. აირჩიეთ ან რამდენიმე წერტილი, ან რამდენიმე კონიკური კონცენტრულობისთვს. - + Select either one point and several curves, or one curve and several points აირჩიეთ ან ერთი წერტილი და რამდენიმე მრუდი, ან ერთ მრუდი და რამდენიმე წერტილი - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. მონიშნეთ ან ერთ წერტილი და რამდენიმე მრუდი ან ერთი რუდი და რამდენიმე წერტილი ხელსაწყოსთვის წერტილი ობიექტზე, ან რამდენიმე წერტილი დამთხვევისთვის, ან რამდენიმე კონუსი კონცენტრულობისთვის. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. არცერთი მონიშნული წერტილი არ შემოიფარგლება შესაბამის მრუდებზე, რადგან ისინი ერთი და იგივე ელემენტის ნაწილებია, რადგან ორივე გარე გეომეტრიაა, ან იმიტომ, რომ წიბო დაუშვებელია. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. არცერთი მონიშნული წერტილი არ შემოიფარგლება შესაბამის მრუდებზე. ისინი ან ერთი და იგივე ელემენტის ნაწილებია, ან გარე გეომეტრიის ნაწილს წარმოადგენენ. - + Cannot add a length constraint on this selection! ამ მონიშნულზე სიგრძის შეზღუდვის დაწესება შეუძლებელია! - - - - + + + + Select exactly one line or up to two points from the sketch. ესკიზიდან აირჩიეთ ზუსტად ერთი ხაზი ან ორი წერტილი. - + Cannot add a horizontal length constraint on an axis! ღერძზე ჰორიზონტალური სიგრძის შეზღუდვის დაწესება შეუძლებელია! - + Cannot add a fixed x-coordinate constraint on the origin point! საწყის წერტილზე ფიქსირებული X-კოორდინატის შეზღუდვის დამატება შეუძლებელია! - - + + This constraint only makes sense on a line segment or a pair of points. ამ შეზღუდვას აზრი მხოლოდ ხაზის სეგმენტზე ან წერტილების წყვილზე აქვს. - + Cannot add a vertical length constraint on an axis! ღერძზე ვერტიკალური სიგრძის შეზღუდვის დაწესება შეუძლებელია! - + Cannot add a fixed y-coordinate constraint on the origin point! საწყის წერტილზე ფიქსირებული Y-კოორდინატის შეზღუდვის დამატება შეუძლებელია! - + Select two or more lines from the sketch. ესკიზიდან აირჩიეთ ორი ან მეტი ხაზი. - + One selected edge is not a valid line. - One selected edge is not a valid line. + ერთი მონიშნული წიბო სწორ ხაზს არ წარმოადგენს. - - + + Select at least two lines from the sketch. მონიშნეთ მინიმუმ 2 ხაზი. - + The selected edge is not a valid line. მონიშნული წიბო სწორ ხაზს არ წარმოადგენს. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c მხარდაჭერილი კომბინაციებია: ორი მრუდი; ან ბოლო წერტილი და მრუდი; ან ორი ბოლო წერტილი; ან ორი მრუდი და წერტილი. - + Select some geometry from the sketch. perpendicular constraint ესკიზიდან მონიშნეთ რამე გეომეტრია. - - + + Cannot add a perpendicularity constraint at an unconnected point! დაუკავშირებელ წერტილზე მართობული შეზღუდვის დამატება შეუძლებელია! - - + + One of the selected edges should be a line. ერთი მონიშნული წიბოებიდან ხაზი უნდა იყოს. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. ბოლო წერტილიდან წერტილამდე მხები გადატარებულია. დამთხვევის შეზღუდვა წაშლილია. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. ბოლო წერტილიდან წიბომდე მხები გადატარებულია. წერტილი ობიექტის შეზღუდვაზე წაშლილია. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c მხარდაჭერილი კომბინაციებია: ორი მრუდი; ან ბოლო წერტილი და მრუდი; ან ორი ბოლო წერტილი; ან ორი მრუდი და წერტილი. - + Select some geometry from the sketch. tangent constraint ესკიზიდან მონიშნეთ რამე გეომეტრია. - - - + + + Cannot add a tangency constraint at an unconnected point! დაუკავშირებელ წერტილზე მხების შეზღუდვის დამატება შეუძლებელია! - - + + Tangent constraint at B-spline knot is only supported with lines! მხების მზღუდავი B-სპლაინის კვანძთან მხოლოდ ხაზებითაა მხარდაჭერილი! - + B-spline knot to endpoint tangency was applied instead. სამაგიეროდ გამოყენებულია B-სპლაინის კვანძიდან ბოლო წერტილის მხებამდე. - - + + Wrong number of selected objects! მონიშნული ობიექტების არასწორი რაოდენობა! - - + + With 3 objects, there must be 2 curves and 1 point. 3 ობიექტით უნდა იყოს 2 მრუდი და 1 წერტილი. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. აირჩიეთ ერთი ან მეტი რკალი ან წრეწირი ესკიზიდან. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. ესკიზიდან მონიშნეთ მხოლოდ ერთი ან მეტი B-სპლაინი, რკალები ან წრეწირები, მაგრამ ტიპებს ნუ შეურევთ. - - - + + + Constraint only applies to arcs or circles. შეზღუდვები ეხებამხოლოდ რკალებს და წრეწირებს. - - + + Select one or two lines from the sketch. Or select two edges and a point. ესკიზიდან მონიშნეთ ერთი ან ორი ხაზი ან მონიშნეთ ორი წიბო და წერტილი. @@ -3013,88 +3013,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c კუთხის შეზღუდვის დაყენება პარალელური ხაზებისთვის შეუძლებელია. - + Cannot add an angle constraint on an axis! ღერძზე კუთხის შეზღუდვის დაწესება შეუძლებელია! - + Select two edges from the sketch. მონიშეთ ორი წიბო ესკიზიდან. - + Select two or more compatible edges. მონიშნეთ ორი ან მეტი თავსებადი წიბო. - + Sketch axes cannot be used in equality constraints. ესკიზის ღერძები არ შეიძლება გამოყენებულ იქნას თანასწორობის შეზღუდვაში. - + Equality for B-spline edge currently unsupported. B-სპლაინის წიბოსთვის თანასწორობა ჯერ მხარდაუჭერელია. - - - - + + + + Select two or more edges of similar type. მონიშნეთ ორი ან მეტი ერთნაირი ტიპის წიბო. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. ესკიზზე მონიშნეთ ორი წერტილი და სიმეტრიის ხაზი, ან ორი წერტილი და სიმეტრიის წერტილი ან ხაზი და სიმეტრიის წერტილი. - - + + Cannot add a symmetry constraint between a line and its end points. არ შეიძლება სიმეტრიის შეზღუდვის დამატება ხაზსა და მის ბოლო წერტილებს შორის. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! არ შეიძლება სიმეტრიის შეზღუდვის დამატება ხაზსა და მის ბოლო წერტილებს შორის! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw აირჩიეთ ხაზის ორი ბოლოწერტილები, რომლებსაც სხივის როლში შეუძლიათ გამოსვლა და წიბო, რომელიც ზღვარს წრმოადგენს. პირველი მონიშნული წერტილი შეესაბამება ინდექსს n1, მეორე n2 და მიბმის მნიშვნელობა შესატყვისობას n2/n1-ზე აყენებს. - + Selected objects are not just geometry from one sketch. მონიშნული ობიექტები არ წარმოადგენენ მხოლიდ გეომეტრიებს ერთი ესკიზიდან. - + Cannot create constraint with external geometry only. შეუძლებელია შეზღუდვის შექმნა მხოლოდ გარე გეომეტრიით. - + Incompatible geometry is selected. არჩეულია შეუთავსებელი გეომეტრია. - - - - - + + + + + Select constraints from the sketch. აირჩიეთ შეზღუდვები ესკიზიდან. @@ -3116,9 +3116,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c აღწერეთ B-სპლაინის კუთხე, 1-დან %1-მდე: + - CAD Kernel Error CAD-ის ბირთვის შეცდომა @@ -3261,14 +3261,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c სწორების ღერძის წაშლას სულ ერთი მონიშნული არა-გარე გეომეტრიული ელემენტი სჭირდება - - + + Unsupported visual layer operation მხარდაუჭერელი ვიზუალური ფენის ოპერაცია - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted გარე გეომეტრიის სხვა ვიზუალურ ფენაზე გადატანა ამჟამად მხარდაჭერილი არაა. გარე გეომეტრია გამოტოვებული იქნება @@ -3340,7 +3340,7 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Translate parameters - Translate parameters + პარამეტრების მოძრაობითი გადატანა @@ -3652,12 +3652,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c სიგრძე: - + Refractive index ratio გარდატეხვის მაჩვენებლების ფარდობა - + Ratio n2/n1: N2/n1 ფარდობა: @@ -3665,72 +3665,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal ნორმალური - + Construction მშენებლობა - + Internal შიდა - + External გარე - + All types ყველა ტიპი - + Point წერტილი - + Line ხაზი - + Circle წრე - + Ellipse ოვალი - + Arc of circle წრეწირის რკალი - + Arc of ellipse ოვალის რკალი - + Arc of hyperbola ჰიპერბოლის რკალი - + Arc of parabola პარაბოლის რკალი - + B-Spline B-სპლაინი @@ -3853,27 +3853,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c ვერტიკალური ღერძის არჩევა - + Layer ფენა - + Layer 0 ფენა 0 - + Layer 1 ფენა 1 - + Hidden დამალული - + Delete წაშლა @@ -4077,7 +4077,7 @@ reflected on copies Number of sides: - Number of sides: + მხარეების რაოდენობა: @@ -4747,120 +4747,120 @@ However, no constraints linking to the endpoints were found. გამართვა - - - - - - - - - - + + + + + + + + + + Construction - კონსტრუქცია + მშენებლობა - + Elements ელემენტები - - - - + + + + Point წერტილი - - - - - - - - - - + + + + + + + + + + Internal შიდა - - - - + + + + Line ხაზი - - - - + + + + Arc რკალი - - - - + + + + Circle წრე - - - - + + + + Ellipse ოვალი - - - - + + + + Elliptical Arc ელიფსის რკალი - - - - + + + + Hyperbolic Arc ჰიპერბოლური რკალი - - - - + + + + Parabolic Arc პარაბოლური რკალი - - - - + + + + BSpline BSpline - - - - + + + + Other სხვა - + Extended information მეტი ინფორმაცია @@ -5081,112 +5081,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch ესკიზის ჩასწორება - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch ესკიზი დაზიანებულია - + Do you want to open the sketch validation tool? გნებავთ ესკიზის გადამოწმების ხელსაწყოს გახსნა? - + The sketch is invalid and cannot be edited. ესკიზი არასწორია. მისი ჩასწორება შეუძლებელია. - + Please remove the following constraint: გთხოვთ, წაშალოთ შემდეგი შეზღუდვა: - + Please remove at least one of the following constraints: გთხოვთ, ამოიღოთ მინიმუმ ერთი შემდეგი შეზღუდვა: - + Please remove the following redundant constraint: გთხოვთ, წაშალოთ შემდეგი დამატებითი შეზღუდვები: - + Please remove the following redundant constraints: გთხოვთ, წაშალოთ შემდეგი დამატებითი შეზღუდვები: - + The following constraint is partially redundant: ეს შეზღუდვა ნაწილობრივ დამატებითია: - + The following constraints are partially redundant: ეს შეზღუდვები ნაწილობრივ დამატებითია: - + Please remove the following malformed constraint: გთხოვთ, წაშალოთ შემდეგი არასწორად ფორმირებული შეზღუდვა: - + Please remove the following malformed constraints: გთხოვთ, წაშალოთ შემდეგი არასწორად ფორმირებული შეზღუდვები: - + Empty sketch ცარიელი ესკიზი - + Over-constrained: ზედმეტად-შეზღუდული: - + Malformed constraints: არასწორად შექმნილი შეზღუდვები: - + Redundant constraints: დამატებითი შეზღუდვები: - + Partially redundant: ნაწილობრივ დამატებითი: - + Solver failed to converge ამომხსნელის შეცდომა შეერთების დროს - + Under constrained: საკმარისზე ნაკლებად შეზღუდული: - + %n DoF(s) %n თხ @@ -5194,7 +5194,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained სრულად შეზღუდული @@ -5292,8 +5292,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc წრის ან რკალის რადიუსის გასწორება @@ -5301,8 +5301,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc წრის ან რკალის რადიუსის/დიამეტრის გასწორება @@ -5310,8 +5310,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc წრეწირის ან რკალის რადიუსის გამუდმივება @@ -5325,70 +5325,25 @@ This is done by analyzing the sketch geometries and constraints. ქმნის გეომეტრიის მარტივ ასლს, საბაზისოდ ბოლოს მონიშნული წერტილით - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - რკალის შექმნა მისი საბოლოო წერტილებითა და გაყოლებაზე ერთი წერტილით - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points სამ მხებ წერტილზე გამავალი წრეწირის შექმნა - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - რკალის შექმნა მისი ცენტრითა და ბოლო წერტილებით - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - ოვალის რკალის შექმნა მისი ცენტრით, ძირითადი რადიუსითა და ბოლო წერტილებით - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - ჰიპერბოლის რკალის შექმნა მისი ცენტრით, ძირითადი რადიუსითა და ბოლო წერტილებით - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - რკალის მისი ფოკუსის პარაბოლით, წვეროთი და საბოლოო წერტილებით შექმნა - - Sketcher_CreateBSpline - + B-spline by control points B-სპლაინის საკონტროლო წერტილებით შექმნა - - + + Create a B-spline by control points B-სპლაინის საკონტროლო წერტილებით შექმნა @@ -5396,35 +5351,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point წრეწირის შექმნა მისი ცენტრითა და გარე წერტილით - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - ოვალი პერიაფსისით, აპოაფსისით და მცირე რადიუსით - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - ოვალის ცენტრის, ძირითადი რადიუსის და წერტილის მიხედვით შექმნა - - Sketcher_CreateFillet - - + + Creates a radius between two lines რადიუსის ორ ხაზს შუა შექმნა @@ -5432,8 +5369,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner შვიდკუთხედის შექმნა მისი ცენტრითა და ერთი კუთხით @@ -5441,8 +5378,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner ექვსკუთხედის შექმნა მისი ცენტრითა და ერთი კუთხით @@ -5458,14 +5395,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner რვაკუთხედის შექმნა მისი ცენტრითა და ერთი კუთხით + - Create a regular polygon by its center and by one corner ჩვეულებრივი მრავალკუთხედის შექმნა მისი ცენტრითა და ერთი კუთხით @@ -5473,8 +5410,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner ხუთკუთხედის შექმნა მისი ცენტრითა და ერთი კუთხით @@ -5482,8 +5419,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point მომრგვალება, რომელიც ინარჩუნებს შეზღუდვებს და კვეთის წერტილს @@ -5507,8 +5444,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner ოთხკუთხედის შექმნა ცენტრითა და ერთი კუთხით @@ -5516,8 +5453,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner ტოლფერდა სამკუთხედის მისი ცენტრითა და 1 ფერდით შექმნა @@ -5525,13 +5462,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points პერიოდული B-სპლაინი საკონტროლო წერტილებით + - Create a periodic B-spline by control points საკონტროლო წერტილებით პერიოდული B-სპლაინის შექმნა @@ -5932,7 +5869,7 @@ Eigen Sparse QR ალგორითმი ოპტიმიზებული ViewProviderSketch - + and %1 more და %1 სხვა @@ -6155,46 +6092,46 @@ The grid spacing change if it becomes smaller than this number of pixel.ესკიზი ნაწილობრივ დამატებით შეზღუდვებს შეიცავს! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! პარაბოლები მიგრირებულია. მიგრირებული ფაილები FreeCAD-ის წინა ვერსიებში არ გაიხსნება!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error შეცდომა @@ -6230,16 +6167,16 @@ The grid spacing change if it becomes smaller than this number of pixel.შეზღუდვას ინდექსის ინფორმაცია არასწორია და ის მიუღებელია. + + + - - - - - + + Invalid Constraint @@ -6256,12 +6193,12 @@ The grid spacing change if it becomes smaller than this number of pixel.ოვალის რკალის დამატების შეცდომა - + Cannot create arc of hyperbola from invalid angles, try again! არასწორი კუთხეებიდან ჰიპერბოლის რკალის შექმნა შეუძლებელია. თავიდან სცადეთ! - + Cannot create arc of hyperbola ჰიპერბოლის რკალის შექმნის შეცდომა @@ -6281,8 +6218,8 @@ The grid spacing change if it becomes smaller than this number of pixel.B-სპლაინის პოლუსის შექმნის შეცდომა - + Error creating B-spline B-სპლაინის შექმნის შეცდომა @@ -6338,17 +6275,17 @@ The grid spacing change if it becomes smaller than this number of pixel.ხაზის დამატების შეცდომა - - - - - - - + + + + + + + Tool execution aborted ხელსაწყოს შესრულება შეწყდა @@ -6383,9 +6320,9 @@ The grid spacing change if it becomes smaller than this number of pixel.წიბოს წაკვეთის შეცდომა - + Value Error მნიშვნელობის შეცდომა @@ -6442,19 +6379,19 @@ The grid spacing change if it becomes smaller than this number of pixel. Failed to translate - Failed to translate + მოძრაობითი გადატანა ჩავარდა Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-სპლაინი კვანძებით - - + + Create a B-spline by knots B-სპლაინის კვანძებით შექმნა @@ -6462,13 +6399,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots პერიოდული B-სპლაინი კვანძებით + - Create a periodic B-spline by knots კვანძებით პერიოდული B-სპლაინის შექმნა @@ -6574,12 +6511,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots B-სპლაინის კვანძებით შექმნა - + Create a B-spline by knots, i.e. by interpolation, in the sketch. ესკიზში B-სპლაინის კვანძებით (მაგ: ინტერპოლაციით) შექმნა. @@ -6587,12 +6524,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots კვანძებით პერიოდული B-სპლაინის შექმნა - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. ესკიზში პერიოდული B-სპლაინის კვანძებით (მაგ: ინტერპოლაციით) შექმნა. @@ -6600,12 +6537,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension ზომა - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6643,12 +6580,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius რადიუსის სეზღუდვა - + Fix the radius of a circle or an arc წრეწირის ან რკალის რადიუსის გამუდმივება @@ -6823,8 +6760,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - შეიქმნება ორი ოთხკუთხედი. ერთი - მეორეში, მუდმივი სისქით. + Create two rectangles with a constant offset. + ორი მართკუთხედის შექმნა მუდმივი წანაცვლებით. @@ -6838,12 +6775,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical ჰორიზონტალური/შვეული - + Constrains a single line to either horizontal or vertical. ერთი ხაზის შეზღუდვა ჰორიზონტალურად ან ვერტიკალურად. @@ -6851,12 +6788,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical ჰორიზონტალური/შვეული - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. შეზღუდავს ერთ ხაზს ჰორიზონტალურად ან ვერტიკალურად. რომელიც უფრო ახლოსაა მიმდინარე განლაგებასთან. @@ -6864,12 +6801,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition მრუდის ჩასწორება - + Curve Edition tools. მრუდის ჩასწორების ხელსაწყოები. @@ -6877,12 +6814,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots სლოტები - + Slot tools. სლოტის ხელსაწყოები. @@ -6890,12 +6827,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot რკალის სლოტის შექმნა - + Create an arc slot in the sketch ესკიზში რკალის სლოტის შექმნა @@ -6903,12 +6840,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident დამთხვევის შეზღუდვა - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses წერტილებს შორის დამთხვევის, ან წერტილის წიბოზე დამაგრების, ან წრეწირებს, რკალებსა და ოვალებს შორის კონცენტრულობის შეზღუდვის შექმნა @@ -7292,12 +7229,12 @@ Left clicking on empty space will validate the current constraint. Right clickin Array transform - Array transform + მასივის გარდაქმნა Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + მონიშნული გეომეტრიების მოძრაობითი გადატანა. i * i ასლის შექმნის დაშვება. @@ -7310,7 +7247,7 @@ Left clicking on empty space will validate the current constraint. Right clickin This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. - This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. + ეს ითვალისწინებს მანძილების მსგავსი მონაცემების შეზღუდვებს. თუ გაააქტიურებთ დაკლონვას, ეს ხელსაწყო მონაცემებს დააკოპირებს. წინააღმდეგ შემთხვევაში ის სცდის, ისინი საწყის გეომეტრიებსა და ახალ ასლებს შორის ტოლობებით ჩაანაცვლოს. @@ -7318,7 +7255,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Copies (+'U'/-'J') - Copies (+'U'/-'J') + ასლები (+'U'/-'J') @@ -7326,7 +7263,70 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') - Rows (+'R'/-'F') + მწკრივები (+'R'/-'F') + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + რკალის შექმნა მისი ცენტრითა და ბოლო წერტილებით + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + რკალის შექმნა მისი ბოლო წერტილებითა და რკალის გაყოლებაზე ერთი წერტილით + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + ოვალის შექმნა მისი ცენტრით, ერთ-ერთი რადიუსით და შეხების წერტილით + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + ოვალის შექმნა მისი ერთ-ერთი ღერძის ბოლოწერტილებით და შეხების წერტილით + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + ოვალი რკალის შექმნა მისი ცენტრით, ერთ-ერთი რადიუსით და მისი ბოლოწერტილებით + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + ჰიპერბოლის რკალის შექმნა მისი ცენტრით, წვეროთი და ბოლო წერტილებით + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + რკალის მისი ფოკუსის პარაბოლით, წვეროთი და საბოლოო წერტილებით შექმნა diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts index 62cdbb2088..bbb8c55d6d 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch 다른 스케치의 도형 복사 @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle 호 또는 원 구속 - + Constrain an arc or a circle 호 또는 원을 구속함 - + Constrain radius 제약조건: 반지름 - + Constrain diameter 직경 구속 - + Constrain auto radius/diameter 자동 반지름/직경 구속 @@ -180,24 +180,24 @@ - Center and end points - 중점과 끝점 + Center and endpoints + Center and endpoints - - End points and rim point - 끝점과 호의 한 점 + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline 생성: B-spline - + Create a B-spline in the sketch B-spline 생성 @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle 생성: 원 - + Create a circle in the sketcher 원 생성 - + Center and rim point 중점과 원호의 한 점 - + 3 rim points 세 점(3 points) @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch 타원 생성 - - Ellipse by center, major radius, point - 중점, 장축, 단축을 이용하여 타원 생성 + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - 중점, 장축, 단축으로 구성된 타원의 호 생성 + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - 중점, 장축, 단축으로 구성된 쌍곡선의 호 생성 + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints 중점, 장축, 단축으로 구성된 포물선의 호 생성 @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet 수정: 필렛(Fillet) - + Create a fillet between two lines 두 선 사이에 모깎기 생성 - + Sketch fillet 스케치 모깎기 - - Constraint-preserving sketch fillet - 구속조건을 유지하는 스케치 모깎기 생성 + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon 생성: 다각형 - + Create a regular polygon in the sketcher 스케치에 일반 다각형을 생성 - + Triangle 삼각형 - + Square 사각형 - + Pentagon 오각형 - + Hexagon 육각형 - + Heptagon 칠각형 - + Octagon 팔각형 - + Regular polygon 일반 다각형 @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle 제약조건: 각도 - + Fix the angle of a line or the angle between two lines 단일 선의 각도(수평축 기준) 또는 두선 사이의 각도 고정 @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block 블록 구속조건 - + Block the selected edge from moving 선택 모서리가 움직이지 않도록 차단 @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident 제약조건: 점 일치 - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses 점들 사이의 일치 구속 또는 원, 호, 타원 사이의 동심 구속을 생성함 @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter 직경 구속 - + Fix the diameter of a circle or an arc 원이나 호의 지름을 수정합니다 @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance 제약조건: 거리 - + Fix a length of a line or the distance between a line and a vertex or between two circles 선의 길이 또는 선과 꼭짓점 사이 또는 두 원 사이의 거리를 고정함 @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance 수평 거리를 구속합니다 - + Fix the horizontal distance between two points or line ends 두 점 또는 선의 수평거리 고정 @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance 수직 거리 구속 - + Fix the vertical distance between two points or line ends 두 점 또는 선의 수직거리 고정 @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal 제약조건: 동일 - + Create an equality constraint between two lines or between circles and arcs 두 선 또는 원과 원/호와 호/원과 호에 동일한 치수 부가 @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally 제약조건: 수평 - + Create a horizontal constraint on the selected item 선택한 요소를 수평하게 고정 @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock 제약조건: 고정 - + Create both a horizontal and a vertical distance constraint on the selected vertex 선택 꼭짓점에 수평 및 수직 거리 구속을 생성함 @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel 제약조건: 평행 - + Create a parallel constraint between two lines 선택한 요소(두 선)를 평행하게 고정 @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular 제약조건: 수직 - + Create a perpendicular constraint between two lines 선택한 요소(두 선)를 수직하게 고정 @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object 제약조건: 점을 선에 일치 - + Fix a point onto an object 점을 선에 일치 @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter 자동 반지름/직경 구속 - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen 원을 선택한 경우 지름을, 호/스플라인 폴을 선택한 경우 반지름을 수정합니다. @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. 광선의 두 끝점과 모서리 사이에 굴절 법칙(스넬의 법칙) 구속을 인터페이스interface로 생성합니다. @@ -585,12 +585,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical 제약조건: 대칭 - + Create a symmetry constraint between two points with respect to a line or a third point 선 또는 세 번째 점을 기준으로 두 점 사이에 대칭 구속조건을 생성합니다. @@ -599,12 +599,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent 제약조건: 탄젠트 - + Create a tangent constraint between two entities 두 엔티티가 서로 접하도록 고정 @@ -612,12 +612,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically 제약조건: 수직 - + Create a vertical constraint on the selected item 선택한 요소를 수직하게 고정 @@ -664,12 +664,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points 생성: 3점 원 - + Create a circle by 3 perimeter points 세 점을 이용하여 원 생성 @@ -690,12 +690,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch 타원의 둘레를 따르는 호 생성 @@ -703,12 +703,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch 쌍공선형태의 호 생성 @@ -716,12 +716,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch 스케치에 포물선형태의 호 생성 @@ -729,12 +729,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline 생성: B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -742,12 +742,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle 생성: 원 - + Create a circle in the sketch 중점과 반지름을 이용하여 원 생성 @@ -755,12 +755,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points 생성: 3점을 이용한 타원 - + Create an ellipse by 3 points in the sketch 3점(장축의 끝점, 단축)을 이용하여 타원 생성 @@ -768,12 +768,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center 생성: 타원 - + Create an ellipse by center in the sketch 중점, 장축, 단축을 이용하여 타원 생성 @@ -781,12 +781,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet 수정: 필렛(Fillet) - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -794,12 +794,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon 생성: 7각형 - + Create a heptagon in the sketch 7각형 생성 @@ -807,12 +807,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon 생성: 6각형 - + Create a hexagon in the sketch 6각형 생성 @@ -846,12 +846,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon 생성: 8각형 - + Create an octagon in the sketch 8각형 생성 @@ -859,12 +859,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon 생성: 5각형 - + Create a pentagon in the sketch 5각형 생성 @@ -872,12 +872,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline 주기적periodic B-스플라인을 생성합니다 - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -885,12 +885,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point 생성: 점 - + Create a point in the sketch 점 생성 @@ -898,12 +898,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet 모서리를 유지하는 모깎기 생성 - + Fillet that preserves intersection point and most constraints 교차점과 대부분의 구속을 유지하는 모깎기 @@ -950,12 +950,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon 생성: 다각형 - + Create a regular polygon in the sketch 스케치에 정다각형을 생성함 @@ -963,12 +963,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot 생성: 직선 홈(Slot) - + Create a slot in the sketch 직선 홈(Slot) 생성 @@ -976,12 +976,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square 생성: 정사각형 - + Create a square in the sketch 중점과 끝점을 이용하여 정사각형 생성 @@ -989,12 +989,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle 생성: 정삼각형 - + Create an equilateral triangle in the sketch 중점과 끝점을 이용하여 정삼각형 생성 @@ -1067,12 +1067,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge 모서리 연장 - + Extend an edge with respect to the picked position 선택된 위치를 기준으로 모서리 연장하기 @@ -1080,12 +1080,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry 외부 형상에서 geometry를 선택하여 현재 스케치에 생성 @@ -1422,12 +1422,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge 모서리를 분할합니다. - + Splits an edge into two while preserving constraints 구속을 유지한 채 모서리를 둘로 분할합니다. @@ -1474,12 +1474,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint 구속을 활성화/비활성화합니다. - + Activates or deactivates the selected constraints 선택한 구속을 활성화하거나 비활성화합니다. @@ -1500,12 +1500,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint 구동driving/참조reference 구속을 전환합니다. - + Set the toolbar, or the selected constraints, into driving or reference mode 도구 모음 또는 선택한 제약 조건을 주행 또는 참조 모드로 설정합니다 @@ -1514,12 +1514,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge 잘라내기(Trim) - + Trim an edge with respect to the picked position 선택한 위치의 선을 자릅니다. @@ -1577,79 +1577,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint '잠금' 구속을 추가합니다 - + Add relative 'Lock' constraint 상대적 '잠금' 구속을 추가합니다 - + Add fixed constraint 고정fixed 구속을 추가합니다 - + Add 'Block' constraint 'Block' 구속을 추가합니다 - + Add block constraint Block 구속을 추가합니다 - - + + Add coincident constraint 일치 구속을 추가합니다 - - + + Add distance from horizontal axis constraint 수평축 구속에서 거리 추가하기 - - + + Add distance from vertical axis constraint 수직축 구속에서 거리 추가하기 - - + + Add point to point distance constraint 점에서 점까지 거리 구속 추가하기 - - + + Add point to line Distance constraint 점에서 선까지 거리 구속 추가하기 - - + + Add circle to circle distance constraint 원에서 원까지 거리 구속 추가하기 - + Add circle to line distance constraint 원에서 선까지 거리 구속 추가하기 - - - - - - + + + + + + Add length constraint 길이 구속 추가하기 @@ -1672,8 +1672,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Add Distance constraint @@ -1699,7 +1699,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1710,220 +1710,220 @@ invalid constraints, degenerated geometry, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint 점에서 개체까지 구속 추가하기 - - + + Add point to point horizontal distance constraint 점에서 점까지 수평 거리 구속 추가하기 - + Add fixed x-coordinate constraint 고정 x-좌표 구속 추가하기 - - + + Add point to point vertical distance constraint 점에서 점까지 수직 거리 구속 추가하기 - + Add fixed y-coordinate constraint 고정 y-좌표 구속 추가하기 - - + + Add parallel constraint 평행 구속 추가하기 - - - - - - - + + + + + + + Add perpendicular constraint 수직 구속 추가하기 - + Add perpendicularity constraint 수직도 구속 추가하기 - + Swap coincident+tangency with ptp tangency 일치+접선을 ptp 접선으로 바꾸기 - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint 접선 구속 추가하기 - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point 접선구속 점 추가하기 - - - - + + + + Add radius constraint 반경 구속 추가하기 - - - - + + + + Add diameter constraint 직경 구속 추가하기 - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint 각도 구속 추가하기 - - + + Add equality constraint 동일 구속 추가하기 - - - - - + + + + + Add symmetric constraint 대칭 구속 추가하기 - + Add Snell's law constraint 스넬의 법칙 구속 추가하기 - + Toggle constraint to driving/reference 구동/참조 구속을 전환하기 - + Activate/Deactivate constraint 구속을 활성화/비활성화하기 @@ -2008,7 +2008,7 @@ invalid constraints, degenerated geometry, etc. 타원의 스케치 호 추가하기 - + Add sketch arc of hyperbola 쌍곡선 스케치 호 추가하기 @@ -2152,8 +2152,8 @@ invalid constraints, degenerated geometry, etc. 구속의 가상 공간을 업데이트하기 - + Add auto constraints 자동 구속 추가하기 @@ -2178,12 +2178,12 @@ invalid constraints, degenerated geometry, etc. 곡선 끌기 - + Drag Constraint 구속 끌기 - + Modify sketch constraints 스케치 구속 수정하기 @@ -2274,59 +2274,59 @@ invalid constraints, degenerated geometry, etc. 자동구속 오류: 동일 구속 적용 후 해결할 수 없는 스케치 - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. 곡선의 교차점을 추정할 수 없습니다. 모깎기 하려는 곡선의 정점들 사이에 일치 구속을 추가해 보십시오. - - + + BSpline Geometry Index (GeoID) is out of bounds. B스플라인 형상 인덱스(GeoID) 가 범위를 벗어났습니다. - + You are requesting no change in knot multiplicity. 매듭점 다중성에 대한 변경을 요청하지 않으셨습니다. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. 제공된 형상 지수(GeoId) 는 B-스플라인 곡선이 아닙니다. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. 매듭 지수가 범위를 벗어났습니다. OCC 표기법에 따라 첫 번째 매듭은 0이 아닌 지수 1을 가집니다. - + The multiplicity cannot be increased beyond the degree of the B-spline. 다중도는 B-스플라인의 정도 이상으로 증가할 수 없습니다. - + The multiplicity cannot be decreased beyond zero. 다중도는 0 이상으로 감소할 수 없습니다. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC는 최대 공차 내에서 다중도를 감소시킬 수 없습니다. - + Knot cannot have zero multiplicity. 매듭은 0개의 다중도를 가질 수 없습니다. - + Knot multiplicity cannot be higher than the degree of the BSpline. 매듭 다중도는 B스플라인의 정도보다 높을 수 없습니다. - + Knot cannot be inserted outside the BSpline parameter range. 매듭은 B스플라인 매개변수 범위 밖에서 삽입할 수 없습니다. @@ -2406,127 +2406,11 @@ invalid constraints, degenerated geometry, etc. 첨부하지 마세요. + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2536,6 +2420,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2553,9 +2556,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection 잘못 된 선택 @@ -2608,106 +2608,106 @@ invalid constraints, degenerated geometry, etc. 선택한 항목 중 하나가 스케치에 있어야 합니다. - + Select an edge from the sketch. 스케치에서 하나의 모서리를 선택하세요. - - - - - - + + + + + + Impossible constraint 불가능한 제약조건입니다. - - + + The selected edge is not a line segment. 선택한 모서리가 선분이 아닙니다. - - - + + + Double constraint 이중 제약조건 - + The selected edge already has a horizontal constraint! 선택한 모서리에 이미 수평 구속이 있습니다! - + The selected edge already has a vertical constraint! The selected edge already has a vertical constraint! - - - + + + The selected edge already has a Block constraint! The selected edge already has a Block constraint! - + There are more than one fixed points selected. Select a maximum of one fixed point! There are more than one fixed points selected. Select a maximum of one fixed point! - - - + + + Select vertices from the sketch. 두개 이상의 점을 선택하세요. - + Select one vertex from the sketch other than the origin. 스케치에서 원점이 아닌 다른 점을 선택하세요. - + Select only vertices from the sketch. The last selected vertex may be the origin. 오직 점만 선택이 가능합니다. 마지막에 선택은 원점이어야 합니다. - + Wrong solver status Wrong solver status - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. - + Select one edge from the sketch. Select one edge from the sketch. - + Select only edges from the sketch. Select only edges from the sketch. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error 에러 @@ -2717,80 +2717,80 @@ invalid constraints, degenerated geometry, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. 한 직선 또는 한 점, 한 직선 또는 두 점을 선택하세요. - + Cannot add a length constraint on an axis! 축에는 길이 제약조건을 적용할 수 없습니다! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. 적절한 것을 선택하세요. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2800,92 +2800,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. 선택된 점들은 동일한 element에 속해 있거나 외부 geometry이므로 해당 곡선에 제약조건이 적용되지 않았습니다. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. 한 직선 또는 최대 2개의 점을 선택하세요. - + Cannot add a horizontal length constraint on an axis! 축에는 수평 길이 제약조건을 적용할 수 없습니다! - + Cannot add a fixed x-coordinate constraint on the origin point! Cannot add a fixed x-coordinate constraint on the origin point! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! 축에는 수직 길이 제약조건을 적용할 수 없습니다! - + Cannot add a fixed y-coordinate constraint on the origin point! Cannot add a fixed y-coordinate constraint on the origin point! - + Select two or more lines from the sketch. 두개 이상의 직선을 선택하세요. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. 최소한 두개 이상의 직선을 선택하세요. - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2895,35 +2895,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 사용가능한 조합: 두개의 곡선, 끝점과 곡선, 두개의 끝점, 두개의 곡선과 한 점. - + Select some geometry from the sketch. perpendicular constraint 스케치에서 geometry를 선택하세요. - - + + Cannot add a perpendicularity constraint at an unconnected point! 연결되지 않은 점에 대하여 수직 제약조건을 적용할 수 없습니다! - - + + One of the selected edges should be a line. 선택된 선중 하나는 직선이어야 합니다. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2933,67 +2933,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 사용가능한 조합: 두개의 곡선, 끝점과 곡선, 두개의 끝점, 두개의 곡선과 한 점. - + Select some geometry from the sketch. tangent constraint 스케치에서 geometry를 선택하세요. - - - + + + Cannot add a tangency constraint at an unconnected point! 연결되지 않은 점에 대하여 탄젠트 제약조건을 적용할 수 없습니다! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! 선택한 객체의 갯수가 잘못되었습니다! - - + + With 3 objects, there must be 2 curves and 1 point. 3개의 객체(2개의 곡선과 1개의 점)가 있어야합니다. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. 하나 이상의 호나 원을 선택하세요. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. - - - + + + Constraint only applies to arcs or circles. 호 또는 원에만 적용 가능한 제약조건입니다. - - + + Select one or two lines from the sketch. Or select two edges and a point. 하나 이상의 직선을 선택하세요. 또는, 두개의 선과 하나의 점을 선택하세요. @@ -3008,88 +3008,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 각도 제약조건은 평행한 두 직선에는 적용할 수 없습니다. - + Cannot add an angle constraint on an axis! 축에는 각도 제약조건을 적용할 수 없습니다! - + Select two edges from the sketch. 두개의 선을 선택하세요. - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. Equality for B-spline edge currently unsupported. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. 1)두 점과 대칭선 2)두 점과 대칭 점 또는 3)하나의 선과 대칭 점을 선택하세요. - - + + Cannot add a symmetry constraint between a line and its end points. Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! 선과 선에 포함된 점에는 대칭 제약조건을 적용할 수 없습니다! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. - + Selected objects are not just geometry from one sketch. 선택된 객체는 스케치의 geometry가 아닙니다. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. @@ -3111,9 +3111,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error CAD 커널 에러 @@ -3256,14 +3256,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Removal of axes alignment requires at least one selected non-external geometric element - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3647,12 +3647,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 길이: - + Refractive index ratio Refractive index ratio - + Ratio n2/n1: Ratio n2/n1: @@ -3660,72 +3660,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal 일반 - + Construction Construction - + Internal Internal - + External External - + All types All types - + Point - + Line - + Circle - + Ellipse 타원 - + Arc of circle 원의 호 - + Arc of ellipse 타원의 호 - + Arc of hyperbola 쌍곡선의 호 - + Arc of parabola 포물선의 호 - + B-Spline B-스플라인 @@ -3848,27 +3848,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Select Vertical Axis - + Layer Layer - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Hidden - + Delete 삭제 @@ -4744,120 +4744,120 @@ However, no constraints linking to the endpoints were found. Settings - - - - - - - - - - + + + + + + + + + + Construction Construction - + Elements 요소 - - - - + + + + Point - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line - - - - + + + + Arc - - - - + + + + Circle - - - - + + + + Ellipse 타원 - - - - + + + + Elliptical Arc 타원형 호 - - - - + + + + Hyperbolic Arc 쌍곡선형 호 - - - - + + + + Parabolic Arc 포물선형 호 - - - - + + + + BSpline BSpline - - - - + + + + Other 기타 - + Extended information Extended information @@ -5078,119 +5078,119 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch 스케치 수정 - + A dialog is already open in the task panel 테스크 패널에 이미 다이얼로그가 열려있습니다. - + Do you want to close this dialog? 다이얼로그를 닫으시겠습니까? - + Invalid sketch 유효하지 않은 스케치 - + Do you want to open the sketch validation tool? 스케치 확인 도구를 여시겠습니까? - + The sketch is invalid and cannot be edited. 스키체가 유효하지 않으므로 수정할 수 없습니다. - + Please remove the following constraint: 다음 제약조건을 제거하세요. - + Please remove at least one of the following constraints: 다음 제약조건중 하나 이상을 제거하세요. - + Please remove the following redundant constraint: 중복 제약조건을 제거하세요: - + Please remove the following redundant constraints: 중복 제약조건을 제거하세요: - + The following constraint is partially redundant: The following constraint is partially redundant: - + The following constraints are partially redundant: The following constraints are partially redundant: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch 빈 스케치 - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) - + Fully constrained Fully constrained @@ -5288,8 +5288,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc 원이나 호의 지름을 수정합니다 @@ -5297,8 +5297,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fix the radius/diameter of a circle or an arc @@ -5306,8 +5306,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 원 또는 호의 반지름을 고정 @@ -5321,70 +5321,25 @@ This is done by analyzing the sketch geometries and constraints. 마지막에 선택한 점을 기준으로 geometry 복사합니다. - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - 양 끝점과 호의 한 점을 이용하여 호를 생성합니다. - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points 3 점을 이용하여 원을 생성합니다. - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - 중점과 양 끝점을 이용하여 호 생성합니다. - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints - - Sketcher_CreateBSpline - + B-spline by control points B-spline by control points - - + + Create a B-spline by control points Create a B-spline by control points @@ -5392,35 +5347,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point 중점과 원의 한 점을 이용하여 원을 생성합니다. - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - 장축(major)의 양 끝점과 단축을 이용하여 타원을 생성합니다. - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - 중점, 장축(major), 단축을 이용하여 타원을 생성합니다. - - Sketcher_CreateFillet - - + + Creates a radius between two lines Creates a radius between two lines @@ -5428,8 +5365,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner 중점과 모서리 한 점을 이용하여 7각형을 생성합니다. @@ -5437,8 +5374,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner 중점과 모서리 한 점을 이용하여 6각형을 생성합니다. @@ -5454,14 +5391,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner 중점과 모서리 한 점을 이용하여 8각형을 생성합니다. + - Create a regular polygon by its center and by one corner Create a regular polygon by its center and by one corner @@ -5469,8 +5406,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner 중점과 모서리 한 점을 이용하여 5각형을 생성합니다. @@ -5478,8 +5415,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Fillet that preserves constraints and intersection point @@ -5503,8 +5440,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner 중점과 모서리 한 점을 이용하여 정사각형을 생성합니다. @@ -5512,8 +5449,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner 중점과 모서리 한 점을 이용하여 정삼각형을 생성합니다. @@ -5521,13 +5458,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Periodic B-spline by control points + - Create a periodic B-spline by control points Create a periodic B-spline by control points @@ -5928,7 +5865,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more and %1 more @@ -6151,46 +6088,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error 에러 @@ -6226,16 +6163,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6252,12 +6189,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6277,8 +6214,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6334,17 +6271,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6379,9 +6316,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6444,13 +6381,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6458,13 +6395,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6570,12 +6507,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6583,12 +6520,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6596,12 +6533,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension 치수 - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6639,12 +6576,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius 제약조건: 반지름 - + Fix the radius of a circle or an arc 원 또는 호의 반지름을 고정 @@ -6819,8 +6756,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6834,12 +6771,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6847,12 +6784,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6860,12 +6797,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6873,12 +6810,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6886,12 +6823,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6899,12 +6836,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident 제약조건: 점 일치 - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7325,4 +7262,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts index 97d1d7aaff..42651293a2 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts @@ -58,23 +58,23 @@ Show/hide B-spline control polygon - Toon/Verberg B-spline controle veelhoek + Toon/Verberg B-spline bepalende veelhoek Switches between showing and hiding the control polygons for all B-splines - Hiermee schakelt u tussen het weergeven en verbergen van de knoop multipliciteit voor alle B-splines + Hiermee schakelt u tussen het weergeven en verbergen van de bepalende veelhoek voor alle B-splines CmdSketcherCarbonCopy - + Create carbon copy Kopie maken - + Copy the geometry of another sketch Kopieer de geometrie van een andere schets @@ -107,7 +107,7 @@ Show/hide B-spline control polygon - Toon/Verberg B-spline controle veelhoek + Toon/Verberg B-spline bepalende veelhoek @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Beperk de boog of de cirkel - + Constrain an arc or a circle Beperk een boog of een cirkel - + Constrain radius Beperk de straal - + Constrain diameter Beperk de diameter - + Constrain auto radius/diameter Beperk automatisch de straal/diameter @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints Middelpunt en eindpunten - - End points and rim point - Eindpunten en randpunt + + Endpoints and rim point + Eindpunten en punt op de boog CmdSketcherCompCreateBSpline - + Create B-spline Maak B-spline aan - + Create a B-spline in the sketch Maak een B-spline in de schets @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Cirkel maken - + Create a circle in the sketcher Maak een cirkel in de schetser - + Center and rim point Middelpunt en randpunt - + 3 rim points 3 randpunten @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Maak kegel - + Create a conic in the sketch Creëer een kegel in de schets - - Ellipse by center, major radius, point - Ellips bij het midden, hoofdstraal, punt + + Ellipse by center, radius, rim point + Ellips met middelpunt, radius, punt op ellips - - Ellipse by periapsis, apoapsis, minor radius - Ellips door periapsis, apoapsis, kleine radius + + Ellipse by axis endpoints, rim point + Ellips door as-eindpunten, punt op ellips - - Arc of ellipse by center, major radius, endpoints - Elliptische boog door het midden, hoofdstraal, eindpunten + + Arc of ellipse by center, radius, endpoints + Elliptische boog via het middelpunt, radii en eindpunten - - Arc of hyperbola by center, major radius, endpoints - Hyperbolische boog via het midden, hoofdstraal en eindpunten + + Arc of hyperbola by center, vertex, endpoints + Hyperbolische boog via de hoofdas en eindpunten - + Arc of parabola by focus, vertex, endpoints Paraboolboog door zijn focus, vertex, eindpunten @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Maak afronding - + Create a fillet between two lines Maakt een afronding tussen twee lijnen - + Sketch fillet Schets afronding - - Constraint-preserving sketch fillet - Constraint-behoudende schets afronding + + Corner-preserving sketch fillet + Snijpunt behoudende afronding @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Regelmatige veelhoek maken - + Create a regular polygon in the sketcher Maak een regelmatige veelhoek in de schetser - + Triangle Driehoek - + Square Vierkant - + Pentagon Vijfhoek - + Hexagon Zeshoek - + Heptagon Zevenkant - + Octagon Achthoek - + Regular polygon Regelmatige veelhoek @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Beperk hoek - + Fix the angle of a line or the angle between two lines Zet de hoek van een lijn of de hoek tussen twee lijnen vast @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Blok beperkingen - + Block the selected edge from moving Weerhoud de geselecteerde rand van verplaatsen @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Samenvallende beperking - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Maak een samenvallende beperking tussen punten, of een concentrische beperking tussen cirkels, bogen en ellipsen @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Beperk de diameter - + Fix the diameter of a circle or an arc Zet de diameter van een cirkel of een boog vast @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Afstand beperking - + Fix a length of a line or the distance between a line and a vertex or between two circles Zet de lengte van een lijn vast of de afstand tussen een lijn en een hoekpunt of tussen twee cirkels @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Beperk horizontale afstand - + Fix the horizontal distance between two points or line ends De horizontale afstand tussen twee punten of lijneinden vastzetten @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Beperk verticale afstand - + Fix the vertical distance between two points or line ends De verticale afstand tussen twee punten of lijneinden vastzetten @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Gelijke beperken - + Create an equality constraint between two lines or between circles and arcs Maak een Gelijkheidsbeperking tussen twee lijnen of tussen cirkels en bogen @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Horizontale beperking - + Create a horizontal constraint on the selected item Maak een horizontale beperking op het geselecteerde item @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Vastzet beperking - + Create both a horizontal and a vertical distance constraint on the selected vertex Maak zowel een horizontale als een verticale afstandsbeperking op het geselecteerde hoekpunt @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Parallelle-beperking - + Create a parallel constraint between two lines Maak een parallelle beperking tussen twee lijnen @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Beperk loodrecht - + Create a perpendicular constraint between two lines Maak een loodrechte beperking tussen twee lijnen @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Zet punt vast op object - + Fix a point onto an object Een punt op een object vastleggen @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Beperk automatisch de straal/diameter - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Zet de diameter vast als en cirkel is geselecteerd, of de straal als een boog/spline pool is geselecteerd @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Bepaal de refractie (Wet van Snellius) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Maak een beperking volgens de brekingswet (wet van Snellius) tussen twee eindpunten van lichtstralen en een rand als interface. @@ -585,12 +585,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Symmetrische-beperken - + Create a symmetry constraint between two points with respect to a line or a third point Maak een symmetrie beperking tussen twee punten @@ -600,12 +600,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherConstrainTangent - + Constrain tangent Tangent beperken - + Create a tangent constraint between two entities Tangentiële beperkingen tussen twee entiteiten maken @@ -613,12 +613,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherConstrainVertical - + Constrain vertically Verticale beperking - + Create a vertical constraint on the selected item Maak een verticale beperking op het geselecteerde item @@ -665,12 +665,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreate3PointCircle - + Create circle by three points Een cirkel van 3 punten maken - + Create a circle by 3 perimeter points Een cirkel aanmaken op basis van 3 omtrekpunten @@ -691,12 +691,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Maak een ellips boog - + Create an arc of ellipse in the sketch Maak Boog of ovaal in de schets @@ -704,12 +704,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Maak een hyperbool - + Create an arc of hyperbola in the sketch Maak een hyperbolische boog aan in de schets @@ -717,12 +717,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateArcOfParabola - + Create arc of parabola Maak een parabool - + Create an arc of parabola in the sketch Maak een parabolische boog aan in de schets @@ -730,12 +730,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateBSpline - + Create B-spline Maak B-spline aan - + Create a B-spline by control points in the sketch. Maak een B-spline door middel van controlepunten in de schets. @@ -743,12 +743,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateCircle - + Create circle Cirkel maken - + Create a circle in the sketch Maak een cirkel in de schets @@ -756,12 +756,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Ovaal van 3 punten maken - + Create an ellipse by 3 points in the sketch Maak een ovaal van 3 punten in de schets @@ -769,12 +769,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateEllipseByCenter - + Create ellipse by center Maak ellips aan via het midden - + Create an ellipse by center in the sketch Maak een ellips aan via het midden in de schets @@ -782,12 +782,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateFillet - + Create fillet Maak afronding - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -795,12 +795,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateHeptagon - + Create heptagon Zevenkant maken - + Create a heptagon in the sketch Maak een zevenkant in de schets @@ -808,12 +808,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateHexagon - + Create hexagon Zeskant maken - + Create a hexagon in the sketch Maak een zeskant in de schets @@ -847,12 +847,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateOctagon - + Create octagon Achtkant maken - + Create an octagon in the sketch Maak een achtkant in de schets @@ -860,12 +860,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreatePentagon - + Create pentagon Vijfkant maken - + Create a pentagon in the sketch Maak vijfkant in de schets @@ -873,12 +873,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Maken van periodieke B-spline - + Create a periodic B-spline by control points in the sketch. Maak een periodieke B-spline door middel van controlepunten in de schets. @@ -886,12 +886,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreatePoint - + Create point Punt maken - + Create a point in the sketch Maak een punt in de schets @@ -899,12 +899,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreatePointFillet - + Create corner-preserving fillet Maak hoek-behoudende afronding - + Fillet that preserves intersection point and most constraints Afronding dat snijpunt behoudt en meeste constraints @@ -951,12 +951,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateRegularPolygon - + Create regular polygon Regelmatige veelhoek maken - + Create a regular polygon in the sketch Maak een regelmatige veelhoek aan in de schets @@ -964,12 +964,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateSlot - + Create slot Sleuf maken - + Create a slot in the sketch Maak sleuf in de schets @@ -977,12 +977,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateSquare - + Create square Vierkant maken - + Create a square in the sketch Maak een vierkant aan in de schets @@ -990,12 +990,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherCreateTriangle - + Create equilateral triangle Maak gelijkzijdige driehoek aan - + Create an equilateral triangle in the sketch Maak een gelijkzijdige driehoek aan in de schets @@ -1068,12 +1068,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherExtend - + Extend edge Breid de rand uit - + Extend an edge with respect to the picked position Breid een rand uit ten opzichte van de geselecteerde positie @@ -1081,12 +1081,12 @@ met betrekking tot een lijn of een derde punt CmdSketcherExternal - + Create external geometry Maak externe geometrie - + Create an edge linked to an external geometry Maak een rand gekoppeld aan een externe geometrie @@ -1425,12 +1425,12 @@ Dit zal de 'Support' eigenschap verwijderen, indien van toepassing. CmdSketcherSplit - + Split edge Splits rand - + Splits an edge into two while preserving constraints Splitst een rand in twee terwijl je de kaders behoudt @@ -1477,12 +1477,12 @@ Dit zal de 'Support' eigenschap verwijderen, indien van toepassing. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Beperking activeren/deactiveren - + Activates or deactivates the selected constraints Activeert of deactiveert de geselecteerde beperkingen @@ -1503,12 +1503,12 @@ Dit zal de 'Support' eigenschap verwijderen, indien van toepassing. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Schakelt sturende/referentie beperking aan of uit - + Set the toolbar, or the selected constraints, into driving or reference mode Stel de werkbalk of de geselecteerde beperkingen in @@ -1518,12 +1518,12 @@ op sturende of referentie modus CmdSketcherTrimming - + Trim edge Inkorten van rand - + Trim an edge with respect to the picked position Trim een rand ten opzichte van de gekozen positie @@ -1582,79 +1582,79 @@ ongeldige constraints, gedegenereerde geometrie, etc. Command - + Add 'Lock' constraint Voeg 'vergrendeling' beperking toe - + Add relative 'Lock' constraint Voeg relatieve 'Vergrendeling' beperking toe - + Add fixed constraint Gefixeerde beperking toevoegen - + Add 'Block' constraint Voeg een 'Fixerende' beperking toe - + Add block constraint Voeg een fixerende beperking toe - - + + Add coincident constraint Voeg samenvallende beperking toe - - + + Add distance from horizontal axis constraint Voeg afstand toe van horizontale as beperking - - + + Add distance from vertical axis constraint Voeg afstand toe van verticale as beperking - - + + Add point to point distance constraint Voeg punt toe aan punt afstand beperking - - + + Add point to line Distance constraint Voeg punt toe aan lijnafstand beperking - - + + Add circle to circle distance constraint Voeg cirkel toe aan cirkel afstand beperking - + Add circle to line distance constraint Voeg cirkel toe aan lijnafstand beperking - - - - - - + + + + + + Add length constraint Beperking lengte toevoegen @@ -1677,8 +1677,8 @@ ongeldige constraints, gedegenereerde geometrie, etc. - - + + Add Distance constraint Voeg een afstand beperking toe @@ -1704,7 +1704,7 @@ ongeldige constraints, gedegenereerde geometrie, etc. - + Add Symmetry constraints Voeg symmetrische beperkingen toe @@ -1715,220 +1715,220 @@ ongeldige constraints, gedegenereerde geometrie, etc. Voeg een afstand beperking toe - + Add Horizontal constraint Voeg een horizontale beperking toe - + Add Vertical constraint Voeg een verticale beperking toe - + Add Block constraint Voeg een fixerende beperking toe - + Add Angle constraint Voeg een hoek beperking toe - - - - + + + + Add Equality constraint Voeg een gelijkwaardigheid beperking toe - + Add Equality constraints Voeg gelijkwaardigheid beperkingen toe - - - + + + Add Radius constraint Voeg een straal beperking toe - - + + Add arc angle constraint Voeg een booghoek beperking toe - + Add concentric and length constraint Voeg een concentriciteits en lengte beperking toe - + Add DistanceX constraint Voeg een afstandsbeperking in x-richting toe - + Add DistanceY constraint Voeg een afstandsbeperking in y-richting toe - + Add point to circle Distance constraint Voeg een punt-tot-cirkel afstandsbeperking toe - - + + Add point on object constraint Voeg punt toe aan object beperking - - + + Add point to point horizontal distance constraint Voeg punt toe aan punt horizontale afstand beperking - + Add fixed x-coordinate constraint Gefixeerde x-coördinaat beperking toevoegen - - + + Add point to point vertical distance constraint Voeg punt toe aan punt verticale afstand beperking - + Add fixed y-coordinate constraint Gefixeerde y-coördinaat beperking toevoegen - - + + Add parallel constraint Parallelle beperking toevoegen - - - - - - - + + + + + + + Add perpendicular constraint Haakse beperking toevoegen - + Add perpendicularity constraint Voeg haakse beperking toe - + Swap coincident+tangency with ptp tangency Wissel samenvallende+tangent met ptp tangens - + Swap PointOnObject+tangency with point to curve tangency Wissel PointOnObject+raaklijn om met punt op raaklijn van kromme - - - - - - - + + + + + + + Add tangent constraint Voeg tangens beperkgin toe - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Voeg tangens beperking toe - - - - + + + + Add radius constraint Voeg straal beperking toe - - - - + + + + Add diameter constraint Voeg diameter beperking - - - - + + + + Add radiam constraint Voeg straal/diameter beperking toe - - - - + + + + Add angle constraint Hoek beperking toe - - + + Add equality constraint Voeg gelijkheidsbeperking toe - - - - - + + + + + Add symmetric constraint Symmetrische beperking toevoegen - + Add Snell's law constraint Snell's wet beperking toevoegen - + Toggle constraint to driving/reference Schakel Beperking als sturend of als referentie in-/uit - + Activate/Deactivate constraint Beperking activeren/deactiveren @@ -2013,7 +2013,7 @@ ongeldige constraints, gedegenereerde geometrie, etc. Voeg schets boog van ellips toe - + Add sketch arc of hyperbola Voeg schets boog van hyperbola toe @@ -2101,12 +2101,12 @@ ongeldige constraints, gedegenereerde geometrie, etc. Cut in Sketcher - Cut in Sketcher + Knippen in Sketcher Paste in Sketcher - Paste in Sketcher + Plakken in Sketcher @@ -2157,8 +2157,8 @@ ongeldige constraints, gedegenereerde geometrie, etc. Update beperking's virtuele ruimte - + Add auto constraints Voeg automatische beperkingen toe @@ -2183,12 +2183,12 @@ ongeldige constraints, gedegenereerde geometrie, etc. Sleep Kromme - + Drag Constraint Sleep beperking - + Modify sketch constraints Wijzig schets beperkingen @@ -2210,27 +2210,27 @@ ongeldige constraints, gedegenereerde geometrie, etc. Add polygon - Veelhoek toevoegen + Regelmatige veelhoek toevoegen Add sketch arc slot - Ringvormige sleuf toevoegen + Boog-sleuf toevoegen in schets Rotate geometries - Rotate geometries + Roteer geometrieën Scale geometries - Scale geometries + Schaal geometriën Translate geometries - Translate geometries + Verplaats geometrieën @@ -2279,59 +2279,59 @@ ongeldige constraints, gedegenereerde geometrie, etc. Autoconstrain error: Defecte schets tijdens aanleggen van gelijkheids-constraint. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Niet in staat om het snijpunt van de bochten te raden. Probeer een samenvallende beperking toe te voegen tussen de vertexen van de curven die u wilt afronden. - - + + BSpline Geometry Index (GeoID) is out of bounds. B-spline Geometrie Index (GeoID) buiten bereik. - + You are requesting no change in knot multiplicity. U vraagt geen verandering in de knoop multipliciteit. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. De Geometrie Index (Geold) aangeleverd is geen B-spline lijn. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. De knoop-index is buiten de grenzen. Merk op dat volgens de OCC-notatie de eerste knoop index 1 heeft en niet nul. - + The multiplicity cannot be increased beyond the degree of the B-spline. De multipliciteit mag niet groter zijn dan het aantal graden van de B-spline. - + The multiplicity cannot be decreased beyond zero. De multipliciteit kan niet lager zijn dan nul. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is niet in staat om de multipliciteit binnen de maximale tolerantie te verlagen. - + Knot cannot have zero multiplicity. Knooppunt kan geen multipliciteit van nul hebben. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knooppunt multipliciteit kan niet hoger zijn dan de graad van de B-spline. - + Knot cannot be inserted outside the BSpline parameter range. Knooppunt kan niet worden toegevoegd buiten de parameters van de B-spline. @@ -2411,127 +2411,11 @@ ongeldige constraints, gedegenereerde geometrie, etc. Niet bijvoegen + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ ongeldige constraints, gedegenereerde geometrie, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ ongeldige constraints, gedegenereerde geometrie, etc. - - - Wrong selection Verkeerde selectie @@ -2613,106 +2613,106 @@ ongeldige constraints, gedegenereerde geometrie, etc. Een van het geselecteerde moet op de schets liggen. - + Select an edge from the sketch. Selecteer een rand van de schets. - - - - - - + + + + + + Impossible constraint Onmogelijk beperking - - + + The selected edge is not a line segment. De geselecteerde rand is geen lijnsegment. - - - + + + Double constraint Dubbele beperking - + The selected edge already has a horizontal constraint! De geselecteerde rand heeft al een horizontale constraint! - + The selected edge already has a vertical constraint! De geselecteerde rand heeft al een vertikale constraint! - - - + + + The selected edge already has a Block constraint! De geselecteerde rand heeft al een blok constraint! - + There are more than one fixed points selected. Select a maximum of one fixed point! Er zijn meer dan één vaste punten geselecteerd. Selecteer een maximum van één vast punt! - - - + + + Select vertices from the sketch. Selecteer vertexen vanuit de schets. - + Select one vertex from the sketch other than the origin. Selecteer een hoekpunt uit de schets, anders dan de oorsprong. - + Select only vertices from the sketch. The last selected vertex may be the origin. Selecteer alleen vertexen uit de schets. De laatst gekozen vertex kan de oorsprong zijn. - + Wrong solver status Verkeerde oplosserstatus - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Een blokbeperking kan niet worden toegevoegd als de schets onopgelost is of er overbodige en tegenstrijdige beperkingen zijn. - + Select one edge from the sketch. Selecteer een rand uit de schets. - + Select only edges from the sketch. Selecteer enkel randen uit de schets. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Het aantal geselecteerde objecten is niet gelijk aan 3 - + Error Fout @@ -2722,80 +2722,80 @@ ongeldige constraints, gedegenereerde geometrie, etc. Onverwachte fout. Meer informatie is mogelijk beschikbaar in de Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! De geselecteerde item(s) kunnen geen horizontale of verticale beperking accepteren! - + Endpoint to endpoint tangency was applied instead. Eindpunt tot eindpunttangens werd in plaats daarvan toegepast. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Selecteer twee of meer hoekpunten van de schets voor een samenvallende beperking, of twee of meer cirkels, ellipsen, bogen of ellipsbogen voor een concentrische beperking. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Selecteer twee hoekpunten van de schets voor een samenvallende beperking, of twee cirkels, ellipsen, bogen of ellipsbogen voor een concentrische beperking. - + Select exactly one line or one point and one line or two points from the sketch. Selecteer precies één lijn, of een punt en een lijn, of twee punten, uit de schets. - + Cannot add a length constraint on an axis! Een lengtebeperking is niet mogelijk op een as! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Selecteer precies één lijn, of één punt en één lijn, of twee punten, of twee cirkels, van de schets. - + This constraint does not make sense for non-linear curves. Deze beperking heeft geen zin voor niet-lineaire krommen. - + Endpoint to edge tangency was applied instead. Eindpunt tot de rand raaklijn werd in plaats daarvan toegepast. - - - - - - + + + + + + Select the right things from the sketch. Selecteer de juiste elementen uit de schets. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Selecteer een rand die geen B-spline gewicht is. @@ -2805,92 +2805,92 @@ ongeldige constraints, gedegenereerde geometrie, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Geen van de geselecteerde punten zijn op de respectievelijke curves beperkt, omdat het delen van hetzelfde element zijn, omdat ze allebei externe geometrie zijn, of omdat ze niet voor de rand in aanmerking komen. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Geen van de geselecteerde punten werd beperkt tot de respectievelijke curven, ofwel omdat ze deel uitmaken van hetzelfde element, ofwel omdat ze beide externe geometrie zijn. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Selecteer precies één lijn, of maximaal twee punten, uit de schets. - + Cannot add a horizontal length constraint on an axis! Een horizontale lengtebeperking is niet mogelijk op een as! - + Cannot add a fixed x-coordinate constraint on the origin point! Kan geen gefixeerd x-coördinaat constraint plaatsen op het punt van oorsprong! - - + + This constraint only makes sense on a line segment or a pair of points. Deze beperking heeft alleen zin op een lijnsegment of een tweetal punten. - + Cannot add a vertical length constraint on an axis! Een verticale lengtebeperking is niet mogelijk op een as! - + Cannot add a fixed y-coordinate constraint on the origin point! Kan geen gefixeerd y-coördinaat constraint plaatsen op het punt van oorsprong! - + Select two or more lines from the sketch. Selecteer twee of meer lijnen van de schets. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Eén geselecteerde rand is geen geldige lijn. - - + + Select at least two lines from the sketch. Selecteer tenminste twee lijnen uit de schets. - + The selected edge is not a valid line. De geselecteerde rand is geen geldige lijn. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunten; twee curven en een punt. - + Select some geometry from the sketch. perpendicular constraint Selecteer wat geometrie uit schets. - - + + Cannot add a perpendicularity constraint at an unconnected point! Kan geen loodrechtheidsbeperking toevoegen op een niet-verbonden punt! - - + + One of the selected edges should be a line. Eén van de geselecteerde randen moet een lijn zijn. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint op endpointtangens werd toegepast. De toevallige beperking werd verwijderd. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Eindpunt tot rand raaklijn is toegepast. Het punt op de object beperking is verwijderd. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunten; twee curven en een punt. - + Select some geometry from the sketch. tangent constraint Selecteer wat geometrie uit schets. - - - + + + Cannot add a tangency constraint at an unconnected point! Een raakbeperking kan niet worden toegevoegd aan een los punt! - - + + Tangent constraint at B-spline knot is only supported with lines! Raaklijn beperking bij B-spline knoop wordt alleen ondersteund met lijnen! - + B-spline knot to endpoint tangency was applied instead. B-spline knoop tot eindpunt raaklijn werd in plaats hiervan toegepast. - - + + Wrong number of selected objects! Verkeerd aantal geselecteerde objecten! - - + + With 3 objects, there must be 2 curves and 1 point. Met 3 objecten moeten er 2 curven en 1 punt zijn. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Selecteer een of meer bogen of cirkels uit de schets. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Selecteer slechts één of meer B-Spline polen of slechts één of meer bogen of cirkels van de schaap, maar niet gemengd. - - - + + + Constraint only applies to arcs or circles. Beperkingen gelden alleen voor bogen en cirkels. - - + + Select one or two lines from the sketch. Or select two edges and a point. Selecteer een of twee lijnen uit de schets. Of selecteer twee randen en een punt. @@ -3013,88 +3013,88 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Een hoekbeperking kan niet worden ingesteld voor twee parallelle lijnen. - + Cannot add an angle constraint on an axis! Een hoekbeperking op een as is niet mogelijk! - + Select two edges from the sketch. Selecteer twee randen van de schets. - + Select two or more compatible edges. Selecteer twee of meer passende randen. - + Sketch axes cannot be used in equality constraints. Schets assen kunnen niet worden gebruikt voor gelijkheid beperkingen. - + Equality for B-spline edge currently unsupported. Gelijkheid voor B-splinerand momenteel niet ondersteund. - - - - + + + + Select two or more edges of similar type. Selecteer twee of meer randen van een vergelijkbaar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Selecteer twee punten en een symmetrie-lijn, twee punten en een symmetrie-punt of een lijn en een symmetrie-punt uit de schets. - - + + Cannot add a symmetry constraint between a line and its end points. Kan geen symmetrie beperking toevoegen tussen een lijn en zijn eindpunten. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Kan geen symmetriebeperking tussen een lijn en zijn eindpunten toevoegen! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Selecteer twee eindpunten van lijnen om te fungeren als stralen, en een rand die een grens vertegenwoordigt. Het eerste geselecteerde punt komt overeen met index n1, tweede tot n2, en datum waarde bepaalt de verhouding n2/n1. - + Selected objects are not just geometry from one sketch. Geselecteerde objecten zijn niet slechts geometrie uit één schets. - + Cannot create constraint with external geometry only. Kan geen beperking maken met alleen externe geometrie. - + Incompatible geometry is selected. Incompatibele geometrie is geselecteerd. - - - - - + + + + + Select constraints from the sketch. Selecteer beperking(en) uit de schets. @@ -3116,9 +3116,9 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Definieer de B-Spline graad, tussen 1 en %1: + - CAD Kernel Error CAD-kernelfout @@ -3261,14 +3261,14 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Verwijdering van de assen uitlijning vereist ten minste één geselecteerd niet-extern geometrisch element - - + + Unsupported visual layer operation Niet ondersteunde visuele laag bewerking - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Het verplaatsen van externe geometrie naar een andere visuele laag wordt momenteel niet ondersteund. Externe geometrie wordt weggelaten @@ -3295,12 +3295,12 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Offset parameters - Offset parameters + Afstand parameters Polygon parameters - Polygon parameters + Regelmatige veelhoek parameters @@ -3315,7 +3315,7 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Arc Slot parameters - Arc Slot parameters + Boog sleuf parameters @@ -3340,7 +3340,7 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Translate parameters - Translate parameters + Parameters vertalen @@ -3652,12 +3652,12 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Lengte: - + Refractive index ratio Brekingsindexverhouding - + Ratio n2/n1: Verhouding n2/n1: @@ -3665,72 +3665,72 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt SketcherGui::ElementFilterList - + Normal Normaal - + Construction Constructie - + Internal Intern - + External Extern - + All types Alle types - + Point Punt - + Line Lijn - + Circle Cirkel - + Ellipse Ellips - + Arc of circle Cirkelboog - + Arc of ellipse Boog van ellips - + Arc of hyperbola Boog van hyperbool - + Arc of parabola Boog van parabool - + B-Spline B-Spline @@ -3853,27 +3853,27 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Selecteer Verticale As - + Layer Laag - + Layer 0 Laag 0 - + Layer 1 Laag 1 - + Hidden Verborgen - + Delete Verwijderen @@ -4079,7 +4079,7 @@ wordt gereflecteerd op de kopieën Number of sides: - Number of sides: + Aantal zijden: @@ -4272,7 +4272,7 @@ This setting is only for the toolbar. Whichever you choose, all tools are always Disabled - Disabled + Uitgeschakeld @@ -4749,120 +4749,120 @@ Er zijn echter geen beperkingen gevonden die verband houden met de eindpunten.Instellingen - - - - - - - - - - + + + + + + + + + + Construction Constructie - + Elements Elementen - - - - + + + + Point Punt - - - - - - - - - - + + + + + + + + + + Internal Intern - - - - + + + + Line Lijn - - - - + + + + Arc Boog - - - - + + + + Circle Cirkel - - - - + + + + Ellipse Ellips - - - - + + + + Elliptical Arc Elliptische boog - - - - + + + + Hyperbolic Arc Hyperbolische boog - - - - + + + + Parabolic Arc Parabolische boog - - - - + + + + BSpline BSpline - - - - + + + + Other Andere - + Extended information Uitgebreide informatie @@ -5083,112 +5083,112 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. SketcherGui::ViewProviderSketch - + Edit sketch Schets bewerken - + A dialog is already open in the task panel Een dialoog is al geopend in het taakvenster - + Do you want to close this dialog? Wilt u dit dialoogvenster sluiten? - + Invalid sketch Ongeldige schets - + Do you want to open the sketch validation tool? Wilt u het schetsvalidatiegereedschap openen? - + The sketch is invalid and cannot be edited. De schets is ongeldig en kan niet worden bewerkt. - + Please remove the following constraint: Gelieve de volgende beperking te verwijderen: - + Please remove at least one of the following constraints: Gelieve minstens één van de volgende beperkingen te verwijderen: - + Please remove the following redundant constraint: Gelieve de volgende overbodige beperking te verwijderen: - + Please remove the following redundant constraints: Gelieve de volgende overbodige beperkingen te verwijderen: - + The following constraint is partially redundant: De volgende beperking is gedeeltelijk overbodig: - + The following constraints are partially redundant: De volgende beperkingen zijn gedeeltelijk overbodig: - + Please remove the following malformed constraint: Verwijder de volgende conflicterende beperking: - + Please remove the following malformed constraints: Verwijder de volgende conflicterende beperkingen: - + Empty sketch Lege schets - + Over-constrained: Over-bepaald: - + Malformed constraints: Ongeldige beperkingen: - + Redundant constraints: Overbodige beperkingen: - + Partially redundant: Gedeeltelijk overbodig: - + Solver failed to converge Solver kon niet convergeren - + Under constrained: On-bepaald: - + %n DoF(s) %n vrijheidsgra(a)d(en) @@ -5196,7 +5196,7 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. - + Fully constrained Volledig bepaald @@ -5261,7 +5261,7 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Switches between showing and hiding the control polygons for all B-splines - Hiermee schakelt u tussen het weergeven en verbergen van de knoop multipliciteit voor alle B-splines + Hiermee schakelt u tussen het weergeven en verbergen van de bepalende veelhoek voor alle B-splines @@ -5294,8 +5294,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Zet de diameter van een cirkel of een boog vast @@ -5303,8 +5303,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Straal/diameter van een cirkel of boog bepalen @@ -5312,8 +5312,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc De straal van een cirkel of boog vastzetten @@ -5327,70 +5327,25 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren.Maakt een eenvoudige kopie van de geometrie met als referentie het laatst geselecteerde punt - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Maak een boog door zijn eindpunten en een punt langs de boog - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Maak een cirkel door 3 randpunten - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Maak een boog door zijn eindpunten en een punt langs de boog - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Maak een ellips boog door middel van zijn centrum, grote straal en eindpunten - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Maak een boog van hyperbola doormiddel van zijn centrum, grote radius en eindpunten - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Maak een boog parabool doormiddel van zijn focus, hoekpunten en eindpunten - - Sketcher_CreateBSpline - + B-spline by control points B-spline via controlepunten - - + + Create a B-spline by control points Maak een B-spline via controlepunten @@ -5398,35 +5353,17 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Maak een cirkel door zijn midden en een randpunt - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Maak een ellips door de periapsis, apoapsis en substraal - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Maak een ellips door zijn midden, hoofdstraal en punt - - Sketcher_CreateFillet - - + + Creates a radius between two lines Maakt een afronding tussen twee lijnen @@ -5434,8 +5371,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Maak een zevenhoek door zijn midden en door een hoek @@ -5443,8 +5380,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Maak een zeshoek door zijn midden en door een hoek @@ -5460,14 +5397,14 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Maak een achthoek door zijn midden en door een hoek + - Create a regular polygon by its center and by one corner Maak een regelmatige veelhoek door zijn midden en door een hoek @@ -5475,8 +5412,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Maak een vijfhoek door zijn midden en door een hoek @@ -5484,8 +5421,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Afronding dat beperkingen en het snijpunt behoudt @@ -5509,8 +5446,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreateSquare + - Create a square by its center and by one corner Maak een vierkant door zijn midden en door een hoek @@ -5518,8 +5455,8 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Maak een gelijkzijdige driehoek door zijn midden en door een hoek @@ -5527,13 +5464,13 @@ Dit wordt gedaan door de geometrie en beperkingen van de schets te analyseren. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Periodieke B-spline via controlepunten + - Create a periodic B-spline by control points Maak een periodieke B-spline via controlepunten @@ -5934,7 +5871,7 @@ Eigen Sparse-QR-algoritme is geoptimaliseerd voor spaarzame matrices; meestal sn ViewProviderSketch - + and %1 more en %1 meer @@ -6157,46 +6094,46 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels.De schets heeft deels overbodige beperkingen! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolen zijn geconverteerd. Geconverteerde bestanden kunnen niet in vorige versies van FreeCAD worden geopend!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Fout @@ -6232,16 +6169,16 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels.De beperking heeft ongeldige index informatie en is onjuist vormgegeven. + + + - - - - - + + Invalid Constraint @@ -6258,12 +6195,12 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels.Kon boog van de ellips niet toevoegen - + Cannot create arc of hyperbola from invalid angles, try again! Kan geen boog van de hyperbool maken met ongeldige hoeken, probeer opnieuw! - + Cannot create arc of hyperbola Kan geen boog van de hyperbool maken @@ -6283,8 +6220,8 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels.Fout bij het maken van de B-spline pool - + Error creating B-spline Fout bij het maken van de B-spline @@ -6340,17 +6277,17 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels.Kon lijn niet toevoegen - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6385,9 +6322,9 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels.Kon de rand niet inkorten - + Value Error Fout in de waarde @@ -6424,7 +6361,7 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels. Failed to add arc slot - Failed to add arc slot + Kon de boog-sleuf niet toevoegen @@ -6444,19 +6381,19 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels. Failed to translate - Failed to translate + Vertalen mislukt Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline middels knooppunten - - + + Create a B-spline by knots Maak een B-spline middels knooppunten @@ -6464,13 +6401,13 @@ De rasterafstand verandert als deze kleiner wordt dan dit aantal pixels. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Gesloten B-spline middels knooppunten + - Create a periodic B-spline by knots Maak een gesloten B-spline middels knooppunten @@ -6576,12 +6513,12 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Maak een B-spline middels knooppunten - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Maak een gesloten B-spline middels knooppunten, door middel van interpolatie, in de schets. @@ -6589,12 +6526,12 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Maak een gesloten B-spline middels knooppunten - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Maak een gesloten B-spline middels knooppunten, door middel van interpolatie, in de schets. @@ -6602,12 +6539,12 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn CmdSketcherDimension - + Dimension Afmeting - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6644,12 +6581,12 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k CmdSketcherConstrainRadius - + Constrain radius Beperk de straal - + Fix the radius of a circle or an arc De straal van een cirkel of boog vastzetten @@ -6675,52 +6612,52 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k Parameter 1 - Parameter 1 + Parameter 1 Parameter 2 - Parameter 2 + Parameter 2 Parameter 3 - Parameter 3 + Parameter 3 Parameter 4 - Parameter 4 + Parameter 4 Parameter 5 - Parameter 5 + Parameter 5 Parameter 6 - Parameter 6 + Parameter 6 Parameter 7 - Parameter 7 + Parameter 7 Parameter 8 - Parameter 8 + Parameter 8 Parameter 9 - Parameter 9 + Parameter 9 Parameter 10 - Parameter 10 + Parameter 10 @@ -6730,7 +6667,7 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k Checkbox 1 - Checkbox 1 + Selectievak 1 @@ -6740,7 +6677,7 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k Checkbox 2 - Checkbox 2 + Selectievak 2 @@ -6750,7 +6687,7 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k Checkbox 3 - Checkbox 3 + Selectievak 3 @@ -6760,7 +6697,7 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k Checkbox 4 - Checkbox 4 + Selectievak 4 @@ -6824,8 +6761,8 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6839,12 +6776,12 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontaal/verticaal - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6852,12 +6789,12 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontaal/verticaal - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6865,12 +6802,12 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6878,12 +6815,12 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k CmdSketcherCompSlot - + Slots Sleuven - + Slot tools. Sleuf gereedschap. @@ -6891,25 +6828,25 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k CmdSketcherCreateArcSlot - + Create arc slot - Maak een sleuf + Maak een boog-sleuf - + Create an arc slot in the sketch - Maak een sleuf in de schets + Maak een boog-sleuf in de schets CmdSketcherConstrainCoincidentUnified - + Constrain coincident Samenvallende beperking - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7212,7 +7149,7 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k Sides (+'U'/ -'J') - Sides (+'U'/ -'J') + Aantal zijden (+'U'/-'J') @@ -7330,4 +7267,67 @@ Afhankelijk van uw keuzes zijn er mogelijk meerdere beperkingen beschikbaar. U k Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts index 91879edd0e..297082dee9 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Utwórz kalkę techniczną - + Copy the geometry of another sketch Kopiuje geometrię innego szkicu @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Zwiąż łuk lub okrąg - + Constrain an arc or a circle Zwiąż łuk lub okrąg - + Constrain radius Wiązanie promienia - + Constrain diameter Wiązanie średnicy - + Constrain auto radius/diameter Zwiąż automatycznie promień / średnicę @@ -180,24 +180,24 @@ - Center and end points + Center and endpoints Punkt środkowy i punkty końcowe - - End points and rim point + + Endpoints and rim point Punkty końcowe i punkt na obwodzie CmdSketcherCompCreateBSpline - + Create B-spline Utwórz krzywą złożoną - + Create a B-spline in the sketch Tworzy krzywą złożoną na szkicu @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Utwórz okrąg - + Create a circle in the sketcher Tworzy okrąg na szkicu - + Center and rim point Przez punkt środkowy i na obwodzie - + 3 rim points Przez trzy punkty na obwodzie @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Utwórz krzywą stożkową - + Create a conic in the sketch Tworzy krzywą stożkową na szkicu - - Ellipse by center, major radius, point - Elipsę przez środek, główny promień, punkt + + Ellipse by center, radius, rim point + Elipsa przez środek, promień i punkt na obwodzie - - Ellipse by periapsis, apoapsis, minor radius - Elipsę przez periapsis, apoapsis i mniejszy promień + + Ellipse by axis endpoints, rim point + Elipsa przez punkty końcowe osi, punkt na obwodzie - - Arc of ellipse by center, major radius, endpoints - Łuk elipsy przez środek, promień główny, punkty końcowe + + Arc of ellipse by center, radius, endpoints + Łuk elipsy przez środek, promień, punkty końcowe - - Arc of hyperbola by center, major radius, endpoints - Łuk hiperboli przez środek, promień główny, punkty końcowe + + Arc of hyperbola by center, vertex, endpoints + Łuk hiperboli przez środek, promień, punkty końcowe - + Arc of parabola by focus, vertex, endpoints Łuk paraboli przez ogniskową, wierzchołek, punkty końcowe @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Utwórz zaokrąglenie - + Create a fillet between two lines Utwórz zaokrąglenie między dwoma liniami - + Sketch fillet Zaokrąglenie - - Constraint-preserving sketch fillet - Zaokrąglenie z zachowaniem wiązań + + Corner-preserving sketch fillet + Zaokrąglenie szkicu zachowując narożniki @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Utwórz wielokąt foremny - + Create a regular polygon in the sketcher Tworzy wielokąt foremny na szkicu - + Triangle Trójkąt - + Square Kwadrat - + Pentagon Pięciokąt - + Hexagon Sześciokąt - + Heptagon Siedmiokąt - + Octagon Ośmiokąt - + Regular polygon Wielokąt foremny @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Wiązanie kąta - + Fix the angle of a line or the angle between two lines Ustaw kąt linii lub kąt pomiędzy 2 liniami @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Wiązanie zablokowania - + Block the selected edge from moving Zablokuj wybraną krawędź przed przeniesieniem @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Wiązanie zbieżności - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Utwórz wiązanie zbieżności między punktami lub wiązanie współśrodkowe między okręgami, łukami i elipsami @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Wiązanie średnicy - + Fix the diameter of a circle or an arc Ustal średnicę okręgu lub łuku @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Wiązanie odległości - + Fix a length of a line or the distance between a line and a vertex or between two circles Ustal długość linii lub odległość między linią a wierzchołkiem lub między dwoma okręgami @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Zwiąż odległość poziomą - + Fix the horizontal distance between two points or line ends Ustal poziomą odległość między dwoma punktami lub końcami linii @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Zwiąż odległość pionową - + Fix the vertical distance between two points or line ends Ustal pionową odległość między dwoma punktami lub końcami linii @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Wiązanie równości - + Create an equality constraint between two lines or between circles and arcs Utwórz wiązanie równości między dwiema liniami lub między okręgami i łukami @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Zwiąż w poziomie - + Create a horizontal constraint on the selected item Utwórz wiązanie poziome na wybranym elemencie @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Wiązanie blokady odległości - + Create both a horizontal and a vertical distance constraint on the selected vertex Wiązanie blokady odległości: utwórz zarówno poziome, jak i pionowe wiązanie odległości @@ -520,12 +520,12 @@ na wybranym wierzchołku CmdSketcherConstrainParallel - + Constrain parallel Wiązanie równoległości - + Create a parallel constraint between two lines Utwórz wiązanie równoległości pomiędzy dwoma liniami @@ -533,12 +533,12 @@ na wybranym wierzchołku CmdSketcherConstrainPerpendicular - + Constrain perpendicular Wiązanie prostopadłości - + Create a perpendicular constraint between two lines Utwórz wiązanie prostopadłości między dwoma liniami @@ -546,12 +546,12 @@ na wybranym wierzchołku CmdSketcherConstrainPointOnObject - + Constrain point onto object Zwiąż punkt na obiekcie - + Fix a point onto an object Ustaw punkt na obiekcie @@ -559,12 +559,12 @@ na wybranym wierzchołku CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Zwiąż automatycznie promień / średnicę - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Ustal średnicę, jeśli wybrano okrąg lub promień, jeśli wybrano łuk lub biegun liniowy @@ -572,12 +572,12 @@ na wybranym wierzchołku CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Wiązanie refrakcji (prawo Snell'a) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Tworzy wiązanie refrakcji (prawo Snella) pomiędzy dwoma punktami końcowymi promieni @@ -587,12 +587,12 @@ oraz krawędzią jako interfejsem. CmdSketcherConstrainSymmetric - + Constrain symmetrical Wiązanie symetrii - + Create a symmetry constraint between two points with respect to a line or a third point Utwórz wiązanie symetrii pomiędzy dwoma punktami @@ -602,12 +602,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherConstrainTangent - + Constrain tangent Wiązanie styczności - + Create a tangent constraint between two entities Utwórz wiązanie styczności pomiędzy dwoma obiektami @@ -615,12 +615,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherConstrainVertical - + Constrain vertically Zwiąż w pionie - + Create a vertical constraint on the selected item Utwórz wiązanie pionowe na wybranym elemencie @@ -667,12 +667,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreate3PointCircle - + Create circle by three points Utwórz okrąg przez trzy punkty - + Create a circle by 3 perimeter points Utwórz okrąg przez trzy punkty na obwodzie @@ -693,12 +693,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Utwórz łuk na podstawie elipsy - + Create an arc of ellipse in the sketch Tworzy łuk elipsy na szkicu @@ -706,12 +706,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Utwórz łuk na podstawie hiperboli - + Create an arc of hyperbola in the sketch Tworzy łuk hiperboli na szkicu @@ -719,12 +719,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateArcOfParabola - + Create arc of parabola Utwórz łuk na podstawie paraboli - + Create an arc of parabola in the sketch Tworzy łuk paraboli na szkicu @@ -732,12 +732,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateBSpline - + Create B-spline Utwórz krzywą złożoną - + Create a B-spline by control points in the sketch. Utwórz krzywą złożoną poprzez podanie punktów kontrolnych na szkicu. @@ -745,12 +745,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateCircle - + Create circle Utwórz okrąg - + Create a circle in the sketch Tworzy okrąg na szkicu @@ -758,12 +758,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Utwórz elipsę przez trzy punkty - + Create an ellipse by 3 points in the sketch Tworzy elipsę przez trzy punkty na szkicu @@ -771,12 +771,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateEllipseByCenter - + Create ellipse by center Utwórz elipsę przez środek - + Create an ellipse by center in the sketch Tworzy elipsę przez środek na szkicu @@ -784,12 +784,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateFillet - + Create fillet Utwórz zaokrąglenie - + Create a fillet between two lines or at a coincident point Utwórz zaokrąglenie między dwiema liniami lub w punkcie zbieżności @@ -797,12 +797,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateHeptagon - + Create heptagon Utwórz siedmiokąt - + Create a heptagon in the sketch Tworzy siedmiokąt na szkicu @@ -810,12 +810,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateHexagon - + Create hexagon Utwórz sześciokąt - + Create a hexagon in the sketch Tworzy sześciokąt na szkicu @@ -849,12 +849,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateOctagon - + Create octagon Utwórz ośmiokąt - + Create an octagon in the sketch Tworzy ośmiokąt na szkicu @@ -862,12 +862,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreatePentagon - + Create pentagon Utwórz pięciokąt - + Create a pentagon in the sketch Tworzy pięciokąt na szkicu @@ -875,12 +875,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Utwórz okresową krzywą złożoną - + Create a periodic B-spline by control points in the sketch. Utwórz okresową krzywą złożoną przez podanie punktów kontrolnych na szkicu. @@ -888,12 +888,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreatePoint - + Create point Utwórz punkt - + Create a point in the sketch Utwórz punkt na szkicu @@ -901,12 +901,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreatePointFillet - + Create corner-preserving fillet Utwórz zaokrąglenie z zachowaniem narożników - + Fillet that preserves intersection point and most constraints Zaokrąglenie, które zachowuje punkt przecięcia i większość wiązań @@ -953,12 +953,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateRegularPolygon - + Create regular polygon Utwórz wielokąt foremny - + Create a regular polygon in the sketch Tworzy wielokąt foremny na szkicu @@ -966,12 +966,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateSlot - + Create slot Utwórz szczelinę - + Create a slot in the sketch Utwórz szczelinę w szkicu @@ -979,12 +979,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateSquare - + Create square Utwórz kwadrat - + Create a square in the sketch Tworzy kwadrat na szkicu @@ -992,12 +992,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherCreateTriangle - + Create equilateral triangle Utwórz trójkąt równoboczny - + Create an equilateral triangle in the sketch Tworzy trójkąt równoboczny na szkicu @@ -1070,12 +1070,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherExtend - + Extend edge Przedłuż krawędź - + Extend an edge with respect to the picked position Przedłuża krawędź w stosunku do wybranej pozycji @@ -1083,12 +1083,12 @@ w odniesieniu do linii lub trzeciego punktu CmdSketcherExternal - + Create external geometry Utwórz geometrię zewnętrzną - + Create an edge linked to an external geometry Utwórz krawędź związaną z zewnętrzną geometrią @@ -1427,12 +1427,12 @@ To usunie właściwość "podparcie", jeśli istnieje. CmdSketcherSplit - + Split edge Podziel krawędź - + Splits an edge into two while preserving constraints Dzieli krawędź na dwie przy zachowaniu wiązań @@ -1479,12 +1479,12 @@ To usunie właściwość "podparcie", jeśli istnieje. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Aktywuj / dezaktywuj wiązanie - + Activates or deactivates the selected constraints Aktywuje lub wyłącza zaznaczone wiązania @@ -1505,12 +1505,12 @@ To usunie właściwość "podparcie", jeśli istnieje. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Przełącz kontrolę wiązania - + Set the toolbar, or the selected constraints, into driving or reference mode Ustaw pasek narzędzi lub wybrane więzy wymiarowe @@ -1520,12 +1520,12 @@ w tryb konstrukcyjny lub informacyjny CmdSketcherTrimming - + Trim edge Przytnij krawędź - + Trim an edge with respect to the picked position Przycina krawędź w odniesieniu do wybranej pozycji @@ -1584,79 +1584,79 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Command - + Add 'Lock' constraint Dodaj wiązanie blokady odległości - + Add relative 'Lock' constraint Dodaj względne wiązanie blokady odległości - + Add fixed constraint Dodaj wiązanie zablokowania - + Add 'Block' constraint Dodaj wiązanie zablokowania - + Add block constraint Dodaj wiązanie zablokowania - - + + Add coincident constraint Dodaj wiązanie zbieżności - - + + Add distance from horizontal axis constraint Dodaj odległość od wiązania osi poziomej - - + + Add distance from vertical axis constraint Dodaj odległość od wiązania osi pionowej - - + + Add point to point distance constraint Dodaj ograniczenie odległości punktu od punktu - - + + Add point to line Distance constraint Dodaj ograniczeni odległości punktu od linii - - + + Add circle to circle distance constraint Dodaj wiązanie odległości okręgu do okręgu - + Add circle to line distance constraint Dodaj wiązanie odległości okręgu do linii - - - - - - + + + + + + Add length constraint Dodaj wiązanie długości @@ -1679,8 +1679,8 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. - - + + Add Distance constraint Dodaj wiązanie odległości @@ -1706,7 +1706,7 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. - + Add Symmetry constraints Dodaj wiązania symetrii @@ -1717,220 +1717,220 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Dodaj wiązania odległości - + Add Horizontal constraint Dodaj wiązanie poziome - + Add Vertical constraint Dodaj wiązanie pionowe - + Add Block constraint Dodaj wiązanie zablokowania - + Add Angle constraint Dodaj wiązanie kąta - - - - + + + + Add Equality constraint Dodaj wiązanie równości - + Add Equality constraints Dodaj wiązania równości - - - + + + Add Radius constraint Dodaj wiązanie promienia - - + + Add arc angle constraint Dodaj wiązanie kąta łuku - + Add concentric and length constraint Dodaj wiązanie współosiowości i długości - + Add DistanceX constraint Dodaj wiązanie odległości X - + Add DistanceY constraint Dodaj wiązanie odległości Y - + Add point to circle Distance constraint Dodaj wiązanie odległości punktu od okręgu - - + + Add point on object constraint Dodaj punkt w miejscu wiązania obiektu - - + + Add point to point horizontal distance constraint Dodaj poziome wiązanie odległości, pomiędzy punktami - + Add fixed x-coordinate constraint Dodaj wiązanie ze stałą współrzędną x - - + + Add point to point vertical distance constraint Dodaj pionowe wiązanie odległości pomiędzy punktami - + Add fixed y-coordinate constraint Dodaj wiązanie ze stałą współrzędną y - - + + Add parallel constraint Dodaj wiązanie równoległości - - - - - - - + + + + + + + Add perpendicular constraint Dodaj wiązanie prostopadłości - + Add perpendicularity constraint Dodaj wiązanie prostopadłości - + Swap coincident+tangency with ptp tangency Zamień styczność krawędzi na styczność od punktu do punktu - + Swap PointOnObject+tangency with point to curve tangency Zamień wiązanie Punkt na obiekcie+styczna z punktem na wiązanie Styczna do krzywej - - - - - - - + + + + + + + Add tangent constraint Dodaj wiązanie kąta - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Dodaj punkt dostępny dla wiązania styczności - - - - + + + + Add radius constraint Dodaj wiązanie promienia - - - - + + + + Add diameter constraint Dodaj wiązanie średnicy - - - - + + + + Add radiam constraint Dodaj wiązanie promienia - - - - + + + + Add angle constraint Dodaj wiązanie kąta - - + + Add equality constraint Dodaj wiązanie równości - - - - - + + + + + Add symmetric constraint Dodaj wiązanie symetryczności - + Add Snell's law constraint Dodaj wiązanie prawa Snella - + Toggle constraint to driving/reference Przełączanie wiązania między kontrolującym i odniesienia - + Activate/Deactivate constraint Aktywuj / dezaktywuj wiązanie @@ -2015,7 +2015,7 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Dodaj szkic łuku elipsy - + Add sketch arc of hyperbola Dodaj szkic łuku hiperboli @@ -2159,8 +2159,8 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Aktualizuj wiązania przestrzeni wirtualnej - + Add auto constraints Dodaj wiązania automatycznie @@ -2185,12 +2185,12 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Przeciągnij krzywą - + Drag Constraint Przeciągnij wiązanie - + Modify sketch constraints Modyfikuj wiązania szkicu @@ -2232,7 +2232,7 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Translate geometries - Translate geometries + Geometrie do przekształcenia @@ -2281,59 +2281,59 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Błąd wiązań automatycznych: Nierozwiązywalny szkic przy stosowaniu wiązania równości. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Nie można ustalić punktu przecięcia się krzywych. Spróbuj dodać wiązanie zbieżne pomiędzy wierzchołkami krzywych, które zamierzasz zaokrąglić. - - + + BSpline Geometry Index (GeoID) is out of bounds. Indeks geometrii krzywej złożonej (GeoID) jest poza wiązaniem. - + You are requesting no change in knot multiplicity. Żądasz niezmienności w wielokrotności węzłów. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Podany indeks geometrii krzywej złożonej (GeoId) nie jest łukiem krzywej złożonej. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Indeks węzłów jest poza wiązaniem. Zauważ, że zgodnie z zapisem OCC, pierwszy węzeł ma indeks 1, a nie zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. Wielokrotność nie może być zwiększona poza stopień krzywej złożonej. - + The multiplicity cannot be decreased beyond zero. Wielokrotność nie może zostać zmniejszona poniżej zera. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC nie jest w stanie zmniejszyć wielokrotności w ramach maksymalnej tolerancji. - + Knot cannot have zero multiplicity. Węzeł nie może mieć zerowej krotności. - + Knot multiplicity cannot be higher than the degree of the BSpline. Krotność węzłów nie może być większa niż stopień krzywej złożonej. - + Knot cannot be inserted outside the BSpline parameter range. Węzła nie można wstawić poza zakresem parametrów krzywej złożonej. @@ -2413,127 +2413,11 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Nie dołączaj + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. - - - Wrong selection Nieprawidłowy wybór @@ -2615,106 +2615,106 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Jeden z wyborów musi znajdować się na szkicu. - + Select an edge from the sketch. Wybierz krawędź ze szkicu. - - - - - - + + + + + + Impossible constraint Wiązanie niemożliwe do ustalenia - - + + The selected edge is not a line segment. Wybrana krawędź nie jest odcinkiem linii. - - - + + + Double constraint Zdublowane wiązanie - + The selected edge already has a horizontal constraint! Wybrana krawędź ma już wiązanie poziome! - + The selected edge already has a vertical constraint! Wybrana krawędź ma już wiązanie pionowe! - - - + + + The selected edge already has a Block constraint! Wybrana krawędź ma już wiązanie zablokowania! - + There are more than one fixed points selected. Select a maximum of one fixed point! Wybrano więcej niż jeden ustalony punkt. Wybierz maksymalnie jeden ustalony punkt! - - - + + + Select vertices from the sketch. Wybierz wierzchołki ze szkicu. - + Select one vertex from the sketch other than the origin. Zaznacz jeden wierzchołek ze szkicu inny niż odniesienie położenia. - + Select only vertices from the sketch. The last selected vertex may be the origin. Ze szkicu wybierz tylko wierzchołki. Ostatni wybrany wierzchołek może być odniesieniem położenia. - + Wrong solver status Nieprawidłowy status solvera - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Nie można dodać wiązania zablokowania, jeśli rysunek nie został rozwiązany lub istnieją wiązania zbędne i/lub sprzeczne. - + Select one edge from the sketch. Zaznacz jedną krawędź ze szkicu. - + Select only edges from the sketch. Zaznacz tylko krawędzie ze szkicu. - + Only tangent-via-point is supported with a B-spline. W przypadku krzywej złożonej obsługiwana jest tylko styczna przez punkt. - + Number of selected objects is not 3 Liczba wybranych obiektów nie jest równa 3 - + Error Błąd @@ -2724,80 +2724,80 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Nieoczekiwany błąd. Więcej informacji może być dostępnych w Widoku raportu. - + The selected item(s) can't accept a horizontal or vertical constraint! Wybrane elementy nie mogą zaakceptować wiązania poziomego lub pionowego! - + Endpoint to endpoint tangency was applied instead. Zamiast tego zastosowano styczne między punktami końcowymi. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Wybierz dwa lub więcej wierzchołków ze szkicu dla wiązania zbieżności albo co najmniej dwa koła, elipsy, łuki lub łuki eliptyczne do wiązania współśrodkowego. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Wybierz dwa wierzchołki ze szkicu dla wiązania zbieżności albo dwa koła, elipsy, łuki lub łuki eliptyczne do wiązania współśrodkowego. - + Select exactly one line or one point and one line or two points from the sketch. Wybierz dokładnie jedną linię lub jeden punkt i jedną linię lub dwa punkty ze szkicu. - + Cannot add a length constraint on an axis! Nie można dodać ograniczenia długości osi! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Wybierz ze szkicu dokładnie jedną linię lub jeden punkt i jedną linię lub dwa punkty lub dwa okręgi. - + This constraint does not make sense for non-linear curves. Takie wiązanie nie ma sensu w przypadku krzywych nieliniowych. - + Endpoint to edge tangency was applied instead. Zamiast tego zastosowano styczność punktu końcowego do krawędzi. - - - - - - + + + + + + Select the right things from the sketch. Wybierz prawidłowe obiekty ze szkicu. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Wybierz krawędź, która nie jest wagą krzywej złożonej. @@ -2807,17 +2807,17 @@ nieprawidłowych wiązań, zdegenerowanej geometrii itp. Usunięto jeden lub dwa wiązania punktu na obiekcie, ponieważ ostatnie wiązanie zastosowane wewnętrznie dotyczy również punktu na obiekcie. - + Select either several points, or several conics for concentricity. Aby uzyskać wiązanie współśrodkowe, wybierz kilka punktów lub kilka stożków. - + Select either one point and several curves, or one curve and several points Wybierz jeden punkt i kilka krzywych lub jedną krzywą i kilka punktów - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Wybierz jeden punkt i kilka krzywych lub jedną krzywą i kilka punktów dla wiązania typu "punkt na obiekcie", @@ -2825,77 +2825,77 @@ lub kilka punktów dla wiązania typu "zbieżność", lub kilka stożków dla wiązania typu "współśrodkowość". - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Żaden z wybranych punktów nie został związany z odpowiednimi krzywymi, ponieważ są one częściami tego samego elementu, ponieważ są geometrią zewnętrzną lub ponieważ krawędź nie kwalifikuje się. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Żaden z wybranych punktów nie został związany na odpowiednich krzywych, albo są one częścią tego samego elementu albo obie są zewnętrzną geometrią. - + Cannot add a length constraint on this selection! Nie można dodać ograniczenia długości do wybranego obiektu! - - - - + + + + Select exactly one line or up to two points from the sketch. Wybierz dokładnie jedną linię lub do dwa punkty ze szkicu. - + Cannot add a horizontal length constraint on an axis! Nie można dodać ograniczenia długości osi w poziomie! - + Cannot add a fixed x-coordinate constraint on the origin point! Nie można dodać określonego wiązania współrzędnych x w punkcie odniesienia położenia! - - + + This constraint only makes sense on a line segment or a pair of points. Takie wiązanie ma sens tylko w przypadku odcinka lub pary punktów. - + Cannot add a vertical length constraint on an axis! Nie można dodać ograniczenia długości osi w pionie! - + Cannot add a fixed y-coordinate constraint on the origin point! Nie można dodać określonego wiązania współrzędnych y w punkcie odniesienia położenia! - + Select two or more lines from the sketch. Wybierz dwie lub więcej linii ze szkicu. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Jedna wybrana krawędź nie jest prawidłową linią. - - + + Select at least two lines from the sketch. Wybierz co najmniej dwie linie ze szkicu. - + The selected edge is not a valid line. Wybrana krawędź nie jest prawidłową linią. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2905,35 +2905,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywej; dwa punkty końcowe; dwie krzywe i punkt. - + Select some geometry from the sketch. perpendicular constraint Wybierz dowolną geometrię ze szkicu. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nie można dodać wiązania prostopadłości w niepołączonym punkcie! - - + + One of the selected edges should be a line. Jedna z zaznaczonych krawędzi powinna być linią. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Zastosowano styczność punktu końcowego do punktu końcowego. Wiązanie zbieżności zostało usunięte. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Zastosowano wiązanie styczności punktu końcowego do krawędzi. Usunięto wiązanie punktu na obiekcie. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2943,67 +2943,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcowe; dwie krzywe i punkt. - + Select some geometry from the sketch. tangent constraint Wybierz dowolną geometrię ze szkicu. - - - + + + Cannot add a tangency constraint at an unconnected point! Nie można dodać wiązanie styczności w niepołączonym punkcie! - - + + Tangent constraint at B-spline knot is only supported with lines! Wiązanie styczne w węźle krzywej złożonej jest obsługiwane tylko z liniami! - + B-spline knot to endpoint tangency was applied instead. Zamiast tego zastosowano styczność węzła krzywej złożonej do punktu końcowego. - - + + Wrong number of selected objects! Niewłaściwa liczba wybranych obiektów! - - + + With 3 objects, there must be 2 curves and 1 point. Z trzech (3) obiektów, dwa (2) muszą być krzywymi i jeden (1) musi być punktem. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Wybierz jeden lub więcej łuków lub okręgów ze szkicu. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Wybierz tylko jeden lub więcej biegunów krzywej złożonej, albo tylko jeden lub więcej łuków lub okręgów ze szkicu, ale nie ich kombinację. - - - + + + Constraint only applies to arcs or circles. Wiązanie dotyczy tylko łuków lub okręgów. - - + + Select one or two lines from the sketch. Or select two edges and a point. Zaznacz jedną lub dwie linie ze szkicu. Albo zaznacz dwie krawędzie oraz punkt. @@ -3018,88 +3018,88 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow Nie można zdefiniować wiązania kąta dla dwóch linii równoległych. - + Cannot add an angle constraint on an axis! Nie można dodać ustalonego wiązania kąta na osi! - + Select two edges from the sketch. Zaznacz dwie krawędzie ze szkicu. - + Select two or more compatible edges. Zaznacz dwie lub więcej zgodnych krawędzi. - + Sketch axes cannot be used in equality constraints. Osie szkiców nie mogą być używane z wiązaniami równości. - + Equality for B-spline edge currently unsupported. Równość pomiędzy krawędziami krzywej złożonej obecnie nie jest obsługiwana. - - - - + + + + Select two or more edges of similar type. Wybierz dwie lub więcej krawędzi podobnego typu. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Wybierz dwa punkty i linię symetrii, dwa punkty i punkt symetrii lub linię i punkt symetrii ze szkicu. - - + + Cannot add a symmetry constraint between a line and its end points. Nie można dodać wiązania symetrii między linią i jej punktami końcowymi. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Nie można dodać wiązania symetrii między linią i jego punktami końcowymi! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Wybierz dwa końce linii, które mają działać jak półproste, oraz krawędź reprezentującą granicę. Pierwszy wybrany punkt odpowiada indeksowi n1, drugi n2, a wartość odniesienia określa stosunek n2 / n1. - + Selected objects are not just geometry from one sketch. Wybrane obiekty są nie tylko geometrią z jednego szkicu. - + Cannot create constraint with external geometry only. Nie można tworzyć wiązań tylko przy użyciu geometrii zewnętrznej. - + Incompatible geometry is selected. Wybrano niekompatybilną geometrię. - - - - - + + + + + Select constraints from the sketch. Wybierz wiązania ze szkicu. @@ -3121,9 +3121,9 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow Zdefiniuj stopień krzywej złożonej między 1 a %1: + - CAD Kernel Error Błąd jądra CAD @@ -3266,14 +3266,14 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow Usunięcie wyrównania osi wymaga wybrania co najmniej jednego niezewnętrznego elementu geometrycznego - - + + Unsupported visual layer operation Nieobsługiwana operacja warstw wizualnych - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Obecnie nie jest obsługiwane przenoszenie geometrii zewnętrznej do innej warstwy wizualnej. Geometria zewnętrzna zostanie pominięta @@ -3345,7 +3345,7 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow Translate parameters - Translate parameters + Parametry przekształcenia @@ -3658,12 +3658,12 @@ Przytrzymaj Ctrl + Alt, aby to zignorować. Długość: - + Refractive index ratio Współczynnik załamania światła - + Ratio n2/n1: Stosunek n2/n1: @@ -3671,72 +3671,72 @@ Przytrzymaj Ctrl + Alt, aby to zignorować. SketcherGui::ElementFilterList - + Normal Normalny - + Construction Konstrukcyjny - + Internal Wewnętrzne - + External Zewnętrzne - + All types Wszystkie rodzaje - + Point Punkt - + Line Linia - + Circle Okrąg - + Ellipse Elipsa - + Arc of circle Łuk okręgu - + Arc of ellipse Łuk elipsy - + Arc of hyperbola Łuk hiperboli - + Arc of parabola Łuk paraboli - + B-Spline Krzywa złożona @@ -3859,27 +3859,27 @@ Przytrzymaj Ctrl + Alt, aby to zignorować. Wybierz oś pionową - + Layer Warstwa - + Layer 0 Warstwa 0 - + Layer 1 Warstwa 1 - + Hidden Ukryte - + Delete Usuń @@ -4083,7 +4083,7 @@ reflected on copies Number of sides: - Number of sides: + Liczba boków: @@ -4755,120 +4755,120 @@ Nie znaleziono jednak żadnych powiązań z punktami końcowymi. Ustawienia - - - - - - - - - - + + + + + + + + + + Construction - Konstrukcja + Konstrukcyjny - + Elements Elementy - - - - + + + + Point Punkt - - - - - - - - - - + + + + + + + + + + Internal Wewnętrzne - - - - + + + + Line Linia - - - - + + + + Arc Łuk - - - - + + + + Circle Okrąg - - - - + + + + Ellipse Elipsa - - - - + + + + Elliptical Arc Łuk eliptyczny - - - - + + + + Hyperbolic Arc Łuk hiperboliczny - - - - + + + + Parabolic Arc Łuk paraboliczny - - - - + + + + BSpline BSpline - - - - + + + + Other Inne - + Extended information Informacje rozszerzone @@ -5089,112 +5089,112 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. SketcherGui::ViewProviderSketch - + Edit sketch Edytuj szkic - + A dialog is already open in the task panel Okno dialogowe jest już otwarte w panelu zadań - + Do you want to close this dialog? Czy chcesz zamknąć to okno? - + Invalid sketch Nieprawidłowy szkic - + Do you want to open the sketch validation tool? Czy chcesz otworzyć narzędzie sprawdzania szkicu? - + The sketch is invalid and cannot be edited. Szkic jest nieprawidłowy i nie może być edytowany. - + Please remove the following constraint: Usuń następujące wiązania: - + Please remove at least one of the following constraints: Usuń co najmniej jedno z następujących wiązań: - + Please remove the following redundant constraint: Usuń następujący zbędny wiąz: - + Please remove the following redundant constraints: Usuń następujące, nadmiarowe wiązania: - + The following constraint is partially redundant: Następujące wiązanie jest częściowo zbędne: - + The following constraints are partially redundant: Następujące wiązania są częściowo zbędne: - + Please remove the following malformed constraint: Proszę usunąć następujące błędnie sformułowane wiązanie: - + Please remove the following malformed constraints: Proszę usunąć następujące błędnie sformułowane wiązania: - + Empty sketch Pusty szkic - + Over-constrained: Wiązania nadmierne: - + Malformed constraints: Zniekształcone wiązania: - + Redundant constraints: Wiązania nadmiarowe: - + Partially redundant: Częściowo nadmiarowe: - + Solver failed to converge Solver nie osiągnął zbieżności - + Under constrained: Niezwiązany: - + %n DoF(s) %n stopień swobody @@ -5204,7 +5204,7 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. - + Fully constrained W pełni związany @@ -5302,8 +5302,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Ustal średnicę okręgu lub łuku @@ -5311,8 +5311,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Określ promień / średnicę okręgu lub łuku @@ -5320,8 +5320,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Ustalenie promienia okręgu lub łuku @@ -5335,70 +5335,25 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Tworzy prostą kopię geometrii przyjmującej jako odniesienie ostatni wybrany punkt - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Utwórz łuk z punktów końcowych i punkt na łuku - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Tworzy koło w oparciu o 3 punkty na obręczy - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Utwórz łuk ze środka i punktów końcowych - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Utwórz łuk elipsy, wskazując środek, promień główny i punkty końcowe - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Utwórz łuk hiperboli wskazując środek, główny promień i punkty końcowe - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Utwórz łuk paraboli wskazując punkt centralny, wierzchołek i punkty końcowe - - Sketcher_CreateBSpline - + B-spline by control points Krzywa złożona przez punkty kontrolne - - + + Create a B-spline by control points Utwórz krzywą złożoną za pomocą punktów kontrolnych @@ -5406,35 +5361,17 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Tworzy koło za pomocą jego środka i punku na obręczy - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Elipsę przez periapsis, apoapsis i mniejszy promień - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Elipsę przez środek, główny promień i punkt - - Sketcher_CreateFillet - - + + Creates a radius between two lines Utwórz łuk pomiędzy dwiema liniami @@ -5442,8 +5379,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Stwórz siedmiokąt przez jego środek i przez jeden narożnik @@ -5451,8 +5388,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Utwórz sześciokąt, przez środek i jeden z rogów @@ -5468,14 +5405,14 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Utwórz ośmiokąt, przez środek i jeden z rogów + - Create a regular polygon by its center and by one corner Utwórz regularny wielokąt przez podanie punktu środka i jednego narożnika @@ -5483,8 +5420,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Utwórz pięciokąt przez środek i jeden z rogów @@ -5492,8 +5429,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Zaokrąglenie zachowujące wiązania i punkt przecięcia @@ -5517,8 +5454,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreateSquare + - Create a square by its center and by one corner Utwórz kwadrat przez środek i jeden z rogów @@ -5526,8 +5463,8 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Utwórz trójkąt równoboczny przez jego środek i przez jeden narożnik @@ -5535,13 +5472,13 @@ Odbywa się to przez analizę geometrii szkicu i wiązań. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Okresowa krzywa złożona przez punkty kontrolne + - Create a periodic B-spline by control points Utwórz okresową krzywą złożoną za pomocą punktów kontrolnych @@ -5942,7 +5879,7 @@ Eigen Sparse QR, algorytm jest zoptymalizowany dla macierzy rzadkich, zwykle szy ViewProviderSketch - + and %1 more i %1 więcej @@ -6165,45 +6102,45 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Szkic zawiera częściowo zbędne wiązania! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabole zostały poddane migracji. Pliki po imporcie nie otworzą się w poprzednich wersjach programu FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Błąd @@ -6239,16 +6176,16 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Ograniczenie ma nieprawidłowe informacje o indeksie i jest zniekształcone. + + + - - - - - + + Invalid Constraint @@ -6265,12 +6202,12 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Nie udało się dodać łuku elipsy - + Cannot create arc of hyperbola from invalid angles, try again! Nie można utworzyć łuku hiperboli z nieprawidłowych kątów, spróbuj ponownie! - + Cannot create arc of hyperbola Nie można utworzyć łuku hiperboli @@ -6290,8 +6227,8 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Błąd podczas tworzenia bieguna krzywej złożonej - + Error creating B-spline Błąd podczas tworzenia krzywej złożonej @@ -6347,17 +6284,17 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Nie udało się dodać linii - - - - - - - + + + + + + + Tool execution aborted Wykonanie operacji zostało przerwane @@ -6392,9 +6329,9 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Nie udało się przyciąć krawędzi - + Value Error Błąd wartości @@ -6451,19 +6388,19 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Failed to translate - Failed to translate + Przekształcenie nie powiodło się Sketcher_CreateBSplineByInterpolation - + B-spline by knots Krzywa złożona przez węzły - - + + Create a B-spline by knots Utwórz krzywą złożoną przez węzły @@ -6471,13 +6408,13 @@ Rozstaw siatki zmienia się, jeśli staje się mniejszy niż określona liczba p Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Okresowa krzywa złożona przez węzły + - Create a periodic B-spline by knots Utwórz okresową krzywą złożoną przez węzły @@ -6584,12 +6521,12 @@ Przytrzymaj CTRL, aby włączyć "Przyciąganie pod kątem". Kąt zaczyna się o CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Utwórz krzywą złożoną przez węzły - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Tworzy krzywą złożoną przez węzły, tzn. interpolację na rysunku. @@ -6597,12 +6534,12 @@ Przytrzymaj CTRL, aby włączyć "Przyciąganie pod kątem". Kąt zaczyna się o CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Utwórz okresową krzywą złożoną przez węzły - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Utwórz okresową krzywą złożoną przez węzły, tzn. interpolację na rysunku. @@ -6610,12 +6547,12 @@ Przytrzymaj CTRL, aby włączyć "Przyciąganie pod kątem". Kąt zaczyna się o CmdSketcherDimension - + Dimension Wiązanie odległości - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6654,12 +6591,12 @@ Kliknięcie prawym przyciskiem myszy lub naciśnięcie Esc spowoduje anulowanie. CmdSketcherConstrainRadius - + Constrain radius Wiązanie promienia - + Fix the radius of a circle or an arc Ustalenie promienia okręgu lub łuku @@ -6837,8 +6774,8 @@ W przeciwnym razie spróbuje zastąpić je równościami. - Create two rectangles, one in the other with a constant thickness. - Tworzy dwa prostokąty, jeden w drugim, o stałej odległości. + Create two rectangles with a constant offset. + Utwórz dwa prostokąty o stałym odsunięciu. @@ -6852,12 +6789,12 @@ W przeciwnym razie spróbuje zastąpić je równościami. CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Wiązanie poziomo / pionowo - + Constrains a single line to either horizontal or vertical. Wiąże pojedynczą linię do poziomu lub pionu. @@ -6865,12 +6802,12 @@ W przeciwnym razie spróbuje zastąpić je równościami. CmdSketcherConstrainHorVer - + Horizontal/Vertical Wiązanie poziomo / pionowo - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Wiąże pojedynczą linię do poziomu lub pionu, w zależności od tego, co jest bliższe bieżącemu wyrównaniu. @@ -6878,12 +6815,12 @@ W przeciwnym razie spróbuje zastąpić je równościami. CmdSketcherCompCurveEdition - + Curve Edition Edycja krzywej - + Curve Edition tools. Narzędzia do edycji krzywych @@ -6891,12 +6828,12 @@ W przeciwnym razie spróbuje zastąpić je równościami. CmdSketcherCompSlot - + Slots Szczeliny - + Slot tools. Narzędzia do szczelin. @@ -6904,12 +6841,12 @@ W przeciwnym razie spróbuje zastąpić je równościami. CmdSketcherCreateArcSlot - + Create arc slot Utwórz szczelinę łukową - + Create an arc slot in the sketch Tworzy szczelinę łukową w szkicu @@ -6917,12 +6854,12 @@ W przeciwnym razie spróbuje zastąpić je równościami. CmdSketcherConstrainCoincidentUnified - + Constrain coincident Wiązanie zbieżności - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Utwórz wiązanie zbieżności między punktami, ustal punkt na krawędzi lub wiązanie koncentryczne między okręgami, łukami i elipsami. @@ -7306,12 +7243,12 @@ W przeciwnym razie spróbuje zastąpić je równościami. Array transform - Array transform + Przekształcanie szyku Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Przekształć wybrane geometrie. Włącz tworzenie i * j kopii. @@ -7324,7 +7261,10 @@ W przeciwnym razie spróbuje zastąpić je równościami. This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. - This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. + Dotyczy to wiązań układu odniesienia, takich jak odległości. +Jeśli aktywujesz funkcję Klonuj, narzędzie skopiuje punkt odniesienia. +W przeciwnym razie spróbuje zastąpić je równościami między +początkowymi geometriami i nowymi kopiami. @@ -7332,7 +7272,7 @@ W przeciwnym razie spróbuje zastąpić je równościami. Copies (+'U'/-'J') - Copies (+'U'/-'J') + Kopiuj (+ U / - J) @@ -7340,7 +7280,70 @@ W przeciwnym razie spróbuje zastąpić je równościami. Rows (+'R'/-'F') - Rows (+'R'/-'F') + Wiersze (+ R / - F) + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Utwórz łuk ze środka i punktów końcowych + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Utwórz łuk z punktów końcowych i punkt na łuku + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Utwórz elipsę przez jej środek, jeden z jej promieni i punkt na obwodzie + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Utwórz elipsę przez punkty końcowe jednej z jej osi i punkt na obwodzie + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Utwórz łuk elipsy, wskazując środek, jeden z promieni i punkty końcowe + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Utwórz łuk hiperboli, wskazując punkt centralny, wierzchołek i punkty końcowe + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Utwórz łuk paraboli wskazując punkt centralny, wierzchołek i punkty końcowe diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.ts index 08250b67ef..cc53cafd0f 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Restringir arco ou círculo - + Constrain an arc or a circle Restringir um arco ou um círculo - + Constrain radius Restrição de raio - + Constrain diameter Restringir o diâmetro - + Constrain auto radius/diameter Restringir raio/diâmetro automáticos @@ -180,24 +180,24 @@ - Center and end points - Pontos de centro e extremidades + Center and endpoints + Center and endpoints - - End points and rim point - Pontos de extremidade e ponto de borda + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Criar B-spline - + Create a B-spline in the sketch Criar uma B-spline no esboço @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Criar círculo - + Create a circle in the sketcher Criar um círculo no esboço - + Center and rim point Ponto de centro e borda - + 3 rim points 3 pontos de borda @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Criar uma cônica no esboço - - Ellipse by center, major radius, point - Elipse pelo centro, raio maior, ponto + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Elipse pelo periélio, apoapsis, menor raio + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arco de elipse pelo centro, raio principal, pontos de extremidade + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arco de hipérbole pelo centro, raio maior, pontos de extremidade + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Arco da parábola por foco, vértice, pontos de extremidade @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Criar filete - + Create a fillet between two lines Crie um filete entre duas linhas - + Sketch fillet Filete de esboço - - Constraint-preserving sketch fillet - Filete de esboço com preservação de restrições + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Criar polígono regular - + Create a regular polygon in the sketcher Criar um polígono regular no esboço - + Triangle Triângulo - + Square Quadrado - + Pentagon Pentágono - + Hexagon Hexágono - + Heptagon Heptágono - + Octagon Octógono - + Regular polygon Polígono regular @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Ângulo de restrição - + Fix the angle of a line or the angle between two lines Fixar o ângulo de uma linha ou o ângulo entre duas linhas @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Restrição de bloqueio - + Block the selected edge from moving Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Restrição de coincidência - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Restringir o diâmetro - + Fix the diameter of a circle or an arc Corrigir o diâmetro de um círculo ou arco @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Restrição de distância - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Restrição de distância horizontal - + Fix the horizontal distance between two points or line ends Fixar a distância horizontal entre dois pontos ou extremidades de linha @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Restringir a distância vertical - + Fix the vertical distance between two points or line ends Fixar a distância vertical entre dois pontos ou extremidades de linha @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Restrição igual - + Create an equality constraint between two lines or between circles and arcs Criar uma restrição de igualdade entre duas linhas ou círculos e arcos @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Restringir horizontalmente - + Create a horizontal constraint on the selected item Criar uma restrição horizontal sobre o item selecionado @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Restrição de bloqueio - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Restrição paralela - + Create a parallel constraint between two lines Criar uma restrição paralela entre duas linhas @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Restrição perpendicular - + Create a perpendicular constraint between two lines Criar uma restrição perpendicular entre duas linhas @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Restringir um ponto sobre um objeto - + Fix a point onto an object Fixar um ponto sobre um objeto @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Restringir raio/diâmetro automáticos - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Restrição simétrica - + Create a symmetry constraint between two points with respect to a line or a third point Criar uma restrição de simetria entre dois pontos @@ -602,12 +602,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherConstrainTangent - + Constrain tangent Restrição tangente - + Create a tangent constraint between two entities Criar uma restrição tangente entre duas entidades @@ -615,12 +615,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherConstrainVertical - + Constrain vertically Restringir verticalmente - + Create a vertical constraint on the selected item Criar uma restrição vertical sobre o item selecionado @@ -667,12 +667,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreate3PointCircle - + Create circle by three points Criar um círculo a partir de três pontos - + Create a circle by 3 perimeter points Criar um círculo a partir de 3 pontos do perímetro @@ -693,12 +693,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Criar um arco de elipse no esboço @@ -706,12 +706,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Cria um arco de hipérbole no esboço @@ -719,12 +719,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Criar um arco de parábola no Esboço @@ -732,12 +732,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateBSpline - + Create B-spline Criar B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateCircle - + Create circle Criar círculo - + Create a circle in the sketch Criar um círculo no esboço @@ -758,12 +758,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Criar elipse por 3 pontos - + Create an ellipse by 3 points in the sketch Criar uma elipse por 3 pontos no esboço @@ -771,12 +771,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateEllipseByCenter - + Create ellipse by center Criar elipse pelo centro - + Create an ellipse by center in the sketch Criar uma elipse pelo centro no esboço @@ -784,12 +784,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateFillet - + Create fillet Criar filete - + Create a fillet between two lines or at a coincident point Criar um arredondamento entre duas linhas ou em um ponto de coincidência @@ -797,12 +797,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateHeptagon - + Create heptagon Criar heptágono - + Create a heptagon in the sketch Criar um heptágono no esboço @@ -810,12 +810,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateHexagon - + Create hexagon Criar hexágono - + Create a hexagon in the sketch Criar um hexágono no esboço @@ -849,12 +849,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateOctagon - + Create octagon Criar octógono - + Create an octagon in the sketch Criar um octógono no esboço @@ -862,12 +862,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreatePentagon - + Create pentagon Criar pentágono - + Create a pentagon in the sketch Criar um pentágono no esboço @@ -875,12 +875,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Criar B-spline periódica - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreatePoint - + Create point Criar ponto - + Create a point in the sketch Criar um ponto no esboço @@ -901,12 +901,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreatePointFillet - + Create corner-preserving fillet Criar filete de preservação de canto - + Fillet that preserves intersection point and most constraints Filete que preserva o ponto de interseção e a maioria das restrições @@ -953,12 +953,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateRegularPolygon - + Create regular polygon Criar polígono regular - + Create a regular polygon in the sketch Criar um polígono regular no esboço @@ -966,12 +966,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateSlot - + Create slot Criar uma fresta - + Create a slot in the sketch Criar uma fresta no esboço @@ -979,12 +979,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateSquare - + Create square Criar quadrado - + Create a square in the sketch Criar um quadrado no esboço @@ -992,12 +992,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherCreateTriangle - + Create equilateral triangle Criar triângulo equilátero - + Create an equilateral triangle in the sketch Criar um triângulo equilátero no esboço @@ -1070,12 +1070,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherExtend - + Extend edge Prolongar aresta - + Extend an edge with respect to the picked position Estende uma aresta em relação à posição escolhida @@ -1083,12 +1083,12 @@ em relação a uma linha ou um terceiro ponto CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Criar uma aresta ligada a uma geometria externa @@ -1427,12 +1427,12 @@ Isto irá limpar a propriedade 'Suporte', se houver. CmdSketcherSplit - + Split edge Dividir aresta - + Splits an edge into two while preserving constraints Divide uma aresta em duas preservando as restrições @@ -1479,12 +1479,12 @@ Isto irá limpar a propriedade 'Suporte', se houver. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Ativar/desativar restrição - + Activates or deactivates the selected constraints Ativa ou desativa as restrições selecionadas @@ -1505,12 +1505,12 @@ Isto irá limpar a propriedade 'Suporte', se houver. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Ativar/desativar restrição atuante ou de referência - + Set the toolbar, or the selected constraints, into driving or reference mode Colocar a barra de ferramentas, ou as restrições selecionadas, @@ -1520,12 +1520,12 @@ no modo atuante ou de referência CmdSketcherTrimming - + Trim edge Recortar aresta - + Trim an edge with respect to the picked position Aparar uma aresta em relação a posição escolhida @@ -1584,79 +1584,79 @@ restrições inválidas, geometria corrompida, etc. Command - + Add 'Lock' constraint Adicionar restrição 'Travar' - + Add relative 'Lock' constraint Adicionar restrição 'Travar' relativa - + Add fixed constraint Adicionar restrição fixa - + Add 'Block' constraint Adicionar restrição 'Bloquear' - + Add block constraint Adicionar restrição 'Bloquear' - - + + Add coincident constraint Adicionar restrição coincidente - - + + Add distance from horizontal axis constraint Adiciona restrição na distância ao eixo horizontal - - + + Add distance from vertical axis constraint Adiciona restrição na distância ao eixo vertical - - + + Add point to point distance constraint Adiciona restrição na distância ponto a ponto - - + + Add point to line Distance constraint Adicionar restrição na distância entre ponto e linha - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Adiciona restrição de comprimento @@ -1679,8 +1679,8 @@ restrições inválidas, geometria corrompida, etc. - - + + Add Distance constraint Add Distance constraint @@ -1706,7 +1706,7 @@ restrições inválidas, geometria corrompida, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1717,220 +1717,220 @@ restrições inválidas, geometria corrompida, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Adiciona restrição tipo 'ponto-no-objeto' - - + + Add point to point horizontal distance constraint Adicionar restrição de distância horizontal ponto a ponto - + Add fixed x-coordinate constraint Adiciona restrição de coordenada x fixa - - + + Add point to point vertical distance constraint Adiciona restrição de distância vertical ponto a ponto - + Add fixed y-coordinate constraint Adiciona restrição de coordenada y fixa - - + + Add parallel constraint Adiciona restrição paralela - - - - - - - + + + + + + + Add perpendicular constraint Adiciona restrição perpendicular - + Add perpendicularity constraint Adicionar restrição de perpendicularidade - + Swap coincident+tangency with ptp tangency Trocar coincidência+tangência por tangência ponto-a-ponto - + Swap PointOnObject+tangency with point to curve tangency Trocar PointOnObject+tangência por tangência de ponto para curva - - - - - - - + + + + + + + Add tangent constraint Adiciona restrição tangente - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Adiciona ponto de tangência - - - - + + + + Add radius constraint Adicionar restrição de raio - - - - + + + + Add diameter constraint Adicionar restrição de diâmetro - - - - + + + + Add radiam constraint Adicionar restrição de raio - - - - + + + + Add angle constraint Adicionar restrição de ângulo - - + + Add equality constraint Adicionar restrição de igualdade - - - - - + + + + + Add symmetric constraint Adicionar restrição simétrica - + Add Snell's law constraint Adicionar restrição lei de Snell - + Toggle constraint to driving/reference Alternar o tipo da restrição entre motriz ou referência - + Activate/Deactivate constraint Ativar/desativar restrição @@ -2015,7 +2015,7 @@ restrições inválidas, geometria corrompida, etc. Adicionar esboço de arco de elipse - + Add sketch arc of hyperbola Adicionar esboço de arco de hipérbole @@ -2159,8 +2159,8 @@ restrições inválidas, geometria corrompida, etc. Atualizar espaço virtual das restrições - + Add auto constraints Adicionar restrições automáticas @@ -2185,12 +2185,12 @@ restrições inválidas, geometria corrompida, etc. Arrastar Curva - + Drag Constraint Restrição de arrasto - + Modify sketch constraints Modificar restrições do esboço @@ -2281,59 +2281,59 @@ restrições inválidas, geometria corrompida, etc. Erro de restrição automática: esboço insolúvel após a aplicação de restrições de igualdade. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Não é possível adivinhar a intersecção das curvas. Tente adicionar uma restrição coincidente entre os vértices das curvas que você pretende filetar. - - + + BSpline Geometry Index (GeoID) is out of bounds. Índice de geometria BSpline (GeoID) está fora dos limites. - + You are requesting no change in knot multiplicity. Você não solicitou nenhuma mudança de multiplicidade em nós. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. O índice de geometria (GeoId) fornecida não é uma curva B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. O índice do nó está fora dos limites. Note que, de acordo com a notação do OCC, o primeiro nó tem índice 1 e não zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. A multiplicidade não pode ser aumentada além do grau de B-spline. - + The multiplicity cannot be decreased beyond zero. A multiplicidade não pode ser diminuída abaixo de zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. O OCC não consegue diminuir a multiplicidade dentro de tolerância máxima. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2413,127 +2413,11 @@ restrições inválidas, geometria corrompida, etc. Não anexar + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ restrições inválidas, geometria corrompida, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ restrições inválidas, geometria corrompida, etc. - - - Wrong selection Seleção errada @@ -2615,106 +2615,106 @@ restrições inválidas, geometria corrompida, etc. One of the selected has to be on the sketch. - + Select an edge from the sketch. Selecione uma aresta do esboço. - - - - - - + + + + + + Impossible constraint Restrição impossível - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Restrição dupla - + The selected edge already has a horizontal constraint! A aresta selecionada já tem uma restrição horizontal! - + The selected edge already has a vertical constraint! A aresta selecionada já tem uma restrição vertical! - - - + + + The selected edge already has a Block constraint! A aresta selecionada já possui uma restrição de Bloqueio! - + There are more than one fixed points selected. Select a maximum of one fixed point! Há mais de um ponto fixo selecionado. Selecione no máximo um ponto fixo! - - - + + + Select vertices from the sketch. Selecione vértices do esboço. - + Select one vertex from the sketch other than the origin. Selecione um vértice do esboço que não seja a origem. - + Select only vertices from the sketch. The last selected vertex may be the origin. Selecione somente os vértices do esboço. O último vértice selecionado pode ser a origem. - + Wrong solver status Erro no status do calculador - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Uma restrição de bloqueio não pode ser adicionada se o esboço não estiver resolvido ou se existirem restrições redundantes e/ou conflitantes. - + Select one edge from the sketch. Selecione uma aresta do esboço. - + Select only edges from the sketch. Selecione somente arestas do esboço. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Erro @@ -2724,80 +2724,80 @@ restrições inválidas, geometria corrompida, etc. Erro inesperado. Mais informações podem estar disponíveis na visualização do relatório. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Uma tangência de ponto a ponto de extremidade foi aplicado em vez disso. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Selecione exatamente uma linha ou um ponto e uma linha ou dois pontos no esboço. - + Cannot add a length constraint on an axis! Não é possível adicionar uma restrição de comprimento em um eixo! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Uma tangência de ponto de extremidade a aresta foi aplicada em vez disso. - - - - - - + + + + + + Select the right things from the sketch. Selecione as coisas corretas no esboço. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2807,92 +2807,92 @@ restrições inválidas, geometria corrompida, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Nenhum dos pontos selecionados foi restrito sobre as respectivas curvas, porque elas são partes do mesmo elemento, porque são ambos geometria externa, ou porque a aresta não é elegível. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Nenhum dos pontos selecionados foi restringido para as respectivas curvas, eles são partes do mesmo elemento, ou ambos são geometria externa. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Selecione exatamente uma linha ou até dois pontos no esboço. - + Cannot add a horizontal length constraint on an axis! Não é possível adicionar uma restrição de comprimento horizontal em um eixo! - + Cannot add a fixed x-coordinate constraint on the origin point! Não é possível adicionar uma restrição de coordenada-x fixa no ponto de origem! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Não é possível adicionar uma restrição de comprimento vertical em um eixo! - + Cannot add a fixed y-coordinate constraint on the origin point! Não é possível adicionar uma restrição de coordenada-y fixa no ponto de origem! - + Select two or more lines from the sketch. Selecione duas ou mais linhas no esboço. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Selecione pelo menos duas linhas no esboço. - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2902,35 +2902,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois pontos de extremidade; duas curvas e um ponto. - + Select some geometry from the sketch. perpendicular constraint Selecione alguma geometria do esboço. - - + + Cannot add a perpendicularity constraint at an unconnected point! Não é possível adicionar uma restrição de perpendicularidade em um ponto não conectado! - - + + One of the selected edges should be a line. Uma das arestas selecionadas deve ser uma linha. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Uma tangência de ponto a ponto foi aplicada. A restrição de coincidência foi excluída. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Uma tangência de ponto de extremidade a aresta foi aplicada. A restrição de ponto no objeto foi excluída. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2940,67 +2940,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois pontos de extremidade; duas curvas e um ponto. - + Select some geometry from the sketch. tangent constraint Selecione alguma geometria do esboço. - - - + + + Cannot add a tangency constraint at an unconnected point! Não é possível adicionar uma restrição de tangência em um ponto não conectado! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Número errado de objetos selecionados! - - + + With 3 objects, there must be 2 curves and 1 point. Com 3 objetos, deve haver 2 curvas e 1 ponto. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Selecione um ou mais arcos ou círculos no esboço. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Selecione somente um ou mais polos B-Spline ou apenas um ou mais arcos ou círculos do esboço, mas não misturados. - - - + + + Constraint only applies to arcs or circles. Restrição aplicável somente em arcos ou círculos. - - + + Select one or two lines from the sketch. Or select two edges and a point. Selecione uma ou duas linhas no esboço. Ou selecione um ponto e duas arestas. @@ -3015,88 +3015,88 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Uma restrição de ângulo não pode ser aplicada em duas linhas paralelas. - + Cannot add an angle constraint on an axis! Não é possível adicionar uma restrição de ângulo em um eixo! - + Select two edges from the sketch. Selecione duas arestas no esboço. - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. Igualdade para aresta de Bspline ainda não está suportada. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Selecione dois pontos e uma linha de simetria, dois pontos e um ponto de simetria ou uma linha e um ponto de simetria no esboço. - - + + Cannot add a symmetry constraint between a line and its end points. Não é possível adicionar uma restrição de simetria entre uma linha e seus pontos finais. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Não é possível adicionar uma restrição de simetria entre uma linha e seus pontos finais! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Selecione dois pontos finais de linhas para agir como raios e uma aresta que representa um limite. O primeiro ponto selecionado corresponde ao índice n1, o segundo ao n2, e o valor de datum define a proporção n2/n1. - + Selected objects are not just geometry from one sketch. Objetos selecionados não são apenas geometria de um esboço só. - + Cannot create constraint with external geometry only. Não é possível criar restrições somente com geometria externa. - + Incompatible geometry is selected. Geometria incompatível selecionada. - - - - - + + + + + Select constraints from the sketch. Selecione restrições do esboço. @@ -3118,9 +3118,9 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error Erro de Kernel CAD @@ -3263,14 +3263,14 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois A remoção do alinhamento dos eixos requer, pelo menos, um elemento geométrico não externo selecionado - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3654,12 +3654,12 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Comprimento: - + Refractive index ratio Relação de índice de refração - + Ratio n2/n1: Relação n2/n1: @@ -3667,72 +3667,72 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois SketcherGui::ElementFilterList - + Normal Normal - + Construction Construção - + Internal Internal - + External Externo - + All types All types - + Point Ponto - + Line Linha - + Circle Círculo - + Ellipse Elipse - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3855,27 +3855,27 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Select Vertical Axis - + Layer Camada - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Oculto - + Delete Excluir @@ -4751,120 +4751,120 @@ No entanto, nenhuma restrição foi encontrada nos pontos de extremidade.Configurações - - - - - - - - - - + + + + + + + + + + Construction Construção - + Elements Elementos - - - - + + + + Point Ponto - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Linha - - - - + + + + Arc Arco - - - - + + + + Circle Círculo - - - - + + + + Ellipse Elipse - - - - + + + + Elliptical Arc Arco elíptico - - - - + + + + Hyperbolic Arc Arco hiperbólico - - - - + + + + Parabolic Arc Arco parabólico - - - - + + + + BSpline BSpline - - - - + + + + Other Outro - + Extended information Informação adicional @@ -5085,112 +5085,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Editar esboço - + A dialog is already open in the task panel Uma caixa de diálogo já está aberta no painel de tarefas - + Do you want to close this dialog? Deseja fechar este diálogo? - + Invalid sketch Esboço inválido - + Do you want to open the sketch validation tool? Você quer abrir a ferramenta de validação de esboço? - + The sketch is invalid and cannot be edited. O esboço é inválido e não pode ser editado. - + Please remove the following constraint: Por favor, remova a seguinte restrição: - + Please remove at least one of the following constraints: Por favor remova pelo menos uma das seguintes restrições: - + Please remove the following redundant constraint: Por favor, remova a seguinte restrição redundante: - + Please remove the following redundant constraints: Por favor, remova as seguintes restrições redundantes: - + The following constraint is partially redundant: A restrição seguinte é parcialmente redundante: - + The following constraints are partially redundant: As restrições seguintes são parcialmente redundantes: - + Please remove the following malformed constraint: Por favor remova as seguintes restrições malformadas: - + Please remove the following malformed constraints: Por favor remova as seguintes restrições malformadas: - + Empty sketch Esboço vazio - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) @@ -5198,7 +5198,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fully constrained @@ -5296,8 +5296,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Corrigir o diâmetro de um círculo ou arco @@ -5305,8 +5305,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Corrigir o raio / diâmetro de um círculo ou um arco @@ -5314,8 +5314,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixar o raio de um círculo ou um arco @@ -5329,70 +5329,25 @@ This is done by analyzing the sketch geometries and constraints. Cria uma cópia simples da geometria tomando como referência o último ponto selecionado - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Criar um arco a partir de seus pontos de extremidade e um ponto ao longo do arco - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Criar um círculo a partir de 3 pontos de borda - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Criar um arco a partir do seu centro e por seus pontos de extremidade - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Criar um arco de elipse pelo centro, raio principal e pontos de extremidade - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Criar um arco de hipérbole pelo centro, raio principal e pontos de extremidade - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Criar um arco de parábola pelo foco, vértice e pontos de extremidade - - Sketcher_CreateBSpline - + B-spline by control points B-spline por pontos de controle - - + + Create a B-spline by control points Criar uma B-spline por pontos de controle @@ -5400,35 +5355,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Criar um círculo a partir do seu centro e por um ponto de borda - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Criar uma elipse por periapsis apoapsis e menor raio - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Criar uma elipse pelo centro, raio maior e ponto - - Sketcher_CreateFillet - - + + Creates a radius between two lines Cria um raio entre duas linhas @@ -5436,8 +5373,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Criar um heptágono pelo seu centro e por um canto @@ -5445,8 +5382,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Criar um hexágono por seu centro e um canto @@ -5462,14 +5399,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Criar um octógono pelo seu centro e por um canto + - Create a regular polygon by its center and by one corner Criar um polígono regular pelo seu centro e por um vértice @@ -5477,8 +5414,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Criar um pentágono pelo seu centro e por um canto @@ -5486,8 +5423,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Filete que preserva restrições e ponto de interseção @@ -5511,8 +5448,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Criar um quadrado pelo seu centro e por um canto @@ -5520,8 +5457,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Criar um triângulo equilátero, pelo seu centro e por um canto @@ -5529,13 +5466,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periódica por pontos de controle + - Create a periodic B-spline by control points Criar uma B-spline periódica por pontos de controle @@ -5934,7 +5871,7 @@ o algorítimo Eigen Sparse QR é otimizado para matrizes escassas; geralmente é ViewProviderSketch - + and %1 more and %1 more @@ -6157,46 +6094,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Erro @@ -6232,16 +6169,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6258,12 +6195,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6283,8 +6220,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6340,17 +6277,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Falha ao adicionar linha - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6385,9 +6322,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Falha ao aparar aresta - + Value Error Erro de Valor @@ -6450,13 +6387,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6464,13 +6401,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6576,12 +6513,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6589,12 +6526,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6602,12 +6539,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Dimensão - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6645,12 +6582,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Restrição de raio - + Fix the radius of a circle or an arc Fixar o raio de um círculo ou um arco @@ -6825,8 +6762,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6840,12 +6777,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6853,12 +6790,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6866,12 +6803,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6879,12 +6816,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6892,12 +6829,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6905,12 +6842,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Restrição de coincidência - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7331,4 +7268,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.ts index 11274b2b3a..94b4e8e69a 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Restringir o arco ou círculo - + Constrain an arc or a circle Restringir um arco ou um círculo - + Constrain radius Restringir o raio - + Constrain diameter Restringir o diâmetro - + Constrain auto radius/diameter Restringir raio/diâmetro automático @@ -180,24 +180,24 @@ - Center and end points - Pontos central e final + Center and endpoints + Center and endpoints - - End points and rim point - Pontos de extremidade e ponto de borda + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Criar B-spline - + Create a B-spline in the sketch Criar uma B-spline no esboço @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Criar Círculo - + Create a circle in the sketcher Criar um círculo na bancada esboço sketcher - + Center and rim point Ponto do centro e borda - + 3 rim points 3 pontos na circunferência @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Criar uma curva cónica no esboço - - Ellipse by center, major radius, point - Elipse pelo centro, raio maior, ponto + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arco da elipse pelo centro, raio maior, extremidades + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arco de hipérbole pelo centro, raio maior, pontos de extremidade + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Arco da parábola por foco, vértice, pontos de extremidade @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Criar Boleado (fillet) - + Create a fillet between two lines Criar um boleado entre duas linhas - + Sketch fillet Sketch fillet - - Constraint-preserving sketch fillet - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Criar polígono regular - + Create a regular polygon in the sketcher Criar um polígono regular na bancada esboço (sketcher) - + Triangle Triângulo - + Square Quadrado - + Pentagon Pentágono - + Hexagon Hexágono - + Heptagon Heptágono - + Octagon Octógono - + Regular polygon Polígono regular @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Restringir o ângulo - + Fix the angle of a line or the angle between two lines Corrigir o ângulo de uma linha ou o ângulo entre duas linhas @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Constrain block - + Block the selected edge from moving Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Restringir coincidentes - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Restringir o diâmetro - + Fix the diameter of a circle or an arc Fixar o diâmetro de um círculo ou arco @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Restringir distância - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Corrigir a distância horizontal entre dois pontos ou extremidades de linha @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Corrigir a distância vertical entre dois pontos ou extremidades de linha @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Restringir igualdade - + Create an equality constraint between two lines or between circles and arcs Criar uma restrição de igualdade entre duas linhas ou entre círculos e arcos @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Restringir horizontalmente - + Create a horizontal constraint on the selected item Criar uma restrição horizontal no item selecionado @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Restrição de bloqueio - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Restringir paralelo - + Create a parallel constraint between two lines Criar uma restrição paralela entre duas linhas @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Restringir perpendicular - + Create a perpendicular constraint between two lines Criar uma restrição perpendicular entre duas linhas @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Restringir um ponto sobre um objeto - + Fix a point onto an object Fixar um ponto num objeto @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Restringir raio/diâmetro automático - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Restringir refração (lei de Snell) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Restringir simetria - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -602,12 +602,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Restringir a tangente - + Create a tangent constraint between two entities Criar uma restrição de tangência entre duas entidades @@ -615,12 +615,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Restringir verticalmente - + Create a vertical constraint on the selected item Criar uma restrição vertical no item selecionado @@ -667,12 +667,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Criar um círculo baseado em três pontos - + Create a circle by 3 perimeter points Criar um arco baseado em três pontos do perímetro @@ -693,12 +693,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Criar um arco de elipse no esboço @@ -706,12 +706,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Criar um arco de hipérbole no esboço @@ -719,12 +719,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Criar um arco de parábola no Esboço @@ -732,12 +732,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Criar B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Criar Círculo - + Create a circle in the sketch Criar um círculo no esboço @@ -758,12 +758,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Criar elipse com 3 pontos - + Create an ellipse by 3 points in the sketch Criar uma elipse com 3 pontos no esboço @@ -771,12 +771,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Criar elipse pelo centro - + Create an ellipse by center in the sketch Criar uma elipse pelo centro no esboço @@ -784,12 +784,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Criar Boleado (fillet) - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Criar heptágono - + Create a heptagon in the sketch Criar um heptágono no esboço @@ -810,12 +810,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Criar hexágono - + Create a hexagon in the sketch Criar um hexágono no esboço @@ -849,12 +849,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Criar octógono - + Create an octagon in the sketch Criar um octógono no esboço @@ -862,12 +862,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Criar pentágono - + Create a pentagon in the sketch Criar um pentágono no esboço @@ -875,12 +875,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Criar B-spline periódica - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Criar Ponto - + Create a point in the sketch Criar um ponto no esboço @@ -901,12 +901,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Create corner-preserving fillet - + Fillet that preserves intersection point and most constraints Fillet that preserves intersection point and most constraints @@ -953,12 +953,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Criar polígono regular - + Create a regular polygon in the sketch Criar um polígono regular no esboço @@ -966,12 +966,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Criar uma ranhura (slot) - + Create a slot in the sketch Criar uma ranhura (slot) no esboço @@ -979,12 +979,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Criar quadrado - + Create a square in the sketch Criar um quadrado no esboço @@ -992,12 +992,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Criar triângulo equilátero - + Create an equilateral triangle in the sketch Criar um triângulo equilátero no esboço @@ -1070,12 +1070,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Prolongar aresta - + Extend an edge with respect to the picked position Estende uma aresta em relação à posição escolhida @@ -1083,12 +1083,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Criar uma aresta ligada a uma geometria externa @@ -1427,12 +1427,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Split edge - + Splits an edge into two while preserving constraints Splits an edge into two while preserving constraints @@ -1479,12 +1479,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Ativar/desativar restrição - + Activates or deactivates the selected constraints Ativa ou desativa as restrições selecionadas @@ -1505,12 +1505,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Ativar/desativar restrição dominante/referência - + Set the toolbar, or the selected constraints, into driving or reference mode Set the toolbar, or the selected constraints, @@ -1520,12 +1520,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Aparar aresta - + Trim an edge with respect to the picked position Aparar uma aresta em relação à posição escolhida @@ -1584,79 +1584,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Add 'Lock' constraint - + Add relative 'Lock' constraint Add relative 'Lock' constraint - + Add fixed constraint Adicionar restrição fixa - + Add 'Block' constraint Add 'Block' constraint - + Add block constraint Add block constraint - - + + Add coincident constraint Add coincident constraint - - + + Add distance from horizontal axis constraint Add distance from horizontal axis constraint - - + + Add distance from vertical axis constraint Add distance from vertical axis constraint - - + + Add point to point distance constraint Add point to point distance constraint - - + + Add point to line Distance constraint Add point to line Distance constraint - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Adicionar restrição de comprimento @@ -1679,8 +1679,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Add Distance constraint @@ -1706,7 +1706,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1717,220 +1717,220 @@ invalid constraints, degenerated geometry, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Add point on object constraint - - + + Add point to point horizontal distance constraint Add point to point horizontal distance constraint - + Add fixed x-coordinate constraint Add fixed x-coordinate constraint - - + + Add point to point vertical distance constraint Add point to point vertical distance constraint - + Add fixed y-coordinate constraint Add fixed y-coordinate constraint - - + + Add parallel constraint Add parallel constraint - - - - - - - + + + + + + + Add perpendicular constraint Adicionar restrição perpendicular - + Add perpendicularity constraint Adicionar restrição de perpendicularidade - + Swap coincident+tangency with ptp tangency Swap coincident+tangency with ptp tangency - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint Adicionar restrição tangente - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Add tangent constraint point - - - - + + + + Add radius constraint Add radius constraint - - - - + + + + Add diameter constraint Add diameter constraint - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint Add angle constraint - - + + Add equality constraint Add equality constraint - - - - - + + + + + Add symmetric constraint Add symmetric constraint - + Add Snell's law constraint Add Snell's law constraint - + Toggle constraint to driving/reference Toggle constraint to driving/reference - + Activate/Deactivate constraint Activate/Deactivate constraint @@ -2015,7 +2015,7 @@ invalid constraints, degenerated geometry, etc. Add sketch arc of ellipse - + Add sketch arc of hyperbola Add sketch arc of hyperbola @@ -2159,8 +2159,8 @@ invalid constraints, degenerated geometry, etc. Update constraint's virtual space - + Add auto constraints Add auto constraints @@ -2185,12 +2185,12 @@ invalid constraints, degenerated geometry, etc. Arrastar Curva - + Drag Constraint Arrastar Restrição - + Modify sketch constraints Modify sketch constraints @@ -2281,59 +2281,59 @@ invalid constraints, degenerated geometry, etc. Erro de restrição automática: esboço insolúvel após a aplicação de restrições de igualdade. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Não é possível calcular a interseção das curvas. Tente adicionar uma restrição coincidente entre os vértices das curvas das quais pretende fazer a concordância. - - + + BSpline Geometry Index (GeoID) is out of bounds. Índice de geometria BSpline (GeoID) está fora dos limites. - + You are requesting no change in knot multiplicity. Você não está a solicitar nenhuma mudança na multiplicidade de nó. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. O índice de geometria (GeoId) fornecida não é uma curva B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. O índice do nó está fora dos limites. Note que, de acordo com a notação de OCC, o primeiro nó tem índice 1 e não zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. A multiplicidade não pode ser aumentada além do grau de B-spline. - + The multiplicity cannot be decreased beyond zero. A multiplicidade não pode ser diminuída, abaixo de zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC é incapaz de diminuir a multiplicidade dentro de tolerância máxima. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2413,127 +2413,11 @@ invalid constraints, degenerated geometry, etc. Não fixar + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Seleção errada @@ -2615,106 +2615,106 @@ invalid constraints, degenerated geometry, etc. One of the selected has to be on the sketch. - + Select an edge from the sketch. Selecione uma aresta do sketch. - - - - - - + + + + + + Impossible constraint Restrição impossível - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Dupla restrição - + The selected edge already has a horizontal constraint! A aresta selecionada já tem uma restrição horizontal! - + The selected edge already has a vertical constraint! A aresta selecionada já tem uma restrição vertical! - - - + + + The selected edge already has a Block constraint! A aresta selecionada já possui uma restrição de Bloqueio! - + There are more than one fixed points selected. Select a maximum of one fixed point! Há mais de um ponto fixo selecionado. Selecione no máximo um ponto fixo! - - - + + + Select vertices from the sketch. Selecione vértices do esboço. - + Select one vertex from the sketch other than the origin. Selecione um vértice do esboço que não seja a origem. - + Select only vertices from the sketch. The last selected vertex may be the origin. Selecione somente vértices do esboço. O último vértice selecionado deve ser a origem. - + Wrong solver status Erro no estado do calculador - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. - + Select one edge from the sketch. Selecione uma aresta do esboço. - + Select only edges from the sketch. Selecione somente arestas do esboço. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Erro @@ -2724,80 +2724,80 @@ invalid constraints, degenerated geometry, etc. Erro inesperado. Mais informações podem estar disponíveis na Visualização do Relatório. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Uma tangência de ponto a ponto de extremidade foi aplicada como alternativa. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Selecione exatamente uma linha ou uma linha e um ponto ou dois pontos do esboço. - + Cannot add a length constraint on an axis! Não é possível adicionar uma restrição de comprimento num eixo! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. Selecione as coisas corretas no esboço. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2807,92 +2807,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Nenhum dos pontos selecionados foi restringido para as respectivas curvas, eles são partes do mesmo elemento, ou são ambos geometria externa. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Selecione exatamente uma linha ou até dois pontos do esboço. - + Cannot add a horizontal length constraint on an axis! Não é possível adicionar uma restrição de comprimento horizontal num eixo! - + Cannot add a fixed x-coordinate constraint on the origin point! Não é possível adicionar uma restrição de coordenada-x fixa no ponto de origem! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Não é possível adicionar uma restrição de comprimento vertical a um eixo! - + Cannot add a fixed y-coordinate constraint on the origin point! Não é possível adicionar uma restrição de coordenada-y fixa no ponto de origem! - + Select two or more lines from the sketch. Selecione duas ou mais linhas do esboço. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Selecione pelo menos duas linhas do esboço. - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2902,35 +2902,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois pontos de extremidade; duas curvas e um ponto. - + Select some geometry from the sketch. perpendicular constraint Selecione alguma geometria do esboço (sketch). - - + + Cannot add a perpendicularity constraint at an unconnected point! Não é possível adicionar uma restrição de perpendicularidade num ponto não conectado! - - + + One of the selected edges should be a line. Uma das arestas selecionadas deve ser uma linha. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Uma tangência de ponto a ponto foi aplicada. A restrição de coincidência foi excluída. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2940,67 +2940,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois pontos de extremidade; duas curvas e um ponto. - + Select some geometry from the sketch. tangent constraint Selecione alguma geometria do esboço (sketch). - - - + + + Cannot add a tangency constraint at an unconnected point! Não é possível adicionar uma restrição de tangência num ponto não conectado! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Número errado de objetos selecionados! - - + + With 3 objects, there must be 2 curves and 1 point. Com 3 objetos, deve haver 2 curvas e 1 ponto. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Selecione um ou mais arcos ou círculos no esboço. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. - - - + + + Constraint only applies to arcs or circles. Restrição só aplicável a arcos ou círculos. - - + + Select one or two lines from the sketch. Or select two edges and a point. Selecione uma ou duas linhas de desenho (sketch). Ou selecione um ponto e duas arestas. @@ -3015,88 +3015,88 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Uma restrição de ângulo não pode ser aplicada a duas linhas paralelas. - + Cannot add an angle constraint on an axis! Não é possível adicionar uma restrição de ângulo num eixo! - + Select two edges from the sketch. Selecione duas arestas do esboço. - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. Igualdade para aresta da Bspline atualmente sem suporte. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Selecione dois pontos e uma linha de simetria, dois pontos e um ponto de simetria ou uma linha e um ponto de simetria do esboço. - - + + Cannot add a symmetry constraint between a line and its end points. Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Não é possível adicionar uma restrição de simetria entre uma linha e seus pontos extremos! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. - + Selected objects are not just geometry from one sketch. Objetos selecionados não são geometria de apenas um esboço (sketch). - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. @@ -3118,9 +3118,9 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error Erro de Kernel de CAD @@ -3263,14 +3263,14 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Remoção do alinhamento de eixos requer pelo menos que um elemento geométrico não-externo seja selecionado - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3654,12 +3654,12 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Comprimento: - + Refractive index ratio Rácio do índice de refração - + Ratio n2/n1: Rácio n2/n1: @@ -3667,72 +3667,72 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois SketcherGui::ElementFilterList - + Normal Normal - + Construction Construção - + Internal Internal - + External External - + All types All types - + Point Ponto - + Line Linha - + Circle Círculo - + Ellipse Elipse - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3855,27 +3855,27 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Select Vertical Axis - + Layer Camada - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Escondida - + Delete Apagar @@ -4751,120 +4751,120 @@ No entanto, nenhuma restrição foi encontrada nos pontos de extremidade.Ajustes - - - - - - - - - - + + + + + + + + + + Construction Construção - + Elements Elementos - - - - + + + + Point Ponto - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Linha - - - - + + + + Arc Arco - - - - + + + + Circle Círculo - - - - + + + + Ellipse Elipse - - - - + + + + Elliptical Arc Arco elíptico - - - - + + + + Hyperbolic Arc Arco hiperbólico - - - - + + + + Parabolic Arc Arco parabólico - - - - + + + + BSpline BSpline - - - - + + + + Other Outros - + Extended information Extended information @@ -5085,112 +5085,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Editar Esboço - + A dialog is already open in the task panel Já está aberta uma janela no painel de tarefas - + Do you want to close this dialog? Deseja fechar esta janela? - + Invalid sketch Esboço (sketch) inválido - + Do you want to open the sketch validation tool? Quer abrir a ferramenta de validação de esboço? - + The sketch is invalid and cannot be edited. O esboço é inválido e não pode ser editado. - + Please remove the following constraint: Por favor, remova a seguinte restrição: - + Please remove at least one of the following constraints: Por favor remova pelo menos uma das seguintes restrições: - + Please remove the following redundant constraint: Por favor, remova a seguinte restrição redundante: - + Please remove the following redundant constraints: Por favor, remova a seguinte restrição redundante: - + The following constraint is partially redundant: The following constraint is partially redundant: - + The following constraints are partially redundant: The following constraints are partially redundant: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch Esboço vazio - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) @@ -5198,7 +5198,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fully constrained @@ -5296,8 +5296,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixar o diâmetro de um círculo ou arco @@ -5305,8 +5305,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fix the radius/diameter of a circle or an arc @@ -5314,8 +5314,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Corrigir o raio de um círculo ou arco @@ -5329,70 +5329,25 @@ This is done by analyzing the sketch geometries and constraints. Cria uma cópia simples da geometria tomando como referência o último ponto selecionado - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Criar um arco a partir dos seus pontos de extremidade e de um ponto ao longo do arco - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Criar um círculo a partir de 3 pontos - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Criar um arco a partir do seu centro e por seus pontos de extremidade - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints - - Sketcher_CreateBSpline - + B-spline by control points B-spline por pontos de controle - - + + Create a B-spline by control points Criar uma B-spline por pontos de controle @@ -5400,35 +5355,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Cria um círculo pelo seu centro e por um ponto na circunferência - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Criar uma elipse por periapsis apoapsis e menor raio - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Criar uma elipse pelo centro, raio maior e ponto - - Sketcher_CreateFillet - - + + Creates a radius between two lines Creates a radius between two lines @@ -5436,8 +5373,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Criar um heptágono pelo seu centro e por um vértice @@ -5445,8 +5382,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Criar um hexágono pelo seu centro e um vértice @@ -5462,14 +5399,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Criar um octógono pelo seu centro e por um vértice + - Create a regular polygon by its center and by one corner Criar um polígono regular pelo seu centro e por um vértice @@ -5477,8 +5414,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Criar um pentágono pelo seu centro e por um vértice @@ -5486,8 +5423,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Fillet that preserves constraints and intersection point @@ -5511,8 +5448,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Criar um quadrado pelo seu centro e por um vértice @@ -5520,8 +5457,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Criar um triângulo equilátero, pelo seu centro e por um vértice @@ -5529,13 +5466,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periódica por pontos de controle + - Create a periodic B-spline by control points Criar uma B-spline periódica por pontos de controle @@ -5935,7 +5872,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more and %1 more @@ -6158,46 +6095,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Erro @@ -6233,16 +6170,16 @@ The grid spacing change if it becomes smaller than this number of pixel.A restrição tem informações de índice inválidas e está formatada incorretamente. + + + - - - - - + + Invalid Constraint @@ -6259,12 +6196,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Falha ao adicionar um arco de elipse - + Cannot create arc of hyperbola from invalid angles, try again! Não é possível criar arco de hipérbole a partir de ângulos inválidos, tente novamente! - + Cannot create arc of hyperbola Não é possível criar arco de hipérbole @@ -6284,8 +6221,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Erro ao criar o polo da B-spline - + Error creating B-spline Erro ao criar a B-spline @@ -6341,17 +6278,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Falha ao adicionar linha - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6386,9 +6323,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Falha ao aparar a aresta - + Value Error Erro de Valor @@ -6451,13 +6388,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6465,13 +6402,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6577,12 +6514,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6590,12 +6527,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6603,12 +6540,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Dimensão - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6646,12 +6583,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Restringir o raio - + Fix the radius of a circle or an arc Corrigir o raio de um círculo ou arco @@ -6826,8 +6763,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6841,12 +6778,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6854,12 +6791,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6867,12 +6804,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6880,12 +6817,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6893,12 +6830,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6906,12 +6843,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Restringir coincidentes - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7332,4 +7269,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts index 34adb68645..cf971ec578 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copiați geometria altei schițe @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Constrânge un arc de cerc sau un cerc - + Constrain an arc or a circle Constrânge un arc de cerc sau un cerc - + Constrain radius Rază constrânsă - + Constrain diameter Constrângere diametru - + Constrain auto radius/diameter Constrângere automată radius/diametru @@ -180,24 +180,24 @@ - Center and end points - Puncte de centru și de sfârșit + Center and endpoints + Center and endpoints - - End points and rim point - Puncte de sfarșit și punct de margine + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Creează o Bspline - + Create a B-spline in the sketch Creaţi B-spline în schiţă @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Crează cerc - + Create a circle in the sketcher Creați un cerc în schiță - + Center and rim point Creați un cerc definit de centru și un punct pe margine - + 3 rim points Cerc definit prin 3 puncte @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Crează o secțiune conică în schiţă - - Ellipse by center, major radius, point - Crează o Elipsă prin definirea centrului, razei majore și a unui punct + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Elipse prin periapză, apoapoză, rază minoră + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arc de elipsă cu centru, rază majoră, puncte de sfârșit + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arc de hiperbolă cu centru, rază majoră, puncte de sfârșit + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Arc de parabolă cu axă, vârf, puncte de sfârșit @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Crează panglică - + Create a fillet between two lines Creați un fillet între două linii - + Sketch fillet Filet schita - - Constraint-preserving sketch fillet - Fillet de schiță constrâns + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Creează poligon regulat - + Create a regular polygon in the sketcher Creaţi un poligon regulat în Desenator - + Triangle Triunghi - + Square Pătrat - + Pentagon Pentagon - + Hexagon Hexagon - + Heptagon Heptagon - + Octagon Octogon - + Regular polygon Poligon regulat @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Unghi constrans - + Fix the angle of a line or the angle between two lines Repară unghiul unei drepte sau unghiul dintre două linii @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Bloc: Constrângere - + Block the selected edge from moving Blochează muchia selectată să se miște @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Constrângere coincidentă - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Creează o constrângere între puncte, sau o constrângere concentrată între cercuri, arcuri și elipse @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Constrângere diametru - + Fix the diameter of a circle or an arc Fixează diametrul unui cerc sau arc de cerc @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Distanţă constrânsă - + Fix a length of a line or the distance between a line and a vertex or between two circles Repară lungimea unei linii sau distanța dintre o linie și un nod sau între două cercuri @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Constrânge distanța orizontală - + Fix the horizontal distance between two points or line ends Bate în cuie distanţa orizontală dintre doua puncte sau capete de linii @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Constrângere distanţă verticală - + Fix the vertical distance between two points or line ends Bate în cuie distanţa verticală dintre două puncte sau capete de linie @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Egalitate constransă - + Create an equality constraint between two lines or between circles and arcs Crează o egalitate constrânsă între două linii, cercuri sau arce @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Constrângere orizontală - + Create a horizontal constraint on the selected item Crează o constrângere orizontală pentru obiectul selectat @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Constrângere fixă - + Create both a horizontal and a vertical distance constraint on the selected vertex Creați atât o constrângere de distanță orizontală, cât și una verticală @@ -520,12 +520,12 @@ pe vârful selectat CmdSketcherConstrainParallel - + Constrain parallel Constrângere paralelă - + Create a parallel constraint between two lines Crează o constrângere paralelă între două linii @@ -533,12 +533,12 @@ pe vârful selectat CmdSketcherConstrainPerpendicular - + Constrain perpendicular Constrângere perpendiculară - + Create a perpendicular constraint between two lines Crează o constrângere perpendiculară între două linii @@ -546,12 +546,12 @@ pe vârful selectat CmdSketcherConstrainPointOnObject - + Constrain point onto object Constrânge punct pe obiect - + Fix a point onto an object Fixează un punct de un obiect @@ -559,12 +559,12 @@ pe vârful selectat CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Constrângere automată radius/diametru - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Repară diametrul dacă este ales un cerc sau raza dacă este ales un stâlp ar/splină @@ -572,12 +572,12 @@ pe vârful selectat CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Creați o constrângere de lege de refracție (Legea lui Snell) între două puncte finale ale razelor @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Constrângere simetrică - + Create a symmetry constraint between two points with respect to a line or a third point Creați o constrângere de simetrie între două puncte @@ -602,12 +602,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherConstrainTangent - + Constrain tangent Constrângere tangentă - + Create a tangent constraint between two entities Crează o constrângere tangentă între două entităţi @@ -615,12 +615,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherConstrainVertical - + Constrain vertically Constrângere verticală - + Create a vertical constraint on the selected item Crează o constrângere verticală pe obiectul selectat @@ -667,12 +667,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreate3PointCircle - + Create circle by three points Creați cerc de trei puncte - + Create a circle by 3 perimeter points Creați un cerc cu 3 puncte pe circumferință @@ -693,12 +693,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Creaţi un arc de elipsă în schiţă @@ -706,12 +706,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Creaţi un arc de hiperbolă în schiţă @@ -719,12 +719,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Creaţi un arc de parabolă în schiţă @@ -732,12 +732,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateBSpline - + Create B-spline Creează o Bspline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateCircle - + Create circle Crează cerc - + Create a circle in the sketch Crează un cerc în schiţă @@ -758,12 +758,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Creați o elipsă din trei puncte - + Create an ellipse by 3 points in the sketch Creaţi în schiță o elipsă definită prin 3 puncte @@ -771,12 +771,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateEllipseByCenter - + Create ellipse by center Creați o elipsă cu centru - + Create an ellipse by center in the sketch Creaţi în schiță o elipsa definită prin centru @@ -784,12 +784,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateFillet - + Create fillet Crează panglică - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateHeptagon - + Create heptagon Creează heptagon - + Create a heptagon in the sketch Creați un heptagon în schiță @@ -810,12 +810,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateHexagon - + Create hexagon Creează hexagon - + Create a hexagon in the sketch Creaţi un hexagon în schiţă @@ -849,12 +849,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateOctagon - + Create octagon Creează octogon - + Create an octagon in the sketch Creaţi un octogon în schiţă @@ -862,12 +862,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreatePentagon - + Create pentagon Creează pentagon - + Create a pentagon in the sketch Creați un pentagon în schiță @@ -875,12 +875,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Crează funcții B-spline periodice - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreatePoint - + Create point Crează punct - + Create a point in the sketch Crează un punct în schiţă @@ -901,12 +901,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreatePointFillet - + Create corner-preserving fillet Crează fillet de tip colț-conservator - + Fillet that preserves intersection point and most constraints Filet care păstrează punctul de intersecție și majoritatea constrângerilor @@ -953,12 +953,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateRegularPolygon - + Create regular polygon Creează poligon regulat - + Create a regular polygon in the sketch Creați un poligon regulat în schiţă @@ -966,12 +966,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateSlot - + Create slot Crează o canelură - + Create a slot in the sketch Creați o canelură în schiță @@ -979,12 +979,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateSquare - + Create square Creează pătrat - + Create a square in the sketch Crea un pătrat în schiţă @@ -992,12 +992,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherCreateTriangle - + Create equilateral triangle Creează triunghi echilateral - + Create an equilateral triangle in the sketch Creați un triunghi echilater în schiță @@ -1070,12 +1070,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherExtend - + Extend edge Prelungirea muchiei - + Extend an edge with respect to the picked position Prelungiți o muchie în raport cu poziția selctată @@ -1083,12 +1083,12 @@ cu privire la o linie sau un al treilea punct CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Crează o muchie legată de o geometrie externă @@ -1427,12 +1427,12 @@ Acest lucru va șterge proprietatea 'Support', dacă este cazul. CmdSketcherSplit - + Split edge Selectează marginea - + Splits an edge into two while preserving constraints Împarte o margine în două, păstrând în același timp constrângerile @@ -1479,12 +1479,12 @@ Acest lucru va șterge proprietatea 'Support', dacă este cazul. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activează/Dezactivează constrângerea - + Activates or deactivates the selected constraints Activează sau dezactivează constrângerile selectate @@ -1505,12 +1505,12 @@ Acest lucru va șterge proprietatea 'Support', dacă este cazul. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Comută constrângerea de condus/referință - + Set the toolbar, or the selected constraints, into driving or reference mode Setează bara de instrumente sau constrângerile selectate, @@ -1520,12 +1520,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Taie marginea - + Trim an edge with respect to the picked position Taie o margine relativ la pozitia aleasa @@ -1584,79 +1584,79 @@ constrângeri nevalide, geometrie degenerată, etc. Command - + Add 'Lock' constraint Adaugă constrângere 'Blocare' - + Add relative 'Lock' constraint Adaugă constrângere 'Blocare' - + Add fixed constraint Adaugă o constrângere fixă - + Add 'Block' constraint Adaugă constrângere 'Blocare' - + Add block constraint Adaugă constrângere 'Blocare' - - + + Add coincident constraint Adaugă constrângere de coincident - - + + Add distance from horizontal axis constraint Adăugați distanța de la constrângerea axei orizontale - - + + Add distance from vertical axis constraint Adăugați distanța față de constrângerea axei verticale - - + + Add point to point distance constraint Adăugați o constrângere de distanță punct la punct - - + + Add point to line Distance constraint Adăugați punct la linie Constrângere de distanță - - + + Add circle to circle distance constraint Adăugați restricție de distanță cerc la cerc - + Add circle to line distance constraint Adăugați cerc la constrângere de distanță pe linie - - - - - - + + + + + + Add length constraint Adăugați o constrângere de lungime @@ -1679,8 +1679,8 @@ constrângeri nevalide, geometrie degenerată, etc. - - + + Add Distance constraint Add Distance constraint @@ -1706,7 +1706,7 @@ constrângeri nevalide, geometrie degenerată, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1717,220 +1717,220 @@ constrângeri nevalide, geometrie degenerată, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Adăugați punct asupra constrângerii obiectului - - + + Add point to point horizontal distance constraint Adăugați constrângere de distanță orizontală punct la punct - + Add fixed x-coordinate constraint Adaugă o constrângere fixă la coordonatele x - - + + Add point to point vertical distance constraint Adaugă punct la punctul de distanță verticală constrângere - + Add fixed y-coordinate constraint Adaugă o constrângere fixă la coordonatele y - - + + Add parallel constraint Adaugă o constrângere paralelă - - - - - - - + + + + + + + Add perpendicular constraint Adaugă constrângere perpendiculară - + Add perpendicularity constraint Adaugă constrângere perpendiculară - + Swap coincident+tangency with ptp tangency Schimbă coincidentul+tangență cu tangență ptp - + Swap PointOnObject+tangency with point to curve tangency Schimbă PointOnObject+tangență cu tangență în curbă - - - - - - - + + + + + + + Add tangent constraint Adaugă constrângere tangentă - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Adaugă punct tangent de constrângere - - - - + + + + Add radius constraint Adaugă constrângere rază - - - - + + + + Add diameter constraint Adaugă o constrângere pentru diametru - - - - + + + + Add radiam constraint Adaugă constrângere de rază - - - - + + + + Add angle constraint Adaugă o constrângere de unghi - - + + Add equality constraint Adaugă constrângere pentru egalitate - - - - - + + + + + Add symmetric constraint Adaugă constrângere simetrică - + Add Snell's law constraint Adaugă constrângere legii lui Snell - + Toggle constraint to driving/reference Comută constrângerea pentru condus/referință - + Activate/Deactivate constraint Activează/Dezactivează constrângerea @@ -2015,7 +2015,7 @@ constrângeri nevalide, geometrie degenerată, etc. Adaugă un arc de elipsă - + Add sketch arc of hyperbola Adăugați arc de schiță de hiperbolă @@ -2159,8 +2159,8 @@ constrângeri nevalide, geometrie degenerată, etc. Actualizează spațiul virtual al constrângerilor - + Add auto constraints Adaugă Auto-Constrângeri @@ -2185,12 +2185,12 @@ constrângeri nevalide, geometrie degenerată, etc. Trage Curba - + Drag Constraint Constrângere Drag - + Modify sketch constraints Modifică constrângerile schiței @@ -2281,59 +2281,59 @@ constrângeri nevalide, geometrie degenerată, etc. Eroare de autoconstrângere: schiță nerezolvabilă după aplicarea constrângerilor de egalitate. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Nu puteți ghici intersecția curbelor. Încercați să adăugați o constrângere de potrivire între vârfurile curbelor pe care intenționați să le completați. - - + + BSpline Geometry Index (GeoID) is out of bounds. Indicele de geometrie BSpline (GeoID) nu este în limite maxime. - + You are requesting no change in knot multiplicity. Nu cereți nicio schimbare în multiplicitatea nodului. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Indicele de geometrie (GeoId) furnizat nu este o curbă B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Indexul nod este în afara limitelor. Reţineţi că în conformitate cu notaţia OCC, primul nod are indexul 1 şi nu zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. Multiplicitatea nu poate fi crescută dincolo de gradul curbei B-spline. - + The multiplicity cannot be decreased beyond zero. Multiplicitatea nu poate fi diminuată sub zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC este în imposibilitatea de a reduce multiplicarea în limitele toleranței maxime. - + Knot cannot have zero multiplicity. Nu poate avea multiplicitate zero. - + Knot multiplicity cannot be higher than the degree of the BSpline. Multiplicitatea nodului nu poate fi mai mare decât gradul BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Nu se poate insera un nod în afara intervalului parametrului BSpline. @@ -2413,127 +2413,11 @@ constrângeri nevalide, geometrie degenerată, etc. A nu se atașa + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ constrângeri nevalide, geometrie degenerată, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ constrângeri nevalide, geometrie degenerată, etc. - - - Wrong selection Selecţie greşită @@ -2615,106 +2615,106 @@ constrângeri nevalide, geometrie degenerată, etc. Una dintre cele selectate trebuie să fie pe schiță. - + Select an edge from the sketch. Selectati o margine din schita. - - - - - - + + + + + + Impossible constraint Constrangere imposibila - - + + The selected edge is not a line segment. Marginea selectată nu este un segment de linie. - - - + + + Double constraint Constrangere dubla - + The selected edge already has a horizontal constraint! Marginea selectată are deja o constrângere orizontală! - + The selected edge already has a vertical constraint! Marginea selectată are deja o constrângere verticală! - - - + + + The selected edge already has a Block constraint! Marginea selectată are deja o constrângere de bloc! - + There are more than one fixed points selected. Select a maximum of one fixed point! Există mai mult de un punct fix selectat. Selectați maxim un punct fix! - - - + + + Select vertices from the sketch. Selectează nodurile din Schiță. - + Select one vertex from the sketch other than the origin. Selectează un nod din schiţa altul decât originea. - + Select only vertices from the sketch. The last selected vertex may be the origin. Selectaţi doar nodurile din schiță. Ultimul punct selectat poate fi originea. - + Wrong solver status Status de greşit ak Rezolvitor - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. O constrângere de blocare nu poate fi adăugată dacă schița nu este rezolvată sau există constrângeri redundante și contradictorii. - + Select one edge from the sketch. Selectaţi o margine din Schiță. - + Select only edges from the sketch. Selectaţi o margine din Schiță. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Numărul de obiecte selectate nu este 3 - + Error Eroare @@ -2724,80 +2724,80 @@ constrângeri nevalide, geometrie degenerată, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Punct final la punctul final de tangenţă a fost aplicat în schimb. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Selectați două sau mai multe noduri din schiță pentru o constrângere de coincident, sau două sau mai multe cercuri, elipsuri, arcuri sau arcuri de elipsă pentru o constrângere concentrată. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Selectaţi două vârfuri din schiţă pentru o constrângere de incident, sau două cercuri, elipse, arcuri sau arcuri de elipsă pentru o constrângere concentrată. - + Select exactly one line or one point and one line or two points from the sketch. Selectati exact o linie sau un punct si o linie sau două puncte din schita. - + Cannot add a length constraint on an axis! Nu se poate adauga o constrangere de lungime pentru o axa! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Selectaţi exact o linie sau un punct şi o linie sau două puncte sau două cercuri din schiţă. - + This constraint does not make sense for non-linear curves. Această constrângere nu are sens pentru curbe neliniare. - + Endpoint to edge tangency was applied instead. Tangența la margine a fost aplicată în schimb. - - - - - - + + + + + + Select the right things from the sketch. Selectaţi lucruri corecte din schiță. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Selectaţi o muchie care nu este o greutate B-spline. @@ -2807,92 +2807,92 @@ constrângeri nevalide, geometrie degenerată, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Niciunul dintre punctele selectate nu a fost constrâns pe curbele respective, deoarece acestea sunt părți ale aceluiași element, pentru că sunt atât geometrie externă, cât şi pentru că marginea nu este eligibilă. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Nici unul dintre punctele selectate nu trece prin curbele respective, sau pentru că ele fac parte din același element sau pentru că ele sunt amândouă exterioare din punct de vedere geometric. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Selectati exact o linie sau maxim doua puncte din schita. - + Cannot add a horizontal length constraint on an axis! Nu se poate adauga o constrangere de lungime orizontala pentru o axa! - + Cannot add a fixed x-coordinate constraint on the origin point! Nu se poate adăuga o constrângere fixă la coordonatele x pe punctul de origine! - - + + This constraint only makes sense on a line segment or a pair of points. Această constrângere are sens doar pe un segment de linie sau pe o pereche de puncte. - + Cannot add a vertical length constraint on an axis! Nu se poate adauga o constrangere verticala pentru o axa! - + Cannot add a fixed y-coordinate constraint on the origin point! Nu se poate adăuga o constrângere fixă la coordonatele y pe punctul de origine! - + Select two or more lines from the sketch. Selectati doua sau mai multe linii din schita. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Selectati cel putin doua linii din schita. - + The selected edge is not a valid line. Marginea selectată nu este o linie validă. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2901,35 +2901,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Se acceptă combinațiile: două curbe; un punct extrem şi o curbă; două puncte extreme; două curbe şi un punct. - + Select some geometry from the sketch. perpendicular constraint Selectaţi o geometrie din schiță. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nu pot adauga o constrângere perpendiculară pentru un punct neconectat! - - + + One of the selected edges should be a line. Una dintre marginile selectate trebuie sa fie o linie. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Punct final la punctul final de tangenţă a fost aplicat. Coincident restricţia a fost şters. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. A fost aplicat punctul final de la margine tangenței. Punctul de pe obiect a fost șters. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2937,67 +2937,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Există un număr de moduri în care se poate aplica această constrângere. Se accepta combinațiile: două curbe; un punct extrem şi o curbă; două puncte extreme; două curbe şi un punct. - + Select some geometry from the sketch. tangent constraint Selectaţi o geometrie din schiță. - - - + + + Cannot add a tangency constraint at an unconnected point! Nu pot adauga constrângere tangenţială pentru un punct neconectat! - - + + Tangent constraint at B-spline knot is only supported with lines! Constrângerea tangentă la nodul B-spline este suportată doar cu linii! - + B-spline knot to endpoint tangency was applied instead. Tangenţa B-spline până la final a fost aplicată. - - + + Wrong number of selected objects! Număr greșit al obiectelor selectate! - - + + With 3 objects, there must be 2 curves and 1 point. Cu 3 obiecte, trebuie să existe 2 curbe și un punct. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Selectaţi doar un arc sau un cerc din schiţă. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Selectaţi fie unul sau mai mulţi poli B-Spline sau doar unul sau mai multe arcuri sau cercuri din schiţă, dar nu amestecate. - - - + + + Constraint only applies to arcs or circles. Restricţia se aplică numai pentru arce de cerc sau cercuri. - - + + Select one or two lines from the sketch. Or select two edges and a point. Selectaţi una sau două linii din schiță, sau selectaţi două margini şi un punct. @@ -3012,88 +3012,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c O constrângere unghiulară nu poate fi aplicată la două linii paralele. - + Cannot add an angle constraint on an axis! Nu pot adăuga o constrângere de unghi pe o axă! - + Select two edges from the sketch. Selectaţi două margini din schiţă. - + Select two or more compatible edges. Selectaţi două sau mai multe margini compatibile. - + Sketch axes cannot be used in equality constraints. Axele schiţei nu pot fi folosite în constrângerile de egalitate. - + Equality for B-spline edge currently unsupported. Egalitate pentru muchiile curbelor B-spline, în prezent, nu sunt suportate. - - - - + + + + Select two or more edges of similar type. Selectaţi două sau mai multe margini de tip similar. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Selectaţi două puncte şi o linie de simetrie, două puncte şi un punct de simetrie sau o linie si un punct de simetrie din schiță. - - + + Cannot add a symmetry constraint between a line and its end points. Nu se poate adăuga o constrângere de simetrie între o linie și punctele sale de sfârșit. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Nu se poate adăuga o constrângere de simetrie între o linie şi punctele ei de capăt! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Selectaţi două puncte finale ale liniilor pentru a acţiona ca raze, şi o margine reprezentând o limită. Primul punct selectat corespunde indicelui n1, secundă la n2, iar valoarea de referință setează raportul n2/n1. - + Selected objects are not just geometry from one sketch. Obiectele selectate nu sunt geometria doar unui sketch. - + Cannot create constraint with external geometry only. Nu se poate crea constrângere doar cu geometrie externă. - + Incompatible geometry is selected. Geometria incompatibilă este selectată. - - - - - + + + + + Select constraints from the sketch. Selectează constrângerile din schiță. @@ -3115,9 +3115,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Defineste grade B-Spline intre 1 si %1: + - CAD Kernel Error Eroare a nucleului CAD @@ -3260,14 +3260,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Îndepărtarea alinierii axelor necesită cel puțin un element geometric intern selectat - - + + Unsupported visual layer operation Operație strat vizual nesuportat - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Momentan nu este suportat să mutați geometria externă într-un alt strat vizual. Geometria externă va fi omisă @@ -3652,12 +3652,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Lungime: - + Refractive index ratio Procentul indicelui de refracție - + Ratio n2/n1: Raportul n2/n1: @@ -3665,72 +3665,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Normal - + Construction Construcţie - + Internal Intern - + External Extern - + All types Toate tipurile - + Point Punct - + Line Linie - + Circle Cerc - + Ellipse Elipsa - + Arc of circle Arc de cerc - + Arc of ellipse Arc de elipsă - + Arc of hyperbola Arc de hiperbolă - + Arc of parabola Arc de parabolă - + B-Spline B-Spline @@ -3853,27 +3853,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Selectaţi axa verticală - + Layer Layer - + Layer 0 Nivel 0 - + Layer 1 Nivelul 1 - + Hidden Hidden - + Delete Ştergeţi @@ -4747,120 +4747,120 @@ However, no constraints linking to the endpoints were found. Setari - - - - - - - - - - + + + + + + + + + + Construction Construcţie - + Elements Elemente - - - - + + + + Point Punct - - - - - - - - - - + + + + + + + + + + Internal Intern - - - - + + + + Line Linie - - - - + + + + Arc Arc - - - - + + + + Circle Cerc - - - - + + + + Ellipse Elipsa - - - - + + + + Elliptical Arc Arc eliptic - - - - + + + + Hyperbolic Arc Arc hiperbolic - - - - + + + + Parabolic Arc Arc parabolic - - - - + + + + BSpline BSpline - - - - + + + + Other Altceva - + Extended information Informații suplimentare @@ -5081,112 +5081,112 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi SketcherGui::ViewProviderSketch - + Edit sketch Editaţi schiţa - + A dialog is already open in the task panel O fereastră de dialog este deja deschisă în fereastra de sarcini - + Do you want to close this dialog? Doriţi să închideţi această fereastră de dialog? - + Invalid sketch Schiță nevalidă - + Do you want to open the sketch validation tool? Doriți să să deschideți scula de validare a schiței? - + The sketch is invalid and cannot be edited. Schița nu este validă și nu poate fi editată. - + Please remove the following constraint: Înlătură urmatoarea constrângere: - + Please remove at least one of the following constraints: Înlaturaţi cel puţin una din urmatoarele constrângeri: - + Please remove the following redundant constraint: Înlăturaţi urmatoarele constrângeri redundante: - + Please remove the following redundant constraints: Înlăturaţi urmatoarele constrângeri redundante: - + The following constraint is partially redundant: Următoarea constrângere este parțial redundantă: - + The following constraints are partially redundant: Următoarele constrângeri sunt parțial redundante: - + Please remove the following malformed constraint: Eliminați următoarele constrângeri informate: - + Please remove the following malformed constraints: Eliminați următoarele constrângeri informate: - + Empty sketch Schita goala - + Over-constrained: Supraconstrânse: - + Malformed constraints: Constrângeri incorecte: - + Redundant constraints: Constrângeri redundante: - + Partially redundant: Parţial redundant: - + Solver failed to converge Rezolvitorul nu a putut converge - + Under constrained: Sub constrângeri: - + %n DoF(s) %n ore @@ -5195,7 +5195,7 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi - + Fully constrained Complet constrâns @@ -5293,8 +5293,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixează diametrul unui cerc sau arc de cerc @@ -5302,8 +5302,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Repară raza/diametrul unui cerc sau al unui arc @@ -5311,8 +5311,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixează raza unui cerc sau arc @@ -5326,70 +5326,25 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Creează o clona a geometriei luând ca referinţă ultimul punct selectat - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Creează un arc de la punctul său final și un punct de-a lungul arcului - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Creeați un cerc definit prin 3 puncte pe circumferință - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Creează un arc cu propiul centru și cu propiile puncte finale - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Creaţi un arc de elipsă definit prin centrul său, raza majoră şi puncte finale - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Creaţi un arc de hiperbolă definit prin centrul său, raza majoră şi puncte finale - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Creaţi un arc de parabolă prin focalizarea, nodul şi punctele sale finale - - Sketcher_CreateBSpline - + B-spline by control points B-spline definită prin punctele de control - - + + Create a B-spline by control points Creaţi un B-spline definită prin punctele de control @@ -5397,35 +5352,17 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Creează un cerc definit prin centrul propriu și cu un punct pe circumferință - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Creează o elipsă definită prin punctele din extremitățile axei mari și raza minoră - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Creează o Elipsă definită prin centru, raza majoră și un punct - - Sketcher_CreateFillet - - + + Creates a radius between two lines Creează o rază între două linii @@ -5433,8 +5370,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Creați un heptagon definit prin centrul său şi a unui colţ @@ -5442,8 +5379,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Creați un hexagon definit prin centrul său şi un colţ @@ -5459,14 +5396,14 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Creați un octogon definit prin centrul său şi a un colţ + - Create a regular polygon by its center and by one corner Creați unui poligon regulat definit prin centrul său şi un colţ @@ -5474,8 +5411,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Creați unui pentagon definit prin centrul său şi a un colţ @@ -5483,8 +5420,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Fillet care păstrează constrângerile și punctul de intersecție @@ -5508,8 +5445,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreateSquare + - Create a square by its center and by one corner Creați un pătrat definit prin centrul său şi un colţ @@ -5517,8 +5454,8 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Creați un unui triunghi echilateral definit prin centrul său şi un colţ @@ -5526,13 +5463,13 @@ Acest lucru se realizează prin analizarea geometrelor și constrângerilor schi Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Creaţi o curbă B-spline periodică prin punctele de control + - Create a periodic B-spline by control points Creaţi o curbă B-spline periodică prin punctele de control @@ -5932,7 +5869,7 @@ Algoritmul QR Eigen Sparse este optimizat pentru matrici dispersați; de obicei ViewProviderSketch - + and %1 more și încă %1 @@ -6155,46 +6092,46 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel Schița are constrângeri parțial redundante! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolele au fost migrate. Fișierele migrate nu vor fi deschise în versiunile anterioare de FreeCAD! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Eroare @@ -6230,16 +6167,16 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6256,12 +6193,12 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6281,8 +6218,8 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6338,17 +6275,17 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6383,9 +6320,9 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel Failed to trim edge - + Value Error Value Error @@ -6448,13 +6385,13 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline definită prin noduri - - + + Create a B-spline by knots Creaţi o curbă B-spline cu noduri @@ -6462,13 +6399,13 @@ Schimbarea spațierii grilei dacă devine mai mică decât acest număr de pixel Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots B-spline periodic cu noduri + - Create a periodic B-spline by knots Creaţi o curbă B-spline periodică cu noduri @@ -6574,12 +6511,12 @@ Punctele trebuie să fie mai apropiate de o cincime din spațierea grilei de o l CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6587,12 +6524,12 @@ Punctele trebuie să fie mai apropiate de o cincime din spațierea grilei de o l CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6600,12 +6537,12 @@ Punctele trebuie să fie mai apropiate de o cincime din spațierea grilei de o l CmdSketcherDimension - + Dimension Dimensiune - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6643,12 +6580,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Rază constrânsă - + Fix the radius of a circle or an arc Fixează raza unui cerc sau arc @@ -6823,8 +6760,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6838,12 +6775,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6851,12 +6788,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6864,12 +6801,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6877,12 +6814,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6890,12 +6827,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6903,12 +6840,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Constrângere coincidentă - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7329,4 +7266,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts index f2cd1a3181..f00678f0f1 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Создать копию - + Copy the geometry of another sketch Копировать геометрию другого эскиза @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Ограничение дуги или окружности - + Constrain an arc or a circle Ограничение дуги или окружности - + Constrain radius Ограничение радиуса - + Constrain diameter Ограничение диаметра - + Constrain auto radius/diameter Ограничение радиуса/диаметра автоматически @@ -180,24 +180,24 @@ - Center and end points - По центру и конечным точкам + Center and endpoints + Центр и конечные точки - - End points and rim point - По конечным точкам и касательной + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Создать B-сплайн - + Create a B-spline in the sketch Создать B-сплайн на эскизе @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Создать окружность - + Create a circle in the sketcher Создать окружность на эскизе - + Center and rim point По центру и точке окружности - + 3 rim points По трём точкам @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Создать фигуру конического сечения - + Create a conic in the sketch Создать конус на эскизе - - Ellipse by center, major radius, point - Эллипс по центру, большому радиусу, точке + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Эллипс по периапсиде, апоапсиде, малому радиусу + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Дуга эллипса по центру, большому радиусу, концевым точкам + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Дуга гиперболы по центру, большому радиусу, конечным точкам + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Дуга параболы по фокусу, вершине, конечным точкам @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Создать скругление - + Create a fillet between two lines Создать скругление между двумя отрезками - + Sketch fillet Скругление - - Constraint-preserving sketch fillet - Скругление с сохранением ограничений + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Создать правильный многоугольник - + Create a regular polygon in the sketcher Создать правильный многоугольник на эскизе - + Triangle Треугольник - + Square Квадрат - + Pentagon Пятиугольник - + Hexagon Шестиугольник - + Heptagon Семиугольник - + Octagon Восьмиугольник - + Regular polygon Правильный многоугольник @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Ограничение угла - + Fix the angle of a line or the angle between two lines Фиксировать угол отрезка или угол между двумя отрезками @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Ограничение перемещения - + Block the selected edge from moving Блокировать выбранный край от перемещения @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Ограничение наложения точек - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Создать ограничение совпадения между точками или ограничение концентричности между кругами, дугами и эллипсами @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Ограничение диаметра - + Fix the diameter of a circle or an arc Задать диаметр окружности или дуги @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Ограничение расстояния - + Fix a length of a line or the distance between a line and a vertex or between two circles Исправить длину линии или расстояние между линией и вершиной или между двумя кругами @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Ограничение расстояния по горизонтали - + Fix the horizontal distance between two points or line ends Фиксировать расстояние по горизонтали между двумя точками или концами отрезка @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Ограничение расстояния по вертикали - + Fix the vertical distance between two points or line ends Фиксировать расстояние по вертикали между двумя точками или концами отрезка @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Ограничение эквивалентностью - + Create an equality constraint between two lines or between circles and arcs Создать ограничение равенства между двумя отрезками или между окружностями и дугами @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Ограничение горизонтальности - + Create a horizontal constraint on the selected item Создать ограничение горизонтальности для выбранных линий @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Ограничение положения - + Create both a horizontal and a vertical distance constraint on the selected vertex Создать ограничение расстояния горизонтального и вертикального расстояния @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Ограничение параллельности - + Create a parallel constraint between two lines Создать ограничение параллельности между двумя линиями @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Ограничение перпендикулярности - + Create a perpendicular constraint between two lines Создать ограничение перпендикулярности между двумя линиями @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Ограничить точку на объекте - + Fix a point onto an object Привязать точку к объекту @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Ограничение радиуса/диаметра автоматически - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Назначает диаметр, если выбран круг или радиус, если выбран полюс дуга/сплайн @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Ограничение преломления (закон Снеллиуса) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Создать ограничение по закону преломления света (закон Снеллиуса) между двумя конечными точками лучей и отрезком в качестве границы раздела сред. @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Ограничение симметричности - + Create a symmetry constraint between two points with respect to a line or a third point Создать ограничение симметрии между двумя точками относительно линии или третьей точки @@ -600,12 +600,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Ограничение касательности - + Create a tangent constraint between two entities Создать ограничение касательности между двумя объектами @@ -613,12 +613,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Ограничение вертикальности - + Create a vertical constraint on the selected item Создать ограничение вертикальности для выделенных линий @@ -665,12 +665,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Создать окружность по трём точкам - + Create a circle by 3 perimeter points Создать окружность по трём точкам периметра @@ -691,12 +691,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Создать эллиптическую дугу - + Create an arc of ellipse in the sketch Создать дугу эллипса на эскизе @@ -704,12 +704,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Создать гиперболическую дугу - + Create an arc of hyperbola in the sketch Создать дугу гиперболы на эскизе @@ -717,12 +717,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Создать параболическую дугу - + Create an arc of parabola in the sketch Создать дугу параболы на эскизе @@ -730,12 +730,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Создать B-сплайн - + Create a B-spline by control points in the sketch. Создать B-сплайн по контрольным точкам на эскизе. @@ -743,12 +743,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Создать окружность - + Create a circle in the sketch Создать окружность на эскизе @@ -756,12 +756,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Создать эллипс по трём точкам - + Create an ellipse by 3 points in the sketch Создать эллипс по трём точкам на эскизе @@ -769,12 +769,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Создать эллипс от центра - + Create an ellipse by center in the sketch Создать эллипс от центра в эскизе @@ -782,12 +782,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Создать скругление - + Create a fillet between two lines or at a coincident point Скруглить угол между двумя линиями, или соединить две линии дугой окружности @@ -795,12 +795,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Создать семиугольник - + Create a heptagon in the sketch Создать семиугольник на эскизе @@ -808,12 +808,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Создать шестиугольник - + Create a hexagon in the sketch Создать шестиугольник в эскизе @@ -847,12 +847,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Создать восьмиугольник - + Create an octagon in the sketch Создать восьмиугольник на эскизе @@ -860,12 +860,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Создать пятиугольник - + Create a pentagon in the sketch Создать пятиугольник на эскизе @@ -873,12 +873,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Создать периодический B-сплайн - + Create a periodic B-spline by control points in the sketch. Создать периодический B-сплайн по контрольным точкам на эскизе. @@ -886,12 +886,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Создать точку - + Create a point in the sketch Создать точку на эскизе @@ -899,12 +899,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Создать скругление с сохранением точки пересечения - + Fillet that preserves intersection point and most constraints Скругление, которое сохраняет точку пересечения и большинство ограничений @@ -951,12 +951,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Создать правильный многоугольник - + Create a regular polygon in the sketch Создать правильный многоугольник на эскизе @@ -964,12 +964,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Создать паз - + Create a slot in the sketch Создать паз на эскизе @@ -977,12 +977,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Создать квадрат - + Create a square in the sketch Создать квадрат на эскизе @@ -990,12 +990,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Создать равносторонний треугольник - + Create an equilateral triangle in the sketch Создать равнобедренный треугольник на эскизе @@ -1068,12 +1068,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Продлить грань - + Extend an edge with respect to the picked position Продлить грань до ближайшего пересечения @@ -1081,12 +1081,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Создать внешнюю геометрию - + Create an edge linked to an external geometry Добавить внешнюю геометрию @@ -1423,12 +1423,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Разделить ребро - + Splits an edge into two while preserving constraints Разделить ребро на две части с сохранением ограничений @@ -1475,12 +1475,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Вкл/выкл ограничение - + Activates or deactivates the selected constraints Вкл/выкл выбранные ограничения @@ -1501,12 +1501,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Переключить ограничения в построительные/основные - + Set the toolbar, or the selected constraints, into driving or reference mode Переключает панель инструментов или преобразует выбранные ограничения, в режим построительной/основной геометрии @@ -1515,12 +1515,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Обрезать линию - + Trim an edge with respect to the picked position Обрезать часть линии до указанной позиции @@ -1579,79 +1579,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Добавить 'Блокирующее' ограничение - + Add relative 'Lock' constraint Добавить относительное ограничение 'Блокировка' - + Add fixed constraint Добавить фиксированное ограничение - + Add 'Block' constraint Добавить ограничение 'Блок' - + Add block constraint Добавить ограничение блока - - + + Add coincident constraint Добавить ограничение совпадения - - + + Add distance from horizontal axis constraint Добавить ограничение расстояния от горизонтальной оси - - + + Add distance from vertical axis constraint Добавить ограничение расстояния от вертикальной оси - - + + Add point to point distance constraint Добавить точку к ограничению расстояния до точки - - + + Add point to line Distance constraint Добавить точку к ограничению расстояния до линии - - + + Add circle to circle distance constraint Добавить круг к ограничениям расстояния круга - + Add circle to line distance constraint Добавить круг к ограниченияю линейного расстояния - - - - - - + + + + + + Add length constraint Добавить ограничение длины @@ -1674,8 +1674,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Добавить ограничение по расстоянию @@ -1701,7 +1701,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Добавить ограничения симметричности @@ -1712,220 +1712,220 @@ invalid constraints, degenerated geometry, etc. Добавить ограничения по расстоянию - + Add Horizontal constraint Добавить ограничение "горизонтальность" - + Add Vertical constraint Добавить ограничение "вертикальность" - + Add Block constraint Добавить ограничение "блокировка" - + Add Angle constraint Добавить ограничение угла - - - - + + + + Add Equality constraint Добавить ограничение равенства - + Add Equality constraints Добавить ограничения равенства - - - + + + Add Radius constraint Добавить ограничение радиуса - - + + Add arc angle constraint Добавить ограничение угла дуги - + Add concentric and length constraint Добавить ограничения концентричность и равенство длины - + Add DistanceX constraint Добавить ограничение расстояния по X - + Add DistanceY constraint Добавить ограничение расстояния по Y - + Add point to circle Distance constraint Добавить точку в Ограничение расстояния круга - - + + Add point on object constraint Добавить точку на ограничение объекта - - + + Add point to point horizontal distance constraint Добавить точку к ограничению расстояния по горизонтали - + Add fixed x-coordinate constraint Добавить фиксированное ограничение X-координаты - - + + Add point to point vertical distance constraint Добавить точку к ограничению расстояния по вертикали - + Add fixed y-coordinate constraint Добавить фиксированное ограничение Y-координаты - - + + Add parallel constraint Добавить ограничение параллельности - - - - - - - + + + + + + + Add perpendicular constraint Добавить ограничение перпендикулярности - + Add perpendicularity constraint Добавить ограничение перпендикулярности - + Swap coincident+tangency with ptp tangency Поменять совпадение + касание на ptp касание - + Swap PointOnObject+tangency with point to curve tangency Поменять точка на объекте + касательная на касательную к кривой - - - - - - - + + + + + + + Add tangent constraint Добавить касательное ограничение - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Добавить точку касательного ограничения - - - - + + + + Add radius constraint Добавить ограничение радиуса - - - - + + + + Add diameter constraint Добавить ограничение диаметра - - - - + + + + Add radiam constraint Добавить ограничение радиуса - - - - + + + + Add angle constraint Добавить ограничение угла - - + + Add equality constraint Добавить ограничение равенства - - - - - + + + + + Add symmetric constraint Добавить ограничение симметричности - + Add Snell's law constraint Добавить ограничение по закону Снеллиуса - + Toggle constraint to driving/reference Переключить ограничения в построительные/основные - + Activate/Deactivate constraint Вкл/выкл ограничение @@ -2010,7 +2010,7 @@ invalid constraints, degenerated geometry, etc. Добавить эскиз дуги эллипса - + Add sketch arc of hyperbola Добавить эскиз дуги гиперболы @@ -2154,8 +2154,8 @@ invalid constraints, degenerated geometry, etc. Обновить ограничения виртуального пространства - + Add auto constraints Добавить автоматические ограничения @@ -2180,12 +2180,12 @@ invalid constraints, degenerated geometry, etc. Перетащить кривую - + Drag Constraint Перетащить ограничение - + Modify sketch constraints Изменить ограничения эскиза @@ -2227,7 +2227,7 @@ invalid constraints, degenerated geometry, etc. Translate geometries - Translate geometries + Перевести геометрии @@ -2276,59 +2276,59 @@ invalid constraints, degenerated geometry, etc. Ошибка автоограничения: Эскиз нерешаем после добавлении ограничения равенства. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Не удалось рассчитать пересечение кривых. Попробуйте добавить ограничение совпадения между вершинами кривых, которые вы намерены скруглить. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline идентификатор геометрии (GeoID) находится вне границ. - + You are requesting no change in knot multiplicity. Вы не запрашиваете никаких изменений в множественности узлов. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Идентификатор геометрии (GeoId) не является B-сплайн кривой. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Индекс узла выходит за границы. Обратите внимание, что в соответствии с нотацией OCC первый узел имеет индекс 1, а не ноль. - + The multiplicity cannot be increased beyond the degree of the B-spline. Кратность не может быть увеличена сверх степени B-сплайна. - + The multiplicity cannot be decreased beyond zero. Кратность не может быть уменьшена ниже нуля. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC неспособен уменьшить кратность в пределах максимального допуска. - + Knot cannot have zero multiplicity. Узел не может иметь нулевой кратности. - + Knot multiplicity cannot be higher than the degree of the BSpline. Кратность узла не может быть выше степени BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Узел не может быть вставлен за пределы диапазона параметров BSpline. @@ -2408,127 +2408,11 @@ invalid constraints, degenerated geometry, etc. Не присоединять + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2538,6 +2422,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2555,9 +2558,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Неправильное выделение @@ -2610,106 +2610,106 @@ invalid constraints, degenerated geometry, etc. Один из выбранных должен находиться на эскизе. - + Select an edge from the sketch. Выбирите ребро в эскизе. - - - - - - + + + + + + Impossible constraint Ограничение невозможно - - + + The selected edge is not a line segment. Выбранное ребро не является сегментом линии. - - - + + + Double constraint Избыточное ограничение - + The selected edge already has a horizontal constraint! Выбранная линия уже имеет ограничение горизонтальности! - + The selected edge already has a vertical constraint! Выбранная линия уже имеет ограничение вертикальности! - - - + + + The selected edge already has a Block constraint! Выбранная линия уже имеет Блочное ограничение! - + There are more than one fixed points selected. Select a maximum of one fixed point! Выбрано несколько фиксированных точек. Выберите максимум одну фиксированную точку! - - - + + + Select vertices from the sketch. Выберите вершины из эскиза. - + Select one vertex from the sketch other than the origin. Выберите одну вершину из эскиза, кроме начальной. - + Select only vertices from the sketch. The last selected vertex may be the origin. Выберите только вершины из эскиза. Последняя выбранная вершина может быть начальной. - + Wrong solver status Неправильный статус решателя - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Блокирующее ограничение не может быть добавлено, если эскиз не решаем или имеются избыточные или конфликтующие ограничения. - + Select one edge from the sketch. Выберите одну линию из эскиза. - + Select only edges from the sketch. Выберите линии из эскиза. - + Only tangent-via-point is supported with a B-spline. Поддерживается только точка касательная с B-сплайном. - + Number of selected objects is not 3 Количество выбранных объектов не 3 - + Error Ошибка @@ -2719,175 +2719,175 @@ invalid constraints, degenerated geometry, etc. Неожиданная ошибка. Дополнительные сведения могут быть доступны в представлении отчета. - + The selected item(s) can't accept a horizontal or vertical constraint! Выбранные элементы не могут принимать горизонтальное или вертикальное ограничение! - + Endpoint to endpoint tangency was applied instead. Вместо конечной точки применена касательная. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Выберите две или более вершины из эскиза для ограничения совпадения, или два или более кругов, эллипсов, дуг или дуг эллипса для концентрационного ограничения. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Выберите две вершины из эскиза для ограничения совпадения, или два круга, эллипса, дуги или дуги эллипса для ограничения концентрации. - + Select exactly one line or one point and one line or two points from the sketch. Выделите либо один отрезок, либо точку и отрезок, либо две точки. - + Cannot add a length constraint on an axis! Нельзя наложить ограничение длины на ось! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Выделить ровно одну линию или одну точку и одну линию или две точки или два круга из эскиза. - + This constraint does not make sense for non-linear curves. Это ограничение не имеет смысла для нелинейных кривых. - + Endpoint to edge tangency was applied instead. Вместо этого было применено касание конечной точки к краю. - - - - - - + + + + + + Select the right things from the sketch. Выберите нужные объекты из эскиза. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Выберите край, который не является B-сплайном. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. + Одна или две точки ограничения объекта были удалены, поскольку последнее ограничение, применяемое внутри, также применяется к точке на объекте. - + Select either several points, or several conics for concentricity. Выберите либо несколько точек, либо несколько окружностей для концентричности. - + Select either one point and several curves, or one curve and several points Выберите либо одну точку и несколько кривых, либо одну кривую и несколько точек - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Выберите либо одну точку и несколько кривых, либо одну кривую и несколько точек для точкиНаОбъекте, либо несколько точек для совпадения, либо несколько окружностей для концентричности. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Ни одна из выбранных точек не была ограничена на соответствующие кривые, поскольку они являются частями одного и того же элемента, потому что они и внешняя геометрия, или потому, что край не является допустимым. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Ни одна из выбранных точек не была ограничена соответствующими кривыми либо потому, что они являются частями одного и того же элемента, либо потому, что они являются внешней геометрией. - + Cannot add a length constraint on this selection! Невозможно добавить ограничение длины для этого выделения! - - - - + + + + Select exactly one line or up to two points from the sketch. Выберите один отрезок или две точки эскиза. - + Cannot add a horizontal length constraint on an axis! Нельзя наложить ограничение длины на ось! - + Cannot add a fixed x-coordinate constraint on the origin point! Невозможно ограничить X-координату точки начала координат! - - + + This constraint only makes sense on a line segment or a pair of points. Это ограничение имеет смысл только для сегмента линии или пары точек. - + Cannot add a vertical length constraint on an axis! Нельзя наложить ограничение длины на ось! - + Cannot add a fixed y-coordinate constraint on the origin point! Невозможно ограничить Y-координату точки начала координат! - + Select two or more lines from the sketch. Выберите два или более отрезков эскиза. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Одно выбранное ребро не является допустимой линией. - - + + Select at least two lines from the sketch. Нужно выделить как минимум две линии. - + The selected edge is not a valid line. Выделенное ребро некорректно. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2897,35 +2897,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Допустимы следующие комбинации: две кривые; концевая точка и кривая; две концевых точки; две кривых и точка. - + Select some geometry from the sketch. perpendicular constraint Выделите геометрические элементы на эскизе. - - + + Cannot add a perpendicularity constraint at an unconnected point! Не удаётся наложить ограничение перпендикулярности на точку, так как выделенная точка не является концом кривой. - - + + One of the selected edges should be a line. Один из выбранных элементов должен быть линией. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Применена касательность конечной точки к конечной точке. Ограничение совпадения было удалено. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Было применено касание конечной точки к краю. Точка ограничения объекта удалена. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2933,67 +2933,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Существует несколько способов применения этого ограничения. Допустимые комбинации: две кривые; конечная точка и кривая; две конечные точки; две кривые и точка. - + Select some geometry from the sketch. tangent constraint Выделите геометрические элементы на эскизе. - - - + + + Cannot add a tangency constraint at an unconnected point! Не удаётся наложить ограничение касательности на точку, так как выделенная точка не является концом кривой. - - + + Tangent constraint at B-spline knot is only supported with lines! Зависимость касательной в узле B-сплайн поддерживается только линиями! - + B-spline knot to endpoint tangency was applied instead. Вместо этого был применен узел B-сплайна к касанию конечной точки. - - + + Wrong number of selected objects! Неправильное количество выбранных объектов! - - + + With 3 objects, there must be 2 curves and 1 point. С 3 объектами должно быть 2 кривых и 1 точка. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Сначала выделите одну или несколько окружностей или дуг окружности из эскиза. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Выберите либо только один или несколько полюсов B-сплайна, либо только одну или несколько дуг или окружностей из эскиза, но не смешивайте их. - - - + + + Constraint only applies to arcs or circles. Ограничение применимо только к дугам или окружностям. - - + + Select one or two lines from the sketch. Or select two edges and a point. Нужно выделить одну линию, или две линии, или две кривые и точку. @@ -3008,88 +3008,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Задать ограничение угла между параллельными линиями невозможно. - + Cannot add an angle constraint on an axis! Наложить ограничение угла на ось невозможно! - + Select two edges from the sketch. Выберите два ребра в эскизе. - + Select two or more compatible edges. Выберите совместимые рёбра, два или более. - + Sketch axes cannot be used in equality constraints. Оси эскиза нельзя использовать в ограничениях равенства. - + Equality for B-spline edge currently unsupported. Равенство для края B-сплайна в настоящее время не поддерживается. - - - - + + + + Select two or more edges of similar type. Выберите рёбра аналогичного типа, два или более. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Выделите две точки и линию симметрии, либо две точки и точку симметрии, либо линию и точку симметрии. - - + + Cannot add a symmetry constraint between a line and its end points. Невозможно добавить ограничение симметрии между линией и её конечными точками. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Не удается добавить ограничение симметрии, так как обе точки являются концами линии, задающей ось симметрии. - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Выберите две конечные точки линий, которые будут выступать в качестве лучей, и ребро, представляющее собой границу. Первая выбранная точка соответствует индексу n1, вторая — n2, а значение привязки задает отношение n2/n1. - + Selected objects are not just geometry from one sketch. Выбранные объекты не являются только геометрией из одного эскиза. - + Cannot create constraint with external geometry only. Невозможно создать ограничение с использованием только внешней геометрии. - + Incompatible geometry is selected. Выбрана несовместимая геометрия. - - - - - + + + + + Select constraints from the sketch. Выделить ограничения в эскизе. @@ -3111,9 +3111,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Укажите степень B-сплайна, между 1 и %1: + - CAD Kernel Error Ошибка ядра CAD @@ -3256,14 +3256,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Для удаления выравнивания осей требуется выбрать по крайней мере один не-внешний геометрический элемент - - + + Unsupported visual layer operation Неподдерживаемая операция визуального слоя - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted В настоящее время не поддерживается перемещение внешней геометрии на другой визуальный слой. Внешняя геометрия будет опущена @@ -3335,7 +3335,7 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Translate parameters - Translate parameters + Перевести параметры @@ -3647,12 +3647,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Длина: - + Refractive index ratio Отношение показателей преломления - + Ratio n2/n1: Отношение n2/n1: @@ -3660,72 +3660,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Обычные - + Construction Конструкция - + Internal Внутренний - + External Внешний - + All types Все типы - + Point Точка - + Line Линия - + Circle Окружность - + Ellipse Эллипс - + Arc of circle Дуга окружности - + Arc of ellipse Дуга эллипса - + Arc of hyperbola Дуга гиперболы - + Arc of parabola Дуга параболы - + B-Spline B-сплайн @@ -3848,27 +3848,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Выбрать вертикальную ось - + Layer Слой - + Layer 0 Слой 0 - + Layer 1 Слой 1 - + Hidden Скрыто - + Delete Удалить @@ -4071,7 +4071,7 @@ reflected on copies Number of sides: - Number of sides: + Количество сторон: @@ -4183,11 +4183,11 @@ Requires to re-enter edit mode to take effect. 'Separated tools': Individual tools for each dimensioning constraint. 'Both': You will have both the 'Dimension' tool and the separated tools. This setting is only for the toolbar. Whichever you choose, all tools are always available in the menu and through shortcuts. - Select the type of dimensioning constraints for your toolbar: -'Single tool': A single tool for all dimensioning constraints in the toolbar: Distance, Distance X / Y, Angle, Radius. (Others in dropdown) -'Separated tools': Individual tools for each dimensioning constraint. -'Both': You will have both the 'Dimension' tool and the separated tools. -This setting is only for the toolbar. Whichever you choose, all tools are always available in the menu and through shortcuts. + Выберите тип размерных ограничений для панели инструментов: +«Один инструмент»: один инструмент для всех размерных ограничений на панели инструментов: Расстояние, Расстояние X / Y, Угол, Радиус. (Другие в раскрывающемся списке) +«Отдельные инструменты»: отдельные инструменты для каждого размерного ограничения. +«Оба»: у вас будет как инструмент «Измерение», так и отдельные инструменты. +Этот параметр предназначен только для панели инструментов. Что бы вы ни выбрали, все инструменты всегда доступны в меню и с помощью ярлыков. @@ -4195,10 +4195,10 @@ This setting is only for the toolbar. Whichever you choose, all tools are always 'Auto': The tool will apply radius to arcs and diameter to circles. 'Diameter': The tool will apply diameter to both arcs and circles. 'Radius': The tool will apply radius to both arcs and circles. - While using the Dimension tool you may choose how to handle circles and arcs: -'Auto': The tool will apply radius to arcs and diameter to circles. -'Diameter': The tool will apply diameter to both arcs and circles. -'Radius': The tool will apply radius to both arcs and circles. + При использовании инструмента «Размер» вы можете выбрать, как обрабатывать круги и дуги: +«Авто»: инструмент применит радиус к дугам и диаметр к кругам. +«Диаметр»: инструмент применяет диаметр как к дугам, так и к окружностям. +«Радиус»: инструмент применит радиус как к дугам, так и к окружностям. @@ -4208,7 +4208,7 @@ This setting is only for the toolbar. Whichever you choose, all tools are always On-View-Parameters: - On-View-Parameters: + Параметры просмотра: @@ -4741,120 +4741,120 @@ However, no constraints linking to the endpoints were found. Настройки - - - - - - - - - - + + + + + + + + + + Construction - Конструктор + Конструкция - + Elements Элементы - - - - + + + + Point Точка - - - - - - - - - - + + + + + + + + + + Internal Внутренний - - - - + + + + Line Линия - - - - + + + + Arc Дуга - - - - + + + + Circle Окружность - - - - + + + + Ellipse Эллипс - - - - + + + + Elliptical Arc Дуга эллипса - - - - + + + + Hyperbolic Arc Гиперболическая дуга - - - - + + + + Parabolic Arc Параболическая дуга - - - - + + + + BSpline Bсплайн - - - - + + + + Other Нечто - + Extended information Расширенная информация @@ -5075,112 +5075,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Редактировать эскиз - + A dialog is already open in the task panel Диалог уже открыт в панели задач - + Do you want to close this dialog? Вы хотите закрыть этот диалог? - + Invalid sketch Эскиз повреждён - + Do you want to open the sketch validation tool? Открыть инструмент проверки наброска? - + The sketch is invalid and cannot be edited. Эскиз содержит ошибки и не может быть изменен. - + Please remove the following constraint: Пожалуйста, удалите следующие ограничения: - + Please remove at least one of the following constraints: Пожалуйста, удалите по крайней мере одно из следующих ограничений: - + Please remove the following redundant constraint: Пожалуйста, удалите следующие избыточные ограничения: - + Please remove the following redundant constraints: Пожалуйста, удалите следующие избыточные ограничения: - + The following constraint is partially redundant: Следующее ограничение частично избыточно: - + The following constraints are partially redundant: Следующие ограничения частично избыточны: - + Please remove the following malformed constraint: Пожалуйста, удалите следующее искаженное ограничение: - + Please remove the following malformed constraints: Пожалуйста, удалите следующие некорректые ограничения: - + Empty sketch Эскиз не содержащий элементов - + Over-constrained: Чрезмерно ограничено: - + Malformed constraints: Неправильные ограничения: - + Redundant constraints: Избыточные ограничения: - + Partially redundant: Частично избыточны: - + Solver failed to converge Решатель не смог сместиться - + Under constrained: Без ограничений: - + %n DoF(s) %n DoF(Степени свободы) @@ -5190,7 +5190,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Полностью ограничен @@ -5288,8 +5288,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Задать диаметр окружности или дуги @@ -5297,8 +5297,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Исправляет радиус/диаметр окружности или дуги @@ -5306,8 +5306,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Зафиксировать радиус окружности или дуги @@ -5321,70 +5321,25 @@ This is done by analyzing the sketch geometries and constraints. Создает простую копию геометрии, взяв за основу последнюю выделенную точку - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Создать дугу, указав её конечные точки и точку вдоль дуги - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Создать окружность, проходящую через три точки - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Создать дугу по её центру и её конечным точкам - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Создать дугу эллипса по центру, большому радиусу и конечным точкам - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Создать дугу гиперболы по ее центру, большому радиусу и конечным точкам - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Создать дугу параболы по её фокусу, вершине и конечным точкам - - Sketcher_CreateBSpline - + B-spline by control points B-сплайн по контрольным точкам - - + + Create a B-spline by control points Создать B-сплайн по контрольным точкам @@ -5392,35 +5347,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Создать круг, используя его центр и периферийную точку - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Создать дугу эллипса по большому диаметру и точке - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Создать эллипс по центру и двум радиусам - - Sketcher_CreateFillet - - + + Creates a radius between two lines Создает скругление между двумя линиями @@ -5428,8 +5365,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Создать правильный семиугольник @@ -5437,8 +5374,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Создать правильный шестиугольник @@ -5454,14 +5391,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Создать правильный восьмиугольник + - Create a regular polygon by its center and by one corner Создать правильный многоугольник по центру и одному углу @@ -5469,8 +5406,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Создать правильный пятиугольник @@ -5478,8 +5415,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Скругление с сохранением ограничений и точки пересечения @@ -5503,8 +5440,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Создать квадрат @@ -5512,8 +5449,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Создать правильный треугольник @@ -5521,13 +5458,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Периодический B-сплайн по контрольным точкам + - Create a periodic B-spline by control points Создать периодический B-сплайн по контрольным точкам @@ -5926,7 +5863,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more и еще %1 @@ -6149,46 +6086,46 @@ The grid spacing change if it becomes smaller than this number of pixel.Sketch имеет частично избыточные ограничения! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Параболы были перенесены. Перемещенные файлы не будут открыты в предыдущих версиях FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Ошибки @@ -6224,16 +6161,16 @@ The grid spacing change if it becomes smaller than this number of pixel.Ограничение имеет неверную индексную информацию и является неправильным. + + + - - - - - + + Invalid Constraint @@ -6250,12 +6187,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Не удалось добавить дугу эллипса - + Cannot create arc of hyperbola from invalid angles, try again! Невозможно создать дугу гиперболы с недействительными углами. Попробуйте еще раз! - + Cannot create arc of hyperbola Нельзя создать дугу гиперболы @@ -6275,8 +6212,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Ошибка при создании полюса B-сплайна - + Error creating B-spline Ошибка создания B-сплайна @@ -6332,17 +6269,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Не удалось добавить строку - - - - - - - + + + + + + + Tool execution aborted Выполнение инструмента прервано @@ -6377,9 +6314,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Не удалось обрезать ребро - + Value Error Ошибка значения @@ -6431,24 +6368,24 @@ The grid spacing change if it becomes smaller than this number of pixel. Failed to scale - Failed to scale + Не удалось масштабировать Failed to translate - Failed to translate + Не удалось перевести Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-сплайн узлами - - + + Create a B-spline by knots Создать B-сплайн с помощью узлов @@ -6456,13 +6393,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Периодический B-сплайн узлами + - Create a periodic B-spline by knots Создать периодический B-сплайн узлами @@ -6568,12 +6505,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Создать B-сплайн по узлам - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Создать B-сплайн по узлам, т.е. путем интерполяции, в эскизе. @@ -6581,12 +6518,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Создать периодический B-сплайн по узлам - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Создайте периодический B-сплайн по узлам, т.е. путем интерполяции, в эскизе. @@ -6594,12 +6531,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Размер - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6637,12 +6574,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Ограничение радиуса - + Fix the radius of a circle or an arc Зафиксировать радиус окружности или дуги @@ -6784,7 +6721,7 @@ Left clicking on empty space will validate the current constraint. Right clickin This concerns the datum constraints (e.g. distance).If you activate Clone, the tool will copy the datum.Else it will try to replace them with equalities. - This concerns the datum constraints (e.g. distance).If you activate Clone, the tool will copy the datum.Else it will try to replace them with equalities. + Это касается ограничений датума (например, расстояния). Если вы активируете «Клонировать», инструмент скопирует датум. В противном случае он попытается заменить их равенствами. @@ -6817,8 +6754,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Создайте два прямоугольника один в другом с постоянной толщиной. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6832,12 +6769,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Горизонтальная вертикальная - + Constrains a single line to either horizontal or vertical. Ограничивает одну линию горизонтальной или вертикальной. @@ -6845,12 +6782,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Горизонтальная вертикальная - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Ограничивает одну линию горизонталью или вертикалью, в зависимости от того, что ближе к текущему выравниванию. @@ -6858,12 +6795,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Изменений кривой - + Curve Edition tools. Инструменты изменения кривой. @@ -6871,12 +6808,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Слоты - + Slot tools. Инструмент слотов. @@ -6884,12 +6821,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Создать дуговой слот - + Create an arc slot in the sketch Создать арку в эскизе @@ -6897,12 +6834,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Ограничение наложения точек - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Создайте зависимость совпадения между точками или зафиксируйте точку на ребре, или зависимость концентричности между кругами, дугами и эллипсами @@ -7024,12 +6961,12 @@ Left clicking on empty space will validate the current constraint. Right clickin Line pattern of normal edges. - Line pattern of normal edges. + Шаблон линии нормальных краев. Width of normal edges. - Width of normal edges. + Ширина нормальных краев. @@ -7049,12 +6986,12 @@ Left clicking on empty space will validate the current constraint. Right clickin Line pattern of construction edges. - Line pattern of construction edges. + Шаблон линий краев конструкции. Width of construction edges. - Width of construction edges. + Ширина строительных краев. @@ -7074,12 +7011,12 @@ Left clicking on empty space will validate the current constraint. Right clickin Line pattern of internal aligned edges. - Line pattern of internal aligned edges. + Шаблон линии внутренних выровненных краев. Width of internal aligned edges. - Width of internal aligned edges. + Ширина внутренних выровненных кромок. @@ -7094,12 +7031,12 @@ Left clicking on empty space will validate the current constraint. Right clickin Line pattern of external edges. - Line pattern of external edges. + Шаблон линии внешних краев. Width of external edges. - Width of external edges. + Ширина внешних краев. @@ -7197,7 +7134,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Copies (+'U'/ -'J') - Copies (+'U'/ -'J') + Копии (+U'/ -'J') @@ -7205,7 +7142,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Sides (+'U'/ -'J') - Sides (+'U'/ -'J') + Стороны (+'U'/-'J') @@ -7213,7 +7150,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Keep original geometries (U) - Keep original geometries (U) + Сохранять оригинальные геометрии (U) @@ -7278,7 +7215,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Scale selected geometries. After selecting the center point you can either enter the scale factor, or select two reference points then scale factor = length(p2-center) / length(p1-center). - Scale selected geometries. After selecting the center point you can either enter the scale factor, or select two reference points then scale factor = length(p2-center) / length(p1-center). + Масштабируйте выбранную геометрию. После выбора центральной точки вы можете либо ввести масштабный коэффициент, либо выбрать две опорные точки, а затем масштабный коэффициент = длина (центр p2) / длина (центр p1). @@ -7286,12 +7223,12 @@ Left clicking on empty space will validate the current constraint. Right clickin Array transform - Array transform + Преобразование массива Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Перевести выбранные геометрии. Включить создание i*j копий. @@ -7304,7 +7241,7 @@ Left clicking on empty space will validate the current constraint. Right clickin This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. - This concerns the datum constraints like distances. If you activate Clone, then the tool will copy the datum. Else it will try to replace them with equalities between the initial geometries and the new copies. + Это касается ограничений исходных данных, таких как расстояния. Если вы активируете «Клонировать», инструмент скопирует данные. В противном случае он попытается заменить их равенствами между исходной геометрией и новыми копиями. @@ -7312,7 +7249,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Copies (+'U'/-'J') - Copies (+'U'/-'J') + Копии (+U'/ -'J') @@ -7320,7 +7257,70 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') - Rows (+'R'/-'F') + Строки (+'R'/-'F') + + + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts index 2598b6a495..e0f2492955 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Ustvari dvojnika - + Copy the geometry of another sketch Kopiraj geometrijo drugega očrta @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Omeji krožni lok ali krožnico - + Constrain an arc or a circle Omeji krožni lok ali krožnico - + Constrain radius Omeji polmer - + Constrain diameter Omeji premer - + Constrain auto radius/diameter Samodejno omeji polmer/premer @@ -180,24 +180,24 @@ - Center and end points - Središče in krajišči + Center and endpoints + Center and endpoints - - End points and rim point - Krajišči in točka na obodu + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Ustvari B-zlepek - + Create a B-spline in the sketch Ustvari B-zlepek v očrtu @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Ustvari krog - + Create a circle in the sketcher Ustvari krog v očrtovalniku - + Center and rim point Središče in točka na obodu - + 3 rim points 3 točke na obodu @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Ustvari stožnico - + Create a conic in the sketch Ustvari stožnico v očrtu - - Ellipse by center, major radius, point - Elipsa s središčem, velikim polmerom in točko + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Elipsa s periapsido, apoapsido in malim polmerom + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Lok elipse s središčem, velikim polmerom in končnima točkama + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Lok hiperbole s središčem, velikim polmerom in končnima točkama + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Lok parabole z goriščem, temenom in končnima točkama @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Ustvari zaokrožitev - + Create a fillet between two lines Ustvari zaokrožitev med dvema daljicama - + Sketch fillet Očrtna zaokrožitev - - Constraint-preserving sketch fillet - Očrtna zaokrožitev z ohranitvijo omejila + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Ustvari preprosti mnogokotnik - + Create a regular polygon in the sketcher Ustvari pravilni mnogokotnik v očrtovalniku - + Triangle Trikotnik - + Square Kvadrat - + Pentagon Petkotnik - + Hexagon Šestkotnik - + Heptagon Sedemkotnik - + Octagon Osemkotnik - + Regular polygon Pravilni mnogokotnik @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Kotno omejilo - + Fix the angle of a line or the angle between two lines Določi kót daljice ali kót med dvema daljicama @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Omeji zbir - + Block the selected edge from moving Prepreči premikanje izbranega robu @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Omeji sovpadanje - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Ustvari sovpadno omejilo za točke ali sosrediščno omejilo za kroge, loke in elipse @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Omeji premer - + Fix the diameter of a circle or an arc Določi premer krožnice ali krožnega loka @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Omeji razdaljo - + Fix a length of a line or the distance between a line and a vertex or between two circles Določi dolžino daljice ali razdaljo med daljico in ogliščem oz. med dvema krogoma @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Omeji vodoravno razdaljo - + Fix the horizontal distance between two points or line ends Določi vodoravno razdaljo med dvema točkama ali krajiščema @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Omeji navpično razdaljo - + Fix the vertical distance between two points or line ends Določi navpično razdaljo med dvema točkama ali krajiščema @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Omeji na enakost - + Create an equality constraint between two lines or between circles and arcs Ustvari enakostno omejilo med dvema črtama ali med krogi in loki @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Omeji na vodoravnost - + Create a horizontal constraint on the selected item Ustvari vodoravno omejilo na izbranem predmetu @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Zaklenjeno omejilo - + Create both a horizontal and a vertical distance constraint on the selected vertex Ustvari omejilo navpične in vodoravne oddaljenosti izbranega oglišča @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Omeji z vzporednostjo - + Create a parallel constraint between two lines Ustvari omejilo vzporednosti med dvema črtama @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Omeji s pravokotnostjo - + Create a perpendicular constraint between two lines Ustvari pravokotno omejilo med dvema črtama @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Omeji točko na predmet - + Fix a point onto an object Pritrdi točko na predmet @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Samodejno omeji polmer/premer - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Zakleni premer, če izbran krog, oz. polmer, če je izbran lok/tečaj zlepka @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Lomno omejilo (lomni zakon) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Ustvari omejitev lomnega zakona med dvema končnima točkama žarkov @@ -586,12 +586,12 @@ in robom, ki predstavlja mejo. CmdSketcherConstrainSymmetric - + Constrain symmetrical Omeji s somernostjo - + Create a symmetry constraint between two points with respect to a line or a third point Ustvari omejitev somernosti med dvema točkama @@ -601,12 +601,12 @@ glede na črto ali tretjo točko CmdSketcherConstrainTangent - + Constrain tangent Omeji z dotikalnostjo - + Create a tangent constraint between two entities Ustvari dotikalno omejilo med dvema prvinama @@ -614,12 +614,12 @@ glede na črto ali tretjo točko CmdSketcherConstrainVertical - + Constrain vertically Omeji na navpičnost - + Create a vertical constraint on the selected item Ustvari navpičnostno omejilo na izbranem predmetu @@ -666,12 +666,12 @@ glede na črto ali tretjo točko CmdSketcherCreate3PointCircle - + Create circle by three points Ustvari krog s tremi točkami - + Create a circle by 3 perimeter points Ustvari krog s trem točkami na obodu @@ -692,12 +692,12 @@ glede na črto ali tretjo točko CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Ustvari eliptični lok - + Create an arc of ellipse in the sketch Ustvari eliptični lok v očrtu @@ -705,12 +705,12 @@ glede na črto ali tretjo točko CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Ustvari hiperbolični lok - + Create an arc of hyperbola in the sketch Ustvari lok hiperbole v očrtu @@ -718,12 +718,12 @@ glede na črto ali tretjo točko CmdSketcherCreateArcOfParabola - + Create arc of parabola Ustvari metnični (paraboličen) lok - + Create an arc of parabola in the sketch Ustvari lok parabole v očrtu @@ -731,12 +731,12 @@ glede na črto ali tretjo točko CmdSketcherCreateBSpline - + Create B-spline Ustvari B-zlepek - + Create a B-spline by control points in the sketch. Ustvari B-zlepek z nadzornimi točkami v očrtu. @@ -744,12 +744,12 @@ glede na črto ali tretjo točko CmdSketcherCreateCircle - + Create circle Ustvari krog - + Create a circle in the sketch Ustvari krog v očrtu @@ -757,12 +757,12 @@ glede na črto ali tretjo točko CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Ustvari elipso s tremi točkami - + Create an ellipse by 3 points in the sketch Ustvari elipso s tremi točkami v očrtu @@ -770,12 +770,12 @@ glede na črto ali tretjo točko CmdSketcherCreateEllipseByCenter - + Create ellipse by center Ustvari elipso s središčem - + Create an ellipse by center in the sketch Ustvari v očrtu elipso s središčem @@ -783,12 +783,12 @@ glede na črto ali tretjo točko CmdSketcherCreateFillet - + Create fillet Ustvari zaokrožitev - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -796,12 +796,12 @@ glede na črto ali tretjo točko CmdSketcherCreateHeptagon - + Create heptagon Ustvari sedemkotnik - + Create a heptagon in the sketch Ustvari sedemkotnik v očrtu @@ -809,12 +809,12 @@ glede na črto ali tretjo točko CmdSketcherCreateHexagon - + Create hexagon Ustvari šestkotnik - + Create a hexagon in the sketch Ustvari šestkotnik v očrtu @@ -848,12 +848,12 @@ glede na črto ali tretjo točko CmdSketcherCreateOctagon - + Create octagon Ustvari osemkotnik - + Create an octagon in the sketch Ustvari osemkotnik v očrtu @@ -861,12 +861,12 @@ glede na črto ali tretjo točko CmdSketcherCreatePentagon - + Create pentagon Ustvari petkotnik - + Create a pentagon in the sketch Ustvari petkotnik v očrtu @@ -874,12 +874,12 @@ glede na črto ali tretjo točko CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Ustvari sklenjeni B-zlepek - + Create a periodic B-spline by control points in the sketch. Ustvari sklenjeni B-zlepek z nadzornimi točkami v očrtu. @@ -887,12 +887,12 @@ glede na črto ali tretjo točko CmdSketcherCreatePoint - + Create point Ustvari točko - + Create a point in the sketch Ustvari točko v očrtu @@ -900,12 +900,12 @@ glede na črto ali tretjo točko CmdSketcherCreatePointFillet - + Create corner-preserving fillet Ustvari zaokrožitev z ohranitvijo kota - + Fillet that preserves intersection point and most constraints Zaokrožitev, ki ohranja presečno točko in večino omejil @@ -952,12 +952,12 @@ glede na črto ali tretjo točko CmdSketcherCreateRegularPolygon - + Create regular polygon Ustvari preprosti mnogokotnik - + Create a regular polygon in the sketch Ustvari pravilni mnogokotnik v očrtu @@ -965,12 +965,12 @@ glede na črto ali tretjo točko CmdSketcherCreateSlot - + Create slot Ustvari utor - + Create a slot in the sketch Ustvari utor v očrtu @@ -978,12 +978,12 @@ glede na črto ali tretjo točko CmdSketcherCreateSquare - + Create square Ustvari kvadrat - + Create a square in the sketch Ustvari kvadrat v očrtu @@ -991,12 +991,12 @@ glede na črto ali tretjo točko CmdSketcherCreateTriangle - + Create equilateral triangle Ustvari enakostranični trikotnik - + Create an equilateral triangle in the sketch Ustvari enakostranični trikotnik v očrtu @@ -1069,12 +1069,12 @@ glede na črto ali tretjo točko CmdSketcherExtend - + Extend edge Podaljšaj rob - + Extend an edge with respect to the picked position Podaljšaj rob glede na izbran položaj @@ -1082,12 +1082,12 @@ glede na črto ali tretjo točko CmdSketcherExternal - + Create external geometry Ustvari zunanjo geometrijo - + Create an edge linked to an external geometry Ustvari rob povezan z zunanjo geometrijo @@ -1425,12 +1425,12 @@ To bo izbrisalo lastnosti "Podpore", če sploh obstajajo. CmdSketcherSplit - + Split edge Presekaj rob - + Splits an edge into two while preserving constraints Razdeli rob na dva dela in ohrani omejila @@ -1477,12 +1477,12 @@ To bo izbrisalo lastnosti "Podpore", če sploh obstajajo. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Omogoči/onemogoči omejilo - + Activates or deactivates the selected constraints Omogoči ali onemogoči izbrana omejila @@ -1503,12 +1503,12 @@ To bo izbrisalo lastnosti "Podpore", če sploh obstajajo. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Preklopi med gonilnim in sklicnim omejilom - + Set the toolbar, or the selected constraints, into driving or reference mode Nastavi orodno vrstico ali mejilo @@ -1518,12 +1518,12 @@ na gnani oz. sklicni način CmdSketcherTrimming - + Trim edge Prireži rob - + Trim an edge with respect to the picked position Prireži rob glede na izbrani položaj @@ -1582,79 +1582,79 @@ neveljavna omejila, izrojene geometrije, ... Command - + Add 'Lock' constraint Dodaj zaklepno omejilo - + Add relative 'Lock' constraint Dodaj odnosno zaklepno omejilo - + Add fixed constraint Dodaj pritrditveno omejilo - + Add 'Block' constraint Dodaj zbirno omejilo - + Add block constraint Dodaj zbirno omejilo - - + + Add coincident constraint Dodaj omejilo sovpadanja - - + + Add distance from horizontal axis constraint Dodaj omejilo oddaljenosti od vodoravne osi - - + + Add distance from vertical axis constraint Dodaj omejilo oddaljenosti od navpične osi - - + + Add point to point distance constraint Dodaj omejilo razdalje med točkama - - + + Add point to line Distance constraint Dodaj omejilo razdalje med točko in daljico - - + + Add circle to circle distance constraint Dodaj omejilo razdalje med krogoma - + Add circle to line distance constraint Dodaj omejilo razdalje med krogom in črto - - - - - - + + + + + + Add length constraint Dodaj dolžinsko omejilo @@ -1677,8 +1677,8 @@ neveljavna omejila, izrojene geometrije, ... - - + + Add Distance constraint Dodaj omejilo razdalje @@ -1704,7 +1704,7 @@ neveljavna omejila, izrojene geometrije, ... - + Add Symmetry constraints Dodaj somernostna omejila @@ -1715,220 +1715,220 @@ neveljavna omejila, izrojene geometrije, ... Dodaj omejila razdalje - + Add Horizontal constraint Dodaj vodoravnostno omejilo - + Add Vertical constraint Dodaj navpičnostno omejilo - + Add Block constraint Dodaj zbirno omejilo - + Add Angle constraint Dodaj kotno omejilo - - - - + + + + Add Equality constraint Dodaj enakostno omejilo - + Add Equality constraints Dodaj enakostna omejila - - - + + + Add Radius constraint Dodaj polmerno omejilo - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Dodaj sosrediščno in dolžinsko omejilo - + Add DistanceX constraint Dodaj omejilo razdalje po X-u - + Add DistanceY constraint Dodaj omejilo razdalje po Y-u - + Add point to circle Distance constraint Dodaj omejilo razdalje med točko in krožnico - - + + Add point on object constraint Dodaj točko predmetnemu omejilu - - + + Add point to point horizontal distance constraint Dodaj omejilo vodoravne razdalje med točkama - + Add fixed x-coordinate constraint Dodaj omejilo nespremelnjive sorednice x - - + + Add point to point vertical distance constraint Dodaj omejilo navpične razdalje med točkama - + Add fixed y-coordinate constraint Dodaj omejilo nespremelnjive sorednice y - - + + Add parallel constraint Dodaj vzporednostno omejilo - - - - - - - + + + + + + + Add perpendicular constraint Dodaj pravokotnostno omejilo - + Add perpendicularity constraint Dodaj pravokotnostno omejilo - + Swap coincident+tangency with ptp tangency Zamenjaj sovpadanje + dotikalnost z dotikalnostjo vzporednice skozi točko - + Swap PointOnObject+tangency with point to curve tangency Zamenjaj TočkaNaPredmetu+dotikalnost s točka v dotikalnost na krivuljo - - - - - - - + + + + + + + Add tangent constraint Dodaj dotikalnostno omejilo - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Dodaj točko dotikalnega omejila - - - - + + + + Add radius constraint Dodaj polmerno omejilo - - - - + + + + Add diameter constraint Dodaj premerno omejilo - - - - + + + + Add radiam constraint Dodaj polmer-premerno omejilo - - - - + + + + Add angle constraint Dodaj kotno omejilo - - + + Add equality constraint Dodaj enakostno omejilo - - - - - + + + + + Add symmetric constraint Dodaj somernostno omejilo - + Add Snell's law constraint Dodaj lomno omejilo - + Toggle constraint to driving/reference Preklapi med gonilnostjo/gnanostjo omejila - + Activate/Deactivate constraint Omogoči/onemogoči omejilo @@ -2013,7 +2013,7 @@ neveljavna omejila, izrojene geometrije, ... Dodaj očrtni eliptični lok - + Add sketch arc of hyperbola Dodaj očrtni kosatični (hiperbolični) lok @@ -2157,8 +2157,8 @@ neveljavna omejila, izrojene geometrije, ... Posodobi navidezni prostor omejila - + Add auto constraints Dodaj samodejna omejila @@ -2183,12 +2183,12 @@ neveljavna omejila, izrojene geometrije, ... Vleci krivuljo - + Drag Constraint Vleci omejilo - + Modify sketch constraints Spremeni očrtno omejilo @@ -2279,59 +2279,59 @@ neveljavna omejila, izrojene geometrije, ... Napaka samodejnega omejila: Nerešljiv očrt po uveljavitiv enakostnega omejila. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Ni mogoče uganiti presečišča krivulj. Poskusite dodati omejilo sovpadanja med vozlišči krivulj, ki jih nameravate zaokrožiti. - - + + BSpline Geometry Index (GeoID) is out of bounds. Kazalo geometrije B-zlepka (GeoID) je izven omejitev. - + You are requesting no change in knot multiplicity. Ne zahtevate spremembe večkratnosti vozla. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Priskrbljeno kazalo geometrije (GeoId) ni krivulja B-zlepek. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Oznaka vozla je izven meja. Upoštevajte, da ima v skladu z OCC zapisom prvi vozel oznako 1 in ne nič. - + The multiplicity cannot be increased beyond the degree of the B-spline. Večkratnost ne more biti povečana preko stopnje B-zlepka. - + The multiplicity cannot be decreased beyond zero. Večkratnost ne more biti zmanjšana pod ničlo. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC ne more zmanjšati večkratnost znotraj največjega dopustnega odstopanja. - + Knot cannot have zero multiplicity. Večkratnost vozla ne more biti nič. - + Knot multiplicity cannot be higher than the degree of the BSpline. Večkratnost vozla ne more biti večja od stopnje B-zlepka. - + Knot cannot be inserted outside the BSpline parameter range. Vozla ni mogoče vstaviti izven razpona določilke B-zlepka. @@ -2411,127 +2411,11 @@ neveljavna omejila, izrojene geometrije, ... Ne pripnite + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ neveljavna omejila, izrojene geometrije, ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ neveljavna omejila, izrojene geometrije, ... - - - Wrong selection Napačna izbira @@ -2613,106 +2613,106 @@ neveljavna omejila, izrojene geometrije, ... Eden izmed izbranih mora biti v očrtu. - + Select an edge from the sketch. Izberite rob z očrta. - - - - - - + + + + + + Impossible constraint Nemogočo omejilo - - + + The selected edge is not a line segment. Izbrani rob ni črtni odsek. - - - + + + Double constraint Dvojna omejitev - + The selected edge already has a horizontal constraint! Izbran rob je že omejen na vodoravnost! - + The selected edge already has a vertical constraint! Izbran rob je že omejen na navpičnost! - - - + + + The selected edge already has a Block constraint! Izbran rob je že zbirno omejen! - + There are more than one fixed points selected. Select a maximum of one fixed point! Izbrana je več kot ena nepremična točka. Izberite največ eno nepremično točko! - - - + + + Select vertices from the sketch. Izberite oglišča z očrta. - + Select one vertex from the sketch other than the origin. Izberite oglišče z očrta, ki ni izhodišče. - + Select only vertices from the sketch. The last selected vertex may be the origin. Izberite le oglišča z očrta. Zadnje izbrano oglišče je lahko izhodišče. - + Wrong solver status Napačen stanje reševalnika - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Zbirnega omejila ni mogoče dodati, če očrt ni rešen ali ima čezmerna in nasprotujoča si omejila. - + Select one edge from the sketch. Izberite en rob na očrtu. - + Select only edges from the sketch. Izberite le robove z očrta. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Niso izbrani 3 predmeti - + Error Napaka @@ -2722,80 +2722,80 @@ neveljavna omejila, izrojene geometrije, ... Nepričakovana napaka. Več lahko najdete v poročevalnem pogledu. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Namesto tega je bila uporabljena tangentnost med končnima točkama. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Izberite dve ali več oglišč na očrtu za sovpadno omejilo ali dva kroga, loka, eliptična loka ali dve elipsi za sosrediščno omejilo. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Izberite na očrtu dve oglišči za sovpadno omejilo ali dva kroga, loka, eliptična loka ali dve elipsi za sosrediščno omejilo. - + Select exactly one line or one point and one line or two points from the sketch. Izberite natanko eno črto ali točko in eno črto ali dve točki na skici. - + Cannot add a length constraint on an axis! Omejitve dolžine ni mogoče dodati na os! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Izberite na očrtu natanko eno črto ali točko in eno črto ali dve točki ali pa dva kroga. - + This constraint does not make sense for non-linear curves. To omejilo ni smiselno za nepreme krivulje. - + Endpoint to edge tangency was applied instead. Namesto tega je bila uporabljena dotikalnost iz krajišča na rob. - - - - - - + + + + + + Select the right things from the sketch. Izberite prave stvari na skici. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Izberite rob, ki ni utež B-zlepka. @@ -2805,92 +2805,92 @@ neveljavna omejila, izrojene geometrije, ... One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Nobena od izbranih točk ni bila omejena na ustrezne krivulje, ker so bodisi del istega predmeta, bodisi so oboji zunanje geometrije, ali pa rob ni izberljiv. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Nobena od izbranih točk ni bila omejena na ustrezno krivuljo, ker ali so del istega elementa ali sta obe zunanji geometriji. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Izberite v očrtu natanko eno daljico ali največ dve točki. - + Cannot add a horizontal length constraint on an axis! Omejitve vodoravne dolžine ni mogoče dodati na os! - + Cannot add a fixed x-coordinate constraint on the origin point! Omejila z nespremenljivo sorednico x ni mogoče dodati na izhodiščno točko! - - + + This constraint only makes sense on a line segment or a pair of points. To omejilo je smiselno le za raven odsek ali par točk. - + Cannot add a vertical length constraint on an axis! Omejitve navpične dolžine ni mogoče dodati na os! - + Cannot add a fixed y-coordinate constraint on the origin point! Omejila z nespremenljivo sorednico y ni mogoče dodati na izhodiščno točko! - + Select two or more lines from the sketch. Izberite v očrtu dve daljici ali več. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Izberite v očrtu vsaj dve daljici. - + The selected edge is not a valid line. Izbrani rob ni veljavna črta. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni točki, dve krivulji in točka. - + Select some geometry from the sketch. perpendicular constraint Izberite v očrtu neko geometrijo. - - + + Cannot add a perpendicularity constraint at an unconnected point! Pravokotne omejitve ni mogoče dodati na nepovezano točko! - - + + One of the selected edges should be a line. En od izbranih robov mora biti črta. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Uporabljena je bla dotikalnost med krajiščema. Omejilo sovpadanja je bilo izbrisano. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Uporabljena je bila dotikalnost med krajiščem in robom. Omejitev točke na predmet je bila izbrisana. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni točki, dve krivulji in točka. - + Select some geometry from the sketch. tangent constraint Izberite v očrtu neko geometrijo. - - - + + + Cannot add a tangency constraint at an unconnected point! Tangentne omejitve ni mogoče dodati na nepovezano točko! - - + + Tangent constraint at B-spline knot is only supported with lines! Dotikalno omejilo v vozlu B-zlepka je podprto le za daljice! - + B-spline knot to endpoint tangency was applied instead. Namesto tega je bila uporabljena dotikalnost vozla B-zlepka na krajišče. - - + + Wrong number of selected objects! Napačno število izbranih objektov! - - + + With 3 objects, there must be 2 curves and 1 point. Pri 3-h objektih morata obstajati 2 krivulji in 1 točka. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Izberite v očrtu enega ali več lokov oz. krogov. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Izberite bodisi enega ali več tečajev B-zlepka, bodisi enega ali več lokov ali krogov skice, toda ne mešano. - - - + + + Constraint only applies to arcs or circles. Omejitev velja samo za loke ali krožnice. - - + + Select one or two lines from the sketch. Or select two edges and a point. Izberite v očrtu bodisi eno ali dve daljici, bodisi dva robova in točko. @@ -3013,88 +3013,88 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to Kotnega omejila ni mogoče nastaviti za dve vzporedni črti. - + Cannot add an angle constraint on an axis! Kotne omejitve ni mogoče dodati na os! - + Select two edges from the sketch. Izberite v očrtu dva robova. - + Select two or more compatible edges. Izberite dva ali več primernih robov. - + Sketch axes cannot be used in equality constraints. Osi očrta ni mogoče uporabiti z enakostnimi omejili. - + Equality for B-spline edge currently unsupported. Enakost za B-zlepek rob je trenutno nepodprta. - - - - + + + + Select two or more edges of similar type. Izberite dva ali več robov podobne vrste. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Izberite dve točki in somernico, dve točki in točko somernosti ali črto in točko somernosti na očrtu. - - + + Cannot add a symmetry constraint between a line and its end points. Somernostnega omejila ni mogoče dati med črto in njenima krajiščema. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Omejitve somernosti ni mogoče dodati med črto in njenima krajiščema! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Izberite dve krajišči daljic, ki naj predstavljata žarka, in rob, ki naj predstavlja mejo. Prva izbrana točka ustreza kazalu n1, druga kazalu n2 in sklicna vrednost nastavi razmerje n2/n1. - + Selected objects are not just geometry from one sketch. Izbrani predmeti niso le geometrija v očrtu. - + Cannot create constraint with external geometry only. Omejila ni mogoče ustvariti le z zunanjimi geometrijami. - + Incompatible geometry is selected. Izbrana je nezdružljiva geometrija. - - - - - + + + + + Select constraints from the sketch. Izberite omejila v očrtu. @@ -3116,9 +3116,9 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to Določite stopnjo B-zlepka, ki naj bo med 1 in %1: + - CAD Kernel Error Napaka CAD Jedra @@ -3261,14 +3261,14 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to Za ukinitev poravnave z osmi mora biti izbrana vsaj ena nezunanja geometrijska prvina - - + + Unsupported visual layer operation Nepodprto vidno dejanje plasti - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Trenutno ni podprto premikanje zunanjih geometrij v drugo videzno plast. Zunanje gometrije bodo opuščene @@ -3653,12 +3653,12 @@ Zaustavljati, Zapirati (pot), Zastirati (svetlobo, pogled) Dolžina: - + Refractive index ratio Lomni količnik - + Ratio n2/n1: Razmerje n2/n1: @@ -3666,72 +3666,72 @@ Zaustavljati, Zapirati (pot), Zastirati (svetlobo, pogled) SketcherGui::ElementFilterList - + Normal Običajno - + Construction Pomožni način - + Internal Notranja - + External Zunanji - + All types Vse vrste - + Point Točka - + Line Črta - + Circle Krog - + Ellipse Elipsa - + Arc of circle Krožni lok - + Arc of ellipse Eliptični lok - + Arc of hyperbola Hiperbolični lok - + Arc of parabola Paraboličen lok - + B-Spline B-zlepek @@ -3854,27 +3854,27 @@ Zaustavljati, Zapirati (pot), Zastirati (svetlobo, pogled) Izberite navpično os - + Layer Plast - + Layer 0 Plast 0 - + Layer 1 Plast 1 - + Hidden Skrito - + Delete Izbriši @@ -4747,120 +4747,120 @@ However, no constraints linking to the endpoints were found. Nastavitve - - - - - - - - - - + + + + + + + + + + Construction Pomožni način - + Elements Prvine - - - - + + + + Point Točka - - - - - - - - - - + + + + + + + + + + Internal Notranja - - - - + + + + Line Črta - - - - + + + + Arc Lok - - - - + + + + Circle Krog - - - - + + + + Ellipse Elipsa - - - - + + + + Elliptical Arc Eliptični lok - - - - + + + + Hyperbolic Arc Hiperbolični Lok - - - - + + + + Parabolic Arc Parabolični Lok - - - - + + + + BSpline B-zlepek - - - - + + + + Other Drugo - + Extended information Podrobnejši podatki @@ -5081,112 +5081,112 @@ Izvede se s pregledom geometrij in omejil očrta. SketcherGui::ViewProviderSketch - + Edit sketch Uredi očrt - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch Neveljaven očrt - + Do you want to open the sketch validation tool? Ali želite odprti orodje za preverjanje veljavnosti očrta? - + The sketch is invalid and cannot be edited. Očrt je neveljaven in ga ni mogoče urejati. - + Please remove the following constraint: Odstranite naslednjo omejilo: - + Please remove at least one of the following constraints: Odstranite vsaj eno od naslednjih omejil: - + Please remove the following redundant constraint: Odstranite naslednje čezmerno omejilo: - + Please remove the following redundant constraints: Odstranite naslednja čezmerna omejila: - + The following constraint is partially redundant: Naslednje omejilo je deloma čezmerno: - + The following constraints are partially redundant: Naslednja omejila so deloma čezmerna: - + Please remove the following malformed constraint: Odstranite naslednje narobe oblikovano omejilo: - + Please remove the following malformed constraints: Odstranite naslednja narobe oblikovana omejila: - + Empty sketch Prazen očrt - + Over-constrained: Preomejeno: - + Malformed constraints: Narobe oblikovana omejila: - + Redundant constraints: Čezmerna omejila: - + Partially redundant: Delno čezmerno: - + Solver failed to converge Reševalniku je zbliževanje spodletelo - + Under constrained: Podomejeno: - + %n DoF(s) %n prostostna stopnja @@ -5196,7 +5196,7 @@ Izvede se s pregledom geometrij in omejil očrta. - + Fully constrained Polnoomejen @@ -5294,8 +5294,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Določi premer krožnice ali krožnega loka @@ -5303,8 +5303,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Določi polmer oz. premer loka oz. kroga @@ -5312,8 +5312,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Določi polmer kroga ali loka @@ -5327,70 +5327,25 @@ Izvede se s pregledom geometrij in omejil očrta. Ustvari preprosto kopijo geometrije glede na zadnjo izbrano točko - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Ustvari lok s končnima točkama in točko na njem - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Ustvari krog s tremi točkami na obodu - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Ustvari lok s središčem in končnima točkama - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Ustvari eliptični lok s središčem, velikim polmerom in krajiščema - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Ustvari lok hiperbole s središčem, velikim polmerom in krajiščema - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Ustvari lok parabole z goriščem, ogliščem in krajiščema - - Sketcher_CreateBSpline - + B-spline by control points B-zlepek z nadzornimi točkami - - + + Create a B-spline by control points Ustvari B-zlepek z nadzornimi točkami @@ -5398,35 +5353,17 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Ustvari krog s središčem in točko na obodu - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Ustvari elipso z periapsido, apoapsido in malim polmerom - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Ustvari elipso s središčem, velikim polmerom in točko - - Sketcher_CreateFillet - - + + Creates a radius between two lines Ustvari lok me dvema daljicama @@ -5434,8 +5371,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Ustvari sedemkotnik s središčem in enim ogliščem @@ -5443,8 +5380,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Ustvari šestkotnik s središčem in enim ogliščem @@ -5460,14 +5397,14 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Ustvari osemkotnik s središčem in enim ogliščem + - Create a regular polygon by its center and by one corner Ustvari pravilni večkotnik z določitvijo središča in enega oglišča @@ -5475,8 +5412,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Ustvari petkotnik s središčem in enim ogliščem @@ -5484,8 +5421,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Zaokrožitev, ki ohrani omejila in presečne točke @@ -5509,8 +5446,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreateSquare + - Create a square by its center and by one corner Ustvari kvadrat s središčem in enim ogliščem @@ -5518,8 +5455,8 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Ustvari enakostranični trikotnik s središčem in enim ogliščem @@ -5527,13 +5464,13 @@ Izvede se s pregledom geometrij in omejil očrta. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Sklenjeni B-zlepek z nadzornimi točkami + - Create a periodic B-spline by control points Ustvari sklenjeni B-zlepek z nadzornimi točkami @@ -5934,7 +5871,7 @@ Eigen Sparse QR algoritem je optimiziran za redke razpredelnice; običajno hitre ViewProviderSketch - + and %1 more in še %1 @@ -6157,46 +6094,46 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Očrt vsebuje deloma čezmerna omejila! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabole so bile preseljene. Preseljenih datotek ne bo mogoče odpreti v prejšnjih FreeCADih! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Napaka @@ -6232,16 +6169,16 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Omejilo ima neveljavno informacijo kazala in je narobe oblikovano. + + + - - - - - + + Invalid Constraint @@ -6258,12 +6195,12 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Dodajanje eliptičnega loka spodletelo - + Cannot create arc of hyperbola from invalid angles, try again! Hiperboličnega loka ni mogoče ustvariti iz neveljavnih kotov. Poskusite ponovno! - + Cannot create arc of hyperbola Ni mogoče ustvariti hiperboličnega loka @@ -6283,8 +6220,8 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Napaka pri ustvarjanju B-zlepkovega tečaja - + Error creating B-spline Napaka pri ustvarjanju B-zlepka @@ -6340,17 +6277,17 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Dodajanje daljice spodletelo - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6385,9 +6322,9 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Prirezovanje roba spodletelo - + Value Error Napaka vrednosti @@ -6450,13 +6387,13 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-zlepek z vozli - - + + Create a B-spline by knots Ustvari B-zlepek z vozli @@ -6464,13 +6401,13 @@ Medčrtna razdalja se spremeni, če postane manjša od tega števila slikovnih t Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Sklenjeni B-zlepek z vozli + - Create a periodic B-spline by knots Ustvari sklenjeni B-zlepek skozi vozle @@ -6576,12 +6513,12 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Ustvari B-zlepek z vozli - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Ustvari B-zlepek z vozli, tj. z interpolacijo, na očrtu. @@ -6589,12 +6526,12 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Ustvari sklenjeni B-zlepek z vozli - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Ustvari sklenjeni B-zlepek z vozli, tj. z interpolacijo, na očrtu. @@ -6602,12 +6539,12 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre CmdSketcherDimension - + Dimension Mera - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6645,12 +6582,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Omeji polmer - + Fix the radius of a circle or an arc Določi polmer kroga ali loka @@ -6825,8 +6762,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6840,12 +6777,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6853,12 +6790,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6866,12 +6803,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6879,12 +6816,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6892,12 +6829,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6905,12 +6842,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Omeji sovpadanje - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7331,4 +7268,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr-CS.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr-CS.ts index b07f2c6fd2..5782b51fe9 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr-CS.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr-CS.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Indigo kopija - + Copy the geometry of another sketch Kopira geometriju druge skice @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Ograničenje kružnog luka ili kruga - + Constrain an arc or a circle Kotiraj kružni luk ili krug - + Constrain radius Ograničenje poluprečnika - + Constrain diameter Ograničenje prečnika - + Constrain auto radius/diameter Automatsko ograničenje poluprečnika i prečnika @@ -180,24 +180,24 @@ - Center and end points - Kružni luk pomoću centra + Center and endpoints + Centar i krajnje tačke - - End points and rim point + + Endpoints and rim point Kružni luk pomoću 3 tačke CmdSketcherCompCreateBSpline - + Create B-spline Napravi B-splajn krivu - + Create a B-spline in the sketch Napravi B-splajn krivu na skici @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Napravi kružnicu - + Create a circle in the sketcher Napravi kružnicu - + Center and rim point Kružnica pomoću centra - + 3 rim points Kružnica pomoću 3 tačke @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Napravi konusne preseke - + Create a conic in the sketch Napravi konusne preseke u skici - - Ellipse by center, major radius, point + + Ellipse by center, radius, rim point Elipsa pomoću centra, velike poluose i tačke - - Ellipse by periapsis, apoapsis, minor radius - Elipsa pomoću periapse, apoapse i male poluose + + Ellipse by axis endpoints, rim point + Elipsa pomoću krajnjih tačaka poluose i tačke - - Arc of ellipse by center, major radius, endpoints + + Arc of ellipse by center, radius, endpoints Luk elipse pomoću centra, velike poluose i krajnjih tačaka - - Arc of hyperbola by center, major radius, endpoints + + Arc of hyperbola by center, vertex, endpoints Luk hiperbole pomoću centra, realne poluose i krajnjih tačaka - + Arc of parabola by focus, vertex, endpoints Luk parabole pomoću fokusa, temena i krajnjih tačaka @@ -266,23 +266,23 @@ CmdSketcherCompCreateFillets - + Create fillet Napravi zaobljenje - + Create a fillet between two lines Napravi zaobljenje između dve linije - + Sketch fillet Zaobljenje skice - - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet Zaobljenje koje čuva ograničenja @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Napravi pravilni mnogougao - + Create a regular polygon in the sketcher Napravi pravilni mnogougao na skici - + Triangle Trougao - + Square Kvadrat - + Pentagon Petougao - + Hexagon Šestougao - + Heptagon Sedmougao - + Octagon Osmougao - + Regular polygon Pravilan mnogougao @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Ograničenje ugla - + Fix the angle of a line or the angle between two lines Kotiraj ugao duži ili ugao između dve duži @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Ograničenje blokiranjem - + Block the selected edge from moving Blokira pomeranje izabrane ivice @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Ograničenje podudarnosti - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Napravi ograničenje podudarnosti između tačaka, ili koncentrično ograničenje između krugova, lukova i elipsa @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Ograničenje prečnika - + Fix the diameter of a circle or an arc Kotiraj prečnik kruga ili luka @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Ograničenje rastojanja - + Fix a length of a line or the distance between a line and a vertex or between two circles Kotiraj dužinu linije, rastojanje između linije i temena ili rastojanje između dva kruga @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Ograničenje horizontalnog rastojanja - + Fix the horizontal distance between two points or line ends Kotiraj horizontalno rastojanje između dve tačke ili dve krajnje tačke @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Ograničenje vertikalnog rastojanja - + Fix the vertical distance between two points or line ends Kotiraj vertikalno rastojanje između dve tačke ili dve krajnje tačke @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Ograničenje jednakosti - + Create an equality constraint between two lines or between circles and arcs Napravi ograničenje jednakosti između dve duži ili između krugova i lukova @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Ograničenje horizontalnosti - + Create a horizontal constraint on the selected item Napravi ograničenje horizontalnosti na izabranoj stavki @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Ograničenje zaključavanjem - + Create both a horizontal and a vertical distance constraint on the selected vertex Napravi ograničenje horizontalnog i vertikalnog rastojanja na izabranom temenu @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Ograničenje paralelnosti - + Create a parallel constraint between two lines Napravi ograničenje paralelnosti između dve duži @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Ograničenje upravnosti - + Create a perpendicular constraint between two lines Napravi ograničenje upravnosti između dva geometrijska elementa @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Ograničenje tačka na objektu - + Fix a point onto an object Ograničenje tačke da bude vezana za objekat @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Automatsko ograničenje poluprečnika i prečnika - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Kotiraj prečnik ako izabereš krug ili poluprečnik ako izabereš luk ili pol splajna @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Ograničenje refrakcije (Snellov zakon) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Napravi ograničenje refrakcije (Snellov zakon) između dve krajnje tačke zraka @@ -586,12 +586,12 @@ i neke ivice koja predstavlja granicu. CmdSketcherConstrainSymmetric - + Constrain symmetrical Ograničenje simetričnosti - + Create a symmetry constraint between two points with respect to a line or a third point Napravi ograničenje simetričnosti između dve tačke @@ -601,12 +601,12 @@ u odnosu na pravu ili treću tačku CmdSketcherConstrainTangent - + Constrain tangent Ograničenje tangentnosti - + Create a tangent constraint between two entities Napravi tangentno ograničenje između dva entiteta @@ -614,12 +614,12 @@ u odnosu na pravu ili treću tačku CmdSketcherConstrainVertical - + Constrain vertically Ograničenje vertikalnosti - + Create a vertical constraint on the selected item Napravi ograničenje vertikalnosti na izabranoj stavki @@ -666,12 +666,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreate3PointCircle - + Create circle by three points Napravi kružnicu pomoću 3 tačke - + Create a circle by 3 perimeter points Napravi kružnicu pomoću 3 tačke na obimu @@ -692,12 +692,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Napravi luk elipse - + Create an arc of ellipse in the sketch Napravi luk elipse na skici @@ -705,12 +705,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Napravi luk hiperbole - + Create an arc of hyperbola in the sketch Napravi luk hiperbole na skici @@ -718,12 +718,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateArcOfParabola - + Create arc of parabola Napravi luk parabole - + Create an arc of parabola in the sketch Napravi luk parabole na skici @@ -731,12 +731,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateBSpline - + Create B-spline Napravi B-splajn krivu - + Create a B-spline by control points in the sketch. Napravi B-splajn krivu pomoću kontrolnih tačaka sa skice. @@ -744,12 +744,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateCircle - + Create circle Napravi kružnicu - + Create a circle in the sketch Napravi kružnicu na skici @@ -757,12 +757,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Napravi elipsu pomoću 3 tačke - + Create an ellipse by 3 points in the sketch Napravi elipsu pomoću 3 tačke na skici @@ -770,12 +770,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateEllipseByCenter - + Create ellipse by center Napravi elipsu pomoću centra - + Create an ellipse by center in the sketch Napravi elipsu pomoću centra na skici @@ -783,12 +783,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateFillet - + Create fillet Napravi zaobljenje - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -796,12 +796,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateHeptagon - + Create heptagon Napravi sedmougao - + Create a heptagon in the sketch Napravi sedmougao na skici @@ -809,12 +809,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateHexagon - + Create hexagon Napravi šestougao - + Create a hexagon in the sketch Napravi šestougao na skici @@ -848,12 +848,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateOctagon - + Create octagon Napravi osmougao - + Create an octagon in the sketch Napravi osmougao na skici @@ -861,12 +861,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreatePentagon - + Create pentagon Napravi petougao - + Create a pentagon in the sketch Napravi petougao na skici @@ -874,12 +874,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Napravi periodičnu B-splajn krivu - + Create a periodic B-spline by control points in the sketch. Napravi periodičnu B-splajn krivu pomoću kontrolnih tačaka sa skice. @@ -887,12 +887,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreatePoint - + Create point Napravi tačku - + Create a point in the sketch Napravi tačku na skici @@ -900,12 +900,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreatePointFillet - + Create corner-preserving fillet Napravi zaobljenje koje čuva ugao - + Fillet that preserves intersection point and most constraints Zaobljenje koje čuva presečnu tačku i većinu ograničenja @@ -952,12 +952,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateRegularPolygon - + Create regular polygon Napravi pravilni mnogougao - + Create a regular polygon in the sketch Napravi pravilni mnogougao na skici @@ -965,12 +965,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateSlot - + Create slot Napravi žljeb - + Create a slot in the sketch Napravi žljeb na skici @@ -978,12 +978,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateSquare - + Create square Napravi kvadrat - + Create a square in the sketch Napravi kvadrat na skici @@ -991,12 +991,12 @@ u odnosu na pravu ili treću tačku CmdSketcherCreateTriangle - + Create equilateral triangle Napravi jednakostranični trougao - + Create an equilateral triangle in the sketch Napravi jednakostranični trougao na skici @@ -1069,12 +1069,12 @@ u odnosu na pravu ili treću tačku CmdSketcherExtend - + Extend edge Produži ivicu - + Extend an edge with respect to the picked position Produži ivicu u odnosu na izabran položaj @@ -1082,12 +1082,12 @@ u odnosu na pravu ili treću tačku CmdSketcherExternal - + Create external geometry Spoljašnja geometrija - + Create an edge linked to an external geometry Napravi ivicu vezanu za spoljašnju geometriju @@ -1425,12 +1425,12 @@ Ovo će obrisati osobinu 'Osnova', ako postoji. CmdSketcherSplit - + Split edge Podeli ivicu - + Splits an edge into two while preserving constraints Deli ivicu na dva dela uz očuvanje ograničenja @@ -1477,12 +1477,12 @@ Ovo će obrisati osobinu 'Osnova', ako postoji. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Aktiviraj/deaktiviraj ograničenje - + Activates or deactivates the selected constraints Aktivira ili deaktivira izabrana ograničenja @@ -1503,12 +1503,12 @@ Ovo će obrisati osobinu 'Osnova', ako postoji. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Ograničavajuće/referentne kote - + Set the toolbar, or the selected constraints, into driving or reference mode Podesite paletu sa alatkama ili izabrana ograničenja, @@ -1518,12 +1518,12 @@ u referentni ili režim ograničavanja CmdSketcherTrimming - + Trim edge Opseci ivice - + Trim an edge with respect to the picked position Opseci ivicu u odnosu na izabrani položaj @@ -1582,79 +1582,79 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Command - + Add 'Lock' constraint Dodaj ograničenje zaključavanjem - + Add relative 'Lock' constraint Dodaj relativno ograničenje zaključavanjem - + Add fixed constraint Add fixed constraint - + Add 'Block' constraint Dodaj ograničenje blokiranjem - + Add block constraint Dodaj ograničenje blokiranjem - - + + Add coincident constraint Dodaj ograničenje podudarnosti - - + + Add distance from horizontal axis constraint Dodaj kotu rastojanja od horizontalne ose - - + + Add distance from vertical axis constraint Dodaj kotu rastojanja od vertikalne ose - - + + Add point to point distance constraint Dodaj kotu vertikalnog rastojanja od tačke do tačke - - + + Add point to line Distance constraint Dodaj kotu rastojanja od tačke do linije - - + + Add circle to circle distance constraint Dodaj ograničenje između dva kruga - + Add circle to line distance constraint Dodaj ograničenje rastojanja od kruga do linije - - - - - - + + + + + + Add length constraint Dodaj ograničenje dužine @@ -1677,8 +1677,8 @@ nevažeća ograničenja, degenerisanu geometriju, itd. - - + + Add Distance constraint Dodaj ograničenje rastojanja @@ -1704,7 +1704,7 @@ nevažeća ograničenja, degenerisanu geometriju, itd. - + Add Symmetry constraints Dodaj ograničenja simetričnosti @@ -1715,220 +1715,220 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Dodaj ograničenja rastojanja - + Add Horizontal constraint Dodaj horizontalno ograničenje - + Add Vertical constraint Dodaj vertikalno ograničenje - + Add Block constraint Dodaj ograničenje blokiranjem - + Add Angle constraint Dodaj ograničenje ugla - - - - + + + + Add Equality constraint Dodaj ograničenje jednakosti - + Add Equality constraints Dodaj ograničenja jednakosti - - - + + + Add Radius constraint Dodaj ograničenje poluprečnika - - + + Add arc angle constraint Dodaj ograničenje ugla luka - + Add concentric and length constraint Dodaj ograničenje koncentričnosti i rastojanja - + Add DistanceX constraint Dodaj ograničenje rastojanje X - + Add DistanceY constraint Dodaj ograničenje rastojanje Y - + Add point to circle Distance constraint Dodaj ograničenje rastojanja od tačke do kružnice - - + + Add point on object constraint Dodaj tačku na ograničenje objekta - - + + Add point to point horizontal distance constraint Dodaj ograničenje horizontalnog rastojanja od tačke do tačke - + Add fixed x-coordinate constraint Dodaj ograničenje fiksne x-koordinate - - + + Add point to point vertical distance constraint Dodaj ograničenje vertikalnog rastojanja od tačke do tačke - + Add fixed y-coordinate constraint Dodaj ograničenje fiksne y-koordinate - - + + Add parallel constraint Dodaj ograničenje paralelnosti - - - - - - - + + + + + + + Add perpendicular constraint Dodaj ograničenje upravnosti - + Add perpendicularity constraint Dodaj ograničenje upravnosti - + Swap coincident+tangency with ptp tangency Zameni podudarnost+tangentnost na tangentnost tačaka - + Swap PointOnObject+tangency with point to curve tangency Zameni tačka na objektu+tangentnost sa tangentnost tačke na krivu - - - - - - - + + + + + + + Add tangent constraint Dodaj ograničenje tangentnosti - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Dodaj tačku ograničenja tangentnosti - - - - + + + + Add radius constraint Dodaj ograničenje poluprečnika - - - - + + + + Add diameter constraint Dodaj ograničenje prečnika - - - - + + + + Add radiam constraint Dodaj ograničenje poluprečnik-prečnik - - - - + + + + Add angle constraint Dodaj ograničenje ugla - - + + Add equality constraint Dodaj ograničenje jednakosti - - - - - + + + + + Add symmetric constraint Dodaj ograničenje simetričnosti - + Add Snell's law constraint Dodaj ograničenje na osnovu Snellovog zakona - + Toggle constraint to driving/reference Prebaci između referentnog i ograničavajućeg režima kota - + Activate/Deactivate constraint Aktiviraj/deaktiviraj ograničenje @@ -2013,7 +2013,7 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Dodaj skicu luka elipse - + Add sketch arc of hyperbola Dodaj skicu luka hiperbole @@ -2157,8 +2157,8 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Ažuriraj virtuelni prostor ograničenja - + Add auto constraints Dodaj automatska ograničenja @@ -2183,12 +2183,12 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Prevuci krivu - + Drag Constraint Prevuci ograničenje - + Modify sketch constraints Izmeni ograničenja skice @@ -2230,7 +2230,7 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Translate geometries - Translate geometries + Transliraj geometriju @@ -2279,59 +2279,59 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Greška automatskog ograničavanja: Nerešiva skica posle primene ograničenja jednakosti. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Nije moguće odrediti presečnu tačku krivih. Pokušaj da dodaš ograničenje podudarnosti između tačaka krivih gde nameravaš da napraviš zaobljenje. - - + + BSpline Geometry Index (GeoID) is out of bounds. Indeks B-Splajn geometrije (GeoID) je van granica. - + You are requesting no change in knot multiplicity. Ne zahtevate promenu u višestrukosti čvorova. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Navedeni Geometrijski index (GeoId) nije B-spline kriva. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Indeks čvorova je van granica. Imajte na umu da u skladu sa OCC napomenom, prvi čvor ima indeks 1, a ne nula. - + The multiplicity cannot be increased beyond the degree of the B-spline. Višestrukost se ne može povećati iznad stepena B-splajn krive. - + The multiplicity cannot be decreased beyond zero. Višestrukost ne može biti manje od nule. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC nije u stanju da smanji višestrukost unutar maksimalne tolerancije. - + Knot cannot have zero multiplicity. Čvor ne može imati nultu višestrukost. - + Knot multiplicity cannot be higher than the degree of the BSpline. Višestrukost čvorova ne može biti veća od stepena B-Splajn krive. - + Knot cannot be inserted outside the BSpline parameter range. Čvor se ne može umetnuti izvan opsega parametara B-Splajna. @@ -2411,127 +2411,11 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Nemoj prikačiti + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ nevažeća ograničenja, degenerisanu geometriju, itd. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ nevažeća ograničenja, degenerisanu geometriju, itd. - - - Wrong selection Pogrešan izbor @@ -2613,106 +2613,106 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Jedan od izabranih mora biti na skici. - + Select an edge from the sketch. Izaberi ivicu sa skice. - - - - - - + + + + + + Impossible constraint Nemoguće ograničenje - - + + The selected edge is not a line segment. Izabrana ivica nije linijski segment. - - - + + + Double constraint Duplo ograničenje - + The selected edge already has a horizontal constraint! Izabrana ivica već ima horizontalno ograničenje! - + The selected edge already has a vertical constraint! Izabrana ivica već ima vertikalno ograničenje! - - - + + + The selected edge already has a Block constraint! Izabrana ivica je već ograničena blokiranjem! - + There are more than one fixed points selected. Select a maximum of one fixed point! Izabrano je više od jedne fiksne tačke. Izaberi najviše jednu fiksnu tačku! - - - + + + Select vertices from the sketch. Izaberi temena sa skice. - + Select one vertex from the sketch other than the origin. Izaberi jedno teme sa skice osim koordinatnog početka. - + Select only vertices from the sketch. The last selected vertex may be the origin. Izaberi samo temena sa skice. Poslednje izabrano teme može biti koordinatni početak. - + Wrong solver status Pogrešan status algoritma za rešavanje - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Ograničenje blokiranjem se ne može dodati ako je skica nerešena ili postoje suvišna i konfliktna ograničenja. - + Select one edge from the sketch. Izaberi jednu ivicu sa skice. - + Select only edges from the sketch. Izaberi samo ivice sa skice. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Broj izabranih objekata nije 3 - + Error Greška @@ -2722,80 +2722,80 @@ nevažeća ograničenja, degenerisanu geometriju, itd. Neočekivana greška. Potražite više informacija u Pregledaču objava. - + The selected item(s) can't accept a horizontal or vertical constraint! Na izabranu geometriju se ne može primeniti ograničenje horizontalnosti ili vertikalnosti! - + Endpoint to endpoint tangency was applied instead. Umesto toga je primenjena tangentnost u krajnjim tačkama. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Izaberi dva ili više temena sa skice za ograničenje podudarnosti, ili dva ili više krugova, elipsa, lukova ili lukova elipse za ograničenje koncentričnosti. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Izaberi dva temena sa skice za ograničenje podudarnosti, ili dva kruga, elipse, lukove ili lukove elipse za ograničenje koncentričnosti. - + Select exactly one line or one point and one line or two points from the sketch. Izaberi tačno jednu liniju ili jednu tačku i jednu liniju, ili dve tačke sa skice. - + Cannot add a length constraint on an axis! Nije moguće kotirati osu ravni! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Izaberi tačno jednu liniju, jednu tačku i jednu liniju, dve tačke ili dva kruga na skici. - + This constraint does not make sense for non-linear curves. Ovo ograničenje nema smisla za nelinearne krive. - + Endpoint to edge tangency was applied instead. Umesto toga je primenjena tangentnost ivice u krajnjoj tački. - - - - - - + + + + + + Select the right things from the sketch. Izaberi prave stvari sa skice. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Izaberi ivicu koja nije težina B-splajn kontrolne tačke. @@ -2805,92 +2805,92 @@ nevažeća ograničenja, degenerisanu geometriju, itd. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Za Ograničenje koncentričnosti izaberi nekoliko tačaka ili nekoliko kružnica, lukova ili elipsa. - + Select either one point and several curves, or one curve and several points Izaberi ili jednu tačku i nekoliko krivih, ili jednu krivu i nekoliko tačaka - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Izaberi jednu tačku i nekoliko krivih ili jednu krivu i nekoliko tačaka za Ograničenje tačka na objektu, nekoliko tačaka za Ograničenje podudarnosti ili nekoliko kružnica, lukova ili elipsa za Ograničenje koncentričnosti. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Nijedna od izabranih tačaka nije bila ograničena na dotične krive, jer su delovi istog elementa, jer su obe spoljašnje geometrije ili zato što ivica nije prihvatljiva. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Nijedna od izabranih tačaka nije bila ograničena na odgovarajuće krive, bilo zato što su delovi istog elementa, ili zato što su obe spoljašnje geometrije. - + Cannot add a length constraint on this selection! Nije moguće napraviti kotu za izabrani geometrijski element! - - - - + + + + Select exactly one line or up to two points from the sketch. Izaberi tačno jednu liniju ili najviše dve tačke sa skice. - + Cannot add a horizontal length constraint on an axis! Nije moguće napraviti horizotalnu kotu na osi ravni! - + Cannot add a fixed x-coordinate constraint on the origin point! Nije moguće ograničiti x-koordinatu koordinatnog početka! - - + + This constraint only makes sense on a line segment or a pair of points. Ovo ograničenje ima smisla samo na segmentu linije ili paru tačaka. - + Cannot add a vertical length constraint on an axis! Nije moguće napraviti vertikalnu kotu na osi ravni! - + Cannot add a fixed y-coordinate constraint on the origin point! Nije moguće ograničiti y-koordinatu koordinatnog početka! - + Select two or more lines from the sketch. Izaberi dve ili više linija sa skice. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Izabrana ivica nije važeća linija. - - + + Select at least two lines from the sketch. Izaberi najmanje dve linije sa skice. - + The selected edge is not a valid line. Izabrana ivica nije važeća linija. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Prihvatljive kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; dve krive i tačka. - + Select some geometry from the sketch. perpendicular constraint Izaberi neku geometriju sa skice. - - + + Cannot add a perpendicularity constraint at an unconnected point! Ne može se dodati ograničenje upravnosti na tačku pošto ona nije krajnja tačka! - - + + One of the selected edges should be a line. Jedna od izabranih ivica bi trebala biti linija. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Primenjena je tangentnost na krajnje tačke. Ograničenje podudarnosti je izbrisano. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Primenjena je tangentnost između krajnje tačke i ivice. Ograničenje tačka na objektu je obrisano. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; dve krive i tačka. - + Select some geometry from the sketch. tangent constraint Izaberi neku geometriju sa skice. - - - + + + Cannot add a tangency constraint at an unconnected point! Ne može se dodati ograničenje tangentnosti u tačkama koje se ne poklapaju! - - + + Tangent constraint at B-spline knot is only supported with lines! Ograničenje tangentnosti se može primeniti na čvor B-splajna samo ako je u pitanju linija! - + B-spline knot to endpoint tangency was applied instead. Umesto toga je primenjena tangentnost između čvora B-splajna i krajnje tačke. - - + + Wrong number of selected objects! Pogrešan broj izabranih objekata! - - + + With 3 objects, there must be 2 curves and 1 point. Kod 3 objekta, moraju postojati 2 krive i 1 tačka. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Izaberi jedan ili više lukova ili krugova sa skice. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Izaberi samo jedan ili više polova B-splajn krive ili samo jedan ili više lukova ili krugova sa skice, ali ne pomešano. - - - + + + Constraint only applies to arcs or circles. Ograničenje se odnosi samo na lukove i kružnice. - - + + Select one or two lines from the sketch. Or select two edges and a point. Izaberi jednu ili dve linije sa skice, ili izaberi dve ivice i tačku. @@ -3013,88 +3013,88 @@ Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; Za dve paralelne prave ne može se postaviti ograničenje ugla. - + Cannot add an angle constraint on an axis! Ne možete dodati ograničenje ugla na osu! - + Select two edges from the sketch. Izaberi dve ivice sa skice. - + Select two or more compatible edges. Izaberi dve ili više kompatibilnih ivica. - + Sketch axes cannot be used in equality constraints. Na ose skice se ne može primeniti ograničenje jednakosti. - + Equality for B-spline edge currently unsupported. Primena ograničenja jednakosti na B-splajn krivu trenutno nije podržana. - - - - + + + + Select two or more edges of similar type. Izaberi dve ili više ivica sličnog tipa. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Izaberi dve tačke i liniju simetrije, dve tačke i tačku simetrije ili pravu i tačku simetrije sa skice. - - + + Cannot add a symmetry constraint between a line and its end points. Nije moguće dodati ograničenje simetričnosti između linije i njenih krajnjih tačaka. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Nije moguće dodati ograničenje simetričnosti između linije i njenih krajnjih tačaka! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Izaberi dve krajnje tačke linija koje će delovati kao zraci i ivicu koja predstavlja granicu. Prva izabrana tačka odgovara indeksu loma n1, druga n2, a odnos n2/n1 je relativni indeks loma. - + Selected objects are not just geometry from one sketch. Izabrani objekti nisu samo geometrija iz jedne skice. - + Cannot create constraint with external geometry only. Nije moguće kreirati ograničenje samo sa spoljnom geometrijom. - + Incompatible geometry is selected. Izabrana je nekompatibilna geometrija. - - - - - + + + + + Select constraints from the sketch. Izaberi ograničenja sa skice. @@ -3116,9 +3116,9 @@ Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; Podesi stepen B-splajn krive, između 1 i %1: + - CAD Kernel Error Greška CAD jezgra @@ -3261,14 +3261,14 @@ Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; Da bi ste mogli uklonoto ose poravnanja potrebno je imati izabran najmanje jedan geometrijski element koji nije spoljnji - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3340,7 +3340,7 @@ Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; Translate parameters - Translate parameters + Parametri transliranja @@ -3652,12 +3652,12 @@ Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; Dužina: - + Refractive index ratio Relativni indeks loma - + Ratio n2/n1: Odnos n2/n1: @@ -3665,72 +3665,72 @@ Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; SketcherGui::ElementFilterList - + Normal Obične - + Construction Pomoćna geometrija - + Internal Unutrašnji - + External Spoljni - + All types Sve vrste - + Point Tačka - + Line Duž - + Circle Krug - + Ellipse Elipsa - + Arc of circle Kružni luk - + Arc of ellipse Eliptični luk - + Arc of hyperbola Hiperbolični luk - + Arc of parabola Parabolični luk - + B-Spline B-Splajn kriva @@ -3853,27 +3853,27 @@ Prihvaćene kombinacije: dve krive; krajnja tačka i kriva; dve krajnje tačke; Izaberi vertikalnu osu - + Layer Sloj - + Layer 0 Sloj 0 - + Layer 1 Sloj 1 - + Hidden Zaklonjene - + Delete Obriši @@ -4079,7 +4079,7 @@ direktno ogledati i na kopijama Number of sides: - Number of sides: + Broj stranica: @@ -4749,120 +4749,120 @@ Međutim, nisu pronađena nikakva ograničenja vezana za krajnje tačke.Podešavanja - - - - - - - - - - + + + + + + + + + + Construction Pomoćna geometrija - + Elements Elementi - - - - + + + + Point Tačka - - - - - - - - - - + + + + + + + + + + Internal Unutrašnji - - - - + + + + Line Duž - - - - + + + + Arc Kružni luk - - - - + + + + Circle Krug - - - - + + + + Ellipse Elipsa - - - - + + + + Elliptical Arc Eliptični Luk - - - - + + + + Hyperbolic Arc Hiperbolični luk - - - - + + + + Parabolic Arc Parabolični luk - - - - + + + + BSpline B-splajn kriva - - - - + + + + Other Drugo - + Extended information Proširene informacije @@ -5083,112 +5083,112 @@ Ovo se radi analizom geometrije i ograničenja skice. SketcherGui::ViewProviderSketch - + Edit sketch Uredi skicu - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch Neispravna skica - + Do you want to open the sketch validation tool? Da li želiš da otvoriš alatku za proveru skice? - + The sketch is invalid and cannot be edited. Skica sadrži greške i ne može biti menjana. - + Please remove the following constraint: Ukloni sledeće ograničenje: - + Please remove at least one of the following constraints: Ukloni bar jedno od sledećih ograničenja: - + Please remove the following redundant constraint: Ukloni sledeće suvišno ograničenje: - + Please remove the following redundant constraints: Ukloni sledeća suvišna ograničenja: - + The following constraint is partially redundant: Sledeće ograničenje je suvišno: - + The following constraints are partially redundant: Sledeća ograničenja su suvišna: - + Please remove the following malformed constraint: Ukloni sledeće oštećeno ograničenje: - + Please remove the following malformed constraints: Ukloni sledeće oštećena ograničenja: - + Empty sketch Prazna skica - + Over-constrained: Previše ograničeno: - + Malformed constraints: Oštećena ograničenja: - + Redundant constraints: Suvišna ograničenja: - + Partially redundant: Delimično suvišna: - + Solver failed to converge Solver nije uspeo da se približi - + Under constrained: Nedovoljno ograničena: - + %n DoF(s) %n Stepeni slobode @@ -5197,7 +5197,7 @@ Ovo se radi analizom geometrije i ograničenja skice. - + Fully constrained Potpuno ograničena @@ -5295,8 +5295,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Kotiraj prečnik kruga ili luka @@ -5304,8 +5304,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Kotiraj poluprečnik/prečnik krugova ili lukova @@ -5313,8 +5313,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Kotiraj poluprečnik kruga ili luka @@ -5328,70 +5328,25 @@ Ovo se radi analizom geometrije i ograničenja skice. Pravi jednostavnu kopiju geometrije uzimajući kao referentnu poslednju izabranu tačku - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Napravi luk pomoću krajnjih tačaka i tačke na luku - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Napravi kružnicu pomoću 3 tačke - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Napravi kružni luk pomoću centra i krajnjih tačaka - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Napravi luk elipse pomoću centra, veće poluose i krajnjih tačaka - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Napravi luk hiperbole pomoću centra, realne poluose i krajnjih tačaka - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Napravi luk parabole pomoću fokusa, temena i krajnjih tačaka - - Sketcher_CreateBSpline - + B-spline by control points B-splajn kriva pomoću kontrolnih tačaka - - + + Create a B-spline by control points Napravi B-splajn krivu pomoću kontrolnih tačaka @@ -5399,35 +5354,17 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Napravi kružnicu pomoću centra i tačke na kružnici - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Napravi elipsu pomoću periapse, apoapse i male poluose - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Napravi elipsu pomoću centra, veće poluose i tačke - - Sketcher_CreateFillet - - + + Creates a radius between two lines Napravi zaobljenje između dve linije @@ -5435,8 +5372,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Napravi sedmougao pomoću njegovog centra i ugla @@ -5444,8 +5381,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Napravi šestougao pomoću njegovog centra i ugla @@ -5461,14 +5398,14 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Napravi osmougao pomoću njegovog centra i ugla + - Create a regular polygon by its center and by one corner Napravi pravilni mnogougao pomoću njegovog centra i ugla @@ -5476,8 +5413,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Napravi petougao pomoću njegovog centra i ugla @@ -5485,8 +5422,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Zaobljenje koje čuva ograničenja i presečnu tačku @@ -5510,8 +5447,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreateSquare + - Create a square by its center and by one corner Napravi kvadrat pomoću centra i jednog temena @@ -5519,8 +5456,8 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Napravi jednakostranični trougao pomoću centra i jednog temena @@ -5528,13 +5465,13 @@ Ovo se radi analizom geometrije i ograničenja skice. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Periodična B-splajn kriva pomoću kontrolnih tačaka + - Create a periodic B-spline by control points Napravi periodičnu B-splajn krivu pomoću kontrolnih tačaka @@ -5935,7 +5872,7 @@ Eigen redak QR algoritam je optimizovan za retke matrice; obično brže ViewProviderSketch - + and %1 more i %1 više @@ -6158,46 +6095,46 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Skica ima delimično suvišna ograničenja! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabole su migrirale. Migrirane datoteke neće biti moguće otvarati u prethodnim verzijama FreeCAD-a!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Greška @@ -6233,16 +6170,16 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Ograničenje ima pogrešne indeksne informacije tako da je neispravno. + + + - - - - - + + Invalid Constraint @@ -6259,12 +6196,12 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Dodavanje eliptičnog luka nije uspelo - + Cannot create arc of hyperbola from invalid angles, try again! Nije moguće napraviti hiperbolični luk zbog pogrešnih uglova, pokušajte ponovo! - + Cannot create arc of hyperbola Nije moguće napraviti hiperbolični luk @@ -6284,8 +6221,8 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Greška prilikom pravljenja pola B-Splajn krive - + Error creating B-spline Greška prilikom pravljenja B-Splajn krive @@ -6341,17 +6278,17 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Dodavanje duži nije uspelo - - - - - - - + + + + + + + Tool execution aborted Izvršavanje alatke je prekinuto @@ -6386,9 +6323,9 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Opsecanje ivice nije uspelo - + Value Error Greška vrednosti @@ -6445,19 +6382,19 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Failed to translate - Failed to translate + Translacija nije uspela Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-splajn kriva pomoću čvorova - - + + Create a B-spline by knots Napravi B-splajn krivu pomoću čvorova @@ -6465,13 +6402,13 @@ Razmak mreže se menja ako postane manji od ovog broja piksela. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodična B-splajn kriva pomoću čvorova + - Create a periodic B-spline by knots Napravi periodičnu B-splajn krivu pomoću čvorova @@ -6577,12 +6514,12 @@ Tačke se moraju nalaziti na udaljenosti manjoj od 1/5 razmaka linija mreže da CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Napravi B-splajn krivu pomoću čvorova - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Napravi B-splajn krivu pomoću čvorova, tj. interpolacijom, na skici. @@ -6590,12 +6527,12 @@ Tačke se moraju nalaziti na udaljenosti manjoj od 1/5 razmaka linija mreže da CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Napravi periodičnu B-splajn krivu pomoću čvorova - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Napravi periodičnu B-splajn krivu pomoću čvorova, tj. interpolacijom, na skici. @@ -6603,12 +6540,12 @@ Tačke se moraju nalaziti na udaljenosti manjoj od 1/5 razmaka linija mreže da CmdSketcherDimension - + Dimension Kotiranje - Dimenziona ograničenja - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6646,12 +6583,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr CmdSketcherConstrainRadius - + Constrain radius Ograničenje poluprečnika - + Fix the radius of a circle or an arc Kotiraj poluprečnik kruga ili luka @@ -6826,7 +6763,7 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. Napravite dva pravougaonika, jedan u drugom sa konstantnim odmakom. @@ -6841,12 +6778,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontalnost/Vertikalnost - + Constrains a single line to either horizontal or vertical. Ograniči duž da bude horizontalna ili vertikalna. @@ -6854,12 +6791,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontalnost/Vertikalnost - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Ograniči duž da bude horizontalna ili vertikalna. Izaberi ono stanje koje je bliže trenutnom položaju. @@ -6867,12 +6804,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr CmdSketcherCompCurveEdition - + Curve Edition Uređivanje krive - + Curve Edition tools. Alatke za uređivanje krive. @@ -6880,12 +6817,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr CmdSketcherCompSlot - + Slots Žljebovi - + Slot tools. Alatke za žljebove. @@ -6893,12 +6830,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr CmdSketcherCreateArcSlot - + Create arc slot Napravi lučni žljeb - + Create an arc slot in the sketch Napravi lučni žljeb na skici @@ -6906,12 +6843,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr CmdSketcherConstrainCoincidentUnified - + Constrain coincident - Ograničenja podudarnosti + Ograničenje podudarnosti - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Napravi ograničenje podudarnosti između tačaka ili ograniči tačku za neki ivicu ili napravi ograničenje koncentričnosti između krugova, lukova i elipsa @@ -7295,12 +7232,12 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr Array transform - Array transform + Pravougaono umnožavanje Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Pravougaono umnoži izabranu geometriju. Napravi i * j kopije. @@ -7332,4 +7269,67 @@ Levi klik na prazan prostor potvrdiće trenutno ograničenje. Desni klik ili pr Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Napravi kružni luk pomoću centra i krajnjih tačaka + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Napravi luk pomoću krajnjih tačaka i tačke na luku + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Napravi elipsu pomoću centra, veće poluose i tačke + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Napravi elipsu pomoću krajnjih tačaka jedne od poluosa i tačke + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Napravi luk elipse pomoću centra, velike poluose i krajnjih tačaka + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Napravi luk hiperbole pomoću centra, realne poluose i krajnjih tačaka + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Napravi luk parabole pomoću fokusa, temena i krajnjih tačaka + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts index 96f342f80a..13859e9923 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Индиго копија - + Copy the geometry of another sketch Копира геометрију друге скице @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Ограничење кружног лука или круга - + Constrain an arc or a circle Котирај кружни лук или круг - + Constrain radius Ограничење полупречника - + Constrain diameter Ограничење пречника - + Constrain auto radius/diameter Аутоматско ограничење полупречника и пречника @@ -180,24 +180,24 @@ - Center and end points - Кружни лук помоћу центра + Center and endpoints + Центар и крајње тачке - - End points and rim point + + Endpoints and rim point Кружни лук помоћу 3 тачке CmdSketcherCompCreateBSpline - + Create B-spline Направи Б-сплајн криву - + Create a B-spline in the sketch Направи Б-сплајн криву на скици @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Направи кружницу - + Create a circle in the sketcher Направи кружницу - + Center and rim point Кружница помоћу центра - + 3 rim points Кружница помоћу 3 тачке @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Направи конусне пресеке - + Create a conic in the sketch Направи конусне пресеке у скици - - Ellipse by center, major radius, point + + Ellipse by center, radius, rim point Елипса помоћу центра, велике полуосе и тачке - - Ellipse by periapsis, apoapsis, minor radius - Елипса помоћу периапсе, апоапсе и мале полуосе + + Ellipse by axis endpoints, rim point + Елипса помоћу крајњих тачака полуосе и тачке - - Arc of ellipse by center, major radius, endpoints + + Arc of ellipse by center, radius, endpoints Лук елипсе помоћу центра, велике полуосе и крајњих тачака - - Arc of hyperbola by center, major radius, endpoints + + Arc of hyperbola by center, vertex, endpoints Лук хиперболе помоћу центра, реалне полуосе и крајњих тачака - + Arc of parabola by focus, vertex, endpoints Лук параболе помоћу fokusa, темена и крајњих тачака @@ -266,23 +266,23 @@ CmdSketcherCompCreateFillets - + Create fillet Направи заобљење - + Create a fillet between two lines Направи заобљење између две линије - + Sketch fillet Заобљење скице - - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet Заобљење које чува ограничења @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Направи правилни многоугао - + Create a regular polygon in the sketcher Направи правилни многоугао на скици - + Triangle Троугао - + Square Квадрат - + Pentagon Петоугао - + Hexagon Шестоугао - + Heptagon Седмоугао - + Octagon Осмоугао - + Regular polygon Правилан многоугао @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Ограничење угла - + Fix the angle of a line or the angle between two lines Котирај угао дужи или угао између две дужи @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Ограничење блокирањем - + Block the selected edge from moving Блокира померање изабране ивице @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Ограничење подударности - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Направи ограничење подударности између тачака или концентрично ограничење између кругова, лукова и елипса @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Ограничење пречника - + Fix the diameter of a circle or an arc Котирај пречник круга или лука @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Ограничење растојања - + Fix a length of a line or the distance between a line and a vertex or between two circles Котирај дужину линије, растојање између линије и темена или растојање између два круга @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Ограничење хоризонталног растојања - + Fix the horizontal distance between two points or line ends Котирај хоризонтално растојање између две тачке или две крајње тачке @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Ограничење вертикалног растојања - + Fix the vertical distance between two points or line ends Котирај вертикално растојање између две тачке или две крајње тачке @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Ограничење једнакости - + Create an equality constraint between two lines or between circles and arcs Направи ограничење једнакости између две дужи или између кругова и лукова @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Ограничење хоризонталности - + Create a horizontal constraint on the selected item Направи ограничење хоризонталности на изабраној ставки @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Ограничење закључавањем - + Create both a horizontal and a vertical distance constraint on the selected vertex Направи ограничење хоризонталног и вертикалног растојања на изабраном темену @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Ограничење паралелности - + Create a parallel constraint between two lines Направи ограничење паралелности између две дужи @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Ограничење управности - + Create a perpendicular constraint between two lines Направи ограничење управности између два геометријска елемента @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Ограничење тачка на објекту - + Fix a point onto an object Ограничење тачке да буде везана за објекат @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Аутоматско ограничење полупречника и пречника - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Котирај пречник ако изабереш круг или полупречник ако изабереш лук или пол сплајна @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Ограничење рефракције (Снеллов закон) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Направи ограничење рефракције (Снеллов закон) између две крајње тачке зрака @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Ограничење симетричности - + Create a symmetry constraint between two points with respect to a line or a third point Направи ограничење симетричности између две тачке @@ -601,12 +601,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Ограничење тангентности - + Create a tangent constraint between two entities Направи тангентно ограничење између два ентитета @@ -614,12 +614,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Ограничење вертикалности - + Create a vertical constraint on the selected item Направи ограничење вертикалности на изабраној ставки @@ -666,12 +666,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Направи кружницу помоћу 3 тачке - + Create a circle by 3 perimeter points Направи кружницу помоћу 3 тачке на обиму @@ -692,12 +692,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Направи лук елипсе - + Create an arc of ellipse in the sketch Направи лук елипсе на скици @@ -705,12 +705,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Направи лук хиперболе - + Create an arc of hyperbola in the sketch Направи лук хиперболе на скици @@ -718,12 +718,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Направи лук параболе - + Create an arc of parabola in the sketch Направи лук параболе на скици @@ -731,12 +731,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Направи Б-сплајн криву - + Create a B-spline by control points in the sketch. Направи Б-сплајн криву помоћу контролних тачака са скице. @@ -744,12 +744,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Направи кружницу - + Create a circle in the sketch Направи кружницу на скици @@ -757,12 +757,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Направи елипсу помоћу 3 тачке - + Create an ellipse by 3 points in the sketch Направи елипсу помоћу 3 тачке на скици @@ -770,12 +770,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Направи елипсу помоћу центра - + Create an ellipse by center in the sketch Направи елипсу помоћу центра на скици @@ -783,12 +783,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Направи заобљење - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -796,12 +796,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Направи седмоугао - + Create a heptagon in the sketch Направи седмоугао на скици @@ -809,12 +809,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Направи шестоугао - + Create a hexagon in the sketch Направи шестоугао на скици @@ -848,12 +848,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Направи осмоугао - + Create an octagon in the sketch Направи осмоугао на скици @@ -861,12 +861,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Направи петоугао - + Create a pentagon in the sketch Направи петоугао на скици @@ -874,12 +874,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Направи периодичну Б-сплајн криву - + Create a periodic B-spline by control points in the sketch. Направи периодичну Б-сплајн криву помоћу контролних тачака на скици. @@ -887,12 +887,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Направи тачку - + Create a point in the sketch Направи тачку на скици @@ -900,12 +900,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Направи заобљење које чува угао - + Fillet that preserves intersection point and most constraints Заобљење које чува пресечну тачку и већину ограничења @@ -952,12 +952,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Направи правилни многоугао - + Create a regular polygon in the sketch Направи правилни многоугао на скици @@ -965,12 +965,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Направи жљеб - + Create a slot in the sketch Направи жљеб на скици @@ -978,12 +978,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Направи квадрат - + Create a square in the sketch Направи квадрат на скици @@ -991,12 +991,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Направи једнакостранични троугао - + Create an equilateral triangle in the sketch Направи једнакостранични троугао на cкици @@ -1069,12 +1069,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Продужи ивицу - + Extend an edge with respect to the picked position Продужи ивицу у односу на изабрани положај @@ -1082,12 +1082,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Спољашња геометрија - + Create an edge linked to an external geometry Направи ивицу везану за спољашњу геометрију @@ -1425,12 +1425,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Подели ивицу - + Splits an edge into two while preserving constraints Дели ивицу на два дела уз очување ограничења @@ -1477,12 +1477,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Активирај/деактивирај ограничење - + Activates or deactivates the selected constraints Активира или деактивира изабрана ограничења @@ -1503,12 +1503,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Ограничавајуће/референтне коте - + Set the toolbar, or the selected constraints, into driving or reference mode Подеси палету са алаткама или изабрана ограничења, @@ -1518,12 +1518,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Опсеци ивице - + Trim an edge with respect to the picked position Опсеци ивицу у односу на изабрани положај @@ -1582,79 +1582,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Додај ограничење закључавањем - + Add relative 'Lock' constraint Додај релативно ограничење закључавањем - + Add fixed constraint Add fixed constraint - + Add 'Block' constraint Додај ограничење блокирањем - + Add block constraint Додај ограничење блокирањем - - + + Add coincident constraint Додај ограничење подударности - - + + Add distance from horizontal axis constraint Додај коту растојања од хоризонталне осе - - + + Add distance from vertical axis constraint Додај коту растојања од вертикалне осе - - + + Add point to point distance constraint Додај коту вертикалног растојања од тачке до тачке - - + + Add point to line Distance constraint Додај коту растојања од тачке до линије - - + + Add circle to circle distance constraint Додај ограничење између два круга - + Add circle to line distance constraint Додај ограничење растојања од круга до линије - - - - - - + + + + + + Add length constraint Додај ограничење дужине @@ -1677,8 +1677,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Додај ограничење растојања @@ -1704,7 +1704,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Додај ограничења симетричности @@ -1715,220 +1715,220 @@ invalid constraints, degenerated geometry, etc. Додај ограничења растојања - + Add Horizontal constraint Додај хоризонтално ограничење - + Add Vertical constraint Додај вертикално ограничење - + Add Block constraint Додај ограничење блокирањем - + Add Angle constraint Додај ограничење угла - - - - + + + + Add Equality constraint Додај ограничење једнакости - + Add Equality constraints Додај ограничења једнакости - - - + + + Add Radius constraint Додај ограничење полупречника - - + + Add arc angle constraint Додај ограничење угла лука - + Add concentric and length constraint Додај ограничење концентричности и растојања - + Add DistanceX constraint Додај ограничење растојање X - + Add DistanceY constraint Додај ограничење растојање Y - + Add point to circle Distance constraint Додај ограничење растојања од тачке до кружнице - - + + Add point on object constraint Додај тачку на ограничење објекта - - + + Add point to point horizontal distance constraint Додај ограничење хоризонталног растојања од тачке до тачке - + Add fixed x-coordinate constraint Додај ограничење фиксне x-координате - - + + Add point to point vertical distance constraint Додај ограничење вертикалног растојања од тачке до тачке - + Add fixed y-coordinate constraint Додај ограничење фиксне y-координате - - + + Add parallel constraint Додај ограничење паралелности - - - - - - - + + + + + + + Add perpendicular constraint Додај ограничење управности - + Add perpendicularity constraint Додај ограничење управности - + Swap coincident+tangency with ptp tangency Замени подударност+тангентност на тангентност тачака - + Swap PointOnObject+tangency with point to curve tangency Замени тачка на објекту+тангентност са тангентност тачке на криву - - - - - - - + + + + + + + Add tangent constraint Додај ограничење тангентности - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Додај тачку ограничења тангентности - - - - + + + + Add radius constraint Додај ограничење полупречника - - - - + + + + Add diameter constraint Додај ограничење пречника - - - - + + + + Add radiam constraint Додај ограничење полупречник-пречник - - - - + + + + Add angle constraint Додај ограничење угла - - + + Add equality constraint Додај ограничење једнакости - - - - - + + + + + Add symmetric constraint Додај ограничење симетричности - + Add Snell's law constraint Додај ограничење на основу Снелловог закона - + Toggle constraint to driving/reference Пребаци између референтног и ограничавајућег режима кота - + Activate/Deactivate constraint Активирај/деактивирај ограничење @@ -2013,7 +2013,7 @@ invalid constraints, degenerated geometry, etc. Додај скицу лука елипсе - + Add sketch arc of hyperbola Додај скицу лука хиперболе @@ -2157,8 +2157,8 @@ invalid constraints, degenerated geometry, etc. Ажурирај виртуелни простор ограничења - + Add auto constraints Додај аутоматска ограничења @@ -2183,12 +2183,12 @@ invalid constraints, degenerated geometry, etc. Превуци криву - + Drag Constraint Превуци ограничење - + Modify sketch constraints Измени ограничења скице @@ -2230,7 +2230,7 @@ invalid constraints, degenerated geometry, etc. Translate geometries - Translate geometries + Транслирај геометрију @@ -2279,59 +2279,59 @@ invalid constraints, degenerated geometry, etc. Грешка аутоматског ограничавања: Нерешива скица после примене ограничења једнакости. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Није могуће одредити пресечну тачку кривих. Покушај да додаш ограничење подударности између тачака кривих где намераваш да направиш заобљење. - - + + BSpline Geometry Index (GeoID) is out of bounds. Индекс Б-Сплајн геометрије (GeoID) је ван граница. - + You are requesting no change in knot multiplicity. Не захтевате промену у вишеструкости чворова. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Наведени Геометријски индеx (GeoId) није Б-сплине крива. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Индекс чворова је ван граница. Имајте на уму да у складу са ОЦЦ напоменом, први чвор има индекс 1, а не нула. - + The multiplicity cannot be increased beyond the degree of the B-spline. Вишеструкост се не може повећати изнад степена Б-сплајн криве. - + The multiplicity cannot be decreased beyond zero. Вишеструкост не може бити мање од нуле. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC није у стању да смањи вишеструкост унутар максималне толеранције. - + Knot cannot have zero multiplicity. Чвор не може имати нулту вишеструкост. - + Knot multiplicity cannot be higher than the degree of the BSpline. Вишеструкост чворова не може бити већа од степена Б-Сплајн криве. - + Knot cannot be inserted outside the BSpline parameter range. Чвор се не може уметнути изван опсега параметара Б-Сплајна. @@ -2411,127 +2411,11 @@ invalid constraints, degenerated geometry, etc. Немој прикачити + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2541,6 +2425,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2558,9 +2561,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Погрешан избор @@ -2613,106 +2613,106 @@ invalid constraints, degenerated geometry, etc. Један од изабраних мора бити на скици. - + Select an edge from the sketch. Изабери ивицу из скице. - - - - - - + + + + + + Impossible constraint Немогуће ограничење - - + + The selected edge is not a line segment. Изабрана ивица није линијски сегмент. - - - + + + Double constraint Дупло ограничење - + The selected edge already has a horizontal constraint! Изабрана ивица већ има хоризонтално ограничење! - + The selected edge already has a vertical constraint! Изабрана ивица већ има вертикално ограничење! - - - + + + The selected edge already has a Block constraint! Изабрана ивица је већ ограничена блокирањем! - + There are more than one fixed points selected. Select a maximum of one fixed point! Изабрано је више од једне фиксне тачке. Изабери највише једну фиксну тачку! - - - + + + Select vertices from the sketch. Изабери темена са скице. - + Select one vertex from the sketch other than the origin. Изабери једно теме са скице осим координатног почетка. - + Select only vertices from the sketch. The last selected vertex may be the origin. Изабери само темена са скице. Последње изабрано теме може бити координатни почетак. - + Wrong solver status Погрешан статус алгоритма за решавање - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Ограничење блокирањем се не може додати ако је скица нерешена или постоје сувишна и конфликтна ограничења. - + Select one edge from the sketch. Изабери једну ивицу са скице. - + Select only edges from the sketch. Изабери само ивице са скице. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Број изабраних објеката није 3 - + Error Грешка @@ -2722,80 +2722,80 @@ invalid constraints, degenerated geometry, etc. Неочекивана грешка. Потражите више информација у Прегледачу објава. - + The selected item(s) can't accept a horizontal or vertical constraint! На изабрану геометрију се не може применити ограничење хоризонталности или вертикалности! - + Endpoint to endpoint tangency was applied instead. Уместо тога је примењена тангентност у крајњим тачкама. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Изабери два или више темена са скице за ограничење подударности, или два или више кругова, елипса, лукова или лукова елипсе за ограничење концентричности. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Изабери два темена са скице за ограничење подударности, или два круга, елипсе, лукове или лукове елипсе за ограничење концентричности. - + Select exactly one line or one point and one line or two points from the sketch. Изабери тачно једну линију или једну тачку и једну линију, или две тачке из скице. - + Cannot add a length constraint on an axis! Није могуће котирати осу равни! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Изабери тачно једну линију, једну тачку и једну линију, две тачке или два круга на скици. - + This constraint does not make sense for non-linear curves. Ово ограничење нема смисла за нелинеарне криве. - + Endpoint to edge tangency was applied instead. Уместо тога је примењена тангентност ивице у крајњој тачки. - - - - - - + + + + + + Select the right things from the sketch. Изабери праве ствари са скице. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Изабери ивицу која није тежина Б-сплајн контролне тачке. @@ -2805,92 +2805,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. За Ограничење концентричности изабери неколико тачака или неколико кружница, лукова или елипса. - + Select either one point and several curves, or one curve and several points Изабери или једну тачку и неколико кривих, или једну криву и неколико тачака - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Изабери једну тачку и неколико кривих или једну криву и неколико тачака за Ограничење тачка на објекту, неколико тачака за Ограничење подударности или неколико кружница, лукова или елипса за Ограничење концентричности. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Ниједна од изабраних тачака није била ограничена на дотичне криве, јер су делови истог елемента, јер су обе спољашње геометрије или зато што ивица није прихватљива. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Ниједна од изабраних тачака није била ограничена на одговарајуће криве, било зато што су делови истог елемента, или зато што су обе спољашње геометрије. - + Cannot add a length constraint on this selection! Није могуће направити коту за изабрани геометријски елемент! - - - - + + + + Select exactly one line or up to two points from the sketch. Изабери тачно једну линију или највише две тачке са скице. - + Cannot add a horizontal length constraint on an axis! Није могуће направити хоризоталну коту на оси равни! - + Cannot add a fixed x-coordinate constraint on the origin point! Није могуће ограничити x-координату координатног почетка! - - + + This constraint only makes sense on a line segment or a pair of points. Ово ограничење има смисла само на сегменту линије или пару тачака. - + Cannot add a vertical length constraint on an axis! Није могуће направити вертикалну коту на оси равни! - + Cannot add a fixed y-coordinate constraint on the origin point! Није могуће ограничити y-координату координатног почетка! - + Select two or more lines from the sketch. Изабери две или више линија са скице. - + One selected edge is not a valid line. - One selected edge is not a valid line. + Изабрана ивица није важећа линија. - - + + Select at least two lines from the sketch. Изабери најмање две линије са скице. - + The selected edge is not a valid line. Изабрана ивица није важећа линија. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Прихватљиве комбинације: две криве; крајња тачка и крива; две крајње тачке; две криве и тачка. - + Select some geometry from the sketch. perpendicular constraint Изабери неку геометрију из скице. - - + + Cannot add a perpendicularity constraint at an unconnected point! Не може се додати ограничење управности на тачку пошто она није крајња тачка! - - + + One of the selected edges should be a line. Једна од изабраних ивица би требала бити линија. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Примењена је тангентност на крајње тачке. Ограничење подударности је избрисано. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Примењена је тангентност између крајње тачке и ивице. Ограничење тачка на објекту је обрисано. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2938,67 +2938,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Прихваћене комбинације: две криве; крајња тачка и крива; две крајње тачке; две криве и тачка. - + Select some geometry from the sketch. tangent constraint Изабери неку геометрију из скице. - - - + + + Cannot add a tangency constraint at an unconnected point! Не може се додати ограничење тангентности у тачкама које се не поклапају! - - + + Tangent constraint at B-spline knot is only supported with lines! Ограничење тангентности се може применити на чвор Б-сплајна само ако је у питању линија! - + B-spline knot to endpoint tangency was applied instead. Уместо тога је примењена тангентност између чвора Б-сплајна и крајње тачке. - - + + Wrong number of selected objects! Погрешан број изабраних објеката! - - + + With 3 objects, there must be 2 curves and 1 point. Код 3 објекта, морају постојати 2 криве и 1 тачка. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Изабери један или више лукова или кругова са скице. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Изабери само један или више полова Б-сплајн криве или само један или више лукова или кругова са скице, али не помешано. - - - + + + Constraint only applies to arcs or circles. Ограничење се односи само на лукове и кружнице. - - + + Select one or two lines from the sketch. Or select two edges and a point. Изабери једну или две линије са скице, или изаберите две ивице и тачку. @@ -3013,88 +3013,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c За две паралелне праве не може се поставити ограничење угла. - + Cannot add an angle constraint on an axis! Не можете додати ограничење угла на осу! - + Select two edges from the sketch. Изабери две ивице са скице. - + Select two or more compatible edges. Изабери две или више компатибилних ивица. - + Sketch axes cannot be used in equality constraints. На осе скице се не може применити ограничење једнакости. - + Equality for B-spline edge currently unsupported. Примена ограничења једнакости на Б-сплајн криву тренутно није подржана. - - - - + + + + Select two or more edges of similar type. Изабери две или више ивица сличног типа. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Изабери две тачке и линију симетрије, две тачке и тачку симетрије или праву и тачку симетрије са скице. - - + + Cannot add a symmetry constraint between a line and its end points. Није могуће додати ограничење симетричности између линије и њених крајњих тачака. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Није могуће додати ограничење симетричности између линије и њених крајњих тачака! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Изабери две крајње тачке линија које ће деловати као зраци и ивицу која представља границу. Прва изабрана тачка одговара индексу лома н1, друга н2, а однос н2/н1 је релативни индекс лома. - + Selected objects are not just geometry from one sketch. Изабрани објекти нису само геометрија из једне скице. - + Cannot create constraint with external geometry only. Није могуће креирати ограничење само са спољном геометријом. - + Incompatible geometry is selected. Изабрана је некомпатибилна геометрија. - - - - - + + + + + Select constraints from the sketch. Изабери ограничења са скице. @@ -3116,9 +3116,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Задај степен Б-сплајн криве, између 1 и %1: + - CAD Kernel Error Грешка CAD језгра @@ -3261,14 +3261,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Да би сте могли уклоното осе поравнања потребно је имати изабран најмање један геометријски елемент који није спољњи - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3340,7 +3340,7 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Translate parameters - Translate parameters + Параметри транслирања @@ -3652,12 +3652,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Дужина: - + Refractive index ratio Релативни индекс лома - + Ratio n2/n1: Однос n2/n1: @@ -3665,72 +3665,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Обичне - + Construction Помоћна геометрија - + Internal Унутрашњи - + External Спољни - + All types Све врсте - + Point Тачка - + Line Дуж - + Circle Круг - + Ellipse Елипса - + Arc of circle Кружни лук - + Arc of ellipse Елиптични лук - + Arc of hyperbola Хиперболични лук - + Arc of parabola Параболични лук - + B-Spline Б-сплајн @@ -3853,27 +3853,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Изабери вертикалну осу - + Layer Слој - + Layer 0 Слој 0 - + Layer 1 Слој 1 - + Hidden Заклоњење - + Delete Обриши @@ -4079,7 +4079,7 @@ reflected on copies Number of sides: - Number of sides: + Број страница: @@ -4749,120 +4749,120 @@ However, no constraints linking to the endpoints were found. Подешавања - - - - - - - - - - + + + + + + + + + + Construction Помоћна геометрија - + Elements Елементи - - - - + + + + Point Тачка - - - - - - - - - - + + + + + + + + + + Internal Унутрашњи - - - - + + + + Line Дуж - - - - + + + + Arc Кружни лук - - - - + + + + Circle Круг - - - - + + + + Ellipse Елипса - - - - + + + + Elliptical Arc Елиптични Лук - - - - + + + + Hyperbolic Arc Хиперболични лук - - - - + + + + Parabolic Arc Параболични лук - - - - + + + + BSpline Б-сплајн крива - - - - + + + + Other Друго - + Extended information Проширене информације @@ -5083,112 +5083,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Измени скицу - + A dialog is already open in the task panel Дијалог је већ отворен у панелу задатака - + Do you want to close this dialog? Да ли желите да затворите овај дијалог? - + Invalid sketch Неисправна скица - + Do you want to open the sketch validation tool? Да ли желиш да отвориш алатку за проверу скице? - + The sketch is invalid and cannot be edited. Скица садржи грешке и не може бити мењана. - + Please remove the following constraint: Уклони следеће ограничење: - + Please remove at least one of the following constraints: Уклони бар једно од следећих ограничења: - + Please remove the following redundant constraint: Уклони следеће сувишно ограничење: - + Please remove the following redundant constraints: Уклони следећа сувишна ограничења: - + The following constraint is partially redundant: Следеће ограничење је сувишно: - + The following constraints are partially redundant: Следећа ограничења су сувишна: - + Please remove the following malformed constraint: Уклони следеће оштећено ограничење: - + Please remove the following malformed constraints: Уклони следеће оштећена ограничења: - + Empty sketch Празна скица - + Over-constrained: Превише ограничено: - + Malformed constraints: Оштећена ограничења: - + Redundant constraints: Сувишна ограничења: - + Partially redundant: Делимично сувишна: - + Solver failed to converge Солвер није успео да се приближи - + Under constrained: Недовољно ограничена: - + %n DoF(s) %n Степени слободе @@ -5197,7 +5197,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Потпуно ограничена @@ -5295,8 +5295,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Котирај пречник круга или лука @@ -5304,8 +5304,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Котирај полупречник/пречник кругова или лукова @@ -5313,8 +5313,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Котирај полупречник круга или лука @@ -5328,70 +5328,25 @@ This is done by analyzing the sketch geometries and constraints. Прави једноставну копију геометрије узимајући као референтну последњу изабрану тачку - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Направи лук помоћу крајњих тачака и тачке на луку - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Направи кружницу помоћу 3 тачке - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Направи кружни лук помоћу центра и крајњих тачака - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Направи лук елипсе помоћу центра, веће полуосе и крајњих тачака - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Направи лук хиперболе помоћу центра, реалне полуосе и крајњих тачака - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Направи лук параболе помоћу фокуса, темена и крајњих тачака - - Sketcher_CreateBSpline - + B-spline by control points Б-сплајн крива помоћу контролних тачака - - + + Create a B-spline by control points Направи Б-сплајн криву помоћу контролних тачака @@ -5399,35 +5354,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Направи кружницу помоћу центра и тачке на кружници - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Направи елипсу помоћу периапсе, апоапсе и мале полуосе - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Направи елипсу помоћу центра, веће полуосе и тачке - - Sketcher_CreateFillet - - + + Creates a radius between two lines Направизаобљење између две линије @@ -5435,8 +5372,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Направи седмоугао помоћу његовог центра и угла @@ -5444,8 +5381,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Направи шестоугао помоћу његовог центра и угла @@ -5461,14 +5398,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Направи осмоугао помоћу његовог центра и угла + - Create a regular polygon by its center and by one corner Направи правилни многоугао помоћу његовог центра и угла @@ -5476,8 +5413,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Направи петоугао помоћу његовог центра и угла @@ -5485,8 +5422,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Заобљење које чува ограничења и пресечну тачку @@ -5510,8 +5447,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Направи квадрат помоћу центра и једног темена @@ -5519,8 +5456,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Направи једнакостранични троугао помоћу центра и једног темена @@ -5528,13 +5465,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Периодична Б-сплајн крива помоћу контролних тачака + - Create a periodic B-spline by control points Направи периодичну Б-сплајн криву помоћу контролних тачака @@ -5935,7 +5872,7 @@ Eigen редак QR алгоритам је оптимизован за ретк ViewProviderSketch - + and %1 more и %1 више @@ -6158,46 +6095,46 @@ The grid spacing change if it becomes smaller than this number of pixel.Скица има делимично сувишна ограничења! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Параболе су мигрирале. Мигриране датотеке неће бити могуће отварати у претходним верзијама FreeCAD-а!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Грешка @@ -6233,16 +6170,16 @@ The grid spacing change if it becomes smaller than this number of pixel.Ограничење има погрешне индексне информације тако да је неисправно. + + + - - - - - + + Invalid Constraint @@ -6259,12 +6196,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Додавање елиптичног лука није успело - + Cannot create arc of hyperbola from invalid angles, try again! Није могуће направити хиперболични лук због погрешних углова, покушајте поново! - + Cannot create arc of hyperbola Није могуће направити хиперболични лук @@ -6284,8 +6221,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Грешка приликом прављења пола Б-Сплајн криве - + Error creating B-spline Грешка приликом прављења Б-Сплајн криве @@ -6341,17 +6278,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Додавање дужи није успело - - - - - - - + + + + + + + Tool execution aborted Извршавање алатке је прекинуто @@ -6386,9 +6323,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Опсецање ивице није успело - + Value Error Грешка вредности @@ -6445,19 +6382,19 @@ The grid spacing change if it becomes smaller than this number of pixel. Failed to translate - Failed to translate + Транслација није успела Sketcher_CreateBSplineByInterpolation - + B-spline by knots Б-сплајн крива помоћу чворова - - + + Create a B-spline by knots Направи Б-сплајн криву помоћу чворова @@ -6465,13 +6402,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Периодична Б-сплајн крива помоћу чворова + - Create a periodic B-spline by knots Направи периодичну Б-сплајн криву помоћу чворова @@ -6577,12 +6514,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Направи Б-сплајн криву помоћу чворова - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Направи Б-сплајн криву помоћу чворова, тј. интерполацијом, на скици. @@ -6590,12 +6527,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Направи периодичну Б-сплајн криву помоћу чворова - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Направи периодичну Б-сплајн криву помоћу чворова, тј. интерполацијом, на скици. @@ -6603,12 +6540,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Котирање - Димензиона ограничења - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6646,12 +6583,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Ограничење полупречника - + Fix the radius of a circle or an arc Котирај полупречник круга или лука @@ -6826,7 +6763,7 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. Направите два правоугаоника, један у другом са константним одмаком. @@ -6841,12 +6778,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Хоризонталност/Вертикалност - + Constrains a single line to either horizontal or vertical. Ограничи дуж да буде хоризонтална или вертикална. @@ -6854,12 +6791,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Хоризонталност/Вертикалност - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Ограничи дуж да буде хоризонтална или вертикална. Изабери оно стање које је ближе тренутном положају. @@ -6867,12 +6804,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Уређивање криве - + Curve Edition tools. Алатке за уређивање криве. @@ -6880,12 +6817,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Жљебови - + Slot tools. Алатке за жљебове. @@ -6893,12 +6830,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Направи лучни жљеб - + Create an arc slot in the sketch Направи лучни жљеб на скици @@ -6906,12 +6843,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident - Ограничења подударности + Ограничење подударности - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Направи ограничење подударности између тачака или ограничи тачку за неки ивицу или направи ограничење концентричности између кругова, лукова и елипса @@ -7295,12 +7232,12 @@ Left clicking on empty space will validate the current constraint. Right clickin Array transform - Array transform + Правоугаоно умножавање Translate selected geometries. Enable creation of i * j copies. - Translate selected geometries. Enable creation of i * j copies. + Правоугаоно умножи изабрану геометрију. Направи и * ј копије. @@ -7332,4 +7269,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Направи кружни лук помоћу центра и крајњих тачака + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Направи лук помоћу крајњих тачака и тачке на луку + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Направи елипсу помоћу центра, веће полуосе и тачке + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Направи елипсу помоћу крајњих тачака једне од полуоса и тачке + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Направи лук елипсе помоћу центра, велике полуосе и крајњих тачака + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Направи лук хиперболе помоћу центра, реалне полуосе и крајњих тачака + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Направи лук параболе помоћу фокуса, темена и крајњих тачака + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.ts index 2baa1d9ed0..2bdcdb74df 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Begränsa båge eller cirkel - + Constrain an arc or a circle Begränsa en båge eller cirkel - + Constrain radius Begränsa radie - + Constrain diameter Begränsa diameter - + Constrain auto radius/diameter Constrain auto radius/diameter @@ -180,24 +180,24 @@ - Center and end points - Centrum- och slutpunkter + Center and endpoints + Center and endpoints - - End points and rim point - Slutpunkter och perifer punkt + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Skapa B-spline - + Create a B-spline in the sketch Skapa en B-spline i skissen @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Skapa en cirkel - + Create a circle in the sketcher Skapa en cirkel i skissen - + Center and rim point Centrum- och perifer punkt - + 3 rim points Tre randpunkter @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Skapa en konisk form i skissen - - Ellipse by center, major radius, point - Ellips utifrån centrumpunkt, storaxel och punkt + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Ellips utifrån periapsis, apoapsis och lillaxel + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Elliptisk båge utifrån centrumpunkt, storaxel och slutpunkter + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Hyperbolisk båge från centrumpunkt, storaxel och slutpunkter + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Parabelisk båge angiven med brännpunkt, hörnpunkt och slutpunkter @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Skapa avrundning - + Create a fillet between two lines Skapa avrundning mellan två linjer - + Sketch fillet Sketch fillet - - Constraint-preserving sketch fillet - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Skapa liksidig polygon - + Create a regular polygon in the sketcher Skapa en liksidig polygon i skissaren - + Triangle Triangel - + Square Kvadrat - + Pentagon Pentagon - + Hexagon Hexagon - + Heptagon Heptagon - + Octagon Oktogon - + Regular polygon Regelbunden polygon @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Begränsa vinkel - + Fix the angle of a line or the angle between two lines Fixera en linjes vinkel eller vinkeln mellan två linjer @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Constrain block - + Block the selected edge from moving Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Begränsa sammanfallande - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Begränsa diameter - + Fix the diameter of a circle or an arc Fixera diametern av en cirkel eller en båge @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Begränsningsavstånd - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Begränsa horisontellt avstånd - + Fix the horizontal distance between two points or line ends Fixera det horisontella avståndet mellan två punkter eller linjeändar @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Begränsa vertikalt avstånd - + Fix the vertical distance between two points or line ends Fixera det vertikala avståndet mellan två punkter eller linjeändar @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Begränsa lika - + Create an equality constraint between two lines or between circles and arcs Skapa en jämlikhetsbegränsning mellan två linjer eller mellan cirklar och cirkelbågar @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Begränsa horisontellt - + Create a horizontal constraint on the selected item Skapa en horisontell begränsning på den valda detaljen @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Begränsa lås - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Begränsa parallellt - + Create a parallel constraint between two lines Skapa en parallell begränsning mellan två linjer @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Begränsa vinkelrätt - + Create a perpendicular constraint between two lines Skapa en vinkelrät begränsning mellan två linjer @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Begränsa punkt på objekt - + Fix a point onto an object Fixera en punkt på ett objekt @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Constrain auto radius/diameter - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Begränsa symmetriskt - + Create a symmetry constraint between two points with respect to a line or a third point Skapa en symmetribegränsning mellan två punkter @@ -602,12 +602,12 @@ med avseende på en linje eller tredje punkt CmdSketcherConstrainTangent - + Constrain tangent Begränsa tangens - + Create a tangent constraint between two entities Skapa en tangentbegränsning mellan två föremål @@ -615,12 +615,12 @@ med avseende på en linje eller tredje punkt CmdSketcherConstrainVertical - + Constrain vertically Begränsa vertikalt - + Create a vertical constraint on the selected item Skapa en vertikal begränsning på den markerade detaljen @@ -667,12 +667,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreate3PointCircle - + Create circle by three points Skapa en cirkel utifrån tre punkter - + Create a circle by 3 perimeter points Skapa en cirkel utifrån tre perifera punkter @@ -693,12 +693,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Skapa en elliptisk båge i skissen @@ -706,12 +706,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Skapar en hyperblisk båge i skissen @@ -719,12 +719,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Skapa en parabelisk båge i skissen @@ -732,12 +732,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateBSpline - + Create B-spline Skapa B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateCircle - + Create circle Skapa en cirkel - + Create a circle in the sketch Skapa en cirkel i skissen @@ -758,12 +758,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Skapa ellips utifrån tre punkter - + Create an ellipse by 3 points in the sketch Skapa en ellips utifrån tre punkter i skissen @@ -771,12 +771,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateEllipseByCenter - + Create ellipse by center Skapa ellips utifrån en centrumpunkt - + Create an ellipse by center in the sketch Skapa en ellips utifrån en centrumpunkt i skissen @@ -784,12 +784,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateFillet - + Create fillet Skapa avrundning - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateHeptagon - + Create heptagon Skapa heptagon - + Create a heptagon in the sketch Skapa en heptagon i skissen @@ -810,12 +810,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateHexagon - + Create hexagon Skapa hexagon - + Create a hexagon in the sketch Skapa en hexagon i skissen @@ -849,12 +849,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateOctagon - + Create octagon Skapa oktagon - + Create an octagon in the sketch Skapa en oktagon i skissen @@ -862,12 +862,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreatePentagon - + Create pentagon Skapa pentagon - + Create a pentagon in the sketch Skapa en pentagon i skissen @@ -875,12 +875,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Skapa periodisk B-spline - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreatePoint - + Create point Skapa punkt - + Create a point in the sketch Skapa en punkt i skissen @@ -901,12 +901,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreatePointFillet - + Create corner-preserving fillet Skapa hörnbevarande avrundning - + Fillet that preserves intersection point and most constraints Avrundning som bevarar skärningspunkten och de flesta begränsningar @@ -953,12 +953,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateRegularPolygon - + Create regular polygon Skapa liksidig polygon - + Create a regular polygon in the sketch Skapa en regelbunden polygon i skissen @@ -966,12 +966,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateSlot - + Create slot Skapa skåra - + Create a slot in the sketch Skapa en skåra i skissen @@ -979,12 +979,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateSquare - + Create square Skapa kvadrat - + Create a square in the sketch Skapa en kvadrat i skissen @@ -992,12 +992,12 @@ med avseende på en linje eller tredje punkt CmdSketcherCreateTriangle - + Create equilateral triangle Skapa liksidig triangel - + Create an equilateral triangle in the sketch Skapa en liksidig triangel i skissen @@ -1070,12 +1070,12 @@ med avseende på en linje eller tredje punkt CmdSketcherExtend - + Extend edge Förläng kant - + Extend an edge with respect to the picked position Förläng en kant med avseende på den valda positionen @@ -1083,12 +1083,12 @@ med avseende på en linje eller tredje punkt CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Skapa en kant länkad till en extern geometri @@ -1427,12 +1427,12 @@ Detta kommer att rensa "stöd"-egenskapen, om den finns. CmdSketcherSplit - + Split edge Dela kant - + Splits an edge into two while preserving constraints Delar en kant i två delar och bevarar begränsningar @@ -1479,12 +1479,12 @@ Detta kommer att rensa "stöd"-egenskapen, om den finns. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Aktiverar eller deaktiverar markerade begränsningar @@ -1505,12 +1505,12 @@ Detta kommer att rensa "stöd"-egenskapen, om den finns. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Toggle driving/reference constraint - + Set the toolbar, or the selected constraints, into driving or reference mode Set the toolbar, or the selected constraints, @@ -1520,12 +1520,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Trimma kant - + Trim an edge with respect to the picked position Trimma en kant i förhållande till den markerade positionen @@ -1584,79 +1584,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Add 'Lock' constraint - + Add relative 'Lock' constraint Add relative 'Lock' constraint - + Add fixed constraint Add fixed constraint - + Add 'Block' constraint Add 'Block' constraint - + Add block constraint Add block constraint - - + + Add coincident constraint Add coincident constraint - - + + Add distance from horizontal axis constraint Add distance from horizontal axis constraint - - + + Add distance from vertical axis constraint Add distance from vertical axis constraint - - + + Add point to point distance constraint Add point to point distance constraint - - + + Add point to line Distance constraint Add point to line Distance constraint - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Add length constraint @@ -1679,8 +1679,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Add Distance constraint @@ -1706,7 +1706,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1717,220 +1717,220 @@ invalid constraints, degenerated geometry, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Add point on object constraint - - + + Add point to point horizontal distance constraint Add point to point horizontal distance constraint - + Add fixed x-coordinate constraint Add fixed x-coordinate constraint - - + + Add point to point vertical distance constraint Add point to point vertical distance constraint - + Add fixed y-coordinate constraint Add fixed y-coordinate constraint - - + + Add parallel constraint Add parallel constraint - - - - - - - + + + + + + + Add perpendicular constraint Add perpendicular constraint - + Add perpendicularity constraint Add perpendicularity constraint - + Swap coincident+tangency with ptp tangency Swap coincident+tangency with ptp tangency - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint Add tangent constraint - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Add tangent constraint point - - - - + + + + Add radius constraint Add radius constraint - - - - + + + + Add diameter constraint Add diameter constraint - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint Add angle constraint - - + + Add equality constraint Add equality constraint - - - - - + + + + + Add symmetric constraint Add symmetric constraint - + Add Snell's law constraint Add Snell's law constraint - + Toggle constraint to driving/reference Toggle constraint to driving/reference - + Activate/Deactivate constraint Activate/Deactivate constraint @@ -2015,7 +2015,7 @@ invalid constraints, degenerated geometry, etc. Add sketch arc of ellipse - + Add sketch arc of hyperbola Add sketch arc of hyperbola @@ -2159,8 +2159,8 @@ invalid constraints, degenerated geometry, etc. Update constraint's virtual space - + Add auto constraints Add auto constraints @@ -2185,12 +2185,12 @@ invalid constraints, degenerated geometry, etc. Dra kurva - + Drag Constraint Drag Constraint - + Modify sketch constraints Modify sketch constraints @@ -2281,59 +2281,59 @@ invalid constraints, degenerated geometry, etc. Auto-begränsningsfel: Olösbar skiss efter tillämpning av likhetsbegränsningar. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Kan inte finna skärning mellan kurvorna. Försök att lägga till en sammanfallande-begränsning mellan ändpunkterna på kurvorna du vill avrunda. - - + + BSpline Geometry Index (GeoID) is out of bounds. B-spline-geometriindex (GeoID) är inte giltigt. - + You are requesting no change in knot multiplicity. Du efterfrågar ingen ändring i knutmultipliciteten. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Geometriindex (GeoId) som är angivet är inte en B-spline-kurva. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Knutindex är inte giltigt. Notera att i enlighet med OCC-notation så har första knuten index 1 och inte index 0. - + The multiplicity cannot be increased beyond the degree of the B-spline. Multipliciteten kan inte ökas mer än graden av B-spline:n. - + The multiplicity cannot be decreased beyond zero. Multipliciteten kan inte minskas under 0. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC kan inte minsta multipliciteten inom den maximala toleransen. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2413,127 +2413,11 @@ invalid constraints, degenerated geometry, etc. Koppla inte till + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Fel val @@ -2615,106 +2615,106 @@ invalid constraints, degenerated geometry, etc. One of the selected has to be on the sketch. - + Select an edge from the sketch. Välj en kant från skissen. - - - - - - + + + + + + Impossible constraint Omöjlig begränsning - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Dubbelbegränsning - + The selected edge already has a horizontal constraint! Den valda kanten har redan en horisontell begränsning! - + The selected edge already has a vertical constraint! Den valda kanten har redan en vertikal begränsning! - - - + + + The selected edge already has a Block constraint! Den valda kanten har redan en blockeringsbegränsning! - + There are more than one fixed points selected. Select a maximum of one fixed point! Mer än en fast punkt är vald. Välj högst en fast punkt! - - - + + + Select vertices from the sketch. Välj hörnpunkter från skissen. - + Select one vertex from the sketch other than the origin. Välj en hörnpunkt från skissen som inte är origo. - + Select only vertices from the sketch. The last selected vertex may be the origin. Välj endast hörnpunkter från skissen. Den sist valda hörnpunkten kan vara origo. - + Wrong solver status Ogiltig status från problemlösaren - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. - + Select one edge from the sketch. Välj en kant i skissen. - + Select only edges from the sketch. Välj endast kanter i skissen. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Fel @@ -2724,80 +2724,80 @@ invalid constraints, degenerated geometry, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Slutpunkt till slutpunkt-tangering tillämpades istället. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Välj exakt en linje eller en punkt och en linje eller två punkter från skissen. - + Cannot add a length constraint on an axis! Kan inte lägga till längdbegränsning på en axel! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. Välj de rätta sakerna från skissen. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2807,92 +2807,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Ingen av de valda punkterna begränsades till de respektive kurvorna, antingen för att de är delar av samma element eller för att båda är yttre geometri. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Välj exakt en linje eller upp till två punkter från skissen. - + Cannot add a horizontal length constraint on an axis! Kan inte lägga till en horisontell längdbegränsning på en axel! - + Cannot add a fixed x-coordinate constraint on the origin point! Kan inte lägga till en fast x-koordinatsbegränsning på origo! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Kan inte lägga till en vertikal längdbegränsning på en axel! - + Cannot add a fixed y-coordinate constraint on the origin point! Kan inte lägga till en fast y-koordinatsbegränsning på origo! - + Select two or more lines from the sketch. Välj två eller flera linjer från skissen. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Välj åtminstone två linjer från skissen. - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2902,35 +2902,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunkter; två kurvor och en punkt. - + Select some geometry from the sketch. perpendicular constraint Välj geometri(er) från skissen. - - + + Cannot add a perpendicularity constraint at an unconnected point! Kan inte lägga till en vinkelräthetsbegränsning vid en oansluten punkt! - - + + One of the selected edges should be a line. En av de markerade kanterna ska vara en linje. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Slutpunkt till slutpunkt-tangering tillämpades. Sammanfallningsbegränsningen raderades. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2940,67 +2940,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunkter; två kurvor och en punkt. - + Select some geometry from the sketch. tangent constraint Välj geometri(er) från skissen. - - - + + + Cannot add a tangency constraint at an unconnected point! Kan inte lägga till ett tangensbegränsning vid en oansluten punkt! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Felaktigt antal valda objekt! - - + + With 3 objects, there must be 2 curves and 1 point. Med tre objekt måste det vara två kurvor och en punkt. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Markera en eller fler bågar eller cirklar från skissen. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. - - - + + + Constraint only applies to arcs or circles. Begränsning tillämpas bara på bågar eller cirklar. - - + + Select one or two lines from the sketch. Or select two edges and a point. Välj en eller två linjer från skissen, eller två kanter och en punkt. @@ -3015,88 +3015,88 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk En vinkelbegränsning kan inte tillämpas på två parallella linjer. - + Cannot add an angle constraint on an axis! Kan inte lägga till vinkelbegränsning på en axel! - + Select two edges from the sketch. Välj två kanter från skissen. - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. Likhet för B-spline-kant stöds inte just nu. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Välj två punkter och en symmetrilinje, två punkter och en symmetripunkt eller en linje och en symmetripunkt från skissen. - - + + Cannot add a symmetry constraint between a line and its end points. Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Kan inte lägga till symmetribegränsning mellan en linje och dess ändpunkter! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. - + Selected objects are not just geometry from one sketch. Valda objekt är inte geometri från endast en skiss. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. @@ -3118,9 +3118,9 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error CAD-kärnfel @@ -3263,14 +3263,14 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk Removal of axes alignment requires at least one selected non-external geometric element - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3654,12 +3654,12 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk Längd: - + Refractive index ratio Brytningsindexsförhållande - + Ratio n2/n1: Förhållande n2/n1: @@ -3667,72 +3667,72 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk SketcherGui::ElementFilterList - + Normal Normal - + Construction Konstruktion - + Internal Intern - + External Extern - + All types Alla typer - + Point Punkt - + Line Linje - + Circle Cirkel - + Ellipse Ellips - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3855,27 +3855,27 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk Select Vertical Axis - + Layer Lager - + Layer 0 Lager 0 - + Layer 1 Lager 1 - + Hidden Dold - + Delete Radera @@ -4751,120 +4751,120 @@ Inga begränsningar länkade till slutpunkterna hittades däremot. Inställningar - - - - - - - - - - + + + + + + + + + + Construction Konstruktion - + Elements Element - - - - + + + + Point Punkt - - - - - - - - - - + + + + + + + + + + Internal Intern - - - - + + + + Line Linje - - - - + + + + Arc Cirkelbåge - - - - + + + + Circle Cirkel - - - - + + + + Ellipse Ellips - - - - + + + + Elliptical Arc Elliptisk båge - - - - + + + + Hyperbolic Arc Hyperbolisk båge - - - - + + + + Parabolic Arc Parabolisk båge - - - - + + + + BSpline BSpline - - - - + + + + Other Övrigt - + Extended information Utökad information @@ -5085,112 +5085,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Redigera skiss - + A dialog is already open in the task panel En dialogruta är redan öppen i uppgiftspanelen - + Do you want to close this dialog? Vill du stänga denna dialogruta? - + Invalid sketch Ogiltig skiss - + Do you want to open the sketch validation tool? Vill du öppna verktyget för skissvalidering? - + The sketch is invalid and cannot be edited. Skissen är ogiltig och kan inte redigeras. - + Please remove the following constraint: Ta bort följande begränsning: - + Please remove at least one of the following constraints: Ta bort minst en av följande begränsningar: - + Please remove the following redundant constraint: Ta bort följande redundanta begränsningen: - + Please remove the following redundant constraints: Ta bort följande redundanta begränsningarna: - + The following constraint is partially redundant: The following constraint is partially redundant: - + The following constraints are partially redundant: The following constraints are partially redundant: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch Tom skiss - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) @@ -5198,7 +5198,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fullständigt begränsad @@ -5296,8 +5296,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixera diametern av en cirkel eller en båge @@ -5305,8 +5305,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fix the radius/diameter of a circle or an arc @@ -5314,8 +5314,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixera cirkelns eller cirkelbågens radie @@ -5329,70 +5329,25 @@ This is done by analyzing the sketch geometries and constraints. Skapar en enkel kopia av geometrin med den senaste valda punkten som referens - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Skapa en båge utifrån dess slutpunkter och en punkt längs bågen - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Skapa en cirkel från tre perifera punkter - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Skapa en båge utifrån dess centrum- och slutpunkter - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints - - Sketcher_CreateBSpline - + B-spline by control points B-spline utifrån kontrollpunkter - - + + Create a B-spline by control points Skapa en B-spline utifrån kontrollpunkter @@ -5400,35 +5355,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Skapa en cirkel utifrån dess centrumpunkt och en kantpunkt - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Skapa en ellips utifrån periapsis, apoapsis och lillaxel - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Skapa en ellips utifrån centrumpunkt, storaxel och punkt - - Sketcher_CreateFillet - - + + Creates a radius between two lines Creates a radius between two lines @@ -5436,8 +5373,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Skapa en heptagon utifrån dess centrumpunkt och ett hörn @@ -5445,8 +5382,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Skapa en hexagon utifrån dess centrumpunkt och ett hörn @@ -5462,14 +5399,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Skapa en oktogon utifrån dess centrumpunkt och ett hörn + - Create a regular polygon by its center and by one corner Skapa en regelbunden polygon utifrån dess centrumpunkt och ett hörn @@ -5477,8 +5414,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Skapa en pentagon utifrån dess centrumpunkt och ett hörn @@ -5486,8 +5423,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Fillet that preserves constraints and intersection point @@ -5511,8 +5448,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Skapa en kvadrat utifrån dess mittpunkt och ett hörn @@ -5520,8 +5457,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Skapa en liksidig triangel utifrån dess centrumpunkt och ett hörn @@ -5529,13 +5466,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Periodisk B-spline utifrån kontrollpunkter + - Create a periodic B-spline by control points Skapa en periodisk B-spline utifrån kontrollpunkter @@ -5936,7 +5873,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more och %1 till @@ -6159,46 +6096,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Fel @@ -6234,16 +6171,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6260,12 +6197,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6285,8 +6222,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6342,17 +6279,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6387,9 +6324,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Värdefel @@ -6452,13 +6389,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6466,13 +6403,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6578,12 +6515,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6591,12 +6528,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6604,12 +6541,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Dimension - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6647,12 +6584,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Begränsa radie - + Fix the radius of a circle or an arc Fixera cirkelns eller cirkelbågens radie @@ -6827,8 +6764,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6842,12 +6779,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6855,12 +6792,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6868,12 +6805,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6881,12 +6818,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6894,12 +6831,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6907,12 +6844,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Begränsa sammanfallande - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7333,4 +7270,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts index 6ef03a4f92..e9e2dde5a2 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Kopya oluştur - + Copy the geometry of another sketch Başka bir eskizin geometrisini kopyalama @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Yay ya da çemberi kısıtla - + Constrain an arc or a circle Bir yayı ya da bir çemberi kısıtla - + Constrain radius Yarıçapı sınırla - + Constrain diameter Çapı kısıtla - + Constrain auto radius/diameter Yarı çapı/çapı otomatik kısıtla @@ -180,24 +180,24 @@ - Center and end points - Merkez ve uç noktalar + Center and endpoints + Center and endpoints - - End points and rim point - Uç noktalar ve çember noktası + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline B-spline'ı yarat - + Create a B-spline in the sketch Eskizde bir B-spline oluşturun @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Çember oluştur - + Create a circle in the sketcher Sketcher içinde bir çember oluştur - + Center and rim point Merkez ve çember noktalar - + 3 rim points 3 kenar noktası @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Konik oluştur - + Create a conic in the sketch Eskizde bir koni oluşturun - - Ellipse by center, major radius, point - Merkez, büyük yarıçap ve nokta ile Elips + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Periapsis, apoapsis, küçük yarıçap ile elips + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Merkez, büyük yarıçap ve uç noktalar ile Elips Yayı oluştur + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Merkeze göre hiperbol yayı, ana yarıçap, uç noktalar + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Merkez, köşe ve uç noktalar ile parabol yayı @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Fileto oluştur - + Create a fillet between two lines İki çizgi arasında bir yarıçap oluştur - + Sketch fillet Eskiz yuvarla - - Constraint-preserving sketch fillet - Kısıtlamayı koruyan eskiz kavisi + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Düzenli çokgen oluşturma - + Create a regular polygon in the sketcher Sketcher içinde bir düzenli çokgen oluşturun - + Triangle Üçgen - + Square Kare - + Pentagon Beşgen - + Hexagon Altıgen - + Heptagon Yedigen - + Octagon Sekizgen - + Regular polygon Düzenli poligon @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Açı kısıtlaması - + Fix the angle of a line or the angle between two lines Bir çizginin açısını veya iki çizgi arasındaki açıyı düzeltin @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Kısıtlamayı Engelle - + Block the selected edge from moving Seçilen kenarın hareket etmesini engelle @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Çakıştır - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Noktalar arasında çakışık veya daireler, yaylar ve elipsler arasında eşmerkezli bir kısıtlama oluşturun @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Çapı kısıtla - + Fix the diameter of a circle or an arc Bir çemberin veya bir yayın yarıçapını düzelt @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Mesafeyi kısıtla - + Fix a length of a line or the distance between a line and a vertex or between two circles Bir çizginin uzunluğunu veya bir çizgi ile bir tepe noktası arasındaki veya iki daire arasındaki mesafeyi sabitleyin @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Yatay mesafeyi kısıtla - + Fix the horizontal distance between two points or line ends İki nokta veya çizgi uçları arasındaki yatay mesafeyi sabitleyin @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Dikey mesafeyi kısıtla - + Fix the vertical distance between two points or line ends İki nokta veya çizgi ucu arasındaki dikey mesafeyi düzeltin @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Eşitle - + Create an equality constraint between two lines or between circles and arcs İki çizginin veya dairelerin ve yayların değerlerini eşitleyin (kısıtlaması oluşturun) @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Yatay yap - + Create a horizontal constraint on the selected item Seçili öğede yatay bir sınırlama oluşturur @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Kısıtlama kilidi - + Create both a horizontal and a vertical distance constraint on the selected vertex Hem yatay hem de dikey mesafe kısıtlaması oluşturun @@ -520,12 +520,12 @@ seçilen köşe noktasında CmdSketcherConstrainParallel - + Constrain parallel Paralel yap - + Create a parallel constraint between two lines İki çizgi arasında paralel kısıtlama oluşturun @@ -533,12 +533,12 @@ seçilen köşe noktasında CmdSketcherConstrainPerpendicular - + Constrain perpendicular Dikey yap - + Create a perpendicular constraint between two lines İki çizgi arasında dikey bir kısıtlama oluşturun @@ -546,12 +546,12 @@ seçilen köşe noktasında CmdSketcherConstrainPointOnObject - + Constrain point onto object Noktayı nesneye çakıştır - + Fix a point onto an object Teğetsel kısıtlama oluştur @@ -559,12 +559,12 @@ seçilen köşe noktasında CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Yarı çapı/çapı otomatik kısıtla - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ seçilen köşe noktasında CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Kırılmayı kısıtla (Snell yasası) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Simetrik kısıtlama - + Create a symmetry constraint between two points with respect to a line or a third point Bir çizgi veya üçüncü bir noktaya göre, iki nokta arasında simetri sınırlaması oluştur @@ -601,12 +601,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Teğet yap - + Create a tangent constraint between two entities İki öğe arasında teğetsel kısıtlama oluşturun @@ -614,12 +614,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Dikey yap - + Create a vertical constraint on the selected item Seçilen öğeye dikey kısıtlama oluşturun @@ -666,12 +666,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Üç noktayla daire oluştur - + Create a circle by 3 perimeter points 3 çevre noktası ile bir daire oluşturun @@ -692,12 +692,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Elips yayı oluştur - + Create an arc of ellipse in the sketch Eskizde bir elips yayı oluştur @@ -705,12 +705,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Hiperbol yayı oluştur - + Create an arc of hyperbola in the sketch Eskizde bir hiperbol yayı oluştur @@ -718,12 +718,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Parabol yayı oluştur - + Create an arc of parabola in the sketch Eskizde bir parabol yayı oluştur @@ -731,12 +731,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline B-spline'ı yarat - + Create a B-spline by control points in the sketch. Eskizdeki kontrol noktalarına göre bir B-spline oluştur. @@ -744,12 +744,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Çember oluştur - + Create a circle in the sketch Eskizde bir çember oluştur @@ -757,12 +757,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points 3 noktalı elips oluşturun - + Create an ellipse by 3 points in the sketch Eskizde 3 noktadan geçen bir elips oluştur @@ -770,12 +770,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Merkezine göre elips oluştur - + Create an ellipse by center in the sketch Eskizde merkez temelli bir elips oluştur @@ -783,12 +783,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Fileto oluştur - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -796,12 +796,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Yedigen oluştur - + Create a heptagon in the sketch Eskizde bir yedigen oluştur @@ -809,12 +809,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Altıgen oluştur - + Create a hexagon in the sketch Eskizde bir altıgen oluşturun @@ -848,12 +848,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Sekizgen oluştur - + Create an octagon in the sketch Eskizde sekizgen oluşturun @@ -861,12 +861,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Beşgen oluştur - + Create a pentagon in the sketch Eskizde bir beşgen oluşturun @@ -874,12 +874,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Eskizde bir beşgen oluşturun - + Create a periodic B-spline by control points in the sketch. Eskizdeki kontrol noktalarına göre periyodik bir B-spline oluştur. @@ -887,12 +887,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Nokta oluştur - + Create a point in the sketch Eskizde bir nokta oluştur @@ -900,12 +900,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Köşeyi koruyan kavis oluşturun - + Fillet that preserves intersection point and most constraints Kesişme noktasını ve çoğu kısıtlamayı koruyan kavis @@ -952,12 +952,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Düzenli çokgen oluşturma - + Create a regular polygon in the sketch Eskizde düzenli bir çokgen oluştur @@ -965,12 +965,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Yuva oluştur - + Create a slot in the sketch Eskizde bir boşluk oluşturun @@ -978,12 +978,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Kare oluştur - + Create a square in the sketch Eskizde bir kare oluştur @@ -991,12 +991,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Eşkenar üçgen oluştur - + Create an equilateral triangle in the sketch Eskizde bir eşkenar üçgen oluşturun @@ -1069,12 +1069,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Kenarı uzat - + Extend an edge with respect to the picked position Bir kenarı seçilen konuma göre uzatın @@ -1082,12 +1082,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Harici geometri oluştur - + Create an edge linked to an external geometry Harici bir geometriye bağlı bir kenar oluştur @@ -1423,12 +1423,12 @@ Bu, eğer varsa, 'Destek' özelliğini temizler. CmdSketcherSplit - + Split edge Kenarı böl - + Splits an edge into two while preserving constraints Kısıtlamaları koruyarak bir kenarı ikiye böl @@ -1475,12 +1475,12 @@ Bu, eğer varsa, 'Destek' özelliğini temizler. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Kısıtlamayı etkinleştir / devre dışı bırak - + Activates or deactivates the selected constraints Seçili kısıtlamaları etkinleştirir veya devre dışı bırakır @@ -1501,12 +1501,12 @@ Bu, eğer varsa, 'Destek' özelliğini temizler. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Sevk / referans kısıtlamasını değiştir - + Set the toolbar, or the selected constraints, into driving or reference mode Araç çubuğunu veya seçili kısıtlamaları, @@ -1516,12 +1516,12 @@ sevk veya referans moduna ayarlayın CmdSketcherTrimming - + Trim edge Kenar düzeltin - + Trim an edge with respect to the picked position Bir kenarı seçilen konuma göre kırpın @@ -1580,79 +1580,79 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Command - + Add 'Lock' constraint 'Kilitleme' sınırlaması ekle - + Add relative 'Lock' constraint Bağıl 'Kilitleme' sınırlaması ekle - + Add fixed constraint Sabitleme sınırlaması ekle - + Add 'Block' constraint 'Blok' kısıtlaması ekle - + Add block constraint Blok kısıtlaması ekle - - + + Add coincident constraint Çakışıklık sınırlaması ekle - - + + Add distance from horizontal axis constraint Yatay eksen sınırlamasından mesafe ekle - - + + Add distance from vertical axis constraint Dikey eksen sınırlamasından mesafe ekle - - + + Add point to point distance constraint 'Noktadan noktaya mesafe' sınırlaması ekle - - + + Add point to line Distance constraint 'Noktadan çizgiye mesafe' sınırlaması ekle - - + + Add circle to circle distance constraint Daireden daireye kısıtlama ekle - + Add circle to line distance constraint Daireden çizgiye kısıtlama ekle - - - - - - + + + + + + Add length constraint Uzunluk sınırlaması ekle @@ -1675,8 +1675,8 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. - - + + Add Distance constraint Mesafe sınırlaması ekle @@ -1702,7 +1702,7 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. - + Add Symmetry constraints Simetrik kısıtlamalar ekle @@ -1713,220 +1713,220 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Mesafe kısıtlamaları ekle - + Add Horizontal constraint Yatay kısıtlama ekle - + Add Vertical constraint Dikey kısıtlama ekle - + Add Block constraint Kilit kısıtlaması ekle - + Add Angle constraint Açı kısıtlaması ekle - - - - + + + + Add Equality constraint Eşitlik sınırlaması ekle - + Add Equality constraints Eşitlik sınırlamaları ekle - - - + + + Add Radius constraint Yarıçap kısıtlaması ekle - - + + Add arc angle constraint Yay açısı kısıtlaması ekle - + Add concentric and length constraint Eşmerkezlilik ve uzunluk kısıtlaması ekle - + Add DistanceX constraint X eksenine uzaklık kısıtlaması ekle - + Add DistanceY constraint Y eksenine uzaklık kısıtlaması ekle - + Add point to circle Distance constraint Çember merkez noktasına mesafe kısıtlaması ekle - - + + Add point on object constraint 'Nesne üzerindeki bir nokta' sınırlaması ekle - - + + Add point to point horizontal distance constraint 'Noktadan noktaya yatay mesafe' sınırlaması ekle - + Add fixed x-coordinate constraint Sabit x koordinatı sınırlaması ekle - - + + Add point to point vertical distance constraint 'Noktadan noktaya dikey mesafe' sınırlaması ekle - + Add fixed y-coordinate constraint Sabit y koordinatı sınırlaması ekle - - + + Add parallel constraint Paralellik sınırlaması ekle - - - - - - - + + + + + + + Add perpendicular constraint Diklik sınırlaması ekle - + Add perpendicularity constraint Diklik kısıtlaması ekle - + Swap coincident+tangency with ptp tangency Çakışıklık+teğetliği noktadan noktaya teğetlik ile değiştir - + Swap PointOnObject+tangency with point to curve tangency NesneÜzerindeNokta+teğetlik işlevini eğri teğetliğine nokta işlevi ile değiştir - - - - - - - + + + + + + + Add tangent constraint Teğetlik sınırlaması ekle - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Teğetlik sınırlama noktası ekle - - - - + + + + Add radius constraint Yarıçap sınırlaması ekle - - - - + + + + Add diameter constraint Çap sınırlaması ekle - - - - + + + + Add radiam constraint Yarıçap kısıtlaması ekle - - - - + + + + Add angle constraint Açı sınırlaması ekle - - + + Add equality constraint Eşitlik sınırlaması ekle - - - - - + + + + + Add symmetric constraint Simetriklik sınırlaması ekle - + Add Snell's law constraint 'Snell kanunu' sınırlaması ekle - + Toggle constraint to driving/reference Kısıtlamayı sevk/referans olarak değiştir - + Activate/Deactivate constraint Kısıtlamayı etkinleştir / devre dışı bırak @@ -2011,7 +2011,7 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Eskiz elips yayı ekle - + Add sketch arc of hyperbola Eskiz hiperbol yayı ekleyin @@ -2155,8 +2155,8 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Kısıtlamanın sanal alanını güncelleyin - + Add auto constraints Otomatik kısıtlamalar ekleyin @@ -2181,12 +2181,12 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Eğriyi Sürükle - + Drag Constraint Kısıtlamayı Sürükle - + Modify sketch constraints Eskiz kısıtlamalarını değiştirin @@ -2277,59 +2277,59 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Otomatik kısıtlama hatası: Eşitlik kısıtlamaları uygulandıktan sonra eskiz çözülemez. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Eğrilerin kesişimini tahmin edemiyoruz. Dilimlemeyi planladığınız eğrilerin köşeleri arasında çakışan bir kısıtlama eklemeyi deneyin. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometri Dizini (GeoID) sınırların dışında. - + You are requesting no change in knot multiplicity. Düğüm çokluğunda herhangi bir değişiklik istemiyorsunuz. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Sağlanan Geometri Dizini (GeoId) bir B-spline eğrisi değil. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Düğüm endeksi sınırların dışındadır. OCC gösterimine göre, ilk düğümün indeks 1'i olduğunu ve sıfır olmadığını unutmayın. - + The multiplicity cannot be increased beyond the degree of the B-spline. Çeşitlilik, B-spline'nın derecesinin ötesinde artırılamaz. - + The multiplicity cannot be decreased beyond zero. Çokluk sıfırdan aşağıya düşürülemez. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC, maksimum tolerans dahilinde çokluğu azaltamıyor. - + Knot cannot have zero multiplicity. Düğümün çokluğu sıfır olamaz. - + Knot multiplicity cannot be higher than the degree of the BSpline. Düğüm çokluğu B-Spline derecesinden yüksek olamaz. - + Knot cannot be inserted outside the BSpline parameter range. Düğüm B-Spline parametre aralığının dışına eklenemez. @@ -2409,127 +2409,11 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. İliştirilmez + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2539,6 +2423,125 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2556,9 +2559,6 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. - - - Wrong selection Yanlış seçim @@ -2611,106 +2611,106 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. One of the selected has to be on the sketch. - + Select an edge from the sketch. Taslaktan bir kenar seç - - - - - - + + + + + + Impossible constraint İmkansız kısıt - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Çift kısıtlama - + The selected edge already has a horizontal constraint! Seçilen kenar zaten yatay bir kısıtlamaya sahip! - + The selected edge already has a vertical constraint! Seçilen kenar zaten dikey bir kısıtlamaya sahip! - - - + + + The selected edge already has a Block constraint! Seçilen kenarın zaten bir Blok kısıtlaması var! - + There are more than one fixed points selected. Select a maximum of one fixed point! Seçilen birden fazla sabit nokta vardır. En fazla bir tane sabit nokta seçin! - - - + + + Select vertices from the sketch. Eskiden krokileri seçin. - + Select one vertex from the sketch other than the origin. Köşeden başka bir taslaktan bir köşe seçin. - + Select only vertices from the sketch. The last selected vertex may be the origin. Eskiden sadece köşeleri seçin. Son seçilen köşe orijin olabili. - + Wrong solver status Yanlış çözücü durumu - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Çizim çözülmediyse veya gereksiz ve çelişen kısıtlamalar varsa bir Blok kısıtlaması eklenemez. - + Select one edge from the sketch. Eskizden bir kenar seçin. - + Select only edges from the sketch. Eskizden sadece kenarları seçin. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Hata @@ -2720,80 +2720,80 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. Bunun yerine, uç noktalar arasında teğetsel bir kısıtlama uygulandı. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Çizimden tam olarak bir çizgi veya bir nokta ve bir çizgi veya iki nokta seçin. - + Cannot add a length constraint on an axis! Bir eksende bir uzunluk sınırlaması eklenemiyor! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Bunun yerine, kenar teğetliğine bitiş noktası uygulandı. - - - - - - + + + + + + Select the right things from the sketch. Eskiden eskizlerden birini seçin. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2803,92 +2803,92 @@ bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Seçilen noktaların hiçbiri, aynı elemanın parçaları oldukları, her ikisi de harici geometri oldukları için veya kenar uygun olmadığı için ilgili eğrilerle sınırlandırılmadı. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Seçilen noktalardan hiçbiri ilgili eğrilere aynı elemanın parçaları olduğu için ya da ikisi de harici geometri olduğu için kısıtlanmış değildi. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Çizimden tam olarak bir çizgi veya en fazla iki nokta seçin. - + Cannot add a horizontal length constraint on an axis! Bir eksene yatay uzunluk kısıtlaması eklenemez! - + Cannot add a fixed x-coordinate constraint on the origin point! Orijin noktasına sabit bir x-koordinat kısıtlaması eklenemiyor! - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! Bir eksene dikey uzunluk kısıtı eklenemiyor! - + Cannot add a fixed y-coordinate constraint on the origin point! Orijin noktasına sabit bir y-koordinat kısıtlaması eklenemiyor! - + Select two or more lines from the sketch. Eskizden iki veya daha fazla çizgi seçin. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Çizimden en az iki satır seçin. - + The selected edge is not a valid line. Seçilen kenar geçerli bir çizgi değil. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2898,35 +2898,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokta; iki eğri ve bir nokta. - + Select some geometry from the sketch. perpendicular constraint Eskizden bazı geometriyi seçin. - - + + Cannot add a perpendicularity constraint at an unconnected point! Bağlantısız bir noktaya diklik kısıtı eklenemiyor! - - + + One of the selected edges should be a line. Seçilen kenarlardan bir tanesi bir çizgi olmalıdır. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Uç noktalar arasında teğetsel bir kısıtlama uygulandı. Çakışık kısıtlama silindi. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Kenar teğetliğine bitiş noktası uygulandı. 'Nesne üzerinde nokta' kısıtlaması silindi. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2936,67 +2936,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokta; iki eğri ve bir nokta. - + Select some geometry from the sketch. tangent constraint Eskizden bazı geometriyi seçin. - - - + + + Cannot add a tangency constraint at an unconnected point! Bağlantısız bir noktaya bir teğet sınırlaması eklenemiyor! - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! Seçilen nesnelerin sayısı yanlış! - - + + With 3 objects, there must be 2 curves and 1 point. 3 nesneyle 2 eğri ve 1 nokta olmalıdır. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Eskizden bir veya daha fazla yay veya daire seçin. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Yalnızca bir veya daha fazla B-Spline kutbu veya eskizden yalnızca bir veya daha fazla yay veya daire seçin, ancak karıştırmayın. - - - + + + Constraint only applies to arcs or circles. Kısıtlama yalnızca yaylar veya daireler için geçerlidir. - - + + Select one or two lines from the sketch. Or select two edges and a point. Çizimden bir veya iki çizgi seçin. Ya da iki kenar ve bir nokta seçin. @@ -3011,88 +3011,88 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt İki paralel çizgi için açı sınırlaması ayarlanamaz. - + Cannot add an angle constraint on an axis! Bir eksene açı sınırlaması eklenemiyor! - + Select two edges from the sketch. Eskizden iki kenar seçin. - + Select two or more compatible edges. İki veya daha fazla uyumlu kenar seçin. - + Sketch axes cannot be used in equality constraints. Eskiz ekseni eşitlik kısıtlamalarında kullanılamaz. - + Equality for B-spline edge currently unsupported. B-spline kenarı için eşitlik şu anda desteklenmiyor. - - - - + + + + Select two or more edges of similar type. Benzer tipte iki veya daha fazla kenar seçin. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Eskizden iki nokta ve bir simetri çizgisi, iki nokta ve bir simetri noktası veya bir çizgi ve bir simetri noktası seçin. - - + + Cannot add a symmetry constraint between a line and its end points. Bir çizgi ve uç noktaları arasına simetrik kısıtlama eklenemez. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Bir çizgi ile bitiş noktaları arasında bir simetri kısıtı eklenemez! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Işınlar olarak işlev görecek iki çizgi uç noktası ve bir sınırı temsil eden bir kenar seçin. İlk seçilen nokta indeks n1'e, ikincisi n2'ye karşılık gelir ve sıfır değeri n2 / n1 oranını ayarlar. - + Selected objects are not just geometry from one sketch. Seçilen nesneler sadece bir taslaktaki geometri değildir. - + Cannot create constraint with external geometry only. Sadece dış geometri ile kısıtlama oluşturulamaz. - + Incompatible geometry is selected. Uyumsuz geometri seçildi. - - - - - + + + + + Select constraints from the sketch. Eskizden sınırlamaları seçin. @@ -3114,9 +3114,9 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error CAD Çekirdek Hatası @@ -3259,14 +3259,14 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt Eksenleri hizalamayı kaldırma için en az bir seçili iç geometrik eleman gerekir - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3650,12 +3650,12 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt Uzunluk: - + Refractive index ratio Refraktif indeks oranı - + Ratio n2/n1: Oran n2/n1: @@ -3663,72 +3663,72 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt SketcherGui::ElementFilterList - + Normal Olağan - + Construction İnşa - + Internal Internal - + External Dış - + All types All types - + Point Nokta - + Line Çizgi - + Circle Daire - + Ellipse Elips - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3851,27 +3851,27 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt Select Vertical Axis - + Layer Layer - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Gizli - + Delete Sil @@ -4743,120 +4743,120 @@ Ancak, uç noktalara bağlanan hiçbir kısıtlama bulunamadı. Ayarlar - - - - - - - - - - + + + + + + + + + + Construction İnşa - + Elements Elementler - - - - + + + + Point Nokta - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Çizgi - - - - + + + + Arc Yay - - - - + + + + Circle Daire - - - - + + + + Ellipse Elips - - - - + + + + Elliptical Arc Eliptik Ark - - - - + + + + Hyperbolic Arc Hiperbolik yay - - - - + + + + Parabolic Arc Parabolik Ark - - - - + + + + BSpline BSpline - - - - + + + + Other Diğer - + Extended information Detaylı bilgi @@ -5077,112 +5077,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Taslağı düzenle - + A dialog is already open in the task panel Araç çubuğunda bir pencere zaten açık - + Do you want to close this dialog? Bu pencereyi kapatmak ister misiniz? - + Invalid sketch Geçersiz eskiz - + Do you want to open the sketch validation tool? Eskiz doğrulama aracını açmak istiyor musunuz? - + The sketch is invalid and cannot be edited. Eskiz geçersizdir ve düzenlenemez. - + Please remove the following constraint: Lütfen aşağıdaki kısıtlamayı kaldırın: - + Please remove at least one of the following constraints: Lütfen aşağıdaki kısıtlamalardan en az birini kaldırın: - + Please remove the following redundant constraint: Lütfen aşağıdaki gereksiz kısıtlamayı kaldırın: - + Please remove the following redundant constraints: Lütfen aşağıdaki gereksiz kısıtlamaları kaldırın: - + The following constraint is partially redundant: Aşağıdaki kısıtlama kısmen gereksizdir: - + The following constraints are partially redundant: Aşağıdaki kısıtlamalar kısmen gereksizdir: - + Please remove the following malformed constraint: Lütfen aşağıdaki hatalı biçimlendirilmiş kısıtlamayı kaldırın: - + Please remove the following malformed constraints: Lütfen aşağıdaki hatalı biçimlendirilmiş kısıtlamaları kaldırın: - + Empty sketch Boş eskiz - + Over-constrained: Aşırı-Kısıtlı: - + Malformed constraints: Hatalı biçimlendirilmiş kısıtlamalar: - + Redundant constraints: Gereksiz kısıtlamalar: - + Partially redundant: Kısmen gereksiz: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) @@ -5190,7 +5190,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fully constrained @@ -5288,8 +5288,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Bir çemberin veya bir yayın yarıçapını düzelt @@ -5297,8 +5297,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Bir çember veya yayın yarı çapını/çapını onar @@ -5306,8 +5306,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Bir dairenin veya bir yayın yarıçapını düzeltme @@ -5321,70 +5321,25 @@ This is done by analyzing the sketch geometries and constraints. Son seçilen noktayı referans alarak geometrinin basit bir kopyasını oluşturur - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Uç noktaları ve yay boyunca bir nokta ile bir yay oluşturma - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points 3 kenar noktası ile bir daire oluşturun - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Merkezini ve uç noktalarını belirterek bir yay oluşturun - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Merkez, ana yarıçap ve bitiş noktalarına göre bir elips yayı oluşturun - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Merkez, ana yarıçap ve bitiş noktalarına göre bir hiperbol yayı oluşturun - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Merkez, tepe ve bitiş noktalarına göre bir parabol yayı oluşturun - - Sketcher_CreateBSpline - + B-spline by control points Kontrol noktalarıyla B-spline - - + + Create a B-spline by control points Kontrol noktalarına göre B-spline oluşturma @@ -5392,35 +5347,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Merkezi ve bir kenar noktası ile bir daire oluşturun - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Periapsis, apoapsis ve küçük yarıçap ile elips oluşturun - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Merkez, büyük yarıçap ve nokta ile bir elips oluşturun - - Sketcher_CreateFillet - - + + Creates a radius between two lines İki çizgi arasında bir yarıçap oluşturur @@ -5428,8 +5365,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Merkezinden ve bir köşeden bir heptagon oluşturun @@ -5437,8 +5374,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Merkezinden ve bir köşeden bir altıgen oluşturun @@ -5454,14 +5391,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Merkezinden ve bir köşeden bir sekizgen oluşturun + - Create a regular polygon by its center and by one corner Merkezinden ve bir köşeden düzenli çokgen oluşturma @@ -5469,8 +5406,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Merkezinden ve bir köşeden bir beşgen oluştur @@ -5478,8 +5415,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Kısıtlamaları ve kesişme noktasını koruyan kavis @@ -5503,8 +5440,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Merkezini ve bir köşesini belirterek bir kare oluşturun @@ -5512,8 +5449,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Merkezinden ve bir köşeden eşkenar üçgen oluşturun @@ -5521,13 +5458,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Kontrol noktalarıyla periyodik B-spline + - Create a periodic B-spline by control points Kontrol noktalarına göre periyodik B-spline oluşturma @@ -5928,7 +5865,7 @@ Eigen Sparse QR algoritması seyrek matrisler için optimize edilmiştir; genell ViewProviderSketch - + and %1 more and %1 more @@ -6151,46 +6088,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Hata @@ -6226,16 +6163,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6252,12 +6189,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6277,8 +6214,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6334,17 +6271,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6379,9 +6316,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6444,13 +6381,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6458,13 +6395,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6570,12 +6507,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6583,12 +6520,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6596,12 +6533,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Boyut - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6639,12 +6576,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Yarıçapı sınırla - + Fix the radius of a circle or an arc Bir dairenin veya bir yayın yarıçapını düzeltme @@ -6819,8 +6756,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6834,12 +6771,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6847,12 +6784,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6860,12 +6797,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6873,12 +6810,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6886,12 +6823,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6899,12 +6836,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Çakıştır - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7325,4 +7262,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts index 0d61fdc3e4..abf216c99e 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Створити копію - + Copy the geometry of another sketch Копіює геометрію іншого ескізу @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Обмеження для дуги або кола - + Constrain an arc or a circle Створює обмеження для дуги чи кола - + Constrain radius Обмеження за радіусом - + Constrain diameter Обмеження за діаметром - + Constrain auto radius/diameter Автоматичне обмеження за радіусом/діаметром @@ -180,24 +180,24 @@ - Center and end points - Центральна та кінцеві точки + Center and endpoints + Center and endpoints - - End points and rim point - Кінцеві та точка периметру + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Створити B-сплайн - + Create a B-spline in the sketch Створює B-сплайн на ескізі @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Створити коло - + Create a circle in the sketcher Створює коло на ескізі - + Center and rim point Центральна та точка периметру - + 3 rim points Три точки периметру @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Створити конус - + Create a conic in the sketch Створює конус на ескізі - - Ellipse by center, major radius, point - Еліпс за центром, великим радіусом, точкою + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Еліпс за періапсидою, апоапсидою, малому радіусу + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Дуга еліпсу за центром, великому радіусу та кінцевими точками + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Дуга гіперболи за центром, великому радіусу та кінцевими точками + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Дуга параболи за фокусом, вершинами та кінцевими точками @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Створити заокруглення - + Create a fillet between two lines Створює заокруглення між двома лініями - + Sketch fillet Заокруглення ескізу - - Constraint-preserving sketch fillet - Заокруглення ескізу зі збереженням обмежень + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Створити правильний багатокутник - + Create a regular polygon in the sketcher Створює правильний багатокутник на ескізі - + Triangle Трикутник - + Square Квадрат - + Pentagon Пʼятикутник - + Hexagon Шестикутник - + Heptagon Семикутник - + Octagon Восьмикутник - + Regular polygon Правильний багатокутник @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Кутове обмеження - + Fix the angle of a line or the angle between two lines Задає кут нахилу лінії або кут між двома лініями @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Обмеження переміщення - + Block the selected edge from moving Блокує переміщення вибраного ребра @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Обмеження збігу - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Створити обмеження збігу між точками або концентричне обмеження між колами, дугами та еліпсами @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Обмеження за діаметром - + Fix the diameter of a circle or an arc Задає діаметр кола або дуги @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Обмеження відстані - + Fix a length of a line or the distance between a line and a vertex or between two circles Фіксує довжину лінії або відстань між лінією і вершиною або між двома колами @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Обмеження відстані по горизонталі - + Fix the horizontal distance between two points or line ends Задає відстань по горизонталі між двома точками або кінцями відрізку @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Обмеження відстані по вертикалі - + Fix the vertical distance between two points or line ends Задає відстань по вертикалі між двома точками або кінцями відрізку @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Еквівалентне обмеження - + Create an equality constraint between two lines or between circles and arcs Створює обмеження еквівалентності між двома лініями, колами або дугами @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Горизонтальне обмеження - + Create a horizontal constraint on the selected item Створює обмеження горизонтальності для вибраного елементу @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Обмеження фіксації - + Create both a horizontal and a vertical distance constraint on the selected vertex Створює обмеження на горизонтальну і вертикальну відстань для обраної вершини @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Паралельне обмеження - + Create a parallel constraint between two lines Створює обмеження паралельності між двома лініями @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Перпендикулярне обмеження - + Create a perpendicular constraint between two lines Створює обмеження перпендикулярності між двома лініями @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Зафіксувати точку на обʼєкті - + Fix a point onto an object Фіксує точку на обʼєкті @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Автоматичне обмеження за радіусом/діаметром - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Задає діаметр, якщо вибрано коло, або радіус, якщо вибрано полюс дуги/сплайна @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Обмеження за законом заломлення (закон Снеліуса) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Створює обмеження за законом заломлення (закон Снеліуса) між @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Симетричне обмеження - + Create a symmetry constraint between two points with respect to a line or a third point Створює обмеження симетричності між двома @@ -601,12 +601,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Обмеження дотичності - + Create a tangent constraint between two entities Створює обмеження дотичності між двома обʼєктами @@ -614,12 +614,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Вертикальне обмеження - + Create a vertical constraint on the selected item Створює обмеження вертикальності для вибраного елементу @@ -666,12 +666,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Створити коло за трьома точками - + Create a circle by 3 perimeter points Створює коло за трьома точками периметра @@ -692,12 +692,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Створити дугу еліпса - + Create an arc of ellipse in the sketch Створює дугу еліпса на ескізі @@ -705,12 +705,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Створити дугу гіперболи - + Create an arc of hyperbola in the sketch Створює дугу гіперболи на ескізі @@ -718,12 +718,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Створити дугу параболи - + Create an arc of parabola in the sketch Створює дугу параболи на ескізі @@ -731,12 +731,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Створити B-сплайн - + Create a B-spline by control points in the sketch. Створити B-сплайн за контрольними точками креслення. @@ -744,12 +744,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Створити коло - + Create a circle in the sketch Створює коло на ескізі @@ -757,12 +757,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Створити еліпс за трьома точками - + Create an ellipse by 3 points in the sketch Створює еліпс за 3 точками на ескізі @@ -770,12 +770,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Створити еліпс за центром - + Create an ellipse by center in the sketch Створює еліпс за центром та двома радіусами @@ -783,12 +783,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Створити заокруглення - + Create a fillet between two lines or at a coincident point Створити заокруглення між двома лініями або в точці збігу @@ -796,12 +796,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Створити семикутник - + Create a heptagon in the sketch Створює семикутник на ескізі @@ -809,12 +809,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Створити шестикутник - + Create a hexagon in the sketch Створює шестикутник на ескізі @@ -848,12 +848,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Створити восьмикутник - + Create an octagon in the sketch Створює восьмикутник на ескізі @@ -861,12 +861,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Створити п’ятикутник - + Create a pentagon in the sketch Створює п’ятикутник на ескізі @@ -874,12 +874,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Створити періодичний B-сплайн - + Create a periodic B-spline by control points in the sketch. Створити періодичний B-сплайн за контрольними точками креслення. @@ -887,12 +887,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Створити точку - + Create a point in the sketch Створює точку на ескізі @@ -900,12 +900,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Створити заокруглення зі збереженням точки перетину - + Fillet that preserves intersection point and most constraints Створює заокруглення, яке зберігає точку перетину та більшість обмежень @@ -952,12 +952,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Створити правильний багатокутник - + Create a regular polygon in the sketch Створює правильний багатокутник на ескізі @@ -965,12 +965,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Створити паз - + Create a slot in the sketch Створює паз на ескізі @@ -978,12 +978,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Створити квадрат - + Create a square in the sketch Створює квадрат на ескізі @@ -991,12 +991,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Створити рівнобічний трикутник - + Create an equilateral triangle in the sketch Створює рівнобічний трикутник на ескізі @@ -1069,12 +1069,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Продовжити ребро - + Extend an edge with respect to the picked position Продовжує ребро до найближчої точки перетину @@ -1082,12 +1082,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Створити зовнішню геометрію - + Create an edge linked to an external geometry Створює ребро, яке прив’язане до зовнішньої геометрії @@ -1425,12 +1425,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Розділити ребро - + Splits an edge into two while preserving constraints Ділить ребро на два зі збереженням обмежень @@ -1477,12 +1477,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Активувати/деактивувати обмеження - + Activates or deactivates the selected constraints Активує або деактивує виділені обмеження @@ -1503,12 +1503,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Перемкнути обмеження між допоміжними/основними - + Set the toolbar, or the selected constraints, into driving or reference mode Перемикає панель інструментів в режим допоміжної/основної геометрії або перетворює виділені обмеження в допоміжні/основні @@ -1517,12 +1517,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Обрізати ребро - + Trim an edge with respect to the picked position Обрізає ребро до найближчої точки перетину @@ -1581,79 +1581,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Додати обмеження 'Фіксація' - + Add relative 'Lock' constraint Додайте обмеження відносна 'Фіксація' - + Add fixed constraint Додати фіксуюче обмеження - + Add 'Block' constraint Додати обмеження 'Блокування' - + Add block constraint Додати обмеження блокування - - + + Add coincident constraint Додати обмеження збігу - - + + Add distance from horizontal axis constraint Додати обмеження відстані від горизонтальної осі - - + + Add distance from vertical axis constraint Додати обмеження відстані від вертикальної осі - - + + Add point to point distance constraint Додати обмеження відстані між двома точками - - + + Add point to line Distance constraint Додати обмеження відстані між точкою та лінією - - + + Add circle to circle distance constraint Додати обмеження відстані між двома колами - + Add circle to line distance constraint Додати обмеження відстані між колом та лінією - - - - - - + + + + + + Add length constraint Додати обмеження довжини @@ -1676,8 +1676,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Додати обмеження відстані @@ -1703,7 +1703,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Додати обмеження Симетрії @@ -1714,220 +1714,220 @@ invalid constraints, degenerated geometry, etc. Додати обмеження за відстанню - + Add Horizontal constraint Додати горизонтальне обмеження - + Add Vertical constraint Додати вертикальне обмеження - + Add Block constraint Додати обмеження 'блокування' - + Add Angle constraint Додати обмеження кута - - - - + + + + Add Equality constraint Додати обмеження рівності - + Add Equality constraints Додати обмеження рівності - - - + + + Add Radius constraint Додати обмеження радіуса - - + + Add arc angle constraint Додати обмеження кута дуги - + Add concentric and length constraint Додати обмеження концентричності та довжини - + Add DistanceX constraint Додати обмеження відстані по X - + Add DistanceY constraint Додати обмеження відстані по Y - + Add point to circle Distance constraint Додати обмеження відстані від точки до кола - - + + Add point on object constraint Додати обмеження точки на об’єкті - - + + Add point to point horizontal distance constraint Додати обмеження відстані за горизонталлю між двома точками - + Add fixed x-coordinate constraint Додати обмеження фіксованої X-координати - - + + Add point to point vertical distance constraint Додати обмеження відстані за вертикаллю між двома точками - + Add fixed y-coordinate constraint Додати обмеження фіксованої Y-координати - - + + Add parallel constraint Додати обмеження паралельності - - - - - - - + + + + + + + Add perpendicular constraint Додати обмеження перпендикуляру - + Add perpendicularity constraint Додати обмеження перпендикулярності - + Swap coincident+tangency with ptp tangency Перетворити збіг+дотик у дотик точка-точка - + Swap PointOnObject+tangency with point to curve tangency Перетворіть обмеження «Точка на обʼєкті» + дотик на обмеження «Дотик до кривої» - - - - - - - + + + + + + + Add tangent constraint Додати обмеження дотику - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Додати обмеження дотику до точки - - - - + + + + Add radius constraint Додати обмеження радіусу - - - - + + + + Add diameter constraint Додати обмеження діаметру - - - - + + + + Add radiam constraint Додати обмеження радіусу/діаметру - - - - + + + + Add angle constraint Додати обмеження кута - - + + Add equality constraint Додати обмеження рівності - - - - - + + + + + Add symmetric constraint Додати обмеження симетрії - + Add Snell's law constraint Додати обмеження за законом заломлення Снеліуса - + Toggle constraint to driving/reference Перемкнути обмеження між допоміжними/основними - + Activate/Deactivate constraint Активувати/деактивувати обмеження @@ -2012,7 +2012,7 @@ invalid constraints, degenerated geometry, etc. Додати ескіз дуги еліпса - + Add sketch arc of hyperbola Додати ескіз дуги гіперболи @@ -2156,8 +2156,8 @@ invalid constraints, degenerated geometry, etc. Оновити віртуальний простір обмеження - + Add auto constraints Додати автообмеження @@ -2182,12 +2182,12 @@ invalid constraints, degenerated geometry, etc. Перетягнути криву - + Drag Constraint Перетягнути обмеження - + Modify sketch constraints Змінити обмеження ескізу @@ -2278,59 +2278,59 @@ invalid constraints, degenerated geometry, etc. Помилка автообмеження: Ескіз не вирішується після додавання обмеження рівності. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. Не вдалося розрахувати перетин кривих. Спробуйте додати обмеження збігу між вершинами кривих, які ви хочете заокруглити. - - + + BSpline Geometry Index (GeoID) is out of bounds. BSpline ідентифікатор геометрії (GeoID) знаходиться поза межами. - + You are requesting no change in knot multiplicity. Ви просите не змінювати кратність вузлів. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. Ідентифікатор геометрії (GeoId) не є кривою B-сплайн. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. Індекс вузла виходить за межі. Зверніть увагу, що відповідно до нотації OCC перший вузол має індекс 1, а не нуль. - + The multiplicity cannot be increased beyond the degree of the B-spline. Кратність не може бути збільшена понад ступінь B-сплайну. - + The multiplicity cannot be decreased beyond zero. Кратність не може бути зменшена нижче нуля. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC нездатний зменшити кратність у межах максимального допуску. - + Knot cannot have zero multiplicity. Вузол не може мати нульову кратність. - + Knot multiplicity cannot be higher than the degree of the BSpline. Кратність вузла не повинна перевищувати ступінь B-сплайна. - + Knot cannot be inserted outside the BSpline parameter range. Вузол не можна розмістити за межами діапазону параметрів B-сплайну. @@ -2410,127 +2410,11 @@ invalid constraints, degenerated geometry, etc. Не приєднувати + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2540,6 +2424,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2557,9 +2560,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Невірний вибір @@ -2612,106 +2612,106 @@ invalid constraints, degenerated geometry, etc. Один із вибраних має бути на ескізі. - + Select an edge from the sketch. Виділіть ребро на ескізі. - - - - - - + + + + + + Impossible constraint Неможливі обмеження - - + + The selected edge is not a line segment. Виділене ребро не є сегментом лінії. - - - + + + Double constraint Подвійне обмеження - + The selected edge already has a horizontal constraint! Виділене ребро вже має обмеження по горизонталі! - + The selected edge already has a vertical constraint! Виділене ребро вже має обмеження по вертикалі! - - - + + + The selected edge already has a Block constraint! Виділене ребро вже заблоковане! - + There are more than one fixed points selected. Select a maximum of one fixed point! Виділено декілька фіксованих точок. Оберіть максимум одну фіксовану точку! - - - + + + Select vertices from the sketch. Виділіть вершини на ескізі. - + Select one vertex from the sketch other than the origin. Виділіть одну вершину на ескізі, крім початкової. - + Select only vertices from the sketch. The last selected vertex may be the origin. Виділіть тільки вершини на ескізі. Остання виділена вершина може бути початковою. - + Wrong solver status Неправильний статус вирішувача - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. Блокуюче обмеження не може бути додано, якщо ескіз не можна вирішати або є надлишкові/конфліктуючі обмеження. - + Select one edge from the sketch. Виділіть одне ребро на ескізі. - + Select only edges from the sketch. Виділіть лише ребра на ескізі. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Кількість виділених об'єктів не 3 - + Error Помилка @@ -2721,80 +2721,80 @@ invalid constraints, degenerated geometry, etc. Неочікувана помилка. Більш детальна інформація доступна у Виді Звіт. - + The selected item(s) can't accept a horizontal or vertical constraint! Вибраний елемент(и) не може приймати обмеження по горизонталі або вертикалі! - + Endpoint to endpoint tangency was applied instead. Замість кінцевої точки застосовано дотичну. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Виберіть дві або більше вершин з ескізу для обмеження збігу, або два або більше кіл, еліпсів, дуг або дуг еліпса для концентричного обмеження. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Виберіть дві вершини з ескізу для обмеження збігу, або два кола, еліпси, дуги або дуги еліпса для концентричного обмеження. - + Select exactly one line or one point and one line or two points from the sketch. Виділіть на ескізі лише одну лінію, або одну точку та лінію, або дві точки. - + Cannot add a length constraint on an axis! Не можу додати обмеження довжини на вісь! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Виділіть на ескізі рівно одну лінію або одну точку і одну лінію або дві точки, або два кола. - + This constraint does not make sense for non-linear curves. Це обмеження не має сенсу для нелінійних кривих. - + Endpoint to edge tangency was applied instead. Замість кінцевої точки застосовано дотичну до ребра. - - - - - - + + + + + + Select the right things from the sketch. Виділіть потрібні обʼєкти на ескізі. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Виділіть ребро, яке не є вагою B-сплайну. @@ -2804,92 +2804,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. Жодна з виділених точок не була обмежена відповідними кривими тому, що вони є частинами того ж елементу; вони є зовнішньою геометрією або тому, що ребро не підходить. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Жодна з виділених точок не була обмежена відповідними кривими тому, що вони є частинами того ж елементу або вони є зовнішньою геометрією. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Виділіть на ескізі лише одну лінію або не більше двох точок. - + Cannot add a horizontal length constraint on an axis! Не можу додати горизонтального обмеження довжини на вісь! - + Cannot add a fixed x-coordinate constraint on the origin point! Не можна обмежити X-координату точки початку координат! - - + + This constraint only makes sense on a line segment or a pair of points. Це обмеження має сенс лише для відрізка або пари точок. - + Cannot add a vertical length constraint on an axis! Не можу додати вертикального обмеження довжини на вісь! - + Cannot add a fixed y-coordinate constraint on the origin point! Не можна обмежити Y-координату точки початку координат! - + Select two or more lines from the sketch. Виділіть на ескізі дві або більше ліній. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Виділіть на ескізі принаймні дві лінії. - + The selected edge is not a valid line. Виділене ребро не є правильною лінією. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2899,35 +2899,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Допустимі комбінації: дві криві; кінцева точка і крива; дві кінцевих точки; дві криві та точка. - + Select some geometry from the sketch. perpendicular constraint Виділіть деяку геометрію ескізу. - - + + Cannot add a perpendicularity constraint at an unconnected point! Не вдалося застосувати обмеження перпендикулярності, бо виділена точка не є частиною кривої! - - + + One of the selected edges should be a line. Одне з виділених ребер повинне бути лінією. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Застосовано обмеження дотичності між кінцевими точками. Обмеження збігу видалено. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Застосовано обмеження дотичності кінцевої точки до ребра. Обмеження точки на об’єкті було видалено. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2937,67 +2937,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Допустимі комбінації: дві криві; кінцева точка та крива; дві кінцеві точки; дві криві та точка. - + Select some geometry from the sketch. tangent constraint Виділіть деяку геометрію ескізу. - - - + + + Cannot add a tangency constraint at an unconnected point! Не можу додати обмеження дотичної у точці, що не належить кривій! - - + + Tangent constraint at B-spline knot is only supported with lines! Дотичне обмеження на вузлі B-сплайна підтримується лише лініями! - + B-spline knot to endpoint tangency was applied instead. Замість цього застосовано дотичну вузла B-сплайна до кінцевої точки. - - + + Wrong number of selected objects! Неправильна кількість виділених обʼєктів! - - + + With 3 objects, there must be 2 curves and 1 point. Коли вибрано 3 елементи, це повинні бути 2 криві та одна точка. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Виділіть одну або кілька дуг чи кіл на ескізі. - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Виділіть на ескізі лише один чи декілька полюсів B-сплайну або лише одну чи декілька дуг чи кіл, але не змішуйте сплайни та дуги. - - - + + + Constraint only applies to arcs or circles. Обмеження можна застосовувати лише до дуг або кіл. - - + + Select one or two lines from the sketch. Or select two edges and a point. Виділіть одну або дві лінії на ескізі. Або виділіть два ребра і точку. @@ -3012,88 +3012,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Обмеження кута не можна застосувати до паралельних ліній. - + Cannot add an angle constraint on an axis! Не можу додати обмеження кута на вісі! - + Select two edges from the sketch. Виділіть два ребра на ескізі. - + Select two or more compatible edges. Виділіть два або більше сумісних ребра. - + Sketch axes cannot be used in equality constraints. Вісі ескізу не можна використовувати в обмеженнях еквівалентності. - + Equality for B-spline edge currently unsupported. Обмеження рівності ребра B-сплайну не підтримується. - - - - + + + + Select two or more edges of similar type. Виділіть два або більше ребра однакового типу. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Виділіть на ескізі лише один чи декілька полюсів B-сплайну або лише одну чи декілька дуг чи кіл, але не змішуйте сплайни та дуги. - - + + Cannot add a symmetry constraint between a line and its end points. Неможливо додати обмеження симетрії між лінією та її кінцевими точками. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! Неможливо додати обмеження симетрії між лінією та її кінцевими точками! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Виділіть два кінці ліній, які будуть виконувати роль променів, і ребро, що представляє межу розподілу середовищ. Перша обрана точка відповідає індексу n1, друга n2, а опорне значення визначається співвідношенням n2 / n1. - + Selected objects are not just geometry from one sketch. Виділені обʼєкти з різних ескізів. - + Cannot create constraint with external geometry only. Неможливо створити обмеження з використанням тільки зовнішньої геометрії. - + Incompatible geometry is selected. Виділено несумісну геометрію. - - - - - + + + + + Select constraints from the sketch. Виділіть обмеження на ескізі. @@ -3115,9 +3115,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Визначте ступінь B-сплайну між 1 та %1: + - CAD Kernel Error Помилка ядра CAD @@ -3260,14 +3260,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Для видалення вирівнювання осей потрібно вибрати принаймні один не зовнішній геометричний елемент - - + + Unsupported visual layer operation Непідтримувана операція із візуальним шаром - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted Переміщення зовнішньої геометрії на інший візуальний шар наразі не підтримується. Зовнішню геометрію буде пропущена @@ -3651,12 +3651,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Довжина: - + Refractive index ratio Коефіцієнт заломлення - + Ratio n2/n1: Співвідношення n2/n1: @@ -3664,72 +3664,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Звичайна - + Construction Допоміжна - + Internal Внутрішній - + External Зовнішня - + All types Всі типи - + Point Точка - + Line Лінія - + Circle Коло - + Ellipse Еліпс - + Arc of circle Дуга кола - + Arc of ellipse Дуга еліпса - + Arc of hyperbola Дуга гіперболи - + Arc of parabola Дуга параболи - + B-Spline B-сплайн @@ -3852,27 +3852,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Виберіть вертикальну вісь - + Layer Шар - + Layer 0 Шар 0 - + Layer 1 Шар 1 - + Hidden Прихований - + Delete Видалити @@ -4748,120 +4748,120 @@ However, no constraints linking to the endpoints were found. Параметри - - - - - - - - - - + + + + + + + + + + Construction Допоміжна - + Elements Елементи - - - - + + + + Point Точка - - - - - - - - - - + + + + + + + + + + Internal Внутрішній - - - - + + + + Line Лінія - - - - + + + + Arc Дуга - - - - + + + + Circle Коло - - - - + + + + Ellipse Еліпс - - - - + + + + Elliptical Arc Еліптична дуга - - - - + + + + Hyperbolic Arc Гіперболічна дуга - - - - + + + + Parabolic Arc Параболічна дуга - - - - + + + + BSpline B-сплайн - - - - + + + + Other Інші - + Extended information Розширена інформація @@ -5083,112 +5083,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Редагувати ескіз - + A dialog is already open in the task panel Діалогове вікно вже відкрито в панелі задач - + Do you want to close this dialog? Ви бажаєте закрити це діалогове вікно? - + Invalid sketch Неприпустимий ескіз - + Do you want to open the sketch validation tool? Відкрити інструмент перевірки ескізу? - + The sketch is invalid and cannot be edited. Ескіз містить помилки та не може бути змінений. - + Please remove the following constraint: Будь ласка, видаліть наступне обмеження: - + Please remove at least one of the following constraints: Будь ласка, видаліть принаймні одне з таких обмежень: - + Please remove the following redundant constraint: Будь ласка, видаліть наступне надлишкове обмеження: - + Please remove the following redundant constraints: Видаліть, будь ласка, наступні надлишкові обмеження: - + The following constraint is partially redundant: Наступне обмеження частково надлишкове: - + The following constraints are partially redundant: Наступні обмеження частково надлишкові: - + Please remove the following malformed constraint: Видаліть, будь ласка, наступне невірне обмеження: - + Please remove the following malformed constraints: Видаліть, будь ласка, наступні невірні обмеження: - + Empty sketch Порожній ескіз - + Over-constrained: Надлишкові обмеження: - + Malformed constraints: Невірні обмеження: - + Redundant constraints: Надлишкові обмеження: - + Partially redundant: Частково надлишкові: - + Solver failed to converge Рішення не сходиться - + Under constrained: Частково обмежений: - + %n DoF(s) %n ступінь свободи @@ -5198,7 +5198,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Повністю обмежений @@ -5296,8 +5296,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Задає діаметр кола або дуги @@ -5305,8 +5305,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Задає радіус/діаметр кола або дуги @@ -5314,8 +5314,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Задає радіус кола або дуги @@ -5329,70 +5329,25 @@ This is done by analyzing the sketch geometries and constraints. Створює просту копію геометрії, взявши за основу останню виділену точку - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Створює дугу за кінцевими точками та точкою на дузі - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Створити коло за трьома точками - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Створює дугу за центром та кінцевими точками - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Створює дугу еліпса за її центром, великому радіусу та кінцевими точками - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Створює дугу гіперболи за її центром, великому радіусу та кінцевими точками - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Створити дугу параболи за фокусом, вершиною та кінцевими точками - - Sketcher_CreateBSpline - + B-spline by control points B-сплайн за контрольними точками - - + + Create a B-spline by control points Створити B-сплайн за контрольними точками @@ -5400,35 +5355,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Створює коло за його центром та точкою периметра - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Створює еліпс за периапсисом, апоапсисом і малим радіусом - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Створіть еліпс за центром, великим радіусом і точкою - - Sketcher_CreateFillet - - + + Creates a radius between two lines Створює заокруглення між двома лініями @@ -5436,8 +5373,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Створює семикутник за його центром та одному куту @@ -5445,8 +5382,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Створює шестикутник за його центром та одному куту @@ -5462,14 +5399,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Створює восьмикутник за його центром та одному куту + - Create a regular polygon by its center and by one corner Створити правильний багатокутник за центром та одному куту @@ -5477,8 +5414,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Створює пʼятикутник за його центром та одному куту @@ -5486,8 +5423,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Заокруглення зі збереженням обмежень та точки перетину @@ -5511,8 +5448,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Створює квадрат за його центром та одному куту @@ -5520,8 +5457,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Створює рівнобічний трикутник за його центром та одному куту @@ -5529,13 +5466,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points Періодичний B-сплайн за контрольними точками + - Create a periodic B-spline by control points Створити періодичний B-сплайн за допомогою контрольних точок @@ -5936,7 +5873,7 @@ Eigen Dense QR — щільна матриця QR з повним поворот ViewProviderSketch - + and %1 more та %1 більше @@ -6159,45 +6096,45 @@ The grid spacing change if it becomes smaller than this number of pixel.Скетч має частково надлишкові обмеження! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Перенесено параболи. Перенесені файли не відкриватимуться у попередніх версіях FreeCAD!!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Помилка @@ -6233,16 +6170,16 @@ The grid spacing change if it becomes smaller than this number of pixel.Обмеження має невірну індексну інформацію та є помилковим. + + + - - - - - + + Invalid Constraint @@ -6259,12 +6196,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Не вдалося додати дугу еліпса - + Cannot create arc of hyperbola from invalid angles, try again! Не вдається створити дугу гіперболи з невірних кутів, спробуйте ще раз! - + Cannot create arc of hyperbola Не вдається створити дугу гіперболи @@ -6284,8 +6221,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Помилка створення полюса B-сплайна - + Error creating B-spline Помилка при створенні B-сплайна @@ -6341,17 +6278,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Не вдалося додати лінію - - - - - - - + + + + + + + Tool execution aborted Виконання команди перервано @@ -6386,9 +6323,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Не вдалося обрізати ребро - + Value Error Помилка в значенні @@ -6451,13 +6388,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots Створити B-сплайн за вузлами - - + + Create a B-spline by knots Створює B-сплайн за вузлами @@ -6465,13 +6402,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Створити періодичний B-сплайн за вузлами + - Create a periodic B-spline by knots Створює періодичний B-сплайн за вузлами @@ -6577,12 +6514,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Створює B-сплайн за вузлами - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Створює на ескізі B-сплайн за вузлами, тобто шляхом інтерполяції. @@ -6590,12 +6527,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Створює періодичний B-сплайн за вузлами - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Створює на ескізі періодичний B-сплайн за вузлами, тобто шляхом інтерполяції. @@ -6603,12 +6540,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Розмірність - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6646,12 +6583,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Обмеження за радіусом - + Fix the radius of a circle or an arc Задає радіус кола або дуги @@ -6826,8 +6763,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Створює два прямокутники один в іншому з постійною товщиною. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6841,12 +6778,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Горизонтальні/вертикальні - + Constrains a single line to either horizontal or vertical. Обмежити окрему лінію відповідно до горизонталі або вертикалі. @@ -6854,12 +6791,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Горизонтальні/вертикальні - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Обмежує окрему лінію до горизонтального або вертикального положення, залежно від того, яке ближче до поточного. @@ -6867,12 +6804,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6880,12 +6817,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Пази - + Slot tools. Інструменти пазів. @@ -6893,12 +6830,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Створити дуговий паз - + Create an arc slot in the sketch Створює в ескізі дуговий паз @@ -6906,12 +6843,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Обмеження збігу - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7332,4 +7269,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.ts index 070fc9c18c..1eaf176f61 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy Create carbon copy - + Copy the geometry of another sketch Copy the geometry of another sketch @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle Restringeix l'arc o el cercle - + Constrain an arc or a circle Restringeix un arc o un cercle - + Constrain radius Restricció del radi - + Constrain diameter Restringeix el diàmetre - + Constrain auto radius/diameter Constrain auto radius/diameter @@ -180,24 +180,24 @@ - Center and end points - Centre i extrems + Center and endpoints + Center and endpoints - - End points and rim point - Extrems i punt sobre la vora + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline Crea un B-spline - + Create a B-spline in the sketch Crea un B-spline en l'esbós @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle Crea un cercle - + Create a circle in the sketcher Crea un cercle en el dibuix - + Center and rim point Centre i punt sobre la vora - + 3 rim points 3 punts sobre la vora @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic Create conic - + Create a conic in the sketch Crea una cònica en l'esbós - - Ellipse by center, major radius, point - El·lipse donats el centre, el radi major i un punt + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - Arc d'el·lipse donats el centre, el radi major i els extrems + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - Arc d'hipèrbola donats el centre, el radi major i els extrems + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints Arc de paràbola pel focus, el vèrtex i els extrems @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet Crea un arredoniment - + Create a fillet between two lines Create a fillet between two lines - + Sketch fillet Sketch fillet - - Constraint-preserving sketch fillet - Constraint-preserving sketch fillet + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon Crea un polígon regular - + Create a regular polygon in the sketcher Crea un polígon regular en l'entorn de l'esbós - + Triangle Triangle - + Square Quadrat - + Pentagon Pentàgon - + Hexagon Hexàgon - + Heptagon Heptàgon - + Octagon Octàgon - + Regular polygon Polígon regular @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle Restricció d'angle - + Fix the angle of a line or the angle between two lines Fixa l'angle d'una línia o l'angle entre dues línies @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block Constrain block - + Block the selected edge from moving Block the selected edge from moving @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident Restricció coincident - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter Restringeix el diàmetre - + Fix the diameter of a circle or an arc Fixa el diàmetre d'un cercle o d'un arc @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance Restricció de distància - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Fixa la distància horitzontal entre dos punts o extrems de línia @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Fixa la distància vertical entre dos punts o extrems de línia @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal Restricció d'igualtat - + Create an equality constraint between two lines or between circles and arcs Crea una restricció d'igualtat entre dues línies o entre cercles i arcs @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally Restricció horitzontal - + Create a horizontal constraint on the selected item Crea una restricció horitzontal en l'element seleccionat @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock Restricció de bloqueig - + Create both a horizontal and a vertical distance constraint on the selected vertex Create both a horizontal and a vertical distance constraint @@ -520,12 +520,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel Restricció de parel·lelisme - + Create a parallel constraint between two lines Crea una restricció de paral·lelisme entre dues línies @@ -533,12 +533,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular Restricció de perpendicularitat - + Create a perpendicular constraint between two lines Crea una restricció de perpendicularitat entre dues línies @@ -546,12 +546,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object Restricció d'un punt sobre l'objecte - + Fix a point onto an object Fixa un punt sobre un objecte @@ -559,12 +559,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter Constrain auto radius/diameter - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen @@ -572,12 +572,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -587,12 +587,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical Restricció de simetria - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -602,12 +602,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent Restricció tangent - + Create a tangent constraint between two entities Crea una restricció tangent entre dues entitats @@ -615,12 +615,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically Restricció veertical - + Create a vertical constraint on the selected item Crea una restricció vertical en l'element seleccionat @@ -667,12 +667,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points Crea un cercle donats tres punts - + Create a circle by 3 perimeter points Crea un cercle donats tres punts del perímetre @@ -693,12 +693,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse Create arc of ellipse - + Create an arc of ellipse in the sketch Crea un arc d'el·lipse en l'esbós @@ -706,12 +706,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola Create arc of hyperbola - + Create an arc of hyperbola in the sketch Crea un arc d'hipèrbola en l'esbós @@ -719,12 +719,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola Create arc of parabola - + Create an arc of parabola in the sketch Crea un arc de paràbola en l'esbós @@ -732,12 +732,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline Crea un B-spline - + Create a B-spline by control points in the sketch. Create a B-spline by control points in the sketch. @@ -745,12 +745,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle Crea un cercle - + Create a circle in the sketch Crea un cercle en el dibuix @@ -758,12 +758,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points Crear l'el·lipse per 3 punts - + Create an ellipse by 3 points in the sketch Crea una el·lipse per 3 punts en el dibuix @@ -771,12 +771,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center Crea el·lipse donat el centre - + Create an ellipse by center in the sketch Crea una el·lipse donat el centre en el dibuix @@ -784,12 +784,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet Crea un arredoniment - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -797,12 +797,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon Crea un heptàgon - + Create a heptagon in the sketch Crea un heptàgon en el dibuix @@ -810,12 +810,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon Crea un hexàgon - + Create a hexagon in the sketch Crea un hexàgon en el dibuix @@ -849,12 +849,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon Crea un octàgon - + Create an octagon in the sketch Crea un octàgon en el dibuix @@ -862,12 +862,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon Crea un pentàgon - + Create a pentagon in the sketch Crea un pentàgon en el dibuix @@ -875,12 +875,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline Crea un B-spline periòdic - + Create a periodic B-spline by control points in the sketch. Create a periodic B-spline by control points in the sketch. @@ -888,12 +888,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point Crea un punt - + Create a point in the sketch Crea un punt en el dibuix @@ -901,12 +901,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet Create corner-preserving fillet - + Fillet that preserves intersection point and most constraints Fillet that preserves intersection point and most constraints @@ -953,12 +953,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon Crea un polígon regular - + Create a regular polygon in the sketch Crea un polígon regular en l'esbós @@ -966,12 +966,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot Crea una ranura - + Create a slot in the sketch Crea una ranura en el dibuix @@ -979,12 +979,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square Crea un quadrat - + Create a square in the sketch Crea un quadrat en el dibuix @@ -992,12 +992,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle Crea un triangle equilàter - + Create an equilateral triangle in the sketch Crea un triangle equilàter en el dibuix @@ -1070,12 +1070,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge Estén una aresta - + Extend an edge with respect to the picked position Estén una aresta respecte a la posició seleccionada @@ -1083,12 +1083,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry Create external geometry - + Create an edge linked to an external geometry Crea una aresta vinculada a una geometria externa @@ -1427,12 +1427,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge Split edge - + Splits an edge into two while preserving constraints Splits an edge into two while preserving constraints @@ -1479,12 +1479,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1505,12 +1505,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint Toggle driving/reference constraint - + Set the toolbar, or the selected constraints, into driving or reference mode Set the toolbar, or the selected constraints, @@ -1520,12 +1520,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge Retalla l'aresta - + Trim an edge with respect to the picked position Retalla una aresta respecte a la posició seleccionada @@ -1584,79 +1584,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint Add 'Lock' constraint - + Add relative 'Lock' constraint Add relative 'Lock' constraint - + Add fixed constraint Add fixed constraint - + Add 'Block' constraint Add 'Block' constraint - + Add block constraint Add block constraint - - + + Add coincident constraint Add coincident constraint - - + + Add distance from horizontal axis constraint Add distance from horizontal axis constraint - - + + Add distance from vertical axis constraint Add distance from vertical axis constraint - - + + Add point to point distance constraint Add point to point distance constraint - - + + Add point to line Distance constraint Add point to line Distance constraint - - + + Add circle to circle distance constraint Add circle to circle distance constraint - + Add circle to line distance constraint Add circle to line distance constraint - - - - - - + + + + + + Add length constraint Add length constraint @@ -1679,8 +1679,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint Add Distance constraint @@ -1706,7 +1706,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints Add Symmetry constraints @@ -1717,220 +1717,220 @@ invalid constraints, degenerated geometry, etc. Add Distance constraints - + Add Horizontal constraint Add Horizontal constraint - + Add Vertical constraint Add Vertical constraint - + Add Block constraint Add Block constraint - + Add Angle constraint Add Angle constraint - - - - + + + + Add Equality constraint Add Equality constraint - + Add Equality constraints Add Equality constraints - - - + + + Add Radius constraint Add Radius constraint - - + + Add arc angle constraint Add arc angle constraint - + Add concentric and length constraint Add concentric and length constraint - + Add DistanceX constraint Add DistanceX constraint - + Add DistanceY constraint Add DistanceY constraint - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint Add point on object constraint - - + + Add point to point horizontal distance constraint Add point to point horizontal distance constraint - + Add fixed x-coordinate constraint Add fixed x-coordinate constraint - - + + Add point to point vertical distance constraint Add point to point vertical distance constraint - + Add fixed y-coordinate constraint Add fixed y-coordinate constraint - - + + Add parallel constraint Add parallel constraint - - - - - - - + + + + + + + Add perpendicular constraint Add perpendicular constraint - + Add perpendicularity constraint Add perpendicularity constraint - + Swap coincident+tangency with ptp tangency Swap coincident+tangency with ptp tangency - + Swap PointOnObject+tangency with point to curve tangency Swap PointOnObject+tangency with point to curve tangency - - - - - - - + + + + + + + Add tangent constraint Add tangent constraint - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point Add tangent constraint point - - - - + + + + Add radius constraint Add radius constraint - - - - + + + + Add diameter constraint Add diameter constraint - - - - + + + + Add radiam constraint Add radiam constraint - - - - + + + + Add angle constraint Add angle constraint - - + + Add equality constraint Add equality constraint - - - - - + + + + + Add symmetric constraint Add symmetric constraint - + Add Snell's law constraint Add Snell's law constraint - + Toggle constraint to driving/reference Toggle constraint to driving/reference - + Activate/Deactivate constraint Activate/Deactivate constraint @@ -2015,7 +2015,7 @@ invalid constraints, degenerated geometry, etc. Add sketch arc of ellipse - + Add sketch arc of hyperbola Add sketch arc of hyperbola @@ -2159,8 +2159,8 @@ invalid constraints, degenerated geometry, etc. Update constraint's virtual space - + Add auto constraints Add auto constraints @@ -2185,12 +2185,12 @@ invalid constraints, degenerated geometry, etc. Drag Curve - + Drag Constraint Drag Constraint - + Modify sketch constraints Modify sketch constraints @@ -2281,59 +2281,59 @@ invalid constraints, degenerated geometry, etc. Error de restricció: esbós irresoluble si s'apliquen restriccions d'igualtat. - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. No s'ha trobat la intersecció de les corbes. Intenteu afegir una restricció coincident entre els vèrtexs de les corbes que esteu intentant arrodonir. - - + + BSpline Geometry Index (GeoID) is out of bounds. L'índex de geometria BSpline (GeoID) està fora de les restriccions. - + You are requesting no change in knot multiplicity. Se us ha demanat que no canvieu la multiplicitat del nus. - - + + The Geometry Index (GeoId) provided is not a B-spline curve. L'índex de geometria (GeoId) proporcionat no és una corba de B-spline. - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. L'índex del nus és fora dels límits. Tingueu en compte que d'acord amb la notació d'OCC, el primer nus té l'índex 1 i no zero. - + The multiplicity cannot be increased beyond the degree of the B-spline. La multiplicitat no es pot augmentar més enllà del grau del B-spline. - + The multiplicity cannot be decreased beyond zero. La multiplicitat no es pot reduir més enllà de zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC no pot reduir la multiplicitat dins de la tolerància màxima. - + Knot cannot have zero multiplicity. Knot cannot have zero multiplicity. - + Knot multiplicity cannot be higher than the degree of the BSpline. Knot multiplicity cannot be higher than the degree of the BSpline. - + Knot cannot be inserted outside the BSpline parameter range. Knot cannot be inserted outside the BSpline parameter range. @@ -2413,127 +2413,11 @@ invalid constraints, degenerated geometry, etc. No adjuntes + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2543,6 +2427,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2560,9 +2563,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection Selecció incorrecta @@ -2615,106 +2615,106 @@ invalid constraints, degenerated geometry, etc. One of the selected has to be on the sketch. - + Select an edge from the sketch. Seleccioneu una aresta de l'esbós - - - - - - + + + + + + Impossible constraint Restricció impossible - - + + The selected edge is not a line segment. The selected edge is not a line segment. - - - + + + Double constraint Restricció doble - + The selected edge already has a horizontal constraint! L'aresta seleccionada ja té una restricció horitzontal. - + The selected edge already has a vertical constraint! L'aresta seleccionada ja té una restricció vertical. - - - + + + The selected edge already has a Block constraint! L'aresta seleccionada ja té una restricció de Bloc. - + There are more than one fixed points selected. Select a maximum of one fixed point! Hi ha més d'un punt fixe seleccionat! Seleccioneu-ne com a màxim un de fixe. - - - + + + Select vertices from the sketch. Seleccioneu vèrtexs de l'esbós - + Select one vertex from the sketch other than the origin. Seleccioneu un vèrtex de l'esbós diferent de l'origen - + Select only vertices from the sketch. The last selected vertex may be the origin. Seleccioneu només vèrtexs de l'esbós. L'últim vèrtex seleccionat pot ser l'origen. - + Wrong solver status Estat de sistema de resolució incorrecte - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. - + Select one edge from the sketch. Seleccioneu una aresta de l'esbós. - + Select only edges from the sketch. Seleccioneu sols arestes de l'esbós. - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 Number of selected objects is not 3 - + Error Error @@ -2724,80 +2724,80 @@ invalid constraints, degenerated geometry, etc. Unexpected error. More information may be available in the Report View. - + The selected item(s) can't accept a horizontal or vertical constraint! The selected item(s) can't accept a horizontal or vertical constraint! - + Endpoint to endpoint tangency was applied instead. En el seu lloc s'ha aplicat una tangència entre extrems. - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. - + Select exactly one line or one point and one line or two points from the sketch. Seleccioneu únicament una línia o un punt i una línia o dos punts de l'esbós - + Cannot add a length constraint on an axis! No es pot afegir una restricció de longitud sobre un eix. - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. This constraint does not make sense for non-linear curves. - + Endpoint to edge tangency was applied instead. Endpoint to edge tangency was applied instead. - - - - - - + + + + + + Select the right things from the sketch. Seleccioneu els elements correctes de l'esbós - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. Select an edge that is not a B-spline weight. @@ -2807,92 +2807,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. Cap dels punts seleccionats s'han restringit a les corbes respectives, perquè són peces del mateix element o perquè ambdues són de geometria externa. - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. Seleccioneu únicament una línia o fins a dos punts de l'esbós - + Cannot add a horizontal length constraint on an axis! No es pot afegir una restricció de longitud horitzontal sobre un eix. - + Cannot add a fixed x-coordinate constraint on the origin point! No es pot afegir una restricció de coordenada x fixa sobre el punt d'origen. - - + + This constraint only makes sense on a line segment or a pair of points. This constraint only makes sense on a line segment or a pair of points. - + Cannot add a vertical length constraint on an axis! No es pot afegir una restricció de longitud vertical sobre un eix. - + Cannot add a fixed y-coordinate constraint on the origin point! No es pot afegir una restricció de coordenada y fixa sobre el punt d'origen. - + Select two or more lines from the sketch. Seleccioneu una o més línies de l'esbós - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. Seleccioneu almenys dues línies de l'esbós - + The selected edge is not a valid line. The selected edge is not a valid line. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2900,35 +2900,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Aquesta restricció es pot aplicar de diverses maneres. Les combinacions possibles són: dues corbes; un extrem i una corba; dos extrems; dues corbes i un punt. - + Select some geometry from the sketch. perpendicular constraint Seleccioneu alguna geometria de l'esbós - - + + Cannot add a perpendicularity constraint at an unconnected point! No es pot afegir una restricció de perpendicularitat en un punt no connectat. - - + + One of the selected edges should be a line. Una de les arestes seleccionades ha de ser una línia. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. S'ha aplicat una tangència entre extrems. S'han suprimit les restriccions coincidents. - + Endpoint to edge tangency was applied. The point on object constraint was deleted. Endpoint to edge tangency was applied. The point on object constraint was deleted. - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2936,67 +2936,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Aquesta restricció es pot aplicar de diverses maneres. Les combinacions possibles són: dues corbes; un extrem i una corba; dos extrems; dues corbes i un punt. - + Select some geometry from the sketch. tangent constraint Seleccioneu alguna geometria de l'esbós - - - + + + Cannot add a tangency constraint at an unconnected point! No es pot afegir una restricció de tangència en un punt no connectat. - - + + Tangent constraint at B-spline knot is only supported with lines! Tangent constraint at B-spline knot is only supported with lines! - + B-spline knot to endpoint tangency was applied instead. B-spline knot to endpoint tangency was applied instead. - - + + Wrong number of selected objects! El nombre d'objectes seleccionats és incorrecte. - - + + With 3 objects, there must be 2 curves and 1 point. Amb 3 objectes, hi ha d'haver 2 corbes i 1 punt. - - - - - - + + + + + + Select one or more arcs or circles from the sketch. Seleccioneu un o diversos arcs o cercles de l'esbós - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. - - - + + + Constraint only applies to arcs or circles. La restricció només s'aplica a arcs i cercles. - - + + Select one or two lines from the sketch. Or select two edges and a point. Seleccioneu una o dues línies de l'esbós. O seleccioneu dues arestes i un punt @@ -3011,88 +3011,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Una restricció d'angle no es pot definir per dues línies paral·leles. - + Cannot add an angle constraint on an axis! No es pot afegir una restricció d'angle sobre un eix. - + Select two edges from the sketch. Seleccioneu dues arestes de l'esbós - + Select two or more compatible edges. Select two or more compatible edges. - + Sketch axes cannot be used in equality constraints. Sketch axes cannot be used in equality constraints. - + Equality for B-spline edge currently unsupported. La igualtat per a la vora del B-spline no s'admet actualment. - - - - + + + + Select two or more edges of similar type. Select two or more edges of similar type. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Seleccioneu de l'esbós dos punts i una línia de simetria, dos punts i un punt de simetria o una línia i un punt de simetria - - + + Cannot add a symmetry constraint between a line and its end points. Cannot add a symmetry constraint between a line and its end points. - - - - + + + + Cannot add a symmetry constraint between a line and its end points! No es pot afegir una restricció de simetria entre una línia i els seus extrems. - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. - + Selected objects are not just geometry from one sketch. Els objectes seleccionats no són només geometria d'un esbós. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. @@ -3114,9 +3114,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Define B-Spline Degree, between 1 and %1: + - CAD Kernel Error Error del nucli del CAD @@ -3259,14 +3259,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Removal of axes alignment requires at least one selected non-external geometric element - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3650,12 +3650,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Length: - + Refractive index ratio Índex de refracció - + Ratio n2/n1: Relació n2/n1: @@ -3663,72 +3663,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal Normal - + Construction Construcció - + Internal Internal - + External Extern - + All types All types - + Point Punt - + Line Línia - + Circle Cercle - + Ellipse El·lipse - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3851,27 +3851,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Select Vertical Axis - + Layer Layer - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden Amagades - + Delete Elimina @@ -4736,120 +4736,120 @@ However, no constraints linking to the endpoints were found. Paràmetres - - - - - - - - - - + + + + + + + + + + Construction Construcció - + Elements Elements - - - - + + + + Point Punt - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line Línia - - - - + + + + Arc Arc - - - - + + + + Circle Cercle - - - - + + + + Ellipse El·lipse - - - - + + + + Elliptical Arc Arc el·líptic - - - - + + + + Hyperbolic Arc Arc hiperbòlic - - - - + + + + Parabolic Arc Arc parabòlic - - - - + + + + BSpline BSpline - - - - + + + + Other Altres - + Extended information Informació ampliada @@ -5070,112 +5070,112 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch Edit sketch - + A dialog is already open in the task panel A dialog is already open in the task panel - + Do you want to close this dialog? Do you want to close this dialog? - + Invalid sketch L'esbós no és vàlid. - + Do you want to open the sketch validation tool? Voleu obrir l'eina de validació d'esbossos? - + The sketch is invalid and cannot be edited. L'esbós no és vàlid i no es pot editar. - + Please remove the following constraint: Suprimiu la restricció següent: - + Please remove at least one of the following constraints: Suprimiu almenys una de les restriccions següents: - + Please remove the following redundant constraint: Suprimiu la restricció redundant següent: - + Please remove the following redundant constraints: Suprimiu les restriccions redundants següents: - + The following constraint is partially redundant: The following constraint is partially redundant: - + The following constraints are partially redundant: The following constraints are partially redundant: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch L'esbós és buit. - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: Under constrained: - + %n DoF(s) %n DoF(s) @@ -5183,7 +5183,7 @@ This is done by analyzing the sketch geometries and constraints. - + Fully constrained Fully constrained @@ -5281,8 +5281,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixa el diàmetre d'un cercle o d'un arc @@ -5290,8 +5290,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc Fix the radius/diameter of a circle or an arc @@ -5299,8 +5299,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -5314,70 +5314,25 @@ This is done by analyzing the sketch geometries and constraints. Crea una còpia simple de la geometria prenent com a referència l'últim punt seleccionat. - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - Crea un arc donats els extrems i un punt al llarg de l'arc - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points Crea un cercle donats tres punts de la vora - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - Crea un arc donats el centre i els extrems - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints - - Sketcher_CreateBSpline - + B-spline by control points B-spline per punts de control - - + + Create a B-spline by control points Crea un B-spline donats els punts de control @@ -5385,35 +5340,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point Crea un cercle donats el centre i un punt de la vora - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - Crea una el·lipse donats el periàpside, l'apoàpside i el radi menor - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - Crea una el·lipse donats el centre, el radi major i un punt - - Sketcher_CreateFillet - - + + Creates a radius between two lines Creates a radius between two lines @@ -5421,8 +5358,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner Crea un heptàgon donats el centre i un vèrtex @@ -5430,8 +5367,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner Crea un hexàgon donats el centre i un vèrtex @@ -5447,14 +5384,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner Crea un octàgon donats el centre i un vèrtex + - Create a regular polygon by its center and by one corner Crea un polígon regular donats el centre i un vèrtex @@ -5462,8 +5399,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner Crea un pentàgon donats el centre i un vèrtex @@ -5471,8 +5408,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point Fillet that preserves constraints and intersection point @@ -5496,8 +5433,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner Crea un quadrat donats el centre i un vèrtex @@ -5505,8 +5442,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner Crea un triangle equilàter donats el centre i un vèrtex @@ -5514,13 +5451,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points B-spline periòdic per punts de control + - Create a periodic B-spline by control points Crea un B-spline periòdic donats els punts de control @@ -5918,7 +5855,7 @@ L'algoritme Eigen Sparse QR està optimitzat per a matrius escasses; generalment ViewProviderSketch - + and %1 more and %1 more @@ -6141,46 +6078,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error Error @@ -6216,16 +6153,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6242,12 +6179,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6267,8 +6204,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6324,17 +6261,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6369,9 +6306,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6434,13 +6371,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6448,13 +6385,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6560,12 +6497,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6573,12 +6510,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6586,12 +6523,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension Dimensió - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6629,12 +6566,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius Restricció del radi - + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -6809,8 +6746,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6824,12 +6761,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6837,12 +6774,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6850,12 +6787,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6863,12 +6800,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6876,12 +6813,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6889,12 +6826,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident Restricció coincident - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7314,4 +7251,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.ts index eaa2083c65..e1ecde4542 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy 创建克隆副本 - + Copy the geometry of another sketch 复制另一个草图的几何元素 @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle 约束圆弧或圆 - + Constrain an arc or a circle 约束圆弧或圆 - + Constrain radius 半径约束 - + Constrain diameter 约束直径 - + Constrain auto radius/diameter 约束自动半径/直径 @@ -180,24 +180,24 @@ - Center and end points - 中心点和端点 + Center and endpoints + Center and endpoints - - End points and rim point - 端点和边缘点 + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline 创建B样条曲线 - + Create a B-spline in the sketch 在草图中创建 B-样条 @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle 创建圆 - + Create a circle in the sketcher 在草图中创建圆 - + Center and rim point 圆心和边缘点 - + 3 rim points 3个边缘点 @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic 创建圆锥曲线 - + Create a conic in the sketch 在草图中创建圆锥形 - - Ellipse by center, major radius, point - 通过中心,主要半径,点确定椭圆形状 + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - 通过近拱点,远拱点和短半径创建椭圆 + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - 通过中心点,大半径和端点创建椭圆弧 + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - 通过中心点,大半径和端点创建椭圆弧 + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints 焦点,顶点,终结点定义的抛物线弧 @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet 创建圆角 - + Create a fillet between two lines 在两条线间创建圆角。 - + Sketch fillet 草图圆角 - - Constraint-preserving sketch fillet - 保留约束的草图圆角 + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon 创建正多边形 - + Create a regular polygon in the sketcher 在草图设计中创建正多边形 - + Triangle 三角形 - + Square 正方形 - + Pentagon 五边形 - + Hexagon 六边形 - + Heptagon 七边形 - + Octagon 八边形 - + Regular polygon 正多边形 @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle 角度约束 - + Fix the angle of a line or the angle between two lines 固定一直线角度或两直线夹角 @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block 约束块 - + Block the selected edge from moving 阻止选中的边移动 @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident 重合约束 - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses 在点之间创建重合约束,或在圆、弧和椭圆之间的同心约束 @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter 约束直径 - + Fix the diameter of a circle or an arc 固定圆或圆弧的直径 @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance 距离约束 - + Fix a length of a line or the distance between a line and a vertex or between two circles 固定一条直线的长度,或者直线到一个顶点、两个圆之间的距离 @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance 水平距离约束 - + Fix the horizontal distance between two points or line ends 固定两点(或线端点)之间的水平距离 @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance 限制垂直距离 - + Fix the vertical distance between two points or line ends 固定两点(或线端点)之间的垂直距离 @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal 相等约束 - + Create an equality constraint between two lines or between circles and arcs 两直线或圆与圆弧间创建相等约束 @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally 水平约束 - + Create a horizontal constraint on the selected item 在所选对象上创建水平约束 @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock 锁定约束 - + Create both a horizontal and a vertical distance constraint on the selected vertex 在选中的顶点上同时创建水平和垂直距离约束 @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel 平行约束 - + Create a parallel constraint between two lines 两条线之间创建平行约束 @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular 垂直约束 - + Create a perpendicular constraint between two lines 为两条直线创建垂直约束 @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object 点约束至对象 - + Fix a point onto an object 固定点至对象 @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter 约束自动半径/直径 - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen 如果选中了圆,则固定直径,如果选中了圆弧/样条 极点,则固定半径 @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) 折射约束 (斯涅尔定律) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. 通过指定两光线端点和一条边作为折射界面创建折射约束(斯涅尔定律) @@ -585,12 +585,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical 对称约束 - + Create a symmetry constraint between two points with respect to a line or a third point 对两点作关于一条直线或第三点的对称约束 @@ -599,12 +599,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent 相切约束 - + Create a tangent constraint between two entities 在两实体间创建相切约束 @@ -612,12 +612,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically 垂直约束 - + Create a vertical constraint on the selected item 在所选对象上创建垂直约束 @@ -664,12 +664,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points 通过三点创建圆 - + Create a circle by 3 perimeter points 通过三个边界点创建圆 @@ -690,12 +690,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse 创建椭圆弧线 - + Create an arc of ellipse in the sketch 在草图中创建椭圆弧 @@ -703,12 +703,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola 创建双曲线弧线 - + Create an arc of hyperbola in the sketch 在草图中创建椭圆弧 @@ -716,12 +716,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola 创建抛物线弧线 - + Create an arc of parabola in the sketch 在草图中创建椭圆弧 @@ -729,12 +729,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline 创建B样条曲线 - + Create a B-spline by control points in the sketch. 通过草图中的控制点创建B样条曲线。 @@ -742,12 +742,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle 创建圆 - + Create a circle in the sketch 在草图中创建一个圆 @@ -755,12 +755,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points 通过三点创建椭圆 - + Create an ellipse by 3 points in the sketch 通过三点在草图中创建椭圆 @@ -768,12 +768,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center 通过中心创建椭圆 - + Create an ellipse by center in the sketch 通过中心在草图中创建椭圆 @@ -781,12 +781,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet 创建圆角 - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -794,12 +794,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon 创建正七边形 - + Create a heptagon in the sketch 在草图中创建正七边形 @@ -807,12 +807,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon 创建正六边形 - + Create a hexagon in the sketch 在草图中创建正六边型 @@ -846,12 +846,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon 创建正八边形 - + Create an octagon in the sketch 在草绘中创建正八边形 @@ -859,12 +859,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon 创建正五边形 - + Create a pentagon in the sketch 在草绘中创建正五边形 @@ -872,12 +872,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline 创建周期B样条曲线 - + Create a periodic B-spline by control points in the sketch. 通过草图中的控制点创建封闭的B样条曲线。 @@ -885,12 +885,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point 创建点 - + Create a point in the sketch 在草图中创建一个点 @@ -898,12 +898,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet 创建保留角点的圆角 - + Fillet that preserves intersection point and most constraints 保留交点和大多数约束的圆角 @@ -950,12 +950,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon 创建正多边形 - + Create a regular polygon in the sketch 在草绘中创建正多边形 @@ -963,12 +963,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot 创建圆槽 - + Create a slot in the sketch 在草图中创建长圆槽 @@ -976,12 +976,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square 创建正方形 - + Create a square in the sketch 在草图中绘制一个正方形 @@ -989,12 +989,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle 创建等边三角形 - + Create an equilateral triangle in the sketch 在草图中创建一个等边三角形 @@ -1067,12 +1067,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge 延长边 - + Extend an edge with respect to the picked position 延长与选择位置对应的边 @@ -1080,12 +1080,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry 创建外部几何体 - + Create an edge linked to an external geometry 创建一条与外部参考几何体关联的边 @@ -1422,12 +1422,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge 分割边 - + Splits an edge into two while preserving constraints 将一条边分成两段并保留约束 @@ -1474,12 +1474,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint 激活/停用约束 - + Activates or deactivates the selected constraints 激活或停用选定的约束 @@ -1500,12 +1500,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint 切换驱动/参考约束 - + Set the toolbar, or the selected constraints, into driving or reference mode 设置工具栏或选定的约束, @@ -1515,12 +1515,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge 修剪边缘 - + Trim an edge with respect to the picked position 根据点取位置修剪边 @@ -1578,79 +1578,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint 添加“锁定”约束 - + Add relative 'Lock' constraint 添加相对的“锁定”约束 - + Add fixed constraint 添加固定约束 - + Add 'Block' constraint 添加“块”约束 - + Add block constraint 添加块约束 - - + + Add coincident constraint 添加并发约束 - - + + Add distance from horizontal axis constraint 从水平轴约束添加距离 - - + + Add distance from vertical axis constraint 从垂直轴约束添加距离 - - + + Add point to point distance constraint 添加点到点距离约束 - - + + Add point to line Distance constraint 添加点到线距离约束 - - + + Add circle to circle distance constraint 添加圆到圆距离约束 - + Add circle to line distance constraint 添加圆到线距离约束 - - - - - - + + + + + + Add length constraint 添加长度约束 @@ -1673,8 +1673,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint 添加距离约束 @@ -1700,7 +1700,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints 添加对称约束 @@ -1711,220 +1711,220 @@ invalid constraints, degenerated geometry, etc. 添加距离约束 - + Add Horizontal constraint 添加水平约束 - + Add Vertical constraint 添加垂直约束 - + Add Block constraint 添加锁定约束 - + Add Angle constraint 添加角度约束 - - - - + + + + Add Equality constraint 添加相等约束 - + Add Equality constraints 添加相等约束 - - - + + + Add Radius constraint 添加半径约束 - - + + Add arc angle constraint 添加圆弧角度约束 - + Add concentric and length constraint 添加精度和长度约束 - + Add DistanceX constraint 添加x距离约束 - + Add DistanceY constraint 添加y距离约束 - + Add point to circle Distance constraint 添加点到圆距离约束 - - + + Add point on object constraint 添加对象上点约束 - - + + Add point to point horizontal distance constraint 添加点到点水平距离约束 - + Add fixed x-coordinate constraint 添加固定x坐标约束 - - + + Add point to point vertical distance constraint 添加点到点垂直距离约束 - + Add fixed y-coordinate constraint 添加固定Y坐标约束 - - + + Add parallel constraint 添加平行约束 - - - - - - - + + + + + + + Add perpendicular constraint 添加垂直约束 - + Add perpendicularity constraint 添加垂直约束 - + Swap coincident+tangency with ptp tangency 切换边相切与ptp相切 - + Swap PointOnObject+tangency with point to curve tangency 将点与对象相切与点到曲线相切交换 - - - - - - - + + + + + + + Add tangent constraint 添加切线约束 - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point 添加正切约束点 - - - - + + + + Add radius constraint 添加半径约束 - - - - + + + + Add diameter constraint 添加直径约束 - - - - + + + + Add radiam constraint 添加半径约束 - - - - + + + + Add angle constraint 添加角度约束 - - + + Add equality constraint 添加相等约束 - - - - - + + + + + Add symmetric constraint 添加对称约束 - + Add Snell's law constraint 添加斯内尔定律约束 - + Toggle constraint to driving/reference 将约束切换到作用/参考 - + Activate/Deactivate constraint 激活/停用约束 @@ -2009,7 +2009,7 @@ invalid constraints, degenerated geometry, etc. 添加草绘椭圆 - + Add sketch arc of hyperbola 添加双曲线草图 @@ -2153,8 +2153,8 @@ invalid constraints, degenerated geometry, etc. 更新约束的虚拟空间 - + Add auto constraints 添加自动约束 @@ -2179,12 +2179,12 @@ invalid constraints, degenerated geometry, etc. 拖动曲线 - + Drag Constraint 拖动约束 - + Modify sketch constraints 修改草图约束 @@ -2275,59 +2275,59 @@ invalid constraints, degenerated geometry, etc. 自动约束错误: 应用相等约束后草图无法求解。 - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. 无法猜测曲线的交叉点。尝试在你打算做圆角的曲线顶点之间添加一个重合约束。 - - + + BSpline Geometry Index (GeoID) is out of bounds. 贝赛尔样条几何图形索引(GeoID) 超出了界限。 - + You are requesting no change in knot multiplicity. 你被要求不对多重性节点做任何修改。 - - + + The Geometry Index (GeoId) provided is not a B-spline curve. 提供的几何图形索引 (GeoId) 不是贝赛尔样条曲线 - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. 结指数超出界限。请注意, 按照 OCC 符号, 第一个节点的索引为1, 而不是0。 - + The multiplicity cannot be increased beyond the degree of the B-spline. 无法重复增加到超过贝塞尔曲线的自由度。 - + The multiplicity cannot be decreased beyond zero. 多重性不能小于0. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC 无法在最大公差范围内减少多重性。 - + Knot cannot have zero multiplicity. 节点不能有零倍数。 - + Knot multiplicity cannot be higher than the degree of the BSpline. 节点多重性不能高于BSpline的程度。 - + Knot cannot be inserted outside the BSpline parameter range. 不能在B样条参数范围之外插入节点。 @@ -2407,127 +2407,11 @@ invalid constraints, degenerated geometry, etc. 不要附加 + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2537,6 +2421,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2554,9 +2557,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection 选择错误 @@ -2609,106 +2609,106 @@ invalid constraints, degenerated geometry, etc. 其中一个选择必须在草图上. - + Select an edge from the sketch. 从草图中选择边. - - - - - - + + + + + + Impossible constraint 不可约束 - - + + The selected edge is not a line segment. 选中的边缘不是线段。 - - - + + + Double constraint 双重约束 - + The selected edge already has a horizontal constraint! 所选边已有水平约束! - + The selected edge already has a vertical constraint! 所选边已有垂直约束! - - - + + + The selected edge already has a Block constraint! 所选边已有块约束! - + There are more than one fixed points selected. Select a maximum of one fixed point! 选取了多个固定点。最多只能选择一个固定点! - - - + + + Select vertices from the sketch. 从草绘选择顶点。 - + Select one vertex from the sketch other than the origin. 从草图中选取一个非原点的顶点。 - + Select only vertices from the sketch. The last selected vertex may be the origin. 从草图中仅选取顶点。最后选定的顶点可能是原点。 - + Wrong solver status 错误的求解状态 - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. 如果草图未解决或有多余且相互冲突的约束,无法添加方块约束。 - + Select one edge from the sketch. 从草绘中选取一个边。 - + Select only edges from the sketch. 仅从草绘中选择边。 - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 选中对象的数目不是 3 - + Error 错误 @@ -2718,80 +2718,80 @@ invalid constraints, degenerated geometry, etc. 意外错误。报告视图中可能会有更多信息。 - + The selected item(s) can't accept a horizontal or vertical constraint! 选中的项目不能接受水平或垂直约束! - + Endpoint to endpoint tangency was applied instead. 已应用端点到端点相切作为替代方案。 - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. 从草图中选择两个或多个顶点以获取共一事件约束, 或两个或多个圆、椭圆、圆弧或椭圆的圆弧,以求达到一个精度限制。 - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. 从草图中选择两个顶点用于一个共事件约束,或两个圆圈、椭圆、弧或椭圆的圆形,用于一个精度限制。 - + Select exactly one line or one point and one line or two points from the sketch. 从草图仅选取一直线, 或一点和一直线, 或两点. - + Cannot add a length constraint on an axis! 无法在坐标轴上添加长度约束! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. 从草图中只选择一条直线或一条直线或两个点或两个圆。 - + This constraint does not make sense for non-linear curves. 此约束不适用于非线性曲线. - + Endpoint to edge tangency was applied instead. 使用边缘切线的端点。 - - - - - - + + + + + + Select the right things from the sketch. 从草绘选择正确的对象。 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. 选择非B样条重量的边缘。 @@ -2801,92 +2801,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. 选定的点中没有一个被限制在各自的曲线上,因为它们是同一个元素的一部分。 因为它们既是外部几何形状,也是因为边缘不符合资格。 - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. 所选的点没有一个被约束到各自的曲线上,因为它们是在同一元素上的一部分,或是它们都是外部几何形状。 - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. 从草图选择一根线或两个点. - + Cannot add a horizontal length constraint on an axis! 无法在坐标轴上添加水平长度约束! - + Cannot add a fixed x-coordinate constraint on the origin point! 无法于原点加入固定x座标的约束! - - + + This constraint only makes sense on a line segment or a pair of points. 这种限制只对直线段或两点有意义。 - + Cannot add a vertical length constraint on an axis! 无法在坐标轴上添加垂直长度约束! - + Cannot add a fixed y-coordinate constraint on the origin point! 无法于原点加入固定y座标的约束! - + Select two or more lines from the sketch. 从草图选择两条或两条以上直线. - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. 至少从草图选择两直线. - + The selected edge is not a valid line. 选中的边缘不是一个有效线。 - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2896,35 +2896,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 接受的组合: 两条曲线; 一个端点和一个曲线; 两个端点; 两条曲线和一个点。 - + Select some geometry from the sketch. perpendicular constraint 从草图中选取一些几何属性 - - + + Cannot add a perpendicularity constraint at an unconnected point! 不能对没有连接点的两条线段添加"垂直"约束 - - + + One of the selected edges should be a line. 所选边之一须为直线. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. 已应用端点到端点相切。已删除重合约束。 - + Endpoint to edge tangency was applied. The point on object constraint was deleted. 边缘切线端点已应用。对象约束上的点已删除。 - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2934,67 +2934,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 接受的组合: 两条曲线; 一个端点和一个曲线; 两个端点; 两条曲线和一个点。 - + Select some geometry from the sketch. tangent constraint 从草图中选取一些几何属性 - - - + + + Cannot add a tangency constraint at an unconnected point! 不能对没有连接点的两条线段添加"相切"约束 - - + + Tangent constraint at B-spline knot is only supported with lines! B-样条节点的切约束只支持直线! - + B-spline knot to endpoint tangency was applied instead. 代之以使用 B-样条至端点切换。 - - + + Wrong number of selected objects! 选取对象的数量有误! - - + + With 3 objects, there must be 2 curves and 1 point. 3个对象时至少需有2条曲线及1个点。 - - - - - - + + + + + + Select one or more arcs or circles from the sketch. 从草图中选择一个或多个弧或圆。 - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. 只从草图中选择一个或多个B-Spline柱,或只选择一个或多个弧或圆,但不混合。 - - - + + + Constraint only applies to arcs or circles. 约束只适用于圆弧或圆。 - - + + Select one or two lines from the sketch. Or select two edges and a point. 从草图中选择一或两条直线。或选择两条边和一个点。 @@ -3009,88 +3009,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 不能为两条平行线设置角度约束。 - + Cannot add an angle constraint on an axis! 无法在坐标轴上添加角度约束! - + Select two edges from the sketch. 从草图选择两条边. - + Select two or more compatible edges. 选择两个或更多兼容的边缘。 - + Sketch axes cannot be used in equality constraints. 草图轴无法用于相等约束. - + Equality for B-spline edge currently unsupported. 目前不支持贝塞尔曲线条边缘的等值约束。 - - - - + + + + Select two or more edges of similar type. 选择两个或多个相似类型的边缘。 - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. 请从草图中选取2个点及对称线, 2个点及对称点或1条线及1对称点。 - - + + Cannot add a symmetry constraint between a line and its end points. 无法在行和端点之间添加对称约束。 - - - - + + + + Cannot add a symmetry constraint between a line and its end points! 无法在直线及其端点间添加对称约束! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw 选取线段的两个端点做为射线,以及一条边缘做为边界,先选的点会编号为n1,后选的点则编号为n2,基准值设定为n2/n1。 - + Selected objects are not just geometry from one sketch. 选取的物件并非来自于草图的几何形状。 - + Cannot create constraint with external geometry only. 无法仅通过外部几何图形创建约束 - + Incompatible geometry is selected. 选取了不相容的几何图形. - - - - - + + + + + Select constraints from the sketch. 从草图中选择约束。 @@ -3112,9 +3112,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 定義 B 雲形線多項式次數,介於 1 及 %1 之間: + - CAD Kernel Error CAD 内核错误 @@ -3257,14 +3257,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 移除轴对齐需要至少一个选定的非外部几何元素 - - + + Unsupported visual layer operation 不支持的视觉图层操作 - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted 当前不支持将外部几何图形移动到另一个视图层。外部几何将被省略。 @@ -3648,12 +3648,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 长度: - + Refractive index ratio 折射率比 - + Ratio n2/n1: 比例 n2/n1: @@ -3661,72 +3661,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal 法向 - + Construction 构造 - + Internal Internal - + External 外部 - + All types 所有类型 - + Point - + Line 线 - + Circle - + Ellipse 椭圆 - + Arc of circle Arc of circle - + Arc of ellipse Arc of ellipse - + Arc of hyperbola Arc of hyperbola - + Arc of parabola Arc of parabola - + B-Spline B-Spline @@ -3849,27 +3849,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Select Vertical Axis - + Layer 图层 - + Layer 0 Layer 0 - + Layer 1 Layer 1 - + Hidden 隐藏 - + Delete 删除 @@ -4724,12 +4724,12 @@ However, no constraints linking to the endpoints were found. Check to toggle filters - 选中以切换过滤器 + Check to toggle filters Click to show filters - 点击显示过滤器 + Click to show filters @@ -4742,120 +4742,120 @@ However, no constraints linking to the endpoints were found. 设置 - - - - - - - - - - + + + + + + + + + + Construction 构造 - + Elements 元素 - - - - + + + + Point - - - - - - - - - - + + + + + + + + + + Internal Internal - - - - + + + + Line 线 - - - - + + + + Arc 圆弧 - - - - + + + + Circle - - - - + + + + Ellipse 椭圆 - - - - + + + + Elliptical Arc 椭圆弧 - - - - + + + + Hyperbolic Arc 双曲线弧 - - - - + + + + Parabolic Arc 抛物线弧 - - - - + + + + BSpline B样条曲线 - - - - + + + + Other 其它 - + Extended information 扩展信息 @@ -5076,119 +5076,119 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch 编辑草绘 - + A dialog is already open in the task panel 一个对话框已在任务面板打开 - + Do you want to close this dialog? 您要关闭此对话框吗? - + Invalid sketch 无效的草图 - + Do you want to open the sketch validation tool? 你想打开草图验证工具么? - + The sketch is invalid and cannot be edited. 该草图不可用并不可编辑。 - + Please remove the following constraint: 请删除以下约束: - + Please remove at least one of the following constraints: 请至少删除以下约束之一: - + Please remove the following redundant constraint: 请删除以下冗余约束: - + Please remove the following redundant constraints: 请删除以下冗余约束: - + The following constraint is partially redundant: The following constraint is partially redundant: - + The following constraints are partially redundant: The following constraints are partially redundant: - + Please remove the following malformed constraint: Please remove the following malformed constraint: - + Please remove the following malformed constraints: Please remove the following malformed constraints: - + Empty sketch 空草图 - + Over-constrained: Over-constrained: - + Malformed constraints: Malformed constraints: - + Redundant constraints: Redundant constraints: - + Partially redundant: Partially redundant: - + Solver failed to converge Solver failed to converge - + Under constrained: 未约束的: - + %n DoF(s) %n个自由度 - + Fully constrained Fully constrained @@ -5286,8 +5286,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc 固定圆或圆弧的直径 @@ -5295,8 +5295,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc 固定圆或圆弧的半径/直径 @@ -5304,8 +5304,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 固定圆或圆弧的半径 @@ -5319,70 +5319,25 @@ This is done by analyzing the sketch geometries and constraints. 依最后所选的点作为参考点对几何图形进行不含约束连动的复制 - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - 通过端点和圆弧上的一点创建一个圆弧 - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points 通过三个边缘点创建圆 - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - 通过圆心和端点创建一个圆弧 - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints - - Sketcher_CreateBSpline - + B-spline by control points 由控制点生成的B 样条 - - + + Create a B-spline by control points 由控制点创建 B 样条 @@ -5390,35 +5345,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point 通过圆心和一个边缘点创建一个圆 - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - 通过近拱点、远拱点和小半径创建一个椭圆 - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - 通过中心点、大半径和点创建一个椭圆 - - Sketcher_CreateFillet - - + + Creates a radius between two lines 在两条线间创建圆角。 @@ -5426,8 +5363,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner 通过中心点和一个角创建一个七边形 @@ -5435,8 +5372,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner 通过中心点和一个角创建一个六边形 @@ -5452,14 +5389,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner 通过中心点和一个角创建一个八边形 + - Create a regular polygon by its center and by one corner 通过中心点和一个角创建一个正方形 @@ -5467,8 +5404,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner 通过中心点和一个角创建一个五边形 @@ -5476,8 +5413,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point 保留约束和交点的圆角 @@ -5501,8 +5438,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner 通过中心点和一个角创建一个正方形 @@ -5510,8 +5447,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner 通过中心点和一个角创建一个等边三角形 @@ -5519,13 +5456,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points 周期 B 样条的控制点 + - Create a periodic B-spline by control points 由控制点创建周期贝塞尔曲线 @@ -5925,7 +5862,7 @@ Eigen Sparse QR algorithm is optimized for sparse matrices; usually faster ViewProviderSketch - + and %1 more and %1 more @@ -6148,46 +6085,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error 错误 @@ -6223,16 +6160,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6249,12 +6186,12 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add arc of ellipse - + Cannot create arc of hyperbola from invalid angles, try again! Cannot create arc of hyperbola from invalid angles, try again! - + Cannot create arc of hyperbola Cannot create arc of hyperbola @@ -6274,8 +6211,8 @@ The grid spacing change if it becomes smaller than this number of pixel.Error creating B-spline pole - + Error creating B-spline Error creating B-spline @@ -6331,17 +6268,17 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to add line - - - - - - - + + + + + + + Tool execution aborted 工具执行中止 @@ -6376,9 +6313,9 @@ The grid spacing change if it becomes smaller than this number of pixel.Failed to trim edge - + Value Error Value Error @@ -6441,13 +6378,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_CreateBSplineByInterpolation - + B-spline by knots B-spline by knots - - + + Create a B-spline by knots Create a B-spline by knots @@ -6455,13 +6392,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots Periodic B-spline by knots + - Create a periodic B-spline by knots Create a periodic B-spline by knots @@ -6567,12 +6504,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots Create B-spline by knots - + Create a B-spline by knots, i.e. by interpolation, in the sketch. Create a B-spline by knots, i.e. by interpolation, in the sketch. @@ -6580,12 +6517,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots Create periodic B-spline by knots - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. @@ -6593,12 +6530,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension 尺寸标注 - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6636,12 +6573,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius 半径约束 - + Fix the radius of a circle or an arc 固定圆或圆弧的半径 @@ -6816,8 +6753,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - 创建两个矩形,其中一个具有恒定的厚度。 + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6831,12 +6768,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical. Constrains a single line to either horizontal or vertical. @@ -6844,12 +6781,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical Horizontal/Vertical - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. @@ -6857,12 +6794,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6870,12 +6807,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6883,12 +6820,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6896,12 +6833,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident 重合约束 - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7322,4 +7259,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.ts index 0b121d8e35..110e6de293 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.ts @@ -69,12 +69,12 @@ CmdSketcherCarbonCopy - + Create carbon copy 建立副本 - + Copy the geometry of another sketch 自其它草圖複製幾何 @@ -128,27 +128,27 @@ CmdSketcherCompConstrainRadDia - + Constrain arc or circle 約束弧或圓的直/半徑 - + Constrain an arc or a circle 約束單一圓弧或圓的直/半徑 - + Constrain radius 半徑拘束 - + Constrain diameter 直徑拘束 - + Constrain auto radius/diameter 自動拘束半徑/直徑 @@ -180,24 +180,24 @@ - Center and end points - 圓心和起/終點定弧 + Center and endpoints + Center and endpoints - - End points and rim point - 3點定弧 + + Endpoints and rim point + Endpoints and rim point CmdSketcherCompCreateBSpline - + Create B-spline 建立B雲形線 - + Create a B-spline in the sketch 在草圖中建立B雲形線 @@ -205,22 +205,22 @@ CmdSketcherCompCreateCircle - + Create circle 建立圓 - + Create a circle in the sketcher 於草圖中建立一個圓 - + Center and rim point 圓心及半徑定圓 - + 3 rim points 3點建立圓 @@ -228,37 +228,37 @@ CmdSketcherCompCreateConic - + Create conic 建立圓錐 - + Create a conic in the sketch 於草圖中建立圓錐 - - Ellipse by center, major radius, point - 由中心點、長軸半徑以及點來建立橢圓 + + Ellipse by center, radius, rim point + Ellipse by center, radius, rim point - - Ellipse by periapsis, apoapsis, minor radius - 由近心點、遠心點及短軸半徑建立橢圓 + + Ellipse by axis endpoints, rim point + Ellipse by axis endpoints, rim point - - Arc of ellipse by center, major radius, endpoints - 以中心點,長軸半徑,起/終點建立橢圓弧 + + Arc of ellipse by center, radius, endpoints + Arc of ellipse by center, radius, endpoints - - Arc of hyperbola by center, major radius, endpoints - 以中心點、長軸半徑及終點建立雙曲線弧 + + Arc of hyperbola by center, vertex, endpoints + Arc of hyperbola by center, vertex, endpoints - + Arc of parabola by focus, vertex, endpoints 由焦點/頂點/端點 建立拋物線弧 @@ -266,24 +266,24 @@ CmdSketcherCompCreateFillets - + Create fillet 建立圓角 - + Create a fillet between two lines 在兩條線間建立圓角 - + Sketch fillet 草圖圓角 - - Constraint-preserving sketch fillet - 保留拘束之草圖圓角 + + Corner-preserving sketch fillet + Corner-preserving sketch fillet @@ -317,47 +317,47 @@ CmdSketcherCompCreateRegularPolygon - + Create regular polygon 建立正多邊形 - + Create a regular polygon in the sketcher 於草圖中建立正多邊形 - + Triangle 三角形 - + Square 正方形 - + Pentagon 五角形 - + Hexagon 六角形 - + Heptagon 七角形 - + Octagon 八角形 - + Regular polygon 正多邊形 @@ -388,12 +388,12 @@ CmdSketcherConstrainAngle - + Constrain angle 角度拘束 - + Fix the angle of a line or the angle between two lines 固定線之角度或兩線間角度 @@ -401,12 +401,12 @@ CmdSketcherConstrainBlock - + Constrain block 定位拘束 - + Block the selected edge from moving 阻止選定邊的移動 @@ -414,12 +414,12 @@ CmdSketcherConstrainCoincident - + Constrain coincident 共點拘束 - + Create a coincident constraint between points, or a concentric constraint between circles, arcs, and ellipses 在點之間創建重合拘束,或在圓、弧和橢圓之間創建同心拘束 @@ -427,12 +427,12 @@ CmdSketcherConstrainDiameter - + Constrain diameter 直徑拘束 - + Fix the diameter of a circle or an arc 固定一個圓或弧的直徑 @@ -440,12 +440,12 @@ CmdSketcherConstrainDistance - + Constrain distance 距離拘束 - + Fix a length of a line or the distance between a line and a vertex or between two circles Fix a length of a line or the distance between a line and a vertex or between two circles @@ -453,12 +453,12 @@ CmdSketcherConstrainDistanceX - + Constrain horizontal distance 水平距離拘束 - + Fix the horizontal distance between two points or line ends 固定兩點或線段的水平距離 @@ -466,12 +466,12 @@ CmdSketcherConstrainDistanceY - + Constrain vertical distance 垂直距離拘束 - + Fix the vertical distance between two points or line ends 固定兩點或線段的垂直距離 @@ -479,12 +479,12 @@ CmdSketcherConstrainEqual - + Constrain equal 相等拘束 - + Create an equality constraint between two lines or between circles and arcs 於兩線/圓/弧之間建立相等拘束 @@ -492,12 +492,12 @@ CmdSketcherConstrainHorizontal - + Constrain horizontally 水平拘束 - + Create a horizontal constraint on the selected item 於所選項目建立水平拘束 @@ -505,12 +505,12 @@ CmdSketcherConstrainLock - + Constrain lock 鎖定拘束 - + Create both a horizontal and a vertical distance constraint on the selected vertex 對所選頂點建立水平和垂直距離拘束 @@ -519,12 +519,12 @@ on the selected vertex CmdSketcherConstrainParallel - + Constrain parallel 平行拘束 - + Create a parallel constraint between two lines 於兩條線間建立平行拘束 @@ -532,12 +532,12 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Constrain perpendicular 垂直拘束 - + Create a perpendicular constraint between two lines 於兩條線間建立垂直拘束 @@ -545,12 +545,12 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Constrain point onto object 拘束點於物件上 - + Fix a point onto an object 固定點於物件上 @@ -558,12 +558,12 @@ on the selected vertex CmdSketcherConstrainRadiam - + Constrain auto radius/diameter 自動拘束半徑/直徑 - + Fix the diameter if a circle is chosen, or the radius if an arc/spline pole is chosen 如果選擇圓,則固定直徑,如果選擇圓弧/spline 極點,則固定半徑 @@ -571,12 +571,12 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Constrain refraction (Snell's law) Constrain refraction (Snell's law) - + Create a refraction law (Snell's law)constraint between two endpoints of rays and an edge as an interface. Create a refraction law (Snell's law)constraint between two endpoints of rays @@ -586,12 +586,12 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Constrain symmetrical 對稱拘束 - + Create a symmetry constraint between two points with respect to a line or a third point 於兩個點間藉由一條線或第3點建立一個對稱拘束 @@ -600,12 +600,12 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Constrain tangent 相切拘束 - + Create a tangent constraint between two entities 於兩個實體間建立相切拘束 @@ -613,12 +613,12 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Constrain vertically 垂直拘束 - + Create a vertical constraint on the selected item 建立垂直拘束 @@ -665,12 +665,12 @@ with respect to a line or a third point CmdSketcherCreate3PointCircle - + Create circle by three points 3點建立圓 - + Create a circle by 3 perimeter points 3邊緣點建立圓 @@ -691,12 +691,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfEllipse - + Create arc of ellipse 建立橢圓弧 - + Create an arc of ellipse in the sketch 於草圖建立橢圓之弧 @@ -704,12 +704,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfHyperbola - + Create arc of hyperbola 建立雙曲線弧 - + Create an arc of hyperbola in the sketch 於草圖中建立雙曲線弧 @@ -717,12 +717,12 @@ with respect to a line or a third point CmdSketcherCreateArcOfParabola - + Create arc of parabola 建立拋物線弧 - + Create an arc of parabola in the sketch 於草圖中建立拋物線弧 @@ -730,12 +730,12 @@ with respect to a line or a third point CmdSketcherCreateBSpline - + Create B-spline 建立B雲形線 - + Create a B-spline by control points in the sketch. 由草圖中的控制點建立B雲形線 @@ -743,12 +743,12 @@ with respect to a line or a third point CmdSketcherCreateCircle - + Create circle 建立圓 - + Create a circle in the sketch 於草圖中建立圓形 @@ -756,12 +756,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseBy3Points - + Create ellipse by 3 points 由3點建立一橢圓 - + Create an ellipse by 3 points in the sketch 於草圖中由3點建立一橢圓 @@ -769,12 +769,12 @@ with respect to a line or a third point CmdSketcherCreateEllipseByCenter - + Create ellipse by center 由中心點建立橢圓 - + Create an ellipse by center in the sketch 於草圖中由中心點建立橢圓 @@ -782,12 +782,12 @@ with respect to a line or a third point CmdSketcherCreateFillet - + Create fillet 建立圓角 - + Create a fillet between two lines or at a coincident point Create a fillet between two lines or at a coincident point @@ -795,12 +795,12 @@ with respect to a line or a third point CmdSketcherCreateHeptagon - + Create heptagon 建立七角形 - + Create a heptagon in the sketch 於草圖中建立七角形 @@ -808,12 +808,12 @@ with respect to a line or a third point CmdSketcherCreateHexagon - + Create hexagon 建立六角形 - + Create a hexagon in the sketch 於草圖中建立六角形 @@ -847,12 +847,12 @@ with respect to a line or a third point CmdSketcherCreateOctagon - + Create octagon 建立八角形 - + Create an octagon in the sketch 於草圖中建立八角形 @@ -860,12 +860,12 @@ with respect to a line or a third point CmdSketcherCreatePentagon - + Create pentagon 建立五角形 - + Create a pentagon in the sketch 於草圖中建立五角形 @@ -873,12 +873,12 @@ with respect to a line or a third point CmdSketcherCreatePeriodicBSpline - + Create periodic B-spline 建立週期性B雲形線 - + Create a periodic B-spline by control points in the sketch. 在草圖中使用控制點創建週期性B雲形線。 @@ -886,12 +886,12 @@ with respect to a line or a third point CmdSketcherCreatePoint - + Create point 建立點 - + Create a point in the sketch 於草圖中建立點 @@ -899,12 +899,12 @@ with respect to a line or a third point CmdSketcherCreatePointFillet - + Create corner-preserving fillet 創建角落保留之圓角 - + Fillet that preserves intersection point and most constraints 保留相交點及大多數拘束之圓角 @@ -951,12 +951,12 @@ with respect to a line or a third point CmdSketcherCreateRegularPolygon - + Create regular polygon 建立正多邊形 - + Create a regular polygon in the sketch 於草圖中建立正多邊形 @@ -964,12 +964,12 @@ with respect to a line or a third point CmdSketcherCreateSlot - + Create slot 建立跑道圖型 - + Create a slot in the sketch 於草圖中建立跑道圖型 @@ -977,12 +977,12 @@ with respect to a line or a third point CmdSketcherCreateSquare - + Create square 建立正方形 - + Create a square in the sketch 於草圖中建立正方形 @@ -990,12 +990,12 @@ with respect to a line or a third point CmdSketcherCreateTriangle - + Create equilateral triangle 建立正三角形 - + Create an equilateral triangle in the sketch 於草圖中建立正三角形 @@ -1068,12 +1068,12 @@ with respect to a line or a third point CmdSketcherExtend - + Extend edge 延伸邊緣 - + Extend an edge with respect to the picked position 相對於拾取的位置延伸一條邊 @@ -1081,12 +1081,12 @@ with respect to a line or a third point CmdSketcherExternal - + Create external geometry 建立外部幾何 - + Create an edge linked to an external geometry 與外部幾何建立相連之邊 @@ -1423,12 +1423,12 @@ This will clear the 'Support' property, if any. CmdSketcherSplit - + Split edge 分割邊緣 - + Splits an edge into two while preserving constraints 當保留拘束時將一個邊分成二個。 @@ -1475,12 +1475,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Activate/deactivate constraint 啟動/關閉拘束 - + Activates or deactivates the selected constraints 啟用或關閉選擇拘束 @@ -1501,12 +1501,12 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Toggle driving/reference constraint 切換驅動/參考拘束 - + Set the toolbar, or the selected constraints, into driving or reference mode 設置工具列,或選定的拘束,進入驅動或參考模式 @@ -1515,12 +1515,12 @@ into driving or reference mode CmdSketcherTrimming - + Trim edge 修剪邊 - + Trim an edge with respect to the picked position 依選取位置修剪邊 @@ -1578,79 +1578,79 @@ invalid constraints, degenerated geometry, etc. Command - + Add 'Lock' constraint 添加定位拘束 - + Add relative 'Lock' constraint 添加相對定位拘束 - + Add fixed constraint 添加固定拘束 - + Add 'Block' constraint 添加定位拘束 - + Add block constraint 添加定位拘束 - - + + Add coincident constraint 添加共點約束 - - + + Add distance from horizontal axis constraint 添加與水平軸拘束的距離 - - + + Add distance from vertical axis constraint 添加與垂直軸拘束的距離 - - + + Add point to point distance constraint 添加點到點的距離約束 - - + + Add point to line Distance constraint 添加點到線的距離約束 - - + + Add circle to circle distance constraint 添加圓到圓的距離約束 - + Add circle to line distance constraint 添加圓到線的距離約束 - - - - - - + + + + + + Add length constraint 添加長度拘束 @@ -1673,8 +1673,8 @@ invalid constraints, degenerated geometry, etc. - - + + Add Distance constraint 添加距離拘束 @@ -1700,7 +1700,7 @@ invalid constraints, degenerated geometry, etc. - + Add Symmetry constraints 添加對稱拘束 @@ -1711,220 +1711,220 @@ invalid constraints, degenerated geometry, etc. 添加距離拘束 - + Add Horizontal constraint 添加水平拘束 - + Add Vertical constraint 添加垂直拘束 - + Add Block constraint 添加區塊拘束 - + Add Angle constraint 添加角度拘束 - - - - + + + + Add Equality constraint 添加相等拘束 - + Add Equality constraints 添加相等拘束 - - - + + + Add Radius constraint 添加半徑拘束 - - + + Add arc angle constraint 添加弧角度拘束 - + Add concentric and length constraint 添加同心與長度拘度 - + Add DistanceX constraint 添加 X 距離拘束 - + Add DistanceY constraint 添加 Y 距離拘束 - + Add point to circle Distance constraint Add point to circle Distance constraint - - + + Add point on object constraint 在物件拘束上添加點 - - + + Add point to point horizontal distance constraint 添加點到點的水平距離約束 - + Add fixed x-coordinate constraint 添加固定的 x 座標拘束 - - + + Add point to point vertical distance constraint 添加點到點的垂直距離約束 - + Add fixed y-coordinate constraint 添加固定的 y 座標拘束 - - + + Add parallel constraint 添加平行拘束 - - - - - - - + + + + + + + Add perpendicular constraint 添加垂直拘束 - + Add perpendicularity constraint 添加垂直度拘束 - + Swap coincident+tangency with ptp tangency 以 ptp 相切交換共點+相切 - + Swap PointOnObject+tangency with point to curve tangency 以點對曲線相切交換物件上點(PoingOnObject)+相切 - - - - - - - + + + + + + + Add tangent constraint 添加切線拘束 - - - - - - - - - - - - - - + + + + + + + + + + + + + + Add tangent constraint point 添加切線拘束點 - - - - + + + + Add radius constraint 添加半徑拘束 - - - - + + + + Add diameter constraint 添加直徑拘束 - - - - + + + + Add radiam constraint 添加半徑拘束 - - - - + + + + Add angle constraint 添加角度拘束 - - + + Add equality constraint 添加相等拘束 - - - - - + + + + + Add symmetric constraint 添加對稱拘束 - + Add Snell's law constraint 添加司乃耳定律拘束 - + Toggle constraint to driving/reference 切換拘束以作驅動/參考 - + Activate/Deactivate constraint 啟動/關閉拘束 @@ -2009,7 +2009,7 @@ invalid constraints, degenerated geometry, etc. 添加橢圓弧形草圖 - + Add sketch arc of hyperbola 添加雙曲線圓弧草圖 @@ -2153,8 +2153,8 @@ invalid constraints, degenerated geometry, etc. 更新拘束的虛擬空間 - + Add auto constraints 添加自動拘束 @@ -2179,12 +2179,12 @@ invalid constraints, degenerated geometry, etc. 拖曳曲線 - + Drag Constraint 拖動拘束 - + Modify sketch constraints 修改草圖拘束 @@ -2275,59 +2275,59 @@ invalid constraints, degenerated geometry, etc. 自動拘束錯誤: 套用相等拘束後無法解出此草圖 - + Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. 無法猜測曲線交叉點。試著添加共點拘束在你要倒圓角的點及曲線間。 - - + + BSpline Geometry Index (GeoID) is out of bounds. B 雲形線幾何索引 (GeoID) 超出範圍。 - + You are requesting no change in knot multiplicity. 您正在要求不要改變結點多重性 - - + + The Geometry Index (GeoId) provided is not a B-spline curve. 提供的幾何索引 (GeoId) 不是 B 雲形線曲線。 - + The knot index is out of bounds. Note that in accordance with OCC notation, the first knot has index 1 and not zero. 結點索引超過範圍。請注意在 OCC 表示中,第一個結點的索引為 1 而不是 0。 - + The multiplicity cannot be increased beyond the degree of the B-spline. 結點多重性不能比 B 雲形線之多項式次數高 - + The multiplicity cannot be decreased beyond zero. 多重性不能減少到超過零。 - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC 無法在最大容差範圍內降低多重性。 - + Knot cannot have zero multiplicity. 結點之多重性不能為零。 - + Knot multiplicity cannot be higher than the degree of the BSpline. 結點多重性不能比 B 雲形線之次數高。 - + Knot cannot be inserted outside the BSpline parameter range. 結點不能在 B 雲形線參數範圍外面插入 @@ -2407,127 +2407,11 @@ invalid constraints, degenerated geometry, etc. 不要附加上去 + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2537,6 +2421,125 @@ invalid constraints, degenerated geometry, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2554,9 +2557,6 @@ invalid constraints, degenerated geometry, etc. - - - Wrong selection 錯誤的選取 @@ -2609,106 +2609,106 @@ invalid constraints, degenerated geometry, etc. 被選擇之一必須在草圖上。 - + Select an edge from the sketch. 於草圖中選擇邊 - - - - - - + + + + + + Impossible constraint 無法拘束 - - + + The selected edge is not a line segment. 所選之邊非為線段. - - - + + + Double constraint 雙重拘束 - + The selected edge already has a horizontal constraint! 選取的邊線已經有水平拘束! - + The selected edge already has a vertical constraint! 選取的邊線已經有垂直拘束! - - - + + + The selected edge already has a Block constraint! 所選邊線已套用定位拘束! - + There are more than one fixed points selected. Select a maximum of one fixed point! 選取超過一個固定點. 請選取最多一個固定點! - - - + + + Select vertices from the sketch. 從草圖中選取頂點 - + Select one vertex from the sketch other than the origin. 從草圖中選取一個非原點之頂點 - + Select only vertices from the sketch. The last selected vertex may be the origin. 從草圖中只選擇端點。 最後選擇的頂點可能是原點。 - + Wrong solver status 求解器狀態錯誤 - + A Block constraint cannot be added if the sketch is unsolved or there are redundant and conflicting constraints. 如果草圖中的求解器無法解出或存在冗餘、衝突的約束,則不能再添加定位約束。 - + Select one edge from the sketch. 從草圖中選取一邊線 - + Select only edges from the sketch. 僅有邊線能從草圖中被選取 - + Only tangent-via-point is supported with a B-spline. Only tangent-via-point is supported with a B-spline. - + Number of selected objects is not 3 選取之物件數量非為3 - + Error 錯誤 @@ -2718,80 +2718,80 @@ invalid constraints, degenerated geometry, etc. 未預期錯誤:更新資訊可以自報告檢視中獲得。 - + The selected item(s) can't accept a horizontal or vertical constraint! 所選項目無法接受水平或垂直拘束! - + Endpoint to endpoint tangency was applied instead. 已被取代為終點對終點相切 - + Select two or more vertices from the sketch for a coincident constraint, or two or more circles, ellipses, arcs or arcs of ellipse for a concentric constraint. 要創建一個重合拘束,請在草圖中選擇兩個或多個頂點,或者要創建同心拘束,請選擇兩個或多個圓、橢圓、弧或橢圓弧。 - + Select two vertices from the sketch for a coincident constraint, or two circles, ellipses, arcs or arcs of ellipse for a concentric constraint. 選擇草圖中的兩個頂點以創建重合拘束,或者選擇兩個圓、橢圓、弧或橢圓弧以創建同心拘束。 - + Select exactly one line or one point and one line or two points from the sketch. 由草圖中選取一條線或一個點,以及一條線或兩個點。 - + Cannot add a length constraint on an axis! 無法於軸上增加長度拘束! - - + + Select exactly one line or one point and one line or two points or two circles from the sketch. Select exactly one line or one point and one line or two points or two circles from the sketch. - + This constraint does not make sense for non-linear curves. 此拘束條件在非線性曲線上並不合理. - + Endpoint to edge tangency was applied instead. 改為應用端點到邊相切。 - - - - - - + + + + + + Select the right things from the sketch. 從草圖中選取正確的圖元 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Select an edge that is not a B-spline weight. 選擇不是 B 雲形線權重的邊 @@ -2801,92 +2801,92 @@ invalid constraints, degenerated geometry, etc. One or two point on object constraint(s) was/were deleted, since the latest constraint being applied internally applies point-on-object as well. - + Select either several points, or several conics for concentricity. Select either several points, or several conics for concentricity. - + Select either one point and several curves, or one curve and several points Select either one point and several curves, or one curve and several points - + Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. Select either one point and several curves or one curve and several points for pointOnObject, or several points for coincidence, or several conics for concentricity. - + None of the selected points were constrained onto the respective curves, because they are parts of the same element, because they are both external geometry, or because the edge is not eligible. 沒有任何被選擇點被拘束在其個別的曲線上,因為它們是同一個元件的一部份,因為它們都是外部幾何,或是因為其邊不符合條件。 - + None of the selected points were constrained onto the respective curves, either because they are parts of the same element, or because they are both external geometry. 沒有任何被選擇點被拘束在其個別的曲線上,要麼因為它們都是同一元件的一部份,或是因為他們都是外部幾何。 - + Cannot add a length constraint on this selection! Cannot add a length constraint on this selection! - - - - + + + + Select exactly one line or up to two points from the sketch. 於草圖中選取一條線或最多兩個點。 - + Cannot add a horizontal length constraint on an axis! 無法於軸上增加水平長度拘束! - + Cannot add a fixed x-coordinate constraint on the origin point! 在原點上無法加入固定X軸拘束! - - + + This constraint only makes sense on a line segment or a pair of points. 此拘束只針對線段或是一對點有意義。 - + Cannot add a vertical length constraint on an axis! 無法於軸上增加垂直長度拘束! - + Cannot add a fixed y-coordinate constraint on the origin point! 在原點上無法加入固定Y軸拘束! - + Select two or more lines from the sketch. 由草圖中選取兩條或以上線條。 - + One selected edge is not a valid line. One selected edge is not a valid line. - - + + Select at least two lines from the sketch. 由草圖中選取至少兩條線。 - + The selected edge is not a valid line. 所選之邊非為有效線段. - + There is a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2894,35 +2894,35 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 此拘束尚有許多方式可以使用,可用的組合有:兩條曲線、兩個端點、兩條曲線及一個點。 - + Select some geometry from the sketch. perpendicular constraint 從草圖中選取一些幾何。 - - + + Cannot add a perpendicularity constraint at an unconnected point! 無法於未連接點上建立垂直拘束! - - + + One of the selected edges should be a line. 所選之邊中需有一條線。 - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. 已套用點對點相切拘束,共點拘束已被刪除 - + Endpoint to edge tangency was applied. The point on object constraint was deleted. 終點到邊已套用相切(拘束)。因此點到物件之拘束被刪除。 - + There are a number of ways this constraint can be applied. Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. @@ -2932,67 +2932,67 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 可接受的組合:二條曲線; 一個終止點及一條曲線;二個終主點;二條曲線及一點。 - + Select some geometry from the sketch. tangent constraint 從草圖中選取一些幾何。 - - - + + + Cannot add a tangency constraint at an unconnected point! 無法於未連接點上建立相切拘束! - - + + Tangent constraint at B-spline knot is only supported with lines! 在 B-spline 曲線結點上僅支持與直線的切線拘束! - + B-spline knot to endpoint tangency was applied instead. 取而代之套用了 B-spline 曲線結點到終點的切線。 - - + + Wrong number of selected objects! 選取之物件數量有誤! - - + + With 3 objects, there must be 2 curves and 1 point. 三個物件時至少需有2條曲線及1個點。 - - - - - - + + + + + + Select one or more arcs or circles from the sketch. 從草圖中選取一個或多個弧或圓。 - - + + Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed. 從草圖中僅選擇一個或多個 B 雲形線極點或僅選擇一個或多個圓弧或圓,但不要混合。 - - - + + + Constraint only applies to arcs or circles. 拘束僅能用在圓弧或圓上 - - + + Select one or two lines from the sketch. Or select two edges and a point. 從草圖中選取一或兩條線條,或選取兩個邊及一個點。 @@ -3007,88 +3007,88 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 無法於兩條平行線間建立角度拘束。 - + Cannot add an angle constraint on an axis! 無法於軸上建立角度拘束! - + Select two edges from the sketch. 由草圖中選取兩個邊。 - + Select two or more compatible edges. 選擇兩個或更多相容之邊. - + Sketch axes cannot be used in equality constraints. 草圖軸不能用在相等拘束。 - + Equality for B-spline edge currently unsupported. 不支援B雲形線的等長拘束。 - - - - + + + + Select two or more edges of similar type. 選取兩個或更多相似類型之邊. - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. 請從草圖中選取兩個點及對稱線,兩個點及對稱點或一條線擊對稱點。 - - + + Cannot add a symmetry constraint between a line and its end points. 無法在一條線及其端點間添加對稱拘束。 - - - - + + + + Cannot add a symmetry constraint between a line and its end points! 無法於線及其終點建立對稱拘束! - + Select two endpoints of lines to act as rays, and an edge representing a boundary. The first selected point corresponds to index n1, second to n2, and datum value sets the ratio n2/n1. Constraint_SnellsLaw 選取線段之兩個端點做為光線,以及一個邊緣做為邊界,先選的點會編號為n1,後選的點則編號為n2,基準值設定為n2/n1。 - + Selected objects are not just geometry from one sketch. 選取之物件並非來自於草圖之幾何。 - + Cannot create constraint with external geometry only. 僅用外部幾何無法建立拘束. - + Incompatible geometry is selected. 選取了不相容的幾何. - - - - - + + + + + Select constraints from the sketch. 從草圖中選取拘束 @@ -3110,9 +3110,9 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 定義 B 雲形線多項式次數,介於 1 及 %1 之間: + - CAD Kernel Error CAD核心錯誤 @@ -3255,14 +3255,14 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 移除軸對齊需要至少選擇一個非外部幾何元件 - - + + Unsupported visual layer operation Unsupported visual layer operation - - + + It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted It is currently unsupported to move external geometry to another visual layer. External geometry will be omitted @@ -3646,12 +3646,12 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 長度: - + Refractive index ratio 折射率比例 - + Ratio n2/n1: 比例 n2/n1: @@ -3659,72 +3659,72 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ElementFilterList - + Normal 垂直 - + Construction 建構 - + Internal 內部 - + External 外部 - + All types 所有類型 - + Point - + Line - + Circle - + Ellipse 橢圓 - + Arc of circle 圓弧 - + Arc of ellipse 橢圓弧 - + Arc of hyperbola 雙曲線弧 - + Arc of parabola 拋物線弧 - + B-Spline B 雲形線 @@ -3847,27 +3847,27 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 選取垂直軸 - + Layer - + Layer 0 圖層 0 - + Layer 1 圖層 1 - + Hidden 隱藏 - + Delete 刪除 @@ -4735,120 +4735,120 @@ However, no constraints linking to the endpoints were found. 設定 - - - - - - - - - - + + + + + + + + + + Construction 建構 - + Elements 元件 - - - - + + + + Point - - - - - - - - - - + + + + + + + + + + Internal 內部 - - - - + + + + Line - - - - + + + + Arc - - - - + + + + Circle - - - - + + + + Ellipse 橢圓 - - - - + + + + Elliptical Arc 橢圓弧 - - - - + + + + Hyperbolic Arc 雙曲線弧 - - - - + + + + Parabolic Arc 拋物線弧形 - - - - + + + + BSpline BSpline(B 雲形線) - - - - + + + + Other 其他 - + Extended information 延伸資訊 @@ -5069,119 +5069,119 @@ This is done by analyzing the sketch geometries and constraints. SketcherGui::ViewProviderSketch - + Edit sketch 編輯草圖 - + A dialog is already open in the task panel 於工作面板已開啟對話窗 - + Do you want to close this dialog? 您確定要關閉此對話窗嗎? - + Invalid sketch 錯誤之草圖 - + Do you want to open the sketch validation tool? 您要開啟草圖驗證工具嗎? - + The sketch is invalid and cannot be edited. 此為無效且不能編輯之草圖 - + Please remove the following constraint: 請移除下列拘束: - + Please remove at least one of the following constraints: 請移除下列至少一個拘束: - + Please remove the following redundant constraint: 請移除下列多餘拘束: - + Please remove the following redundant constraints: 請移除下列多餘拘束: - + The following constraint is partially redundant: 以下拘束為部份冗餘: - + The following constraints are partially redundant: 以下拘束為部份冗餘: - + Please remove the following malformed constraint: 請移除下列格式錯誤拘束: - + Please remove the following malformed constraints: 請移除下列格式錯誤拘束: - + Empty sketch 空白草圖 - + Over-constrained: 過度拘束: - + Malformed constraints: 格式錯誤的拘束: - + Redundant constraints: 冗餘拘束: - + Partially redundant: 部份冗餘: - + Solver failed to converge 求解器無法收斂 - + Under constrained: 在拘束下: - + %n DoF(s) %n 自由度 - + Fully constrained 完全拘束 @@ -5279,8 +5279,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc 固定一個圓或弧的直徑 @@ -5288,8 +5288,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadiam - - + + Fix the radius/diameter of a circle or an arc 固定一個圓或弧的半徑/直徑 @@ -5297,8 +5297,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 固定圓或弧之半徑 @@ -5312,70 +5312,25 @@ This is done by analyzing the sketch geometries and constraints. 依最後所選的點作為參考點對幾何進行不含拘束連動之複製 - - Sketcher_Create3PointArc - - - - Create an arc by its end points and a point along the arc - 由終點及弧上一點建立一個弧 - - Sketcher_Create3PointCircle - - + + Create a circle by 3 rim points 由3圓弧點建立一個圓 - - Sketcher_CreateArc - - - - Create an arc by its center and by its end points - 由中心點及其終點建立一個弧 - - - - Sketcher_CreateArcOfEllipse - - - - Create an arc of ellipse by its center, major radius, and endpoints - 由中心點、長軸半徑及終點來建立橢圓之弧 - - - - Sketcher_CreateArcOfHyperbola - - - - Create an arc of hyperbola by its center, major radius, and endpoints - 以中心點,長軸半徑及終點建立雙曲線弧 - - - - Sketcher_CreateArcOfParabola - - - - Create an arc of parabola by its focus, vertex, and endpoints - 通過焦點、頂點和端點創建拋物線弧 - - Sketcher_CreateBSpline - + B-spline by control points 以控制點建立 B 雲形線 - - + + Create a B-spline by control points 以控制點建立 B 雲形線 @@ -5383,35 +5338,17 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateCircle - - + + Create a circle by its center and by a rim point 由中心點及一個圓弧點建立一個圓 - - Sketcher_CreateEllipseBy3Points - - - - Create a ellipse by periapsis, apoapsis, and minor radius - 由近心點、遠心點及短軸半徑建立橢圓 - - - - Sketcher_CreateEllipseByCenter - - - - Create an ellipse by center, major radius and point - 由中心點、長軸半徑及終點來建立橢圓 - - Sketcher_CreateFillet - - + + Creates a radius between two lines 在兩條線間建立半徑 @@ -5419,8 +5356,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHeptagon + - Create a heptagon by its center and by one corner 以中心點及一角來建立七角形 @@ -5428,8 +5365,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateHexagon + - Create a hexagon by its center and by one corner 以中心點及一角來建立六角形 @@ -5445,14 +5382,14 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateOctagon + - Create an octagon by its center and by one corner 以中心點及一角來建立八角形 + - Create a regular polygon by its center and by one corner 以中心點及一角來建立正多邊形 @@ -5460,8 +5397,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePentagon + - Create a pentagon by its center and by one corner 以中心點及一角來建立五角形 @@ -5469,8 +5406,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreatePointFillet + - Fillet that preserves constraints and intersection point 保留拘束與交叉點的圓角 @@ -5494,8 +5431,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateSquare + - Create a square by its center and by one corner 以中心點及一角來建立正方形 @@ -5503,8 +5440,8 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_CreateTriangle + - Create an equilateral triangle by its center and by one corner 以中心點及一角來建立正三角形 @@ -5512,13 +5449,13 @@ This is done by analyzing the sketch geometries and constraints. Sketcher_Create_Periodic_BSpline - + Periodic B-spline by control points 由控制點建立週期性B雲形線 + - Create a periodic B-spline by control points 由控制點建立週期性B雲形線 @@ -5916,7 +5853,7 @@ Eigen Sparse QR 算法針對稀疏矩陣進行了優化;通常更快 ViewProviderSketch - + and %1 more 還有 %1 個 @@ -6139,46 +6076,46 @@ The grid spacing change if it becomes smaller than this number of pixel.The Sketch has partially redundant constraints! - + Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! Parabolas were migrated. Migrated files won't open in previous versions of FreeCAD!! - - - + + + - - + + + + - - - - - - - - + + + + - + - - - - + + + + - - - - + + + + + + Error 錯誤 @@ -6214,16 +6151,16 @@ The grid spacing change if it becomes smaller than this number of pixel.The constraint has invalid index information and is malformed. + + + - - - - - + + Invalid Constraint @@ -6240,12 +6177,12 @@ The grid spacing change if it becomes smaller than this number of pixel.添加橢圓弧失敗 - + Cannot create arc of hyperbola from invalid angles, try again! 無法自無效角度建立雙曲線弧,再試一次! - + Cannot create arc of hyperbola 無法建立雙曲線弧 @@ -6265,8 +6202,8 @@ The grid spacing change if it becomes smaller than this number of pixel.建立 B-Spline 曲線極點錯誤 - + Error creating B-spline 建立 B 雲形線錯誤 @@ -6322,17 +6259,17 @@ The grid spacing change if it becomes smaller than this number of pixel.添加線條失敗 - - - - - - - + + + + + + + Tool execution aborted Tool execution aborted @@ -6367,9 +6304,9 @@ The grid spacing change if it becomes smaller than this number of pixel.修剪邊緣失敗 - + Value Error 錯誤的值 @@ -6426,19 +6363,19 @@ The grid spacing change if it becomes smaller than this number of pixel. Failed to translate - Failed to translate + 轉移失敗 Sketcher_CreateBSplineByInterpolation - + B-spline by knots 以結點來建立 B-spline 曲線 - - + + Create a B-spline by knots 以結點來建立 B-spline 曲線 @@ -6446,13 +6383,13 @@ The grid spacing change if it becomes smaller than this number of pixel. Sketcher_Create_Periodic_BSplineByInterpolation - + Periodic B-spline by knots 以結點來建立週期性 B-spline 曲線 + - Create a periodic B-spline by knots 以結點來建立週期性 B-spline 曲線 @@ -6558,12 +6495,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreateBSplineByInterpolation - + Create B-spline by knots 以結點來建立 B-spline 曲線 - + Create a B-spline by knots, i.e. by interpolation, in the sketch. 在草圖中通過結點建立 B-spline 曲線,換句話說通過內插法。 @@ -6571,12 +6508,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherCreatePeriodicBSplineByInterpolation - + Create periodic B-spline by knots 以結點來建立週期性 B-spline 曲線 - + Create a periodic B-spline by knots, i.e. by interpolation, in the sketch. 在草圖中通過結點建立週期性 B-spline 曲線,換句話說通過內插法。 @@ -6584,12 +6521,12 @@ Points must be set closer than a fifth of the grid spacing to a grid line to sna CmdSketcherDimension - + Dimension 標註 - + Constrain contextually based on your selection. Depending on your selection you might have several constraints available. You can cycle through them using M key. Left clicking on empty space will validate the current constraint. Right clicking or pressing Esc will cancel. @@ -6627,12 +6564,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainRadius - + Constrain radius 半徑拘束 - + Fix the radius of a circle or an arc 固定圓或弧之半徑 @@ -6807,8 +6744,8 @@ Left clicking on empty space will validate the current constraint. Right clickin - Create two rectangles, one in the other with a constant thickness. - Create two rectangles, one in the other with a constant thickness. + Create two rectangles with a constant offset. + Create two rectangles with a constant offset. @@ -6822,12 +6759,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompHorizontalVertical - + Horizontal/Vertical 水平/垂直 - + Constrains a single line to either horizontal or vertical. 將單一線條設為水平或垂直拘束。 @@ -6835,12 +6772,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainHorVer - + Horizontal/Vertical 水平/垂直 - + Constrains a single line to either horizontal or vertical, whichever is closer to current alignment. 將單一線條設為為水平或垂直拘束,取決於更接近當前對齊的方向。 @@ -6848,12 +6785,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompCurveEdition - + Curve Edition Curve Edition - + Curve Edition tools. Curve Edition tools. @@ -6861,12 +6798,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCompSlot - + Slots Slots - + Slot tools. Slot tools. @@ -6874,12 +6811,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherCreateArcSlot - + Create arc slot Create arc slot - + Create an arc slot in the sketch Create an arc slot in the sketch @@ -6887,12 +6824,12 @@ Left clicking on empty space will validate the current constraint. Right clickin CmdSketcherConstrainCoincidentUnified - + Constrain coincident 共點拘束 - + Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses Create a coincident constraint between points, or fix a point on an edge, or a concentric constraint between circles, arcs, and ellipses @@ -7276,7 +7213,7 @@ Left clicking on empty space will validate the current constraint. Right clickin Array transform - Array transform + 陣列轉換 @@ -7313,4 +7250,67 @@ Left clicking on empty space will validate the current constraint. Right clickin Rows (+'R'/-'F') + + Sketcher_CreateArc + + + + Create an arc by its center and by its endpoints + Create an arc by its center and by its endpoints + + + + Sketcher_Create3PointArc + + + + Create an arc by its endpoints and a point along the arc + Create an arc by its endpoints and a point along the arc + + + + Sketcher_CreateEllipseByCenter + + + + Create an ellipse by its center, one of its radii and a rim point + Create an ellipse by its center, one of its radii and a rim point + + + + Sketcher_CreateEllipseBy3Points + + + + Create an ellipse by the endpoints of one of its axes and a rim point + Create an ellipse by the endpoints of one of its axes and a rim point + + + + Sketcher_CreateArcOfEllipse + + + + Create an arc of ellipse by its center, one of its radii, and its endpoints + Create an arc of ellipse by its center, one of its radii, and its endpoints + + + + Sketcher_CreateArcOfHyperbola + + + + Create an arc of hyperbola by its center, vertex and endpoints + Create an arc of hyperbola by its center, vertex and endpoints + + + + Sketcher_CreateArcOfParabola + + + + Create an arc of parabola by its focus, vertex and endpoints + Create an arc of parabola by its focus, vertex and endpoints + + diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.cpp b/src/Mod/Sketcher/Gui/SketcherSettings.cpp index 5c30e5fced..4e6ca319a3 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.cpp +++ b/src/Mod/Sketcher/Gui/SketcherSettings.cpp @@ -168,6 +168,8 @@ void SketcherSettings::saveSettings() index = ui->ovpVisibility->currentIndex(); hGrp->SetInt("OnViewParameterVisibility", index); + + checkForRestart(); } void SketcherSettings::loadSettings() @@ -179,7 +181,9 @@ void SketcherSettings::loadSettings() ui->checkBoxNotifyConstraintSubstitutions->onRestore(); ui->checkBoxAutoRemoveRedundants->onRestore(); ui->checkBoxUnifiedCoincident->onRestore(); + setProperty("checkBoxUnifiedCoincident", ui->checkBoxUnifiedCoincident->isChecked()); ui->checkBoxHorVerAuto->onRestore(); + setProperty("checkBoxHorVerAuto", ui->checkBoxHorVerAuto->isChecked()); // Dimensioning constraints mode ui->dimensioningMode->clear(); @@ -193,6 +197,7 @@ void SketcherSettings::loadSettings() bool SeparatedTools = hGrp->GetBool("SeparatedDimensioningTools", false); int index = SeparatedTools ? (singleTool ? 2 : 1) : 0; ui->dimensioningMode->setCurrentIndex(index); + setProperty("dimensioningMode", index); connect(ui->dimensioningMode, QOverload::of(&QComboBox::currentIndexChanged), this, @@ -225,7 +230,20 @@ void SketcherSettings::loadSettings() void SketcherSettings::dimensioningModeChanged(int index) { ui->radiusDiameterMode->setEnabled(index != 1); - SketcherSettings::requireRestart(); +} + +void SketcherSettings::checkForRestart() +{ + if (property("dimensioningMode").toInt() != ui->dimensioningMode->currentIndex()) { + SketcherSettings::requireRestart(); + } + if (property("checkBoxUnifiedCoincident").toBool() + != ui->checkBoxUnifiedCoincident->isChecked()) { + SketcherSettings::requireRestart(); + } + if (property("checkBoxHorVerAuto").toBool() != ui->checkBoxHorVerAuto->isChecked()) { + SketcherSettings::requireRestart(); + } } /** diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.h b/src/Mod/Sketcher/Gui/SketcherSettings.h index ddc8261635..49b569c040 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.h +++ b/src/Mod/Sketcher/Gui/SketcherSettings.h @@ -52,6 +52,7 @@ public: protected: void changeEvent(QEvent* e) override; void dimensioningModeChanged(int index); + void checkForRestart(); private: std::unique_ptr ui; diff --git a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp index 6f89a4867e..59b17a8958 100644 --- a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp +++ b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp @@ -157,13 +157,14 @@ bool SketcherToolDefaultWidget::eventFilter(QObject* object, QEvent* event) } } } - else if (event->type() == QEvent::FocusOut) { - for (int i = 0; i < nParameters; i++) { - auto parameterSpinBox = getParameterSpinBox(i); - - if (object == parameterSpinBox) { - signalParameterFocusOut(i); - break; + else if (event->type() == QEvent::KeyPress) { + QKeyEvent* ke = static_cast(event); + if (ke->key() == Qt::Key_Tab || ke->key() == Qt::Key_Return) { + for (int i = 0; i < nParameters; i++) { + if (object == getParameterSpinBox(i)) { + signalParameterTabOrEnterPressed(i); + return true; + } } } } diff --git a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h index d73ea08383..4432f4f2c6 100644 --- a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h +++ b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h @@ -155,9 +155,9 @@ public: void restoreComboboxPref(int comboboxindex); template - boost::signals2::connection registerParameterFocusOut(F&& fn) + boost::signals2::connection registerParameterTabOrEnterPressed(F&& fn) { - return signalParameterFocusOut.connect(std::forward(fn)); + return signalParameterTabOrEnterPressed.connect(std::forward(fn)); } template @@ -217,7 +217,7 @@ private: private: std::unique_ptr ui; - boost::signals2::signal signalParameterFocusOut; + boost::signals2::signal signalParameterTabOrEnterPressed; boost::signals2::signal signalParameterValueChanged; boost::signals2::signal signalCheckboxCheckedChanged; boost::signals2::signal signalComboboxSelectionChanged; diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp b/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp index 363aea9859..3283e3b95b 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp @@ -1538,7 +1538,7 @@ void TaskSketcherConstraints::change3DViewVisibilityToTrackFilter() Gui::Command::abortCommand(); Gui::TranslatedUserError( - sketch, tr("Error"), tr("Impossible to update visibility tracking: ")); + sketch, tr("Error"), tr("Impossible to update visibility tracking:") + QLatin1String(" ")); return false; } diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp index 7843cd9565..13850d8389 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp @@ -658,16 +658,16 @@ void ElementView::contextMenuEvent(QContextMenuEvent* event) "Sketcher_ConstrainPointOnObject", doPointOnObjectConstraint, true) - CONTEXT_ITEM("Constraint_Vertical", - "Vertical Constraint", - "Sketcher_ConstrainVertical", - doVerticalConstraint, - true) CONTEXT_ITEM("Constraint_Horizontal", "Horizontal Constraint", "Sketcher_ConstrainHorizontal", doHorizontalConstraint, true) + CONTEXT_ITEM("Constraint_Vertical", + "Vertical Constraint", + "Sketcher_ConstrainVertical", + doVerticalConstraint, + true) CONTEXT_ITEM("Constraint_Parallel", "Parallel Constraint", "Sketcher_ConstrainParallel", @@ -696,8 +696,6 @@ void ElementView::contextMenuEvent(QContextMenuEvent* event) CONTEXT_ITEM( "Constraint_Block", "Block Constraint", "Sketcher_ConstrainBlock", doBlockConstraint, true) - CONTEXT_ITEM( - "Constraint_Lock", "Lock Constraint", "Sketcher_ConstrainLock", doLockConstraint, true) CONTEXT_ITEM("Constraint_HorizontalDistance", "Horizontal Distance", "Sketcher_ConstrainDistanceX", @@ -713,6 +711,11 @@ void ElementView::contextMenuEvent(QContextMenuEvent* event) "Sketcher_ConstrainDistance", doLengthConstraint, true) + CONTEXT_ITEM("Constraint_Radiam", + "Radiam Constraint", + "Sketcher_ConstrainRadiam", + doRadiamConstraint, + true) CONTEXT_ITEM("Constraint_Radius", "Radius Constraint", "Sketcher_ConstrainRadius", @@ -723,16 +726,13 @@ void ElementView::contextMenuEvent(QContextMenuEvent* event) "Sketcher_ConstrainDiameter", doDiameterConstraint, true) - CONTEXT_ITEM("Constraint_Radiam", - "Radiam Constraint", - "Sketcher_ConstrainRadiam", - doRadiamConstraint, - true) CONTEXT_ITEM("Constraint_InternalAngle", "Angle Constraint", "Sketcher_ConstrainAngle", doAngleConstraint, true) + CONTEXT_ITEM( + "Constraint_Lock", "Lock Constraint", "Sketcher_ConstrainLock", doLockConstraint, true) menu.addSeparator(); @@ -792,8 +792,8 @@ void ElementView::contextMenuEvent(QContextMenuEvent* event) CONTEXT_MEMBER_DEF("Sketcher_ConstrainCoincident", doPointCoincidence) CONTEXT_MEMBER_DEF("Sketcher_ConstrainPointOnObject", doPointOnObjectConstraint) -CONTEXT_MEMBER_DEF("Sketcher_ConstrainVertical", doVerticalConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainHorizontal", doHorizontalConstraint) +CONTEXT_MEMBER_DEF("Sketcher_ConstrainVertical", doVerticalConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainParallel", doParallelConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainPerpendicular", doPerpendicularConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainTangent", doTangentConstraint) @@ -801,14 +801,14 @@ CONTEXT_MEMBER_DEF("Sketcher_ConstrainEqual", doEqualConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainSymmetric", doSymmetricConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainBlock", doBlockConstraint) -CONTEXT_MEMBER_DEF("Sketcher_ConstrainLock", doLockConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainDistanceX", doHorizontalDistance) CONTEXT_MEMBER_DEF("Sketcher_ConstrainDistanceY", doVerticalDistance) CONTEXT_MEMBER_DEF("Sketcher_ConstrainDistance", doLengthConstraint) +CONTEXT_MEMBER_DEF("Sketcher_ConstrainRadiam", doRadiamConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainRadius", doRadiusConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainDiameter", doDiameterConstraint) -CONTEXT_MEMBER_DEF("Sketcher_ConstrainRadiam", doRadiamConstraint) CONTEXT_MEMBER_DEF("Sketcher_ConstrainAngle", doAngleConstraint) +CONTEXT_MEMBER_DEF("Sketcher_ConstrainLock", doLockConstraint) CONTEXT_MEMBER_DEF("Sketcher_ToggleConstruction", doToggleConstruction) diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 1341442222..95ae557362 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -1961,7 +1961,7 @@ void ViewProviderSketch::moveAngleConstraint(Sketcher::Constraint* constr, int c if (reverse) { obj->reverseAngleConstraintToSupplementary(constr, constNum); - ap3 = intersection + dir1 - dir2; //- dir2 instead fo std::swap(dir1, dir2) and dir1 = -dir1 + ap3 = intersection + dir1 - dir2; //- dir2 instead of std::swap(dir1, dir2) and dir1 = -dir1 sign1 = isLeftOfLine(p11, p12, ap3); sign2 = isLeftOfLine(p21, p22, ap3); } @@ -2973,7 +2973,7 @@ bool ViewProviderSketch::setEdit(int ModNum) "if ActiveSketch.ViewObject.HideDependent:\n" " tv.hide(tv.get_all_dependent(%3, '%4'))\n" "if ActiveSketch.ViewObject.ShowSupport:\n" - " tv.show([ref[0] for ref in ActiveSketch.Support if not " + " tv.show([ref[0] for ref in ActiveSketch.AttachmentSupport if not " "ref[0].isDerivedFrom(\"PartDesign::Plane\")])\n" "if ActiveSketch.ViewObject.ShowLinks:\n" " tv.show([ref[0] for ref in ActiveSketch.ExternalGeometry])\n" @@ -3012,7 +3012,7 @@ bool ViewProviderSketch::setEdit(int ModNum) // The false parameter indicates that the geometry of the SketchObject shall not be updateData // so as not to trigger an onChanged that would set the document as modified and trigger a // recompute if we just close the sketch without touching anything. - if (getSketchObject()->Support.getValue()) { + if (getSketchObject()->AttachmentSupport.getValue()) { if (!getSketchObject()->evaluateSupport()) getSketchObject()->validateExternalLinks(); } @@ -3140,13 +3140,13 @@ void ViewProviderSketch::UpdateSolverInformation() else if (dofs < 0 || hasConflicts) {// over-constrained sketch signalSetUp( QString::fromUtf8("conflicting_constraints"), - tr("Over-constrained: "), + tr("Over-constrained:") + QLatin1String(" "), QString::fromUtf8("#conflicting"), QString::fromUtf8("(%1)").arg(intListHelper(getSketchObject()->getLastConflicting()))); } else if (hasMalformed) {// malformed constraints signalSetUp(QString::fromUtf8("malformed_constraints"), - tr("Malformed constraints: "), + tr("Malformed constraints:") + QLatin1String(" "), QString::fromUtf8("#malformed"), QString::fromUtf8("(%1)").arg( intListHelper(getSketchObject()->getLastMalformedConstraints()))); @@ -3154,13 +3154,13 @@ void ViewProviderSketch::UpdateSolverInformation() else if (hasRedundancies) { signalSetUp( QString::fromUtf8("redundant_constraints"), - tr("Redundant constraints:"), + tr("Redundant constraints:") + QLatin1String(" "), QString::fromUtf8("#redundant"), QString::fromUtf8("(%1)").arg(intListHelper(getSketchObject()->getLastRedundant()))); } else if (hasPartiallyRedundant) { signalSetUp(QString::fromUtf8("partially_redundant_constraints"), - tr("Partially redundant:"), + tr("Partially redundant:") + QLatin1String(" "), QString::fromUtf8("#partiallyredundant"), QString::fromUtf8("(%1)").arg( intListHelper(getSketchObject()->getLastPartiallyRedundant()))); @@ -3173,7 +3173,7 @@ void ViewProviderSketch::UpdateSolverInformation() } else if (dofs > 0) { signalSetUp(QString::fromUtf8("under_constrained"), - tr("Under constrained:"), + tr("Under constrained:") + QLatin1String(" "), QString::fromUtf8("#dofs"), tr("%n DoF(s)", "", dofs)); } @@ -3358,7 +3358,10 @@ void ViewProviderSketch::camSensCB(void* data, SoSensor*) auto vp = proxyVPrdr->vp; auto cam = proxyVPrdr->renderMgr->getCamera(); - vp->onCameraChanged(cam); + if (cam == nullptr) + Base::Console().DeveloperWarning("ViewProviderSketch", "Camera is nullptr!\n"); + else + vp->onCameraChanged(cam); } void ViewProviderSketch::onCameraChanged(SoCamera* cam) @@ -4044,8 +4047,8 @@ void ViewProviderSketch::generateContextMenu() menu << "Sketcher_Dimension"; if (selectedConics == 0) { menu << "Sketcher_ConstrainHorVer" - << "Sketcher_ConstrainVertical" - << "Sketcher_ConstrainHorizontal"; + << "Sketcher_ConstrainHorizontal" + << "Sketcher_ConstrainVertical"; if (selectedLines > 1) { menu << "Sketcher_ConstrainParallel"; @@ -4065,7 +4068,8 @@ void ViewProviderSketch::generateContextMenu() << "Sketcher_ConstrainEqual"; } else if (selectedConics == 1 && selectedLines == 1) { - menu << "Sketcher_ConstrainTangent"; + menu << "Sketcher_ConstrainPerpendicular" + << "Sketcher_ConstrainTangent"; } } else if (selectedEdges == 1 && selectedPoints >= 1 && !onlyOrigin) { @@ -4073,8 +4077,8 @@ void ViewProviderSketch::generateContextMenu() if (selectedConics == 0 && selectedBsplines == 0) { menu << "Sketcher_ConstrainCoincidentUnified" << "Sketcher_ConstrainHorVer" - << "Sketcher_ConstrainVertical" - << "Sketcher_ConstrainHorizontal"; + << "Sketcher_ConstrainHorizontal" + << "Sketcher_ConstrainVertical"; if (selectedPoints == 2) { menu << "Sketcher_ConstrainSymmetric"; } @@ -4095,8 +4099,8 @@ void ViewProviderSketch::generateContextMenu() if (selectedPoints > 1) { menu << "Sketcher_ConstrainCoincidentUnified" << "Sketcher_ConstrainHorVer" - << "Sketcher_ConstrainVertical" - << "Sketcher_ConstrainHorizontal"; + << "Sketcher_ConstrainHorizontal" + << "Sketcher_ConstrainVertical"; } if (selectedPoints == 2) { menu << "Sketcher_ConstrainPerpendicular" @@ -4109,8 +4113,8 @@ void ViewProviderSketch::generateContextMenu() else if (selectedLines >= 1 && selectedPoints >= 1 && !onlyOrigin) { menu << "Sketcher_Dimension" << "Sketcher_ConstrainHorVer" - << "Sketcher_ConstrainVertical" - << "Sketcher_ConstrainHorizontal"; + << "Sketcher_ConstrainHorizontal" + << "Sketcher_ConstrainVertical"; } // context menu if only constraints are selected else if (selectedConstraints >= 1) { @@ -4158,7 +4162,8 @@ void ViewProviderSketch::generateContextMenu() << "Separator" << "Sketcher_ToggleConstruction" << "Separator" - << "Sketcher_CreatePointFillet" + << "Sketcher_CreateFillet" + << "Sketcher_CreateChamfer" << "Sketcher_Trimming" << "Sketcher_Extend" << "Separator" diff --git a/src/Mod/Sketcher/Gui/Workbench.cpp b/src/Mod/Sketcher/Gui/Workbench.cpp index 9b6838dc37..7ef3c44373 100644 --- a/src/Mod/Sketcher/Gui/Workbench.cpp +++ b/src/Mod/Sketcher/Gui/Workbench.cpp @@ -42,6 +42,7 @@ using namespace SketcherGui; qApp->translate("Workbench", "Sketcher constraints"); qApp->translate("Workbench", "Sketcher tools"); qApp->translate("Workbench", "Sketcher B-spline tools"); + qApp->translate("Workbench", "Sketcher visual"); qApp->translate("Workbench", "Sketcher virtual space"); qApp->translate("Workbench", "Sketcher edit tools"); #endif @@ -374,8 +375,8 @@ void SketcherAddWorkspaceFillets(T& geom); template<> inline void SketcherAddWorkspaceFillets(Gui::MenuItem& geom) { - geom << "Sketcher_CreatePointFillet" - << "Sketcher_CreateFillet"; + geom << "Sketcher_CreateFillet" + << "Sketcher_CreateChamfer"; } template<> @@ -438,9 +439,9 @@ inline void SketcherAddWorkbenchConstraints(Gui::MenuItem& cons) cons << "Sketcher_ConstrainCoincident" << "Sketcher_ConstrainPointOnObject"; } - cons << "Sketcher_ConstrainVertical" + cons << "Sketcher_ConstrainHorVer" << "Sketcher_ConstrainHorizontal" - << "Sketcher_ConstrainHorVer" + << "Sketcher_ConstrainVertical" << "Sketcher_ConstrainParallel" << "Sketcher_ConstrainPerpendicular" << "Sketcher_ConstrainTangent" @@ -449,14 +450,14 @@ inline void SketcherAddWorkbenchConstraints(Gui::MenuItem& cons) << "Sketcher_ConstrainBlock" << "Separator" << "Sketcher_Dimension" - << "Sketcher_ConstrainLock" << "Sketcher_ConstrainDistanceX" << "Sketcher_ConstrainDistanceY" << "Sketcher_ConstrainDistance" + << "Sketcher_ConstrainRadiam" << "Sketcher_ConstrainRadius" << "Sketcher_ConstrainDiameter" - << "Sketcher_ConstrainRadiam" << "Sketcher_ConstrainAngle" + << "Sketcher_ConstrainLock" << "Sketcher_ConstrainSnellsLaw" << "Separator" << "Sketcher_ToggleDrivingConstraint" @@ -480,8 +481,8 @@ inline void SketcherAddWorkbenchConstraints(Gui::ToolBarItem& cons << "Sketcher_CompHorVer"; } else { - cons << "Sketcher_ConstrainVertical" - << "Sketcher_ConstrainHorizontal"; + cons << "Sketcher_ConstrainHorizontal" + << "Sketcher_ConstrainVertical"; } cons << "Sketcher_ConstrainParallel" << "Sketcher_ConstrainPerpendicular" @@ -503,12 +504,12 @@ inline void SketcherAddWorkbenchConstraints(Gui::ToolBarItem& } } if (hGrp->GetBool("SeparatedDimensioningTools", false)) { - cons << "Sketcher_ConstrainLock" - << "Sketcher_ConstrainDistanceX" + cons << "Sketcher_ConstrainDistanceX" << "Sketcher_ConstrainDistanceY" << "Sketcher_ConstrainDistance" << "Sketcher_CompConstrainRadDia" - << "Sketcher_ConstrainAngle"; + << "Sketcher_ConstrainAngle" + << "Sketcher_ConstrainLock"; // << "Sketcher_ConstrainSnellsLaw" // Rarely used, show only in menu } cons << "Separator" diff --git a/src/Mod/Spreadsheet/App/PropertySheet.cpp b/src/Mod/Spreadsheet/App/PropertySheet.cpp index 57efc9c6e1..742f380d6d 100644 --- a/src/Mod/Spreadsheet/App/PropertySheet.cpp +++ b/src/Mod/Spreadsheet/App/PropertySheet.cpp @@ -1561,29 +1561,6 @@ void PropertySheet::onRemoveDep(App::DocumentObject* obj) depConnections.erase(obj); } -void PropertySheet::renamedDocumentObject(const App::DocumentObject* docObj) -{ -#if 1 - (void)docObj; -#else - if (documentObjectName.find(docObj) == documentObjectName.end()) { - return; - } - - std::map::iterator i = data.begin(); - - while (i != data.end()) { - RelabelDocumentObjectExpressionVisitor v(*this, docObj); - i->second->visit(v); - if (v.changed()) { - v.reset(); - recomputeDependencies(i->first); - setDirty(i->first); - } - ++i; - } -#endif -} void PropertySheet::onRelabeledDocument(const App::Document& doc) { diff --git a/src/Mod/Spreadsheet/App/PropertySheet.h b/src/Mod/Spreadsheet/App/PropertySheet.h index 09c80c857b..500e78d48c 100644 --- a/src/Mod/Spreadsheet/App/PropertySheet.h +++ b/src/Mod/Spreadsheet/App/PropertySheet.h @@ -201,7 +201,6 @@ public: void invalidateDependants(const App::DocumentObject* docObj); - void renamedDocumentObject(const App::DocumentObject* docObj); void renameObjectIdentifiers(const std::map& paths); diff --git a/src/Mod/Spreadsheet/App/SheetObserver.cpp b/src/Mod/Spreadsheet/App/SheetObserver.cpp index a3e84b7fb9..4007ccafae 100644 --- a/src/Mod/Spreadsheet/App/SheetObserver.cpp +++ b/src/Mod/Spreadsheet/App/SheetObserver.cpp @@ -70,9 +70,7 @@ void SheetObserver::slotDeletedObject(const DocumentObject& Obj) void SheetObserver::slotChangedObject(const DocumentObject& Obj, const Property& Prop) { - if (&Prop == &Obj.Label) { - sheet->renamedDocumentObject(&Obj); - } + if (&Prop == &Obj.Label) {} else { const char* name = Obj.getPropertyName(&Prop); diff --git a/src/Mod/Spreadsheet/Gui/DlgSettings.ui b/src/Mod/Spreadsheet/Gui/DlgSettings.ui index 710fcc1c19..947d5e2961 100644 --- a/src/Mod/Spreadsheet/Gui/DlgSettings.ui +++ b/src/Mod/Spreadsheet/Gui/DlgSettings.ui @@ -93,7 +93,7 @@ Defaults to: %V = %A - Delimiter Character: + Delimiter Character: @@ -153,7 +153,7 @@ Defaults to: %V = %A - Quote Character: + Quote Character: @@ -185,7 +185,7 @@ Defaults to: %V = %A - Escape Character: + Escape Character: diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts index 1b46072a5f..ef5c32e635 100644 --- a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts +++ b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts @@ -52,7 +52,7 @@ Center-align contents of selected cells - Inhalt der gewählten Zellen zentrieren + Zentriert den Inhalt der gewählten Zellen @@ -124,7 +124,7 @@ Vertically center-align contents of selected cells - Inhalt der gewählten Zellen vertikal zentrieren + Zentriert den Inhalt der gewählten Zellen vertikal @@ -605,7 +605,7 @@ switch the design configuration. The property will be created if not exist. Left - Links + Linksbündig @@ -616,7 +616,7 @@ switch the design configuration. The property will be created if not exist. Right - Rechts + Rechtsbündig diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.ts b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.ts index 7526d70a5b..f337bb36e2 100644 --- a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.ts +++ b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.ts @@ -29,12 +29,12 @@ Align bottom - Alinear inferior + Alinear abajo Bottom-align contents of selected cells - Alinear inferior celdas seleccionadas + Alinear hacia abajo el contenido de las celdas seleccionadas @@ -47,12 +47,12 @@ Align center - Alinear centro + Alinear al centro Center-align contents of selected cells - Alinear al centro celdas seleccionadas + Alinear al centro el contenido de las celdas seleccionadas @@ -65,12 +65,12 @@ Align left - Alinear izquierda + Alinear a la izquierda Left-align contents of selected cells - Alinear izquierda celdas seleccionadas + Alinear a la izquierda el contenido de las celdas seleccionadas @@ -83,12 +83,12 @@ Align right - Alinear derecha + Alinear a la derecha Right-align contents of selected cells - Alinear derecha celdas seleccionadas + Alinear a la derecha el contenido de las celdas seleccionadas @@ -101,12 +101,12 @@ Align top - Alineado superior + Alinear arriba Top-align contents of selected cells - Alineado superior en celdas seleccionadas + Alinear hacia arriba el contenido de las celdas seleccionadas @@ -124,7 +124,7 @@ Vertically center-align contents of selected cells - Contenido alineado verticalmente centrado en celdas seleccionadas + Centrar verticalmente el contenido de las celdas seleccionadas @@ -294,7 +294,7 @@ Left-align cell - Izquierda + Celda alineada a la izquierda @@ -304,17 +304,17 @@ Right-align cell - Derecha + Celda alineada a la derecha Top-align cell - Superior + Celda alineada arriba Bottom-align cell - Inferior + Celda alineada abajo @@ -598,7 +598,7 @@ la configuración de diseño. La propiedad se creará si no existe. &Alignment - &Alineacion + &Alineación @@ -1154,7 +1154,7 @@ Por defecto: %V = %A &Alignment - &Alineacion + &Alineación diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage.ts b/src/Mod/Start/Gui/Resources/translations/StartPage.ts index 7bd1b2f712..94faeee200 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage.ts @@ -69,237 +69,247 @@ - + Create a part with the Part Design workbench - - 2D Draft + + Assembly - Create a 2D draft with the Draft workbench + Create an assembly project - BIM/Architecture + 2D Draft - Create an architecture project + Create a 2D draft with the Draft workbench - Recent files + BIM/Architecture + Create an architecture project + + + + + Recent files + + + + Tip - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list - + Examples - + General documentation - + User hub - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. - + Power users hub - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. - + Developers hub - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. - + Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. - + Workbenches documentation - + These are the help pages of all the workbenches currently installed on this computer. - + Getting help from the community - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. - + Recent commits - + See all commits on github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder - + version - + build - + Create new... - + Unknown - + Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser - + Creation date - + Last modification - + Size - + Author - + License - + File path - + Notes - + Open start page preferences @@ -307,7 +317,7 @@ Workbench - + Start page diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_be.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_be.ts index 9efb1de30b..524eac88ed 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_be.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_be.ts @@ -69,243 +69,253 @@ Стандартная дэталь - + Create a part with the Part Design workbench Стварыць дэталь з дапамогай варштату Праектавання дэталі - + + Assembly + Зборка + + + + Create an assembly project + Стварыць праект зборкі + + + 2D Draft Двухмерны чарнавік - + Create a 2D draft with the Draft workbench Стварыць двухмерны чарнавік з дапамогай варштату Чарнавік - + BIM/Architecture BIM/Архітэктура - + Create an architecture project Стварыць архітэктурны праект - + Recent files Апошнія файлы - + Tip Парада - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Адрэгуляваць колькасць апошніх файлаў, якія будуць паказаныя тут, у меню Праўка -> Перавагі -> Агульныя -> Памер спісу апошніх файлаў - + Examples Прыклады - + General documentation Агульная дакументацыя - + User hub Карыстальніцкі цэнтр - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Гэты падзел змяшчае дакументацыю, якая карысная для карыстальнікаў FreeCAD ў цэлым: спіс усіх варштатаў, падрабязныя інструкцыі па ўстаноўкі і ўжыванні праграмы FreeCAD, навучальныя дапаможнікі і ўсё, што вам трэба, для пачатку працы. - + Power users hub Цэнтр дасведчанага карыстальніка - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Гэты падзел змяшчае сабраную дакументацыю для прасунутых карыстальнікаў і людзей, якія зацікаўленыя ў напісанні сцэнараў python. Вы таксама знойдзеце сховішча макрасаў, інструкцыі па ўстаноўкі і ўжыванні, а таксама дадатковую інфармацыю аб наладцы FreeCAD у адпаведнасці з вашымі канкрэтнымі патрэбамі. - + Developers hub Цэнтр распрацоўшчыкаў - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Гэты падзел змяшчае матэрыялы для распрацоўшчыкаў: як самастойна скампіляваць FreeCAD, як структураваны зыходны код FreeCAD + як у ім арыентавацца, як распрацаваць новыя варштаты і/ці ўбудаваць FreeCAD у вашую ўласную праграму. - + Manual Інструкцыя - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Інструкцыя па FreeCAD - гэта іншы, больш паслядоўны спосаб прадстаўлення інфармацыі, якая змяшчаецца ў гэтай Вікі. Яна створаная для чытання як кніга, і паступова пазнаёміць вас з многімі іншымі старонкамі з папярэдніх падзелаў. - + Workbenches documentation Дакументацыя варштатаў - + These are the help pages of all the workbenches currently installed on this computer. Гэта старонкі даведкі ўсіх варштатаў, якія ўсталяваныя ў бягучы час на гэтым кампутары. - + Getting help from the community Атрымаць дапамогу ад суполкі - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. <a href="https://forum.freecad.org">Форум FreeCAD</a> - выдатнае месца, дзе можна атрымаць дапамогу ад іншых карыстальнікаў і распрацоўшчыкаў FreeCAD. На форуме ёсць мноства падзелаў для розных тыпаў пытанняў і тэм для абмеркавання. Калі вы сумняваецеся, напішыце ў больш агульным падзеле <a href="https://forum.freecad.org/viewforum.php?f=3">Дапамога па ўжыванню FreeCAD</a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Калі вы ўпершыню публікуеце паведамленне на форуме, спачатку абавязкова <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">прачытайце кіраўніцтва</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD таксама падтрымлівае агульнадаступны <a href="https://www.freecad.org/tracker">Баг-трэкер</a>, дзе кожды жадаючы можа адпраўляць паведамленні пра памылкі і прапанаваць новыя функцыі. Каб пазбегнуць дадатковай працы і даць найлепшыя шанцы ўбачыць, што ваша памылка вырашаная, пераканайцеся, што вы прачыталі <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">кіраўніцтва па выпраўленні памылак</a> перад публікацыяй. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Ніжэй прыведзены апошнія змены, якія даданы ў <a href="http://github.com/FreeCAD/FreeCAD/">зыходны код FreeCAD</a>. Гэтыя змены могуць яшчэ не адбіцца ў версіі FreeCAD, якую вы ўжываеце ў бягучы час. Праверце <a href="https://www.freecad.org/wiki/Downloads">даступныя налады</a>, калі вы жадаеце атрымаць апошнюю версію для распрацоўшчыкаў. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Апошняе паведамленне на <a href="https://forum.freecad.org">форуме FreeCAD</a>: - + Available addons Даступныя дадаткі - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Ніжэй прыведзены спіс даступных дадатковых варштатаў, якія могуць быць даданы да вашага ўсталяванага FreeCAD. Праглядзіце і ўсталюеце іх у меню Сэрвіс -> Кіраванне дадаткамі. Вы можаце даведацца больш падрабязна пра кожны з іх, калі перайсці па спасылках ніжэй. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Калі ён не ўваходзіць у камплект пастаўкі вашай версіі FreeCAD, усталюйце пакет дакументацыі FreeCAD, каб атрымаць цэнтр дакументацыі, даведку варштата і дакументацыю па асобным камандам без злучэння да Інтэрнэту. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Не атрымалася выняць інфармацыю з GitHub. <a href="EnableDownload.py">Аўтарызуйце FreeCAD для доступу ў Інтэрнэт</a> і перазагрузіце Пачатковую старонка. - + Recent commits Нядаўнія коміты - + See all commits on github Глядзець усе коміты на github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Вы можаце наладзіць карыстальніцкі каталог для адлюстравання тут у меню Праўка -> Перавагі -> Пуск -> Адлюстраваць дадатковы каталог - + version версія - + build зборка - + Create new... Стварыць новы... - + Unknown Невядомы - + Forum Форум - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Каб адчыніць любую з прыведзеных вышэй спасылак у вашым Інтэрнэт-аглядальніку, пстрыкніце <правай кнопкай мышы> -> Адчыніць у вонкавым аглядальніку - + Creation date Дата стварэння - + Last modification Апошняя змена - + Size Памер - + Author Аўтар - + License Ліцэнзія - + File path Шлях да файла - + Notes Заўвага - + Open start page preferences Адчыніць перавагі пачатковай старонкі @@ -313,7 +323,7 @@ Workbench - + Start page Пачатковая старонка diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ca.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_ca.ts index 8cd1be3c03..bd32d5b2f2 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_ca.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_ca.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Assembly + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Consell - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Ajusta el nombre de fitxers recents que es mostraran aqui, al menú Edita -> Preferències -> General -> Mida de la llista de fitxers recents - + Examples Exemples - + General documentation Documentació general - + User hub Centre d'usuaris - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Aquesta secció conté documentació útil per a usuaris FreeCAD en general: una llista de tots els bancs de treball, instruccions detallades sobre com instal·lar i utilitzar l'aplicació FreeCAD, tutorials i tot el necessari per començar. - + Power users hub Centre d'usuaris avançats - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Aquesta secció recull documentació per a usuaris avançats i persones interessades a escriure scripts en python. També hi trobarà un repositori de macros, instruccions sobre com instal·lar i utilitzar-les i més informació sobre la personalització FreeCAD a les seves necessitats específiques. - + Developers hub Centre de desenvolupadors - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Aquesta secció conté materials per a desenvolupadors: com compilar FreeCAD, com està estructurat el codi font de FreeCAD + com navegar per ell, i com desenvolupar nous bancs de treball, i/o incrustar FreeCAD en la vostra pròpia aplicació. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. El manual de FreeCAD és una altra forma més lineal de presentar la informació continguda en aquest wiki. Està fet per a ser llegit com un llibre i us introduirà gradualment en moltes altres pàgines dels centres d'activitat anteriors. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">versions de llibres anteriors</a> també estan disponibles. - + Workbenches documentation Documentació dels bancs de treballs - + These are the help pages of all the workbenches currently installed on this computer. Aquestes són les pàgines d'ajuda de tots els bancs de treball instal·lats actualment en aquest ordinador. - + Getting help from the community Obtenir ajuda de la comunitat - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Si és la primera vegada que publiques al fòrum, assegura't de llegir primer <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">les instruccions i normes</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD també manté un <a href="https://www.freecad.org/tracker">seguidor d'errors</a> públic on qualsevol persona pot enviar errors i proposar noves funcions. Per evitar que es produeixi treball addicional i donar les millors oportunitats de veure el vostre error resolt, assegura'ts de llegir la <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">guia d'enviament d'errors </a> abans de publicar. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. A continuació es mostren els darrers canvis afegits al <a href="http://github.com/FreeCAD/FreeCAD/">codi font de FreeCAD</a>. És possible que aquests canvis encara no es reflecteixin a la versió de FreeCAD que estàs executant actualment. Comprova les <a href="https://www.freecad.org/wiki/Downloads">opcions disponibles</a> si vols obtenir una versió en desenvolupament. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Els articles més recents al <a href="https://forum.freecad.org">fòrum FreeCAD</a>: - + Available addons Afegits disponibles - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. A continuació es mostren una llista de bancs de treballs addicionals disponibles que es poden afegir a la vostra instal·lació de FreeCAD. Examineu-los i instal·leu-los des del menú Eines-> Administrador de complements. Pot obtenir més informació sobre qualsevol d'ells fent clic en els enllaços següents. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Si no està inclòs en la seva versió de FreeCAD, instal·li el paquet de documentació de FreeCAD per a obtenir els centres de documentació, l'ajuda del banc de treball i la documentació d'ordres individuals sense connexió a Internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. No es pot obtenir informació de GitHub. <a href="EnableDownload.py">Autoritzi FreeCAD a accedir a Internet</a> i torni a carregar la pàgina d'inici. - + Recent commits Últimes confirmacions - + See all commits on github Mostra tots els canvis de github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Podeu configurar una carpeta personalitzada per a mostrar aquí al menú Edita-> Preferències-> Inici-> Mostra carpeta addicional - + version versió - + build compilació - + Create new... Crea nou... - + Unknown Desconegut - + Forum Fòrums - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Per a obrir qualsevol dels enllaços anteriors en el seu navegador d'escriptori, feu clic amb el botó dret del ratolí -> Obri en el navegador extern - + Creation date Data de creació - + Last modification Darrera modificació - + Size Mida - + Author Autor - + License Llicència - + File path File path - + Notes Notes - + Open start page preferences Obrir les preferències de la pàgina d'inici @@ -307,7 +317,7 @@ Workbench - + Start page Pàgina d'inici diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_cs.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_cs.ts index 99545e79b5..0d8d8fca2e 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_cs.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_cs.ts @@ -69,237 +69,247 @@ Standardní díl - + Create a part with the Part Design workbench Vytvořit díl s pracovním prostředím pro návrh dílu - + + Assembly + Sestava + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D návrh - + Create a 2D draft with the Draft workbench Vytvořit 2D návrh s pracovním prostředím návrhu - + BIM/Architecture BIM/Architektura - + Create an architecture project Vytvořit projekt architektury - + Recent files Nedávné soubory - + Tip Tip - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Upravte zobrazovaný počet naposledy použitých souborů v menu Upravit -> Nastavení -> Obecné -> velikost seznamu posledních souborů - + Examples Příklady - + General documentation Obecná dokumentace - + User hub Uživatelské centrum - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Tato část obsahuje obecně použitelnou dokumentaci pro uživatele, FreeCADu: seznam všech pracovních ploch, podrobné pokyny k instalaci a používání aplikace FreeCAD, návody a vše, co potřebujete pro zahájení práce. - + Power users hub Centrum pro pokročilé uživatele - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Tato sekce shromažďuje dokumentaci pro pokročilé uživatele a zájemce o psaní python skriptů. Najdete zde také úložiště maker, pokyny k jejich instalaci a používání a další informace o přizpůsobení FreeCADu vašim konkrétním potřebám. - + Developers hub Centrum pro vývojáře - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Tato část obsahuje dokumentaci pro vývojáře: jak zkompilovat FreeCAD, jak je strukturován zdrojový kód FreeCADu + jak se v něm orientovat, jak vyvíjet nová pracovní prostředí a/nebo zakomponovat FreeCAD do vlastní aplikace. - + Manual Příručka - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Příručka FreeCAD je další forma prezentace informací z této wiki. Je vytvořena jako kniha a pozvolným a přirozeným způsobem představuje informace obsažené v uživatelských centrech uvedených výše. Je dostupná jako <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-kniha</a> ke stažení. - + Workbenches documentation Dokumentace pracovních ploch - + These are the help pages of all the workbenches currently installed on this computer. Toto jsou stránky nápovědy všech pracovních prostředí, které jsou nainstalované v počítači. - + Getting help from the community Získat pomoc komunity - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. <a href="https://forum.freecad.org">FreeCAD fórum</a> je skvělým místem pro získání pomoci od dalších uživatelů a vývojářů FreeCADu. Fórum má řadu sekcí pro různé druhy problémů a diskuzních témat. V případě pochybností použijte obecnou sekci <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Pokud píšete na fórum poprvé, určitě si nejprve <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">přečtěte pokyny</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD provozuje veřejný <a href="https://www.freecad.org/tracker">sledovač chyb</a>, kde může kdokoliv popsat chybu nebo navrhnout nový prvek. Aby se zabránilo práci navíc a maximalizovala šance na vyřešení vaší chyby, určitě si před odesláním přečtěte <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">průvodce popisu chyb</a>. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Níže jsou poslední změny <a href="http://github.com/FreeCAD/FreeCAD/">zdrojového kódu FreeCADu</a>. Tyto změny se ještě nemusely projevit ve verzi FreeCADu, kterou používáte. Zkontrolujte <a href="https://www.freecad.org/wiki/Downloads">dostupné možnosti</a>, pokud chcete získat vývojovou verzi. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Nejnovější příspěvky na <a href="https://forum.freecad.org">FreeCAD fóru</a>: - + Available addons Dostupné doplňky - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Dole je seznam dostupných doplňkových pracovních prostředí, které mohou být přidány k instalaci FreeCADu. Pro jejich procházeí a instalaci použijte menu Nástroje -> Manažer doplňků. Více o každém z nich se dozvíte kliknutím na odkaz dole. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Pokud nebyl balíček dokumentace FreeCADu dodán s vaší verzí, pak pro přístup do centra dokumentace, nápovědy pracovních prostředí a jednotlivých příkazů bez internetového připojení nainstalujte nápovědu FreeCADu. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Nelze získat informace z GitHubu. <a href="EnableDownload.py">Autorizujte FreeCAD pro přístup k internetu</a> a aktualizujte Úvodní stránku. - + Recent commits Nedávné commity - + See all commits on github Zobrazit všechny commity na GitHubu - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Můžete nastavit vlastní složku, která se zobrazí zde v menu Upravit -> Nastavení -> Start -> Zobrazit další složku - + version verze - + build sestavení - + Create new... Vytvořit nový... - + Unknown Neznámý - + Forum Přejít do fóra - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Pro otevření některého odkazu výše ve vašem prohlížeči, klikněte pravým tlačítkem -> Otevřít v externím prohlížeči - + Creation date Datum vytvoření - + Last modification Poslední úprava - + Size Velikost - + Author Autor - + License Licence - + File path Cesta k souboru - + Notes Poznámky - + Open start page preferences Otevřít předvolby úvodní stránky @@ -307,7 +317,7 @@ Workbench - + Start page Úvodní stránka diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts index 9ecd2a9b3f..fa9e259e5d 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts @@ -69,238 +69,248 @@ Standardbauteil - + Create a part with the Part Design workbench Erstelle ein Bauteil mit der Part-Design-Workbench - + + Assembly + Baugruppe + + + + Create an assembly project + Baugruppe erzeugen + + + 2D Draft 2D-Zeichnung - + Create a 2D draft with the Draft workbench Erstelle eine 2D-Zeichnung mit der Draft-Workbench - + BIM/Architecture BIM/Architektur - + Create an architecture project Erstelle ein Architekturprojekt - + Recent files Zuletzt geöffnete Dateien - + Tip Tipp - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Die Anzahl der hier angezeigten zuletzt benutzten Dateien kann im Menü Bearbeiten -> Einstellungen -> Allgemein -> Anzahl der zuletzt benutzten Dateien angepasst werden - + Examples Beispiele - + General documentation Allgemeine Dokumentation - + User hub Anwenderzentrum - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Dieser Abschnitt enthält die Dokumentation, die für Benutzer von FreeCAD im Allgemeinen nützlich sind. Eine Liste aller Arbeitsbereiche, detaillierte Anweisungen zur Installation und Verwendung der FreeCAD-Anwendung, Tutorials und alles, was Sie zum Einstieg benötigen. - + Power users hub Übersicht für Erfahrene Anwender - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Dieser Abschnitt bündelt die Dokumentation für fortgeschrittene Anwender und Personen, die sich für das Schreiben von Python-Skripten interessieren. Dort findet sich auch ein Ablageordner mit Makros, Anweisungen zu deren Installation und Verwendung sowie weitere Informationen zum Anpassen von FreeCAD an die spezifischen Bedürfnisse des Benutzers. - + Developers hub Übersicht für Entwickler - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. In diesem Abschnitt finden Sie Informationen für Entwickler: Wie Sie FreeCAD selbst kompilieren können, der FreeCAD-Quellcode strukturiert ist und wie darin navigiert wird. Es wird beschrieben wie Sie neue Arbeitsbereiche entwickeln oder FreeCAD in Ihre eigene Anwendung einbetten. - + Manual Handbuch - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Das FreeCAD-Handbuch ist eine weitere, lineare Art, die Informationen aus diesem Wiki zu präsentieren. Es ist wie ein Buch zu lesen und wird Sie mit vielen anderen Seiten der oben genannten Bereiche vertraut machen. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">E-Book-Versionen</a> sind ebenfalls verfügbar. - + Workbenches documentation Dokumentation der Arbeitsbereiche - + These are the help pages of all the workbenches currently installed on this computer. Dies sind die Hilfeseiten aller derzeit auf diesem Computer installierten Arbeitsbereiche. - + Getting help from the community Hilfe von der Community - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. Das <a href="https://forum.freecad.org">FreeCAD Forum</a> ist ein großartiger Ort, um Hilfe von anderen FreeCAD Benutzern und Entwicklern zu erhalten. Das Forum hat viele Abschnitte zu verschiedenen Themen und Diskussionsthemen. Wenn Sie Zweifel haben, schreiben Sie in der allgemeineren <a href="https://forum.freecad.org/viewforum.php?f=3">Hilfe zur Verwendung von FreeCAD</a> Sektion. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Falls Sie zum ersten Mal im Forum schreiben, sollten Sie zuerst die <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">Richtlinien lesen</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD unterhält außerdem einen öffentlichen <a href="https://www.freecad.org/tracker">Bugtracker</a>, in dem jeder Fehler melden und neue Funktionen vorschlagen kann. Lesen Sie bitte vor dem Schreiben die <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">Anleitung zum Einreichen von Fehlern</a>, um zusätzliche Arbeit zu vermeiden und die Wahrscheinlichkeit, dass der Fehler behoben wird, zu steigern. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Nachfolgend sind die neuesten Änderungen im <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD-Quellcode</a> aufgeführt. Diese Änderungen beziehen sich möglicherweise nicht auf Ihre aktuell ausgeführte FreeCAD-Version. Überprüfen Sie die <a href="https://www.freecad.org/wiki/Downloads">verfügbaren Optionen</a>, um eine Entwicklungsversion zu erhalten. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Die neuesten Beiträge im <a href="https://forum.freecad.org">FreeCAD-Forum</a>: - + Available addons Verfügbare Addons - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Im Folgenden finden Sie eine Liste der zusätzlichen Arbeitsbereiche, die Ihrer FreeCAD-Installation hinzugefügt werden können. Durchsuchen und installieren Sie sie über das Menü Werkzeuge-> Addon-Manager. Sie können mehr über diese erfahren, indem Sie auf die untenstehenden Links klicken. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Falls nicht im Lieferumfang Ihrer FreeCAD-Version enthalten, installieren Sie das FreeCAD-Dokumentationspaket, um die Dokumentation Bereiche, Arbeitsbereichs-Hilfe und individuelle Befehlsdokumentation ohne Internetverbindung zu erhalten. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Informationen können nicht von GitHub abgerufen werden. <a href="EnableDownload.py">Authorisieren Sie FreeCAD für den Zugriff auf das Internet</a> und laden Sie die Startseite neu. - + Recent commits Neueste Commits - + See all commits on github Sehen Sie alle Commits auf Github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Sie können einen benutzerdefinierten Ordner zur Anzeige konfigurieren. Menü Bearbeiten -> Einstellungen -> Start -> Zusätzlichen Ordner anzeigen - + version Version - + build Build - + Create new... Neu... - + Unknown Unbekannt - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Um einen der oben genannten Links in Ihrem Desktop-Browser zu öffnen, klicken Sie mit der rechten Maustaste -> In externem Browser öffnen - + Creation date Erstellungsdatum - + Last modification Letzte Änderung - + Size Größe - + Author Autor - + License Lizenz - + File path Dateipfad - + Notes Notizen - + Open start page preferences Einstellungen der Startseite öffnen @@ -308,7 +318,7 @@ Wie Sie FreeCAD selbst kompilieren können, der FreeCAD-Quellcode strukturiert i Workbench - + Start page Startseite diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_el.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_el.ts index 4dc0d5aa30..1a35010c5b 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_el.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_el.ts @@ -69,237 +69,247 @@ Τυπικό Μέρος - + Create a part with the Part Design workbench Δημιουργήστε ένα τμήμα με τον πάγκο εργασίας Σχεδίου Εξαρτήματος - + + Assembly + Assembly + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Πρόχειρο - + Create a 2D draft with the Draft workbench Δημιουργήστε ένα 2D προσχέδιο με τον πάγκο εργασίας του Προσχεδίου - + BIM/Architecture BIM/Αρχιτεκτονική - + Create an architecture project Δημιουργήστε ένα έργο αρχιτεκτονικής - + Recent files Πρόσφατα αρχεία - + Tip Συμβουλή - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Προσαρμόστε τον αριθμό των προσφάτων αρχείων που εμφανίζονται εδώ, από το μενού Επεξεργασία->Προτιμήσεις->Γενικά->Μέγεθος λίστας προσφάτων αρχείων - + Examples Παραδείγματα - + General documentation Γενικές Οδηγίες - + User hub Ενότητα Χρηστών - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Αυτή η ενότητα περιλαμβάνει οδηγίες χρήσης για τους χρήστες του FreeCAD: μια λίστα με όλα τα προγράμματα της εργαλειοθήκης, αναλυτικές οδηγίες για την εγκατάσταση και χρήση του FreeCAD, γρήγορα μαθήματα, και όλα όσα χρειάζεστε για να ξεκινήσετε. - + Power users hub Ενότητα Προχωρημένων Χρηστών - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Η ενότητα αυτή περιλαμβάνει οδηγίες για προχωρημένους χρήστες και άτομα που ενδιαφέρονται για την σύνταξη python scripts. Επίσης, θα βρείτε μια συλλογή μακροεντολών, καθώς και οδηγίες πώς να τις εγκαταστήσετε και περισσότερες πληροφορίες για να προσαρμόσετε το FreeCAD στις δικές σας ανάγκες. - + Developers hub Ενότητα Προγραμματιστών - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Αυτή η ενότητα περιέχει πληροφορίες για προγραμματιστές: Πώς να μεταγλωττίσετε μόνοι σας το FreeCAD, πώς είναι δομημένος ο πηγαίος κώδικας του FreeCAD + πώς να περιηγηθείτε σε αυτόν, πώς να αναπτύξετε νέους πάγκους εργασίας και/ή να ενσωματώσετε το FreeCAD στη δική σας εφαρμογή. - + Manual Εγχειρίδιο Χρήσης - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Το εγχειρίδιο του FreeCAD είναι ένας άλλος τρόπος παρουσίασης των πληροφοριών που περιέχονται στο wiki. Είναι κατασκευασμένο για να διαβαστεί σαν ένα βιβλίο, και εμφανίζονται σε πολλές σελίδες στους παραπάνω συνδέσμους. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">εκδόσεις ηλεκτρονικού βιβλίου</a> είναι επίσης διαθέσιμες. - + Workbenches documentation Οδηγίες χρήσης προγραμμάτων Εργαλειοθήκης - + These are the help pages of all the workbenches currently installed on this computer. Αυτές είναι οι σελίδες βοήθειας όλων των πάγκων εργασίας που είναι εγκατεστημένοι σε αυτόν τον υπολογιστή. - + Getting help from the community Λήψη βοήθειας από την κοινότητα - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. Το φόρουμ <a href="https://forum.freecad.org">FreeCAD</a> είναι ένα εξαιρετικό μέρος για να λάβετε βοήθεια από άλλους χρήστες και προγραμματιστές του FreeCAD. Το φόρουμ έχει πολλές ενότητες για διαφορετικούς τύπους θεμάτων και θεμάτων συζήτησης. Αν έχετε αμφιβολίες, δημοσιεύστε τη βοήθεια <a href="https://forum.freecad.org/viewforum.php?f=3">στην ενότητα FreeCAD</a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Αν είναι η πρώτη φορά που δημοσιεύετε στο φόρουμ, να είστε βέβαιος να <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">διαβάσετε τις κατευθυντήριες γραμμές</a> πρώτα! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. Το FreeCAD διατηρεί επίσης ένα δημόσιο <a href="https://www.freecad.org/tracker">bug tracker</a> όπου ο καθένας μπορεί να υποβάλει σφάλματα και να προτείνει νέα χαρακτηριστικά. Για να αποφύγετε την πρόκληση επιπλέον εργασίας και να δώσετε τις καλύτερες πιθανότητες να δείτε το σφάλμα σας να λυθεί, Σιγουρευτείτε ότι διαβάσατε τον οδηγό υποβολής σφαλμάτων <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236"></a> πριν δημοσιεύσετε. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Παρακάτω είναι οι τελευταίες αλλαγές που προστίθενται στον πηγαίο κώδικα <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD</a>. Αυτές οι αλλαγές ενδέχεται να μην αντικατοπτρίζουν ακόμα την έκδοση του FreeCAD που εκτελείτε αυτή τη στιγμή. Ελέγξτε τις <a href="https://www.freecad.org/wiki/Downloads">διαθέσιμες επιλογές</a> αν θέλετε να αποκτήσετε μια έκδοση για ανάπτυξη. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Οι τελευταίες δημοσιεύσεις στο φόρουμ <a href="https://forum.freecad.org">FreeCAD</a>: - + Available addons Διαθέσιμα πρόσθετα - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Παρακάτω υπάρχει μια λίστα με τους επιπλέον διαθέσιμους πάγκους εργασίας που μπορούν να προστεθούν στην εγκατάσταση του FreeCAD. Περιηγηθείτε και εγκαταστήστε τα από το μενού Εργαλεία -> Διαχειριστής Πρόσθετων. Μπορείτε να μάθετε περισσότερα για οποιοδήποτε από αυτούς κάνοντας κλικ στους παρακάτω συνδέσμους. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Εάν δε συνοδεύεται από την έκδοση του FreeCAD, εγκαταστήστε το πακέτο οδηγιών FreeCAD για να λάβετε βοήθεια στον πάγκο εργασίας και οδηγίες εντολών χωρίς σύνδεση στο Διαδίκτυο. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Αν δεν είναι δυνατή η ανάκτηση πληροφοριών από το GitHub. <a href="EnableDownload.py">Εξουσιοδοτήστε το FreeCAD για πρόσβαση στο διαδίκτυο</a> και φορτώστε ξανά την Αρχική σελίδα. - + Recent commits Πρόσφατες προσθήκες - + See all commits on github Δείτε όλες τις προσθήκες στο github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Μπορείτε να ρυθμίσετε έναν δικό σας φάκελο να προβάλλεται σε αυτό το σημείο, στο μενού Επεξεργασία->Προτιμήσεις->Αρχική->Προσαρμοσμένος φάκελος - + version έκδοση - + build κατασκευή - + Create new... Δημιουργία νέου... - + Unknown Άγνωστο - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Για να ανοίξετε οποιονδήποτε από τους παραπάνω συνδέσμους στο πρόγραμμα περιήγησης του υπολογιστή σας, κάντε δεξί κλικ -> Άνοιγμα σε εξωτερικό πρόγραμμα περιήγησης - + Creation date Ημερομηνία δημιουργίας - + Last modification Τελευταία τροποποίηση - + Size Μέγεθος - + Author Συγγραφέας - + License Άδεια - + File path File path - + Notes Σημειώσεις - + Open start page preferences Προτιμήσεις σελίδας έναρξης @@ -307,7 +317,7 @@ Workbench - + Start page Αρχική σελίδα diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_es-AR.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_es-AR.ts index 639f98eae5..608fd566e3 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_es-AR.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_es-AR.ts @@ -69,237 +69,247 @@ Parte estándar - + Create a part with the Part Design workbench Crear una pieza con el entorno de trabajo Part Design - + + Assembly + Ensamble + + + + Create an assembly project + Crea un proyecto de ensamblado + + + 2D Draft Dibujo 2D - + Create a 2D draft with the Draft workbench Crear un borrador 2D con el entorno de trabajo Draft - + BIM/Architecture BIM/Arquitectura - + Create an architecture project Crear un proyecto de arquitectura - + Recent files Archivos recientes - + Tip Sugerencia - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Configurá el número de archivos recientes que se muestran en la lista, en el menú Editar -> Preferencias -> General -> Tamaño de la lista de archivos recientes - + Examples Ejemplos - + General documentation Documentación general - + User hub Usuarios en general - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Esta sección contiene documentación útil para los usuarios de FreeCAD en general: una lista de todos los bancos de trabajo, instrucciones detalladas sobre cómo instalar y usar FreeCAD, tutoriales y todo lo que necesitás para empezar. - + Power users hub Usuarios avanzados - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Esta sección recopila documentación para usuarios experimentados y personas interesadas en escribir scripts de Python. También encontrarás un repositorio de macros, instrucciones sobre cómo instalarlas y usarlas, y más información sobre cómo personalizar FreeCAD para tus necesidades específicas. - + Developers hub Desarrolladores - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Esta sección contiene material para desarrolladores: cómo compilar FreeCAD vos mismo, cómo está estructurado el código fuente de FreeCAD y cómo navegar en él, cómo desarrollar nuevos entornos de trabajo, y/o integrar FreeCAD en tu propia aplicación. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. El manual de FreeCAD es una forma más lineal de presentar la información contenida en este wiki. Está hecho para ser leído como un libro y te introducirá fácilmente en muchas otras páginas de las secciones anteriores. También están disponibles versiones en formato de <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">libros electrónicos</a>. - + Workbenches documentation Documentación de bancos de trabajo - + These are the help pages of all the workbenches currently installed on this computer. Estas son las páginas de ayuda de todos los entornos de trabajo instalados actualmente en esta computadora. - + Getting help from the community Obteniendo ayuda de la comunidad - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. El <a href="https://forum.freecad.org"> foro de FreeCAD </a> es un excelente lugar para obtener ayuda de otros usuarios y desarrolladores de FreeCAD. El foro tiene muchas secciones para diferentes tipos de problemas y temas de discusión. En caso de duda, publique en la sección <a href="https://forum.freecad.org/viewforum.php?f=3"> Ayuda sobre el uso de FreeCAD </a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Si es la primera vez que publicas en el foro, ¡asegúrate de <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">leer las pautas</a> primero! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD también mantiene un <a href="https://www.freecad.org/tracker">rastreador de errores público</a> donde cualquiera puede enviar errores y proponer nuevas características. Para evitar causar trabajo adicional y dar las mejores posibilidades de ver tu error resuelto, asegúrate de leer la <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">guía de envío de errores</a> antes de publicar. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. A continuación se muestran los últimos cambios añadidos al <a href="http://github.com/FreeCAD/FreeCAD/">código fuente de FreeCAD</a>. Estos cambios pueden no reflejar aún en la versión de FreeCAD que está ejecutando actualmente. Revisa las <a href="https://www.freecad.org/wiki/Downloads">opciones disponibles</a> si deseas obtener una versión de desarrollo. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Las últimas publicaciones en el foro <a href="https://forum.freecad.org">de FreeCAD</a>: - + Available addons Complementos disponibles - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. A continuación se muestra una lista de los entornos de trabajo adicionales disponibles que se pueden agregar a tu instalación de FreeCAD. Examinalos e instalalos desde el menú Herramientas -> Gestor de complementos. Podés obtener más información sobre cualquiera de ellos haciendo clic en los enlaces a continuación. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Si no está incluido con tu versión de FreeCAD, instalá el paquete de documentación de FreeCAD para obtener los centros de documentación, la ayuda del banco de trabajo y la documentación de comandos individuales sin conexión a Internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. No se puede obtener información de GitHub. <a href="EnableDownload.py"> Autorizá a FreeCAD a acceder a Internet </a> y volvé a cargar la página de inicio. - + Recent commits Últimos cambios confirmados - + See all commits on github Ver todos los cambios confirmados en GitHub - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Podés configurar una carpeta personalizada para mostrar acá en el menú Editar -> Preferencias -> Inicio -> Mostrar carpeta adicional - + version versión - + build Compilación - + Create new... Crear nuevo... - + Unknown Desconocido - + Forum Foro - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Para abrir cualquiera de los enlaces anteriores en tu navegador de escritorio, hacé clic con el botón derecho del mouse -> Abrir en navegador externo - + Creation date Fecha de creación - + Last modification Última modificación - + Size Tamaño - + Author Autor - + License Licencia - + File path Ruta de archivo - + Notes Notas - + Open start page preferences Abrir preferencias de página de inicio @@ -307,7 +317,7 @@ Workbench - + Start page Página de inicio diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.ts index 5385a93b64..388c2fa900 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.ts @@ -69,237 +69,247 @@ Parte estándar - + Create a part with the Part Design workbench Crear una pieza con el entorno de trabajo Part Design - + + Assembly + Ensamblaje + + + + Create an assembly project + Crear un proyecto de ensamblaje + + + 2D Draft Dibujo 2D - + Create a 2D draft with the Draft workbench Crear un borrador 2D con el entorno de trabajo Draft - + BIM/Architecture BIM/Arquitectura - + Create an architecture project Crear un proyecto de arquitectura - + Recent files Archivos recientes - + Tip Sugerencia - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Ajuste la cantidad de archivos recientes que se muestran aquí en el menú Editar -> Preferencias -> General -> Tamaño de la lista de archivos recientes - + Examples Ejemplos - + General documentation Documentación General - + User hub Centro de actividad de usuario - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Esta sección contiene documentación útil para los usuarios de FreeCAD en general: una lista de todos los entornos de trabajo, instrucciones detalladas sobre cómo instalar y usar la aplicación FreeCAD, tutoriales y todo lo que necesita para comenzar. - + Power users hub Centro de actividad de usuarios avanzados - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Esta sección recopila documentación para usuarios avanzados y personas interesadas en escribir scripts de Python. También encontrará un repositorio de macros, instrucciones sobre cómo instalarlas y usarlas, y más información sobre cómo personalizar FreeCAD para sus necesidades específicas. - + Developers hub Centro de actividad de desarrolladores - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Esta sección contiene material para desarrolladores: cómo compilar FreeCAD usted mismo, cómo está estructurado el código fuente de FreeCAD y cómo navegar en él, cómo desarrollar nuevos entornos de trabajo, y/o integrar FreeCAD en su propia aplicación. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. El manual de FreeCAD es otra forma más lineal de presentar la información contenida en este wiki. Está hecho para ser leído como un libro y le presentará gentilmente muchas otras páginas de los centros anteriores. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"> versiones de libros electrónicos </a> también están disponibles. - + Workbenches documentation Documentación de entornos de trabajo - + These are the help pages of all the workbenches currently installed on this computer. Estas son las páginas de ayuda de todos los entornos de trabajo instalados actualmente en esta computadora. - + Getting help from the community Obteniendo ayuda de la comunidad - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. El <a href="https://forum.freecad.org"> foro de FreeCAD </a> es un excelente lugar para obtener ayuda de otros usuarios y desarrolladores de FreeCAD. El foro tiene muchas secciones para diferentes tipos de problemas y temas de discusión. En caso de duda, publique en la sección <a href="https://forum.freecad.org/viewforum.php?f=3"> Ayuda sobre el uso de FreeCAD </a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Si es la primera vez que publicas en el foro, ¡asegúrate de <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">leer las pautas</a> primero! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD también mantiene un <a href="https://www.freecad.org/tracker"> rastreador de errores </a> público donde cualquier persona puede reportar errores y proponer nuevas funcionalidades. Para evitar causar trabajo extra y tener la mejor oportunidad para resolver su error, asegúrese de leer la <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236"> guía de envío de errores </a> antes de publicar. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. A continuación se muestran los últimos cambios agregados al <a href="http://github.com/FreeCAD/FreeCAD/"> código fuente de FreeCAD </a>. Es posible que estos cambios aún no se reflejen en la versión de FreeCAD que está ejecutando actualmente. Marque las <a href="https://www.freecad.org/wiki/Downloads"> opciones disponibles </a> si desea obtener una versión de desarrollo. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Las últimas publicaciones en el <a href="https://forum.freecad.org"> foro de FreeCAD</a>: - + Available addons Complementos disponibles - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. A continuación se muestra una lista de los entornos de trabajo adicionales disponibles que se pueden agregar a su instalación de FreeCAD. Examínelos e instálelos desde el menú Herramientas -> Administrador de complementos. Puede obtener más información sobre cualquiera de ellos haciendo clic en los enlaces a continuación. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Si no está incluido con su versión de FreeCAD, instale el paquete de documentación de FreeCAD para obtener los centros de documentación, la ayuda de entorno de trabajo y la documentación de comandos individuales sin conexión a Internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. No se puede obtener información de GitHub. <a href="EnableDownload.py"> Autorice a FreeCAD a acceder a Internet </a> y vuelva a cargar la página de inicio. - + Recent commits Últimos cambios - + See all commits on github Ver todos los cambios confirmados en GitHub - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Puede configurar una carpeta personalizada para mostrar aquí en el menú Editar -> Preferencias -> Inicio -> Mostrar carpeta adicional - + version versión - + build compilación - + Create new... Crear nuevo... - + Unknown Desconocido - + Forum Foro - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Para abrir cualquiera de los enlaces anteriores en su navegador de escritorio, haga clic con el botón derecho del mouse -> Abrir en navegador externo - + Creation date Fecha de creación - + Last modification Última modificación - + Size Tamaño - + Author Autor - + License Licencia - + File path Ruta de archivo - + Notes Notas - + Open start page preferences Abrir preferencias de página de inicio @@ -307,7 +317,7 @@ Workbench - + Start page Página de inicio diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_eu.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_eu.ts index 6fcfd3d71d..c04a19ccfb 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_eu.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_eu.ts @@ -69,237 +69,247 @@ Pieza estandarra - + Create a part with the Part Design workbench Sortu pieza bat piezen diseinurako lan-mahaiarekin - + + Assembly + Muntaketa + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D zirriborroa - + Create a 2D draft with the Draft workbench Sortu 2D zirriborroa zirriborroen lan-mahaiarekin - + BIM/Architecture BIM/Arkitektura - + Create an architecture project Sortu arkitektura-proiektu bat - + Recent files Azken fitxategiak - + Tip Aholkua - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Hemen erakutsiko diren azken fitxategiak antolatzeko, joan 'Editatu -> Hobespenak -> Orokorra -> Azken fitxategien zerrendaren luzera' menura - + Examples Adibideak - + General documentation Dokumentazio orokorra - + User hub Erabiltzaileen gunea - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Atal honek FreeCAD erabiltzaile orokorrentzako dokumentazio erabilgarria du: lan-mahai guztien zerrenda bat, FreeCAD aplikazioa instalatu eta erabiltzeko argibide xeheak, tutorialak, eta lanean hasteko behar duzun guztia. - + Power users hub Erabiltzaile aurreratuen gunea - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Atal honek erabiltzaile aurreratuentzako eta Python scriptak idazteko interesa duten pertsonentzako dokumentazioa biltzen du. Horrez gain, makroen biltegi bat, haiek instalatu eta erabiltzeko argibideak eta FreeCADek zure beharrak bete ditzan pertsonalizatzeko informazio gehiago duzu. - + Developers hub Garatzaileen gunea - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Atal honek garatzaileentzako materiala du: Nola konpilatu FreeCAD, nola dagoen FreeCAD iturburu-kodea egituratuta eta nola arakatu kode hori, nola garatu lan-mahai berriak eta nola kapsulatu FreeCAD zuk garatutako beste aplikazioren batean. - + Manual Eskuliburua - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCADen eskuliburua wiki honetan dagoen informazio aurkezteko beste modu bat da. Liburu bat bailitzan irakurtzeko moduan prestatuta dago, eta goiko guneetako beste orri batzuetarako sarrera emango dizu. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">Bertsio elektronikoak</a> ere eskuragarri daude. - + Workbenches documentation Lan-mahaien dokumentazioa - + These are the help pages of all the workbenches currently installed on this computer. Ordenagailu honetan instalatutako lan-mahai guztien laguntza-orriak dira hauek. - + Getting help from the community Eskuratu komunitatearen laguntza - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Foroan zerbait idazten duzun lehen aldia da, ziurtatu <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">gidalerroak irakurri dituzula</a>. - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCADek <a href="https://www.freecad.org/tracker">akatsen zerrenda</a> publiko bat dauka. Edozeinek bidali ditzake akatsak eta eginbide berriak proposatu. Gehiegizko lana sortzea saihesteko eta zure akatsa konpondua izan dadin aukera gehiago izateko, mesedez irakurri <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">akatsak bidaltzeko gida</a> ezer bidali baino lehen. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Behean <a href="http://github.com/FreeCAD/FreeCAD/">FreeCADen iturburu-kodeari</a> gehitutako azken aldaketak ikus daitezke. Aldaketa horiek ez dute zertan adierazi beharrik zein FreeCAD bertsioa ari zaren erabiltzen. Begiratu <a href="https://www.freecad.org/wiki/Downloads">erabilgarri dauden aukerak</a> garapen-bertsio bat eskuratzeko. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: <a href="https://forum.freecad.org">FreeCAD foroko</a> azken bidalketak: - + Available addons Gehigarri erabilgarriak - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Behean zure FreeCAD instalazioari gehitu ahal zaizkion beste lan-mahai batzuk zerrendatu dira. Arakatu eta instalatu lan-mahai horiek 'Tresnak -> Gehigarrien kudeatzailea' erabilita. Haiei buruzko informazio gehiago eskura dezakezu beheko esteketan klik eginda. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Zure FreeCAD bertsioarekin paketatuta ez badator, instalatu FreeCADen dokumentazio-paketea Interneterako konexiorik ez duzunean dokumentazio-guneak, lan-mahaien laguntza eta banakako komandoen dokumentazioa kontsultatu ahal izateko. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Ezin izan da informazioa atzitu GitHub gunetik. <a href="EnableDownload.py">Baimendu FreeCADi Internetera sartzen</a> eta birkargatu hasierako orria. - + Recent commits Azken aldaketak - + See all commits on github Ikusi aldaketa guztiak GitHub biltegian - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Hemen karpeta pertsonalizatu bat erakutsi daiteke. Hori konfiguratzeko: 'Editatu -> Hobespenak -> Hasiera -> Erakutsi karpeta gehigarria' - + version bertsioa - + build paketea - + Create new... Sortu berria... - + Unknown Ezezaguna - + Forum Foroa - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Goiko estekak zure mahaigaineko nabigatzailearekin irekitzeko, egin eskuineko klik eta hautatu 'Ireki kanpoko nabigatzailean' - + Creation date Sortze-data - + Last modification Azken aldaketa - + Size Tamaina - + Author Egilea - + License Lizentzia - + File path File path - + Notes Oharrak - + Open start page preferences Ireki hasiera-orriaren hobespenak @@ -307,7 +317,7 @@ Workbench - + Start page Hasierako orria diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_fi.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_fi.ts index 283880b6f4..aed944b041 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_fi.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_fi.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Kokoonpano + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Viimeisimmät tiedostot - + Tip Vinkki - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Säädä näytettävien viimeaikaisten tiedostojen kappalemäärä valikossa: Muokkaa -> Asetukset -> Yleinen -> Viimeisimpien tiedostojen kappalemäärä - + Examples Esimerkit - + General documentation Yleinen dokumentaatio - + User hub Uuden käyttäjän sivu - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Tässä osassa on FreeCADin käyttäjille yleihyödyllistä dokumentaatiota: luettelo kaikista työpenkeistä, yksityiskohtaiset ohjeet FreeCAD-sovelluksen asentamisesta ja käytöstä, ja kaikki mitä tarvitset päästäksesi alkuun. - + Power users hub Edistyneen käyttäjän sivu - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Tämä osa kerää dokumentaatiota edistyneille käyttäjille ja henkilöille, jotka ovat kiinnostuneita kirjoittamaan python skriptejä. Löydät sieltä myös makrojen varaston, ohjeet miten asentaa ja käyttää niitä, sekä lisää tietoa FreeCADin muokkaamisesta sinun erityistarpeisiisi. - + Developers hub Kehittäjien sivu - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Tässä osiossa on kehittäjille tarkoitettua materiaalia: Miten koota FreeCAD itse, miten FreeCAD lähdekoodi on strukturoitu + miten navigoida siinä, miten kehittää uusia työpenkkejä ja/tai upottaa FreeCAD omaan sovellukseen. - + Manual Käsikirja - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD ohjeisto on toinen, linjakkaampi tapa esitellä tämän wikin sisältämät tiedot. Se on tehty luettavaksi kirjan tapaan, ja hellävaroen se esittelee sinulle monia muita sivuja, katso edeltä. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-kirjan versiot</a> ovat myös saatavilla. - + Workbenches documentation Työpöytien dokumentaatio - + These are the help pages of all the workbenches currently installed on this computer. Nämä ovat ohjesivut kaikkii niihin työpenkkeihin, mitkä ovat nyt asennettuna tähän tietokoneeseen. - + Getting help from the community Tuki yhteisöltä - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons Saatavilla olevat lisäosat - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Alla on luettelo käytettävissä olevista ylimääräisistä työpöydistä, jotka voidaan lisätä FreeCAD-asennukseen. Selaa ja asenna niitä valikosta Työkalut -> Lisäosien hallinta. Voit lukea lisää niistä napsauttamalla alla olevia linkkejä. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Jos se ei ole mukana FreeCAD-versiosi paketissa, asenna FreeCAD-dokumentaatiopaketti hakeaksesi dokumentaation sivuja, työpöydän ohjetta ja yksittäisten komentojen ohjetta ilman internet yhteyttä. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Tietoja ei voi noutaa GitHubista. <a href="EnableDownload.py">Anna FreeCAD:lle yhteys internetiin</a> ja lataa aloitussivu uudelleen. - + Recent commits Viimeisimmät kommitit - + See all commits on github Näytä kaikki GitHubissa olevat kommitit - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Voit määrittää mukautetun kansion tässä valikossa Muokkaa -> Asetukset -> Käynnistä -> Näytä ylimääräinen kansio - + version Versio - + build koonti - + Create new... Luo uusi... - + Unknown Tuntematon - + Forum Keskustelupalsta - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Avataksesi minkä tahansa yllä olevan linkin työpöytäselaimessasi, napsauta hiiren kakkospainikkeella -> Avaa ulkoisessa selaimessa - + Creation date Luontipäivä - + Last modification Viimeksi muokattu - + Size Koko - + Author Kehittäjä - + License Lisenssi - + File path Tiedostopolku - + Notes Muistiinpanot - + Open start page preferences Avaa aloitussivun asetukset @@ -307,7 +317,7 @@ Workbench - + Start page Aloitussivu diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_fr.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_fr.ts index fbeb35c1e3..d1547b7738 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_fr.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_fr.ts @@ -69,239 +69,249 @@ Pièce standard - + Create a part with the Part Design workbench Créer une pièce avec l'atelier PartDesign - + + Assembly + Assemblage + + + + Create an assembly project + Créer un projet d'assemblage + + + 2D Draft Dessin 2D - + Create a 2D draft with the Draft workbench Créer un dessin 2D avec l'atelier Draft - + BIM/Architecture BIM/Architecture - + Create an architecture project Créer un projet avec l'atelier Arch/BIM - + Recent files Fichiers récents - + Tip Astuce - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list définissez le nombre de fichiers récemment ouverts à montrer ici à partir du menu : Édition → Préférences → Général → Taille de la liste des fichiers récents. - + Examples Exemples - + General documentation Documentation générale - + User hub Documentation pour utilisateurs - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Cette section contient la documentation adressée aux utilisateurs de FreeCAD en général : une liste de tous les ateliers, des instructions détaillées sur la façon d’installer et d’utiliser l’application FreeCAD, des tutoriels et tout ce que vous avez besoin pour démarrer. - + Power users hub Documentation pour utilisateurs avancés - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Cette section regroupe la documentation pour les utilisateurs avancés et les gens intéressés par l’écriture de scripts python. Vous trouverez également un dépôt de macros, des instructions pour leur installation et leur utilisation, ainsi que plus d’informations sur la personnalisation de FreeCAD à vos besoins spécifiques. - + Developers hub Documentation pour développeurs - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Cette section contient la documentation pour les développeurs : comment compiler FreeCAD vous-même, comment le code source de FreeCAD est structuré + comment naviguer dedans, également comment développer de nouveaux ateliers et/ou incorporer FreeCAD dans votre propre application. - + Manual Manuel - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Le manuel FreeCAD est une autre manière, plus linéaire de présenter les informations contenues dans ce wiki. Il est fait pour être lu comme un livre et vous fera doucement découvrir de nombreuses autres pages des documentations ci-dessus. Des <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">versions e-book</a> sont également disponibles. - + Workbenches documentation Documentation des ateliers - + These are the help pages of all the workbenches currently installed on this computer. Ce sont les pages d’aide de tous les ateliers actuellement installés sur cet ordinateur. - + Getting help from the community Obtenir de l'aide de la communauté - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. Le <a href="https://forum.freecad.org">forum de FreeCAD</a> est un endroit idéal pour obtenir de l'aide de la part d'autres utilisateurs et développeurs de FreeCAD. Le forum comporte de nombreuses sections pour différents types de problèmes et de sujets de discussion. En cas de doute, postez dans la section la plus générale <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Si c’est la première fois que vous postez sur le forum, lisez d’abord <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">les règles du forum</a> ! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD maintient également un <a href="https://www.freecad.org/tracker">système de suivi de problèmes</a> où n’importe qui peut soumettre des bogues et proposer de nouvelles fonctionnalités. Pour éviter de causer un surcroît de travail et donner les meilleures chances de voir votre bogue résolu, assurez-vous de lire le <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">guide de soumission de bogue</a> avant de poster. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Voici les derniers changements ajoutés au <a href="http://github.com/FreeCAD/FreeCAD/">code source FreeCAD</a>. Il se peut que ces changements ne soient pas encore présents dans la version de FreeCAD que vous utilisez actuellement. Vérifiez les <a href="https://www.freecad.org/wiki/Downloads">versions disponibles</a> si vous souhaitez obtenir une version de développement. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Les derniers messages sur le <a href="https://forum.freecad.org">forum FreeCAD</a> : - + Available addons Extensions disponibles - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Ci-dessous une liste des ateliers supplémentaires disponibles qui peuvent être ajoutés à votre installation de FreeCAD. Parcourez et installez-les à partir du menu : Outils → Gestionnaire des extensions. Vous pouvez en savoir plus sur chacun d'entre eux en cliquant sur les liens ci-dessous. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. si elle n'est pas fournie avec votre version de FreeCAD, installez la documentation hors-ligne de FreeCAD pour obtenir les différentes documentations, l'aide des ateliers et la documentation de chaque commande sans connexion internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Impossible d'extraire les informations de GitHub. <a href="EnableDownload.py">Autoriser FreeCAD à accéder à internet</a> et recharger la page de démarrage. - + Recent commits Derniers commits - + See all commits on github Voir tous les commits sur GitHub - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Vous pouvez configurer un dossier personnalisé à afficher ici à partir du menu : Édition → Préférences → Start → Afficher un dossier supplémentaire - + version version - + build build - + Create new... Créer nouveau... - + Unknown Inconnu - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser pour ouvrir un des liens ci-dessus dans votre navigateur, faites un clic droit → Ouvrir dans un navigateur externe - + Creation date Date de création - + Last modification Dernière modification - + Size Dimension - + Author Auteur - + License Licence - + File path Emplacement du fichier - + Notes Bloc-notes - + Open start page preferences Ouvrir les préférences de la page d'accueil @@ -309,7 +319,7 @@ Workbench - + Start page Page de démarrage @@ -405,7 +415,7 @@ En utilisant ";;" pour séparer les chemins, vous pouvez ajouter plusieurs dossi Displays help tips in the Start workbench Documents tab - Affiche les astuces dans l'onglet Documents de l'atelier Démarrage + Affiche les astuces dans l'onglet Documents de l'atelier Start @@ -445,7 +455,7 @@ En utilisant ";;" pour séparer les chemins, vous pouvez ajouter plusieurs dossi Background color down gradient - Couleur de fond en dégradé + Couleur dégradée de l'arrière-plan diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_gl.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_gl.ts index 23cc9b5917..bad9a5e113 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_gl.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_gl.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Assembly + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Pista - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Axusta o número de ficheiros recentes a ser amosados aquí no menú Editar -> Preferencias -> Xeral -> Tamaño da lista de ficheiros recentes - + Examples Exemplos - + General documentation Documentación xeral - + User hub Hub do usuario - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Esta sección contén documentación útil para usuarios de FreeCAD en xeral: unha lista de tódolos bancos de traballo, instruccións polo miúdo sobre como instalar e usar a aplicación FreeCAD, titoriais, e todo o que ti podes para inciciarte. - + Power users hub Hub de usuarios - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Esta sección recopila documentación para usuarios avanzados e persoas interesadas en escribir scripts python. Tamén podes atopar o repositorio de macros, instrucións sobre como instalar e usala, e máis información sobre persoalizar FreeCAD e necesidades específicas. - + Developers hub Hub de desenvolvedores - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Esta sección contén materiais para desenvolvedores: como compilar FreeCAD ti mesmo, como está estruturadoo código fonte e como navegar nel, e como desenvolver novos bancos de traballo, e/ou incrustar FreeCAD na túa propia aplicación. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. O manual de FreeCAD é outra forma de presentar a información contida nesta wiki. Esto se fai como a lectura dun libro, e amosará xentilmente introducións a algunhas outras páxinas dende o hub seguinte. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">versión e-book</a> tamén está dispoñible. - + Workbenches documentation Documentación dos bancos de traballo - + These are the help pages of all the workbenches currently installed on this computer. Hai páxinas de axuda de tódolos bancos de traballo actuais instalados na computadora. - + Getting help from the community Obteña axuda da comunidade - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons Addons dispoñibles - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. De seguido está a lista de bancos de traballo extra que podes engadir á túa instalación de FreeCAD. Procure e instale dende o menú Ferramentas -> Addons xestión. Podes aprender máis sobre calquera deles clicando na ligazón de embaixo. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Se non está incluído ca versión do teu FreeCAD, instala o paquete da documentación FreeCAD para obter os centros de documentación, axuda de bancos de traballo e documentación de comandos individuais sen conexión a internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Non se pode obter información dende GitHub. <a href="EnableDownload.py">Autorice a FreeCAD para acceder a internet</a> e volva cargar a páxina de inicio. - + Recent commits Achegas recentes - + See all commits on github Ver tódolos commits no github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Podes configurar un cartafol persoal amosado aquí en menú Editar -> Preferencias -> Inicio -> Amosar cartafol adicional - + version versión - + build construir - + Create new... Crear novo... - + Unknown Descoñecido - + Forum Foro - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Para abrir calquera das ligazóns no teu navegador de escritorio, fai click co botón dereito -> Abrir en navegador externo - + Creation date Data de creación - + Last modification Última modificación - + Size Tamaño - + Author Autor - + License Licenza - + File path File path - + Notes Notas - + Open start page preferences Abrir as preferencias da páxina de inicio @@ -307,7 +317,7 @@ Workbench - + Start page Páxina inicial diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_hr.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_hr.ts index 7dace0f1b3..652042237f 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_hr.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_hr.ts @@ -69,237 +69,247 @@ Standardni Dio - + Create a part with the Part Design workbench Stvori dio sa Oblikovanje Dijelova radnim stolom - + + Assembly + Montaža + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Nacrt - + Create a 2D draft with the Draft workbench Stvori 2D nacrt sa Nacrt radnim stolom - + BIM/Architecture BIM/Arhitektura - + Create an architecture project Stvori jedan arhitektonski projekt - + Recent files Nedavno korištene datoteke - + Tip Savjet - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Prilagoditi broj ostvarenih datoteka koje će biti prikazane ovdje u izborniku Uredi-> Postavke-> Općenito-> Veličina popisa nedavno korištenih datoteka - + Examples Primjeri - + General documentation Opća dokumentacija - + User hub Korisničko okruženje - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Ovo poglavlje sadrži dokumentaciju korisnu za FreeCAD korisnike, općenito: popis svih radnih površina, detaljne upute kako instalirati i koristiti FreeCAD program, tutorijali i sve što je potrebno za početak. - + Power users hub Napredno korisničko okruženje - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Ovo poglavlje sadrži dokumentaciju za napredne korisnike i osobe zainteresirane za pisanje Python skripte. Tamo ćete također naći spremište makronaredbi, upute o tome kako instalirati i koristiti ih, dodatne informacije o prilagodbi FreeCAD-a vašim specifičnim potrebama. - + Developers hub Programersko okruženje - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Ovo poglavlje sadrži dokumentaciju za programere: kako sastaviti ( kompilirati) FreeCAD, o strukturi FreeCAD-a, izvornom kodu i kako se kretati u njemu i kako razvijati nove radne površine, ili integrirati FreeCAD u vlastite aplikacije. - + Manual Priručnik - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD priručnik je jedan više linearni način prezentacije informacija ove "wiki" stranice. Čini vam se kao da čitate knjigu i nježno vas upoznaje sa više drugih stranica iz korisničkih sučelja gore. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-knjiga verzije</a> su također dostupne. - + Workbenches documentation Radne Površine Dokumentacija - + These are the help pages of all the workbenches currently installed on this computer. Ovo su stranice pomoći Radnih Površina trenutno instaliranih na ovom računalu. - + Getting help from the community Dobivanje pomoći od zajednice - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. <a href="https://forum.freecad.org">FreeCAD forum</a> Forum FreeCAD je odlično mjesto za dobivanje pomoći od drugih korisnika i programera FreeCAD-a. Forum ima mnogo sekcija za različite vrste problema i tema za razgovor. Ako imate sumnje, objavite u općenitijem odsjeku Pomoć pri korištenju FreeCAD-a <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> . - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Ako prvi put postavljate na forumu, budite sigurni da <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">Prvo pročitati upute!</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD održava javno <a href="https://www.freecad.org/tracker">traženje grešaka</a> gdje svatko može slati greške i predložiti nove značajke programa. Da izbjegnete dodatni rad i dobijete najbolju šansu da vaša pronađena greška bude riješena, obavezno pročitajte <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">vodič prijave greške</a> prije "postanja". - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Ovdje su najnovije dodane promjene <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD izvorni kod</a>. Ove promjene možda još ne možete koristiti u FreeCAD verziji koju trenutno koristite. Provjerite dostupne opcije <a href="https://www.freecad.org/wiki/Downloads"></a> ako želite da koristite verziju u razvoju. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Najnoviji postovi na <a href="https://forum.freecad.org">FreeCAD forumu</a>: - + Available addons Dostupni dodatci - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Ispod je popis dostupnih dodataka za Radne Površine koji se mogu dodati kod FreeCAD instalacije. Možete ih pregledavati i instalirati iz izbornika Alati-> Addons manager. Možete naučiti više o njima tako da kliknete na linkove ispod. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Ako nije u paketu sa FreeCAD verzijom, instalirajte FreeCAD dokumentaciju (paket dokumentacije za sučelja), Radni Stol "Pomoć" i pojedinačnu dokumentaciju naredbi bez internetske vez. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Ne možete dohvatiti podatke iz GitHub. <a href="EnableDownload.py">autorizirajte FreeCAD pristup internetu</a> i ponovno učitajte početnu stranicu. - + Recent commits Nedavno poslano - + See all commits on github Pogledajte sve objave na "github" - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Možete konfigurirati prilagođenu mapu za prikaz u izborniku Uredi-> Postavke-> Start-> Pokaži dodatne mape - + version verzija - + build izgradnja - + Create new... Stvaranje nove... - + Unknown Nepoznato - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Otvorite bilo koji od linkova gore u tvom pregledniku radne površine, kliknite desnom tipkom miša-> otvori u vanjskom pregledniku - + Creation date Datum stvaranja - + Last modification Posljednja izmjena - + Size Veličina - + Author Autor - + License Licenca - + File path Put do datoteke - + Notes Bilješke - + Open start page preferences Otvori postavke Početne stranice @@ -307,7 +317,7 @@ Workbench - + Start page Početna stranica diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_hu.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_hu.ts index 503c723730..45dea2810a 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_hu.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_hu.ts @@ -69,237 +69,247 @@ Általános alkatrész - + Create a part with the Part Design workbench Alkatrész létrehozása a Alkatrész tervezés munkafelülettel - + + Assembly + Összeállítás + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D tervrajz - + Create a 2D draft with the Draft workbench 2D-s vázlat létrehozása a Vázlat munkafelülettel - + BIM/Architecture BIM / Építészet - + Create an architecture project Építészeti terv létrehozása - + Recent files Legutóbbi fájlok - + Tip Tipp - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list A legutóbbi fájlok száma beállítható a Szerkesztés -> Beállítások -> Általános -> Legutóbbi fájlok listájának mérete menüpontban - + Examples Példák - + General documentation Általános dokumentáció - + User hub Felhasználói csomópont - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Ez a szakasz hasznos dokumentációkat tartalmaz a FreeCAD felhasználóknak: egy listát az összes munkafelületről, részletes utasításokat a telepítésről és a FreeCAD használatáról, útmutatók és minden ami a kezdéshez szükséges lehet. - + Power users hub Haladó felhasználói csomópont - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Ez a szakasz a haladó felhasználóknak és a python szkriptek írásával kapcsolatban érdeklődőknek szóló dokumentációt tartalmazza. Ugyancsak itt található a makrók gyűjteménye, a hozzájuk kapcsolódó telepítési és használati útmutatók, illetve további információk a FreeCAD egyedi igényeknek megfelelő személyre szabásáról. - + Developers hub Fejlesztői csomópont - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Az a rész a fejlesztők számára tartalmaz anyagot: Hogyan kell összeállítani a FreeCAD-t, hogyan kell felépíteni a FreeCAD forráskódját + hogyan kell navigálni, új munkaállományokat fejleszteni és/vagy a FreeCAD-ot beépíteni a saját alkalmazásába. - + Manual Kézikönyv - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. A FreeCAD kézikönyv egy másik, lineárisabb módja annak, hogy bemutassa a wikiban található információkat. Úgy készül, hogy olvasható, mint egy könyv, és finoman bemutatja Önnek sok más oldalon keresztül a fenti csomópontokat. A <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"> e-könyvverziók </a> is elérhetők. - + Workbenches documentation Munkafelületek dokumentációja - + These are the help pages of all the workbenches currently installed on this computer. A jelenleg telepített összes munkafelület súgói. - + Getting help from the community Segítségkérés a közösségtől - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. A <a href="https://forum.freecad.org">FreeCAD fórum</a> egy nagyszerű hely, ahol segítséget kaphat más FreeCAD-felhasználóktól és fejlesztőktől. A fórumnak számos szekciója van a különböző típusú problémák és vitatémák számára. Ha kétségei vannak, írjon az általánosabb <a href="https://forum.freecad.org/viewforum.php?f=3">Segítség a FreeCAD használatához</a> szekcióban. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Ha ez az első alkalom, hogy a fórumba írsz, akkor mindenképp olvasd el előtte az <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">Útmutatót!</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. A FreeCAD fenntartja a nyilvános <a href="https://www.freecad.org/tracker"> hibakeresőt </a>, ahol bárki bejegyezhet hibákat és új szolgáltatásokat javasolhat. Annak elkerülése érdekében, hogy többlet munkát ne okozz, és a lehető legjobb eséllyel meglegyen a hiba megoldása, olvassa el a <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236"> hibakeresési útmutatót </a> kiküldetés előtt. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Az alábbiakban láthatók a <a href="http://github.com/FreeCAD/FreeCAD/"> FreeCAD forráskódjának </a> legfrissebb módosításai. Ezek a változások még nem tükrözik a jelenleg futó FreeCAD verziót. Ellenőrizze a <a href="https://www.freecad.org/wiki/Downloads"> elérhető lehetőségeket </a>, ha fejlesztési verzióhoz szeretne hozzáférni. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Legújabb hozzászólások a <a href="https://forum.freecad.org">FreeCAD fórumon</a>: - + Available addons Elérhető bővítmények - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Alább látható az elérhető munkafelületek listája, amiket hozzáadhatsz a FreeCAD-hez. A menüben az Eszközök -> Bővítmények kezelése menüpontban böngészhetsz köztük és telepítheted őket. Bármelyikről többet tudhatsz meg, ha az alábbi linkekre kattintasz. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Ha a te FreeCAD verziód nem tartalmazta, akkor telepítsd a FreeCAD dokumentáció csomagot, amivel internet nélkül is elérheted a dokumentációs csomópontokat, a munkafelületek súgóit illetve az egyes parancsokhoz tartozó dokumentációt. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Nem kérhető le információ a GitHub-ról. <a href="EnableDownload.py">Engedélyezd, hogy a FreeCAD hozzáférjen az internethez,</a> majd töltsd újra a Kezdőlapot. - + Recent commits Legutóbbi bejegyzések - + See all commits on github Tekintse meg az összes github közzétételt - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Az ebben a menüben megjelenítendő egyéni mappát beállíthatod a Szerkesztés -> Beállítások -> Start -> További mappa menüpontban - + version verzió - + build kiadás - + Create new... Új létrehozása... - + Unknown Ismeretlen - + Forum Fórum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser A fenti hivatkozások egyikének az asztali böngészőben megnyitásához kattintson a jobb gombbal a -> Nyissa meg a külső böngészőben - + Creation date Létrehozás dátuma - + Last modification Utolsó módosítás - + Size Méret - + Author Létrehozó - + License Licenc - + File path Fájl elérési út - + Notes Megjegyzések - + Open start page preferences Kezdőlap beállításainak megnyitása @@ -307,7 +317,7 @@ Workbench - + Start page Kezdőlap diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_id.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_id.ts index a256325d5b..49d75eb500 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_id.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_id.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Assembly + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Petunjuk - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Sesuaikan jumlah file terbaru yang akan ditampilkan di sini di menu Edit -> Preferensi -> Umum -> Ukuran daftar file terbaru - + Examples Contoh - + General documentation Dokumentasi umum - + User hub User hub - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Bagian ini berisi dokumentasi yang berguna untuk pengguna FreeCAD secara umum: daftar semua meja kerja, petunjuk terperinci tentang cara menginstal dan menggunakan aplikasi FreeCAD, tutorial, dan semua yang dibutuhkan untuk menggunakannya. - + Power users hub Power users hub - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Bagian ini mengumpulkan dokumentasi untuk pengguna tingkat lanjutan dan mereka yang tertarik untuk membuat tulisan python. Anda juga akan menemukan ruang penyimpanan yang besar, instruksi tentang cara menginstal dan menggunakannya, dan informasi lebih lanjut tentang cara menyesuaikan FreeCAD dengan kebutuhan khusus Anda. - + Developers hub Developers hub - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. - + Workbenches documentation Workbenches documentation - + These are the help pages of all the workbenches currently installed on this computer. These are the help pages of all the workbenches currently installed on this computer. - + Getting help from the community Dapatkan bantuan dari komunitas - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Postingan terakhir di <a href="https://forum.freecad.org">forum FreeCAD</a>: - + Available addons Available addons - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. - + Recent commits Recent commits - + See all commits on github See all commits on github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder - + version versi - + build build - + Create new... Buat baru... - + Unknown Unknown - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser To open any of the links above in your desktop browser, Right-click -> Open in external browser - + Creation date Tanggal diciptakan - + Last modification Terakhir dimodifikasi - + Size Ukuran - + Author Penulis - + License Lisensi - + File path File path - + Notes Catatan - + Open start page preferences Open start page preferences @@ -307,7 +317,7 @@ Workbench - + Start page Start page diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_it.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_it.ts index a5696068b4..9674b799cf 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_it.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_it.ts @@ -69,237 +69,247 @@ Parte Standard - + Create a part with the Part Design workbench Crea una parte con l'ambiente di lavoro Part Design - + + Assembly + Assembly + + + + Create an assembly project + Crea un progetto di assemblaggio + + + 2D Draft Disegno 2D - + Create a 2D draft with the Draft workbench Crea una disegno 2D con l'ambiente di lavoro Draft - + BIM/Architecture BIM/Architettura - + Create an architecture project Crea un progetto di architettura - + Recent files File recenti - + Tip Suggerimento - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Regolare il numero di file recenti da mostrare qui nel menu Modifica-> Preferenze-> Generale-> Dimensione della lista dei file recenti - + Examples Esempi - + General documentation Documentazione generale - + User hub Hub utente - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Questa sezione contiene la documentazione utile per gli utenti di FreeCAD in generale: un elenco di tutti gli ambienti di lavoro, istruzioni dettagliate su come installare e utilizzare l'applicazione FreeCAD, esercitazioni e tutto il necessario per iniziare. - + Power users hub Hub degli utenti esperti - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Questa sezione raccoglie la documentazione per gli utenti avanzati e per le persone interessate alla stesura di script Python. Si trovano anche un repository di macro, le istruzioni su come installarle e usarle, e ulteriori informazioni sulla personalizzazione di FreeCAD per le proprie esigenze specifiche. - + Developers hub Hub degli sviluppatori - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Questa sezione contiene materiale per gli sviluppatori: come compilare FreeCAD autonomamente, come è strutturato il codice sorgente di FreeCAD e come spostarsi all'interno di esso, e come sviluppare nuovi workbench o incorporare FreeCAD nella propria applicazione. - + Manual Manuale - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Il manuale di FreeCAD è un altro modo più lineare per presentare le informazioni contenute in questo wiki. È fatto per essere letto come un libro e introduce gradualmente a molte altre pagine degli hub di cui sopra. Sono anche disponibili le <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">versioni e-book</a>. - + Workbenches documentation Documentazione degli ambienti di lavoro - + These are the help pages of all the workbenches currently installed on this computer. Queste sono le pagine di aiuto di tutti gli ambienti di lavoro attualmente installati nel computer. - + Getting help from the community Ottenere aiuto dalla comunità - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. Il forum <a href="https://forum.freecad.org">FreeCAD</a> è un ottimo luogo per ottenere aiuto da altri utenti e sviluppatori di FreeCAD. Il forum ha molte sezioni per diversi tipi di problemi e argomenti di discussione. In caso di dubbio, postare nella sezione <a href="https://forum.freecad.org/viewforum.php?f=3">più generale sull'utilizzo di FreeCAD</a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Se è la prima volta che state postando sul forum, assicuratevi di <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264"> leggere le linee guida</a> prima di postare! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD mantiene anche un <a href="https://www.freecad.org/tracker">bug tracker</a> pubblico dove chiunque può inviare bug e proporre nuove funzionalità. Per evitare di causare lavoro extra e avere le migliori possibilità di vedere il vostro bug risolto, assicuratevi di leggere la <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236"> Guida alla presentazione dei bug</a> prima di postare. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Di seguito sono elencate le ultime modifiche aggiunte al <a href="http://github.com/FreeCAD/FreeCAD/">codice sorgente di FreeCAD</a>. Questi cambiamenti potrebbero non essere ancora presenti nella versione di FreeCAD attualmente in esecuzione. Se si desidera ottenere una versione di sviluppo controllare le <a href="https://www.freecad.org/wiki/Downloads">opzioni disponibili</a>. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Gli ultimi post sul forum <a href="https://forum.freecad.org">FreeCAD</a>: - + Available addons Addons disponibili - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Sotto è riportato un elenco dei workbench addizionali disponibili che possono essere aggiunti all'installazione di FreeCAD. Scorrere l'elenco e installarli dal menu Strumenti -> Addon manager. Per saperne di più su ognuno di essi fare clic sui link sottostanti. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Se non è incluso nella versione di FreeCAD, installare il pacchetto di documentazione di FreeCAD per ottenere la documentazione degli hub, gli aiuti degli ambienti e la documentazione dei singoli comandi senza una connessione Internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Impossibile recuperare le informazioni da GitHub. <a href="EnableDownload.py">Autorizzare l'accesso di FreeCAD a internet</a> e ricaricare la pagina iniziale. - + Recent commits Ultimi commit - + See all commits on github Vedere tutti i commit su github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder È possibile configurare una cartella personalizzata da visualizzare qui nel menu Modifica-> Preferenze-> Start-> Mostra la cartella aggiuntiva - + version versione - + build compilazione - + Create new... Crea nuovo... - + Unknown Sconosciuto - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Per aprire uno qualsiasi dei link sopra nel browser del desktop, fare clic con il tasto destro del mouse -> Apri nel browser esterno - + Creation date Data di creazione - + Last modification Ultima modifica - + Size Dimensione - + Author Autore - + License Licenza - + File path Percorso file - + Notes Note - + Open start page preferences Apri le preferenze della pagina iniziale @@ -307,7 +317,7 @@ Workbench - + Start page Pagina iniziale diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ja.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_ja.ts index 82d521b266..455e5b068e 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_ja.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_ja.ts @@ -69,237 +69,247 @@ 基本部品 - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + アセンブリ + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2Dドラフト(下書き) - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files 最近使用したファイル - + Tip ヒント - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list メニューの「編集→設定→標準→最近使用したファイル一覧のサイズ」でここに表示される最近使用したファイルの数を調整できます。 - + Examples サンプル - + General documentation 一般ドキュメント - + User hub ユーザーハブ - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. このセクションには一般的な FreeCAD ユーザーにとって役に立つドキュメントがあります。全てのワークベンチのリスト、FreeCAD アプリケーションのインストールと使い方の詳しいやり方、チュートリアルなど始めるのに必要な全てがあります。 - + Power users hub パワーユーザーハブ - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. このセクションには上級者ユーザーや Python スクリプトを書くことに興味がある人たちのためのドキュメントが集められています。またマクロのレポジトリーやそれらをどのようにインストールし使うかについてのやり方、そして必要に合わせた FreeCAD のカスタマイズについての詳しい情報もあります。 - + Developers hub 開発者ハブ - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. このセクションには開発者のための情報があります。自分で FreeCAD をコンパイルする方法、FreeCAD のソースコードがどのように構成されていてそれをどのように読み進めるのか、また新しいワークベンチの開発方法や自分のアプリケーションに FreeCAD を埋め込む方法についてなどがあります。 - + Manual マニュアル - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD マニュアルはこのウィキの情報をもっと直線的に見るもう1つの方法です。本のように読めるよう作られていて、上記のハブのたくさんのページを少しずつ読んでいくことができるでしょう。<a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">電子書籍バージョン</a>も利用可能です。 - + Workbenches documentation ワークベンチのドキュメント - + These are the help pages of all the workbenches currently installed on this computer. このコンピューターに現在インストールされている全てのワークベンチのヘルプページがあります。 - + Getting help from the community コミュニティから助けを得る - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! 初めてフォーラムに投稿する場合は最初に<a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">ガイドラインを読んで</a>確認してください! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD には公開<a href="https://www.freecad.org/tracker">バグトラッカー</a>も用意されていて、誰でもバグや新しい機能の提案を投稿することができます。余分な作業を発生させず、見つけたバグを解決できる可能性を上げるために、投稿する前には必ず<a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">バグ報告ガイドライン</a>を読んでください。 - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. 以下は最新の変更が加えられた<a href="http://github.com/FreeCAD/FreeCAD/">FreeCADのソースコード</a>です。これらの変更は、あなたが現在実行しているバージョンのFreeCADにはまだ反映されていない可能性があります。 開発版を手に入れたい場合は <a href="https://www.freecad.org/wiki/Downloads">利用可能なオプション</a>を確認して下さい。 - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: <a href="https://forum.freecad.org">FreeCAD フォーラム</a>の最新の投稿: - + Available addons 利用可能なアドオン - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. 以下はインストールしたFreeCADに追加して利用できる追加ワークベンチのリストです。メニューの [ツール] - [Addon manager] で表示とインストールを行なってください。以下のリンクをクリックするとそれぞれのワークベンチについてさらに詳しく知ることができます。 - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. もしドキュメントのバンドルされていないFreeCADバージョンであるならば、FreeCADドキュメントパッケージをドキュメンテーション・ハブよりインストールすることで、ワークベンチのヘルプや各コマンドのドキュメントをインターネット接続なしでも利用できます。 - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. GitHubから情報をフェッチできませんでした。 <a href="EnableDownload.py">FreeCADに、インターネットへアクセスできる権限を与える</a> そして開始ページを再読み込みをして下さい。 - + Recent commits 最近のコミット - + See all commits on github GitHubのコメントを全て参照 - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder メニューの「編集→設定→Start→追加フォルダを表示」でここに表示するカスタムフォルダを設定できます。 - + version バージョン - + build ビルド - + Create new... 新規作成... - + Unknown 不明 - + Forum フォーラム - + To open any of the links above in your desktop browser, Right-click -> Open in external browser 上記のリンクをデスクトップのブラウザーで開きたい場合は、「右クリック->外部ブラウザーで開く」の手順で開けます - + Creation date 作成日時 - + Last modification 最終変更 - + Size サイズ - + Author 作成者 - + License ライセンス - + File path File path - + Notes ノート - + Open start page preferences スタートページの設定を開く @@ -307,7 +317,7 @@ Workbench - + Start page スタートページ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ka.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_ka.ts index b0f80cd691..07c38d1f45 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_ka.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_ka.ts @@ -69,237 +69,247 @@ სტანდარტული პორტი - + Create a part with the Part Design workbench ნაწილის შექმნა ნაწილის დიზაინის სამუშაო მაგიდით - + + Assembly + აწყობა + + + + Create an assembly project + აწყობის პროექტის შექმნა + + + 2D Draft 2D ნახაზი - + Create a 2D draft with the Draft workbench 2D ნახაზის შექმნა Draft სამუშაო მაგიდით - + BIM/Architecture BIM/არქიტექტურა - + Create an architecture project არქიტექტურული პროექტის შექმნა - + Recent files უკანასკნელი ფაილები - + Tip მინიშნება - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list დაარეგულირეთ ბოლო ფაილების რაოდენობა, რომლებიც აქ გამოჩნდება. მენიუ ჩასწორება -> მორგება -> ზოგადი -> ბოლო ფაილების სიის ზომა - + Examples მაგალითები - + General documentation მომხმარებლის დოკუმენტაცია - + User hub მომხმარებლების ცენტრალური ქსელი - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. ეს განყოფილება შეიცავს ზოგადად FreeCAD-ის მომხმარებლებისთვის სასარგებლო დოკუმენტაციას: ყველა სამუშაო მაგიდის სიას, დეტალურ ინსტრუქციებს FreeCAD აპლიკაციის დაყენებისა და გამოყენების შესახებ, გაკვეთილებს და ყველაფერს, რაც გჭირდებათ დასაწყებად. - + Power users hub გამოცდილი მომხმარებლების საერთო ქსელი - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. ეს განყოფილება აგროვებს დოკუმენტაციას მოწინავე მომხმარებლებისთვის და პითონის სკრიპტების დაწერით დაინტერესებული პირებისთვის. თქვენ ასევე ნახავთ მაკროების საცავს, ინსტრუქციებს მათი დაყენებისა და გამოყენების შესახებ და მეტი ინფორმაცია FreeCAD-ის თქვენს კონკრეტულ საჭიროებებზე მორგების შესახებ. - + Developers hub დეველოპერების საერთო ქსელი - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. ეს განყოფილება შეიცავს მასალას დეველოპერებისთვის: როგორ დააკომპილიროთ FreeCAD თავად, როგორ არის სტრუქტურირებული FreeCAD-ის კოდი + როგორ იქონიოთ ნავიგაცია, როგორ შექმნათ ახალი სამუშაო მაგიდა და/ან ჩააშენოთ FreeCAD თქვენს აპლიკაციაში. - + Manual სახელმძღვანელო - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD სახელმძღვანელო არის კიდევ ერთი, უფრო წრფივი გზა ამ ვიკიში მოცემული ინფორმაციის წარმოსაჩენად. ის შექმნილია წიგნის წასაკითხად და ნაზად გაგაცნობთ ბევრ სხვა გვერდს ზემოთ მოყვანილი ჰაბებიდან. ასევე ხელმისაწვდომია <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">ელექტრონული წიგნების ვერსიები</a>. - + Workbenches documentation სამუშაო მაგიდების დოკუმენტაცია - + These are the help pages of all the workbenches currently installed on this computer. ამ კომპიუტერში დაყენებულია ყველა სამუშაო მაგიდის დახმარების გვერდები. - + Getting help from the community დახმარების საზოგადოებისგან მიღება - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. FreeCAD-ის<a href="https://forum.freecad.org"> ფორუმი</a> შესანიშნავი ადგილია FreeCAD-ის სხვა მომხმარებლებისა და დეველოპერებისგან დახმარების მისაღებად. ფორუმს აქვს მრავალი სექცია სხვადასხვა ტიპის საკითხებისა და სადისკუსიო თემებისთვის. თუ ეჭვი გეპარებათ, გამოაქვეყნეთ უფრო ზოგადი<a href="https://forum.freecad.org/viewforum.php?f=3"> დახმარება FreeCAD</a> განყოფილების გამოყენების შესახებ. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! თუ ფორუმზე პოსტ სპირველად აქვეყნებთ, აუცილებლად <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">წაიკითხეთ სახელმძღვანელო </a>მითითებები! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD ასევე ინახავს შეცდომების საჯარო<a href="https://www.freecad.org/tracker"> ტრეკერს</a>, სადაც ნებისმიერს შეუძლია წარადგინოს შეცდომები და შესთავაზოს ახალი ფუნქციები. იმისათვის, რომ თავიდან აიცილოთ ზედმეტი სამუშაოს გამოწვევა და საუკეთესო შანსები მისცეთ, რომ ნახოთ თქვენი ხარვეზი მოგვარებული, დარწმუნდით, რომ წაიკითხეთ<a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236"> შეცდომების წარდგენის სახელმძღვანელო</a> გამოქვეყნებამდე. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. ქვემოთ მოცემულია უახლესი ცვლილებები, რომლებიც დამატებულია <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD-ის კოდში</a>. ეს ცვლილებები შესაძლოა ჯერ არ აისახოს FreeCAD-ის ვერსიაში, რომელსაც ამჟამად გაქვთ გაშვებული. შეამოწმეთ <a href="https://www.freecad.org/wiki/Downloads">ხელმისაწვდომი ვარიანტები</a> თუ გსურთ მიიღოთ უახლესი ბეტა ვერსია. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: ბოლო პოსტები <a href="https://forum.freecad.org">FreeCAD-ის ფორუმზე</a>: - + Available addons ხელმისაწვდომი დამატებები - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. ქვემოთ მოცემულია ხელმისაწვდომი დამატებითი სამუშაო მაგიდების სია, რომლებიც შეიძლება დაემატოს თქვენს FreeCAD-ს. დაათვალიერეთ და დააყენეთ ისინი მენიუდან ხელსაწყო -> დამატებების მმართველი. თქვენ შეგიძლიათ გაიგოთ მეტი რომელიმე მათგანის შესახებ ქვემოთ მოცემულ ბმულებზე დაწკაპუნებით. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. თუ არ მიიღეთ თქვენს FreeCAD ვერსიასთან ერთად, დააინსტალირეთ FreeCAD დოკუმენტაციის პაკეტი, რათა მიიღოთ დოკუმენტაციის ჰაბები, სამუშაო მაგიდაზე დახმარება და ინდივიდუალური ბრძანების დოკუმენტაცია ინტერნეტის გარეშე. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. GitHub-იდან ინფორმაციის გამოთხოვნის შეცდომა.<a href="EnableDownload.py">მიეცით FreeCAD-ს ინტერნეტთან წვდომა</a> და თავიდან ჩატვირთეთ საწყისი გვერდი. - + Recent commits ბოლოდროინდელი კომიტები - + See all commits on github ყველა კომიტის GitHub-ზე ნახვა - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder აქ საჩვენებლად საქაღალდე შეგიძლიათ ხელით მიუთითოთ. ამისათვის გადადით ჩასწორება ->მორგება -> საწყისი -> დამატებითი საქაღალდის ჩვენება - + version ვერსია - + build build - + Create new... ახლის შექმნა... - + Unknown უცნობი - + Forum ფორუმი - + To open any of the links above in your desktop browser, Right-click -> Open in external browser ზემოთ მოცემული რომელიმე ბმულის თქვენი დესკტოპის ბრაუზერში გასახსნელად დააწკაპუნეთ მაუსის მარჯვენა ღილაკით -> გახსენით გარე ბრაუზერში - + Creation date შექმნის თარიღი - + Last modification ბოლო ცვლილების თარიღი - + Size ზომა - + Author ავტორი - + License ლიცენზია - + File path ფაილის ბილიკი - + Notes შენიშვნები - + Open start page preferences საწყისი გვერდის მორგება @@ -307,7 +317,7 @@ Workbench - + Start page საწყისი გვერდი diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ko.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_ko.ts index f6c7dce640..84499debfe 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_ko.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_ko.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Assembly + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D 설계도 - + Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files 최근 파일들 - + Tip - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list 편집 -> 환경 설정 -> 일반 -> 최근 파일 목록의 크기 메뉴에서 표시 할 최근 파일 수를 조정하십시오 - + Examples 예시 - + General documentation 일반 문서 - + User hub 사용자 허브 - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. 이 섹션에는 FreeCAD 사용자에게 유용한 문서가 포함되어 있습니다: 모든 워크 벤치 목록, FreeCAD 응용 프로그램 설치 및 사용법, 자습서 및 시작하기에 필요한 모든 지침. - + Power users hub 고급 사용자 허브 - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. 이 섹션에서는 고급 사용자와 Python 스크립트 작성에 관심이 있는 사람들을 위한 문서를 수집합니다. 또한 매크로 저장소, 매크로 설치 및 사용 방법에 대한 지침, FreeCAD를 특정 요구 사항에 맞게 사용자 지정하는 방법에 대한 추가 정보를 찾을 수 있습니다. - + Developers hub 개발자 허브 - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. 이 섹션에는 개발자를 위한 자료가 포함되어 있습니다: FreeCAD를 직접 컴파일하는 방법, FreeCAD 소스 코드의 구조화 방법 + 탐색 방법, 새로운 워크벤치 개발 방법 및/또는 자체 응용 프로그램에 FreeCAD를 내장하는 방법을 알아봅니다. - + Manual 설명서 - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD 설명서은 이 위키에 포함된 정보를 표현하는 또 다른 방법입니다. 그것은 책처럼 읽도록 만들어졌으며 위의 센터에서 다른 많은 페이지로 부드럽게 소개 할 것입니다. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"> 전자 도서 버전 </a>도 제공됩니다. - + Workbenches documentation 워크 벤치 문서 - + These are the help pages of all the workbenches currently installed on this computer. 이 컴퓨터에 설치된 모든 워크 벤치의 도움말 페이지입니다. - + Getting help from the community 커뮤니티에서 도움 받기 - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. <a href="https://forum.freecad.org">FreeCAD forum</a> 은 FreeCAD 의 사용자들과 개발자들로 부터 도움을 구하기에 좋은 곳 입니다. forum 에는 다양한 문제와 주제들에 대해 많은 섹션들을 갖추고 있습니다. 궁금한 것이 있으면, 가장 일반적인 수준을 다루는 <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> 섹션에 게시해 보세요. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! 포럼에 게시물을 올리는 것이 처음 이라면, 그 전에 우선 <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264"> 지침을 읽으십시오</a>. - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons 사용 가능한 애드온 - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. 다음은 FreeCAD 설치에 추가할 수 있는 사용 가능한 추가 워크벤치 목록입니다. 메뉴 도구 -> 애드온 관리자에서 찾아보고 설치합니다. 아래 링크를 클릭하면 이들 중 하나에 대해 자세히 알아볼 수 있습니다. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. FreeCAD 설명서 패키지가 귀하의 버전과 함께 제공되지 않은 경우 FreeCAD 도움말을 설치하여 인터넷 연결없이 문서 센터, 워크 벤치 도움말 및 명령 문서에 액세스하십시오. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. GitHub에서 정보를 검색할 수 없습니다. <a href="EnableDownload.py"> FreeCAD가 인터넷에 액세스하도록 허용</a>하고 시작 페이지를 새로 고침 하십시오. - + Recent commits 최근 변경 사항 - + See all commits on github Github의 모든 변경 사항보기 - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder 메뉴 편집 -> 환경 설정 -> 시작 -> 추가 폴더 표시에서 사용자 정의 폴더를 구성 할 수 있습니다 - + version 버전 - + build 빌드 - + Create new... 새로 만들기... - + Unknown 알 수 없음 - + Forum 포럼 - + To open any of the links above in your desktop browser, Right-click -> Open in external browser 위의 링크를 데스크탑 브라우저에서 열려면 마우스 오른쪽 버튼 클릭 -> 외부 브라우저에서 열기를 선택하십시오. - + Creation date 생성 날짜 - + Last modification 마지막으로 변경함 - + Size 크기 - + Author 작성자: - + License 라이선스 - + File path File path - + Notes 메모 - + Open start page preferences 시작 페이지 환경 설정 열기 @@ -307,7 +317,7 @@ Workbench - + Start page 시작 페이지 diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_nl.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_nl.ts index 43220a7e50..1ad362cb6f 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_nl.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_nl.ts @@ -69,237 +69,247 @@ Standaard onderdeel - + Create a part with the Part Design workbench Maak een onderdeel aan met de Part Design werkbank - + + Assembly + Samenstelling + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D schets - + Create a 2D draft with the Draft workbench Maak een 2D schets met de Draft werkbank - + BIM/Architecture BIM/Architectuur - + Create an architecture project Maak een architectuurproject - + Recent files Recente bestanden - + Tip Tip - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Pas het -aantal recente bestanden- die hier getoond worden aan in het menu Bewerken> Voorkeuren> Algemeen> Tabblad Algemeen> Grootte van de recente-bestanden lijst - + Examples Voorbeelden - + General documentation Gebruikersdocumentatie - + User hub Gebruikers hub - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Deze sectie bevat nuttige algemene documentatie voor FreeCAD-gebruikers: een lijst van alle werkbanken, gedetailleerde instructies over het installeren en gebruiken van FreeCAD, tutorials, en alles wat je nodig hebt om te beginnen. - + Power users hub Hub voor gevorderde gebruikers - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Deze sectie verzamelt documentatie voor ervaren gebruikers en mensen die geïnteresseerd zijn in het schrijven van Python scripts. U vindt hier ook een bibliotheek van macro's, instructies over hoe deze te installeren en gebruiken, en meer informatie over het aanpassen van FreeCAD aan uw specifieke behoeften. - + Developers hub Ontwikkelaars hub - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Deze sectie bevat materiaal voor ontwikkelaars: Hoe zelf FreeCAD te compileren, hoe de broncode van FreeCAD gestructureerd is en hoe erin te navigeren, hoe nieuwe werkbanken te ontwikkelen en/of FreeCAD in uw eigen toepassing in te voegen. - + Manual Handleiding - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. De FreeCAD handleiding is een andere, meer lineaire manier om de informatie uit deze wiki te presenteren. Het is gemaakt om als een boek te worden gelezen en zal u rustig kennis laten maken met de vele andere pagina's van de bovenstaande hubs. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">E-boek versies</a> zijn ook beschikbaar. - + Workbenches documentation Documentatie van de werkbanken - + These are the help pages of all the workbenches currently installed on this computer. Dit zijn hulp pagina's van alle op dit moment op Uw computer geïnstalleerde wekbanken. - + Getting help from the community Krijg hulp van de Community - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. Het <a href="https://forum.freecad.org">FreeCAD forum</a> is een goede plek om hulp te krijgen van andere FreeCAD gebruikers en ontwikkelaars. Het forum heeft een aantal sub-forums voor verschillende onderwerpen en discussies. Post in geval van twijfel in het meer algemene <a href="https://forum.freecad.org/viewforum.php?f=3">Help over het gebruik van FreeCAD</a> sub-forum. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Als het de eerste keer is dat je iets op het forum plaatst, zorg er dan voor dat je <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">de richtlijnen</a> eerst leest! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD onderhoudt ook een openbare <a href="https://www.freecad.org/tracker">bug tracker</a> waar iedereen bugs kan indienen en nieuwe functies kan voorstellen. Om extra werk te voorkomen, en voor de beste kansen om je bug opgelost te krijgen, zorg ervoor dat je de <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug indiening gids</a> leest, voordat je iets post. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. In de lijst hieronder staan de laatste toegevoegde wijzigingen aan de <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD broncode</a>. Deze wijzigingen zijn mogelijk nog niet doorgevoerd in je huidige versie van FreeCAD. Kijk bij de <a href="https://www.freecad.org/wiki/Downloads">beschikbare opties</a> in het geval je met een (andere) ontwikkelversie wil werken. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: De nieuwste berichten op het <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons Beschikbare uitbreidingen - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Hieronder staat een lijst van extra beschikbare werkbanken die kunnen worden toegevoegd aan Uw FreeCAD installatie. Doorzoek en installeer ze via het menu Gereedschap -> Uitbreidingsmanager. U kunt meer over ze te weten komen door op onderstaande links te klikken. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Wanneer niet gebundeld met uw FreeCAD-versie, installeert U dan het FreeCAD documentatie pakket om documentatie hubs, werkbank hulp en documentatie over de individuele commando's te krijgen zonder een internetverbinding. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Kan de informatie van GitHub niet binnenhalen. <a href="EnableDownload.py">Geef FreeCAD toegang tot het internet</a> and herlaad the Start pagina. - + Recent commits Recente bijdragen - + See all commits on github Zie alle bijdragen op github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Om een op maat gemaakte map hier weer te laten geven kunt u dat in het volgende menu instellen: Bewerken-> Voorkeuren-> Start-> Custom map configureren - + version versie - + build bouw - + Create new... Nieuw Document... - + Unknown Onbekend - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Om een van de bovenstaande links in uw desktop browser te openen, klik met de rechtermuisknop-> Open in externe browser - + Creation date Aanmaakdatum - + Last modification Laatst wijziging - + Size Grootte - + Author Auteur - + License Licentie - + File path Bestandslocatie - + Notes Aantekeningen - + Open start page preferences Open start pagina voorkeuren @@ -307,7 +317,7 @@ Workbench - + Start page Startpagina diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_pl.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_pl.ts index a0cefa0d6d..7f343579be 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_pl.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_pl.ts @@ -69,237 +69,247 @@ Standardowy element części - + Create a part with the Part Design workbench Utwórz część za pomocą środowiska pracy Projekt Części - + + Assembly + Złożenie + + + + Create an assembly project + Utwórz projekt złożenia + + + 2D Draft Rysunek roboczy 2D - + Create a 2D draft with the Draft workbench Utwórz rysunek 2D za pomocą środowiska Rysunek Roboczy - + BIM/Architecture BIM / Architektura - + Create an architecture project Utwórz projekt architektury - + Recent files Ostatnio używane pliki - + Tip Podpowiedź - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Dostosuj liczbę wyświetlanych nazw plików w menu Edycja → Preferencje → Ogólne → Rozmiar listy ostatnio otwartych plików - + Examples Przykłady - + General documentation Dokumentacja podstawowa - + User hub Centrum użytkownika - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Ta sekcja zawiera dokumentację ogólną przydatną dla użytkowników programu FreeCAD. Listę wszystkich Środowisk pracy, szczegółowe instrukcje dotyczące instalacji i użytkowania aplikacji FreeCAD, poradniki i wszystko, co jest potrzebne do rozpoczęcia pracy. - + Power users hub Centrum Power użytkowników - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Ta sekcja gromadzi dokumentację dla zaawansowanych użytkowników i osób zainteresowanych pisaniem skryptów w środowisku Python. Znajdziesz tam również repozytorium makrodefinicji, instrukcje instalacji i używania oraz dodatkowe informacje o dostosowywaniu programu FreeCAD do swoich potrzeb. - + Developers hub Centrum programistów - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Ta sekcja zawiera materiał dla programistów: jak samemu skompilować FreeCAD, jak zbudowany jest kod źródłowy FreeCAD i jak po nim się poruszać, jak tworzyć nowe środowiska lub osadzać FreeCAD we własnej aplikacji. - + Manual Instrukcja - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Podręcznik FreeCAD jest kolejnym, bardziej zwięzłym sposobem na zaprezentowanie informacji zawartych w tej stronie Wiki. Jest stworzony tak by można go było czytać jak książkę i delikatnie wprowadzi Cię na wiele innych stron z podanych poniżej centrów. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">Dostępna jest równiez</a> wersja w postaci e-book. - + Workbenches documentation Dokumentacja Środowisk pracy - + These are the help pages of all the workbenches currently installed on this computer. Są to strony pomocy dla wszystkich Środowisk pracy aktualnie zainstalowanych na tym komputerze. - + Getting help from the community Uzyskaj pomoc społeczności - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. <a href="https://forum.freecad.org"> Forum FreeCAD </a> jest doskonałym miejscem do uzyskania pomocy od innych użytkowników i programistów tej aplikacji. Posiada ono wiele sekcji poświęconych różnym rodzajom zagadnień i tematów dyskusji. W razie wątpliwości opublikuj wiadomość w sekcji ogólnej <a href="https://forum.freecad.org/viewforum.php?f=3">Pomoc w użytkowaniu FreeCAD</a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Jeśli piszesz na forum po raz pierwszy, pamiętaj, aby najpierw <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">przeczytać wytyczne</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD utrzymuje również publiczne <a href="https://www.freecad.org/tracker">narzędzie do śledzenia błędów</a>, gdzie każdy może zgłaszać błędy i proponować nowe funkcje. Aby zwiększyć szanse na naprawienie błędu i uniknąć powtarzanie już istniejących zgłoszeń, przed zamieszczeniem zgłoszenia przeczytaj <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">poradnik zgłaszania błędów </a>. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Poniżej znajduje się lista najnowszych zmian wprowadzonych do <a href="http://github.com/FreeCAD/FreeCAD/">kodu źródłowego FreeCAD</a>. Zmiany mogą nie być widoczne w wersji z której teraz korzystasz. Sprawdź <a href="https://www.freecad.org/wiki/Downloads">dostępne opcje</a> jeśli chcesz uzyskać wersję dla programistów. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Najnowsze tematy na <a href="https://forum.freecad.org">forum FreeCAD</a>: - + Available addons Dostępne dodatki - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Poniżej znajduje się lista dodatkowych środowisk pracy, które mogą być dodane do Twojej instalacji programu FreeCAD. Przeglądaj i instaluj je z menu Narzędzia-> Menedżer dodatków. Dowiesz się więcej o każdym z nich, klikając na linki poniżej. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Jeśli nie dołączono do Twojej wersji programu, zainstaluj pakiet dokumentacji FreeCAD, aby uzyskać centra dokumentacji, pomoc dla środowiska pracy i indywidualną dokumentację poleceń, bez dostępu do Internetu. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Nie mogę odebrać informacji z GitHuba. <a href="EnableDownload.py" >Zezwól programowi FreeCAD na dostęp do Internetu</a> i ponownie załaduj stronę startową. - + Recent commits Najnowsze zobowiązania - + See all commits on github Zobacz wszystkie zobowiązania na Github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Możesz skonfigurować niestandardowy folder do wyświetlenia w menu Edycja -> Preferencje -> Start -> Pokaż dodatkowy folder - + version wersja - + build numer rewizji - + Create new... Utwórz nowy ... - + Unknown Nieznany - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Aby otworzyć link w przeglądarce, kliknij prawym przyciskiem myszki -> Otwórz w zewnętrznej przeglądarce - + Creation date Data utworzenia - + Last modification Ostatnia modyfikacja - + Size Rozmiar - + Author Autor - + License Licencja - + File path Ścieżka do pliku - + Notes Uwagi - + Open start page preferences Otwórz ustawienia strony startowej @@ -307,7 +317,7 @@ Workbench - + Start page Strona startowa diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.ts index 7501a4b71f..20921a84b5 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Assemblagem + + + + Create an assembly project + Create an assembly project + + + 2D Draft Rascunho 2D - + Create a 2D draft with the Draft workbench Crie um rascunho 2D com a bancada de trabalho de Rascunhos - + BIM/Architecture BIM/Arquitetura - + Create an architecture project Criar um projeto de arquitetura - + Recent files Arquivos recentes - + Tip Dica - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Ajuste o número de arquivos recentes a serem mostrados aqui no menu Editar -> Preferências -> Geral -> Tamanho da lista de arquivos recentes - + Examples Exemplos - + General documentation Documentação Geral - + User hub Hub do usuário - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Esta seção contém documentação útil para os usuários do FreeCAD em geral: uma lista de todos os menus, instruções detalhadas sobre como instalar e usar o aplicativo FreeCAD, tutoriais e tudo o que você precisa para começar. - + Power users hub Hub de usuário avançados - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Esta seção reúne documentação para usuários avançados e pessoas interessadas em escrever scripts python. Você também encontrará um repositório de macros, instruções sobre como instalá-las e usá-las, além de mais informações sobre como personalizar o FreeCAD para suas necessidades específicas. - + Developers hub Hub de desenvolvedores - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Esta seção contém material para desenvolvedores: como compilar o FreeCAD você mesmo, como está estruturado o código-fonte FreeCAD + como navegar nele, como desenvolver novas bancadas e/ou incorporar FreeCAD no seu próprio aplicativo. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. O manual do FreeCAD é outra maneira mais linear de apresentar as informações contidas neste wiki. Ele é feito para ser lido como um livro e gentilmente o apresentará a muitas outras páginas dos hubs acima. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"> Versões de livros eletrônicos </a> também estão disponíveis. - + Workbenches documentation Documentação de bancadas de trabalho - + These are the help pages of all the workbenches currently installed on this computer. Estas são as páginas de ajuda de todas as bancadas atualmente instalados neste computador. - + Getting help from the community Obter ajuda da comunidade - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Se é a primeira vez que você está postando no fórum, certifique-se de <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">ler as diretrizes</a> primeiro! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: As últimas postagens no <a href="https://forum.freecad.org">fórum do FreeCAD</a>: - + Available addons Addons disponíveis - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Abaixo está uma lista de bancadas extras disponíveis que podem ser adicionados à sua instalação do FreeCAD. Procure e instale-os no menu Ferramentas -> Gerenciador de Complementos. Você pode aprender mais sobre qualquer um deles clicando nos links abaixo. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Se não estiver incluído na sua versão do FreeCAD, instale o pacote de documentação do FreeCAD para obter os hubs de documentação, a ajuda de bancada e a documentação de comando individual sem uma conexão com a Internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Não é possível buscar informações do GitHub. <a href="EnableDownload.py"> Autorize o FreeCAD a acessar a internet </a> e recarregue a página inicial. - + Recent commits Commits recentes - + See all commits on github Ver todos os commits no github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Você pode configurar uma pasta personalizada para exibir aqui no menu Editar -> Preferências -> Iniciar -> Mostrar pasta adicional - + version versão - + build build - + Create new... Criar novo... - + Unknown Desconhecido - + Forum Fórum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Para abrir qualquer um dos links acima no navegador da área de trabalho, clique com o botão direito -> Abrir no navegador externo - + Creation date Data de criação - + Last modification Última modificação - + Size Tamanho - + Author Autor - + License Licença - + File path File path - + Notes Notas - + Open start page preferences Abra as preferências da página inicial @@ -307,7 +317,7 @@ Workbench - + Start page Página inicial diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.ts index 883b5fd50b..c2a45c6b4f 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Montagem + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Dica - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Ajustar o número de ficheiros recentes a ser mostrado aqui no menu Edit-> preferências-> geral-> tamanho da lista de ficheiros recentes - + Examples Exemplos - + General documentation Documentação geral - + User hub Centro do Utilizador - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Esta secção contém documentação útil para utilizadores do FreeCAD em geral: uma lista de todas as bancadas de trabalho, instruções detalhadas sobre como instalar e usar o FreeCAD, tutoriais e tudo que precisa para começar. - + Power users hub Centro do Utilizador avançado - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Esta secção reúne documentação para utilizadores avançados e pessoas interessadas em escrever scripts em python. Também irá lá encontrar um repositório de macros, instruções sobre como os instalar e usá-los e obter mais informações sobre como personalizar o FreeCAD às suas necessidades específicas. - + Developers hub Centro de desenvolvedores - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Esta seção contém material para desenvolvedores: como compilar o FreeCAD você mesmo, como está estruturado o código-fonte FreeCAD + como navegar-lo, como desenvolver novas bancadas e/ou incorporar FreeCAD no seu próprio aplicativo. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Manual do FreeCAD é uma outra forma, mais uma forma linear, de apresentar as informações contidas nesta wiki. É feito para ser lido como um livro e irá apresentá-lo a muitas outras páginas dos hubs acima. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-livro versões</a> também estão disponíveis. - + Workbenches documentation Documentação das bancadas de trabalho - + These are the help pages of all the workbenches currently installed on this computer. Estas são as páginas de ajuda de todas as bancadas atualmente instaladas neste computador. - + Getting help from the community Obter ajuda da Comunidade - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Se é a primeira vez que você está postando no fórum, certifique-se de <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">ler as diretrizes</a> primeiro! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. O FreeCAD também mantém um <a href="https://www.freecad.org/tracker">rastreador de bugs</a> público onde qualquer um pode enviar bugs e propor novos recursos. Para evitar causar trabalho extra e dar as melhores chances de ver seu bug resolvido, certifique-se de ler o <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">guia de submissão de bugs</a> antes de postar. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Abaixo estão as últimas alterações adicionadas ao <a href="http://github.com/FreeCAD/FreeCAD/">código fonte do FreeCAD</a>. Estas alterações podem não refletir na versão do FreeCAD que você está atualmente em execução. Marque as <a href="https://www.freecad.org/wiki/Downloads">opções disponíveis</a> se você deseja obter uma versão de desenvolvimento. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: As últimas postagens no <a href="https://forum.freecad.org">fórum do FreeCAD</a>: - + Available addons Extras disponíveis - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Abaixo está uma lista de bancadas extras disponíveis que podem ser adicionados à instalação do FreeCAD. Navegue e instale-as do menu ferramentas-> Gerenciador de extras. Você pode aprender mais sobre qualquer um deles clicando nos links abaixo. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Caso não tenha sido instalado com sua versão de FreeCAD, instale o pacote de documentação do FreeCAD para obter documentação de ajuda dos centros, das bancada de trabalho e documentação dos comando individuais sem estar ligado à internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Não é possível carregar informações do GitHub. <a href="EnableDownload.py">autorize o FreeCAD a aceder à internet</a> e recarregue a página inicial. - + Recent commits Submissões recentes - + See all commits on github Ver todos os commits no github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Podes configurar uma pasta costumizada para mostrar aqui no menu Edita r-> Preferências -> Começar-> Mostrar pasta adicional - + version versão - + build compilar - + Create new... Criar novo... - + Unknown Desconhecido - + Forum Fórum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Para abrir qualquer um dos links acima no seu navegador, botão direito do mouse-> abrir no navegador externo - + Creation date Data de criação - + Last modification Última Modificação - + Size Tamanho - + Author Autor - + License Licença - + File path File path - + Notes Notas - + Open start page preferences Abrir preferências da página inicial @@ -307,7 +317,7 @@ Workbench - + Start page Página inicial diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ro.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_ro.ts index 8b75414011..d1c303b3f8 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_ro.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_ro.ts @@ -69,238 +69,248 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Ansamblu + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Sfat - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Ajustaţi numărul de fişiere recente pentru a fi prezentate aici, în meniul Editare-> Preferinţe-> General-> dimensiunea din lista de fişiere recente - + Examples Exemple - + General documentation Documentaţie generală - + User hub Hub-ul de utilizator - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Aceasta sectiune contine documente utile pentru utilizatorii FreeCAD în general: o listă a tuturor bancuri de lucru, instrucţiuni detaliate despre cum să instalaţi şi să utilizaţi aplicaţia FreeCAD, Tutoriale, si tot ce ai nevoie pentru a începe. - + Power users hub Hub de utilizatori cu experiență - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Această secţiune adună documentaţia pentru utilizatorii avansaţi şi persoane interesate în scris python script-uri. Veţi găsi acolo un depozit de macrocomenzi, instrucţiuni despre cum să instalaţi şi să folosiți și mai multe informații despre particularizarea FreeCAD nevoilor dumneavoastră specifice. - + Developers hub Hub Dezvoltatori - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Aceasta sectiune contine material pentru dezvoltatori: cum să compilaţi dvs FreeCAD, cum este structurat codul sursă FreeCAD şi cum să navigaţi în el, şi cum să dezvolte noi ateliere și/sau să încorporați FreeCAD în aplicaţia proprie. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Manualul FreeCAD este un alt, mod liniar mai să prezinte informaţiile conţinute în acest wiki. Acesta este facut pentru a fi citit ca o carte şi uşor vă va prezenta mai multe alte pagini de hub-uri de mai sus. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-carte versiunile</a> sunt de asemenea disponibile. - + Workbenches documentation Documentaţia Atelierelor - + These are the help pages of all the workbenches currently installed on this computer. Acestea sunt paginile de ajutor din toate atelierele instalate în prezent pe acest computer. - + Getting help from the community Obţinerea ajutorului din partea Comunității - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons Adaosuri Disponibile - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Mai jos este o listă de ateliere suplimentare disponibile, care pot fi adăugate la instalarea FreeCAD. Răsfoiţi şi instalaţi-le din meniul Tools-> Addons manager. Puteţi afla mai multe despre oricare dintre ele făcând clic pe linkurile de mai jos. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Dacă nu este furnizat versiunea dvs. de FreeCAD, instalați pachetul de documentație FreeCAD pentru a obține hub-rile de documentare, help pentru atelier și documentarea comenzilor individuale fără o conexiune la internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Imposibil de recuperat informații de la GitHub. <a href="EnableDownload.py"> permiteți accesului FreeCAD pe internet </a> și reîncărcați pagina de pornire. - + Recent commits Cele mai recente commits - + See all commits on github A se vedea toate commits pe github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Puteți configura afișarea unui dosar personalizat aici pentru afișare în meniul Edit-> Preferences-> Start-> Folder personalizat - + version versiunea - + build compilare - + Create new... Creează nou... - + Unknown Necunoscut - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Pentru a deschide una dintre legăturile de mai sus în browserul dvs., faceți clic dreapta -> deschideți într-un browser extern - + Creation date Creat la data - + Last modification Ultima modificare - + Size Dimensiune - + Author Autor - + License Licenţă - + File path File path - + Notes Note - + Open start page preferences Deschide preferințele paginii de start @@ -308,7 +318,7 @@ de documentare, help pentru atelier și documentarea comenzilor individuale făr Workbench - + Start page Pagină principală diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ru.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_ru.ts index d396f208e3..69912862b5 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_ru.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_ru.ts @@ -69,237 +69,247 @@ Стандартная деталь - + Create a part with the Part Design workbench Создать деталь на верстаке для проектирования деталей - + + Assembly + Сборка + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D эскиз - + Create a 2D draft with the Draft workbench Создать 2D эскиз на верстаке эскизов - + BIM/Architecture BIM/Архитектура - + Create an architecture project Создать архитектурный проект - + Recent files Недавние файлы - + Tip Совет - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Отрегулировать количество последних файлов, отображаемых здесь, можно в меню Правка -> Настройки -> Общие -> Размер списка последних файлов - + Examples Примеры - + General documentation Основная документация - + User hub Пользовательский центр - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Этот раздел содержит полезную для пользователей FreeCAD справочную документацию: список всех верстаков, подробные инструкции о том, как установить и использовать приложение FreeCAD, учебники и всё, что Вам нужно для начала. - + Power users hub Центр опытных пользователей - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. В этом разделе собрана документация для продвинутых пользователей и людей, заинтересованных в написании python скриптов. Вы также найдете тут репозиторий макросов, инструкции о том, как установить и использовать их и дополнительные сведения о настройке FreeCAD для ваших конкретных потребностей. - + Developers hub Центр разработчиков - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Этот раздел содержит материалы для разработчиков: как скомпилировать FreeCAD самому, как структурирован исходный код FreeCAD + как ориентироваться в нём и как разрабатывать новые верстаки, и/или встраивать FreeCAD в собственные приложения. - + Manual Руководство - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Руководство пользователя FreeCAD - это еще один, более последовательный способ представления информации, содержащейся в этой вики. Оно составлено для чтения, как книга, и будет постепенно знакомить вас со многими другими страницами из центров выше. Также доступна <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"> электронная версия книги </a>. - + Workbenches documentation Документация верстаков - + These are the help pages of all the workbenches currently installed on this computer. Это страницы справки для всех верстаков, установленных сейчас на этом компьютере. - + Getting help from the community Получение помощи от сообщества - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. <a href="https://forum.freecad.org">Форум FreeCAD</a> — отличное место, где можно получить помощь от других пользователей и разработчиков FreeCAD. На форуме имеется множество разделов для различных типов вопросов и тем обсуждения. Если у вас есть сомнения, напишите об этом в более общем разделе <a href="https://forum.freecad.org/viewforum.php?f=3">Справка по использованию FreeCAD</a>. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Если это ваша первая публикация на форуме, сначала ознакомьтесь с <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">правилами публикаций!</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD также предоставляет публичный <a href="https://www.freecad.org/tracker">трэкер ошибок</a>, где любой может сообщить об ошибке и предложить новые функции. Для избежания лишней работы и ускорения решения замеченной вами ошибки, перед отаправкой ознакомьтесь с <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">руководством по отправке сообщений об ошибках</a>. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Ниже приведены последние изменения, добавленные в <a href="http://github.com/FreeCAD/FreeCAD/">Исходный код FreeCAD</a>. Они могут быть еще не отражены в версии FreeCAD, которую вы используете в данный момент. Проверьте <a href="https://www.freecad.org/wiki/Downloads">доступные для загрузки варианты</a> если вы хотите получить версию для разработки. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Последние сообщения на <a href="https://forum.freecad.org">форуме FreeCAD </a>: - + Available addons Доступные расширения - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Ниже перечислен список доступных дополнительных верстаков, которые могут быть добавлены в Ваш FreeCAD. Просматривайте и устанавливайте их из меню Инструменты -> Менеджер дополнений. Вы можете узнать больше о любом из них, нажав на ссылки ниже. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Если в комплекте с вашей версией FreeCAD нет документации, установите пакет документации FreeCAD, чтобы получить уголки пользователей, руководства пользователя по верстакам и документацию по отдельным командам без подключения к Интернету. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Не удалось получить информацию из GitHub. <a href="EnableDownload.py">Предоставьте для FreeCAD доступ в Интернет</a> и перезагрузите стартовую страницу. - + Recent commits Последние коммиты - + See all commits on github Просмотреть все коммиты на github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Можно настроить пользовательскую папку для отображения здесь в меню Правка -> Настройки -> Start -> Показать дополнительную папку - + version версия - + build сборка - + Create new... Создать новый... - + Unknown Неизвестно - + Forum Форум - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Чтобы открыть любую из этих ссылок в вашем интернет браузере, щелкните правой кнопкой мыши -> Открыть во внешнем браузере - + Creation date Дата создания - + Last modification Последнее изменение - + Size Размер - + Author Автор - + License Лицензия - + File path Путь к файлу - + Notes Заметки - + Open start page preferences Открыть настройки стартовой страницы @@ -307,7 +317,7 @@ Workbench - + Start page Стартовая страница diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sl.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_sl.ts index 400db09e98..7f4cc9de8b 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_sl.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_sl.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Assembly + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Nasvet - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Število tukaj prikazanih nedavnih datotek lahko prilagodite v meniju Uredi -> Prednastavitve -> Splošne nastavitve -> Velikost seznama nedavnih datotek - + Examples Primeri - + General documentation Splošna dokumentacija - + User hub Uporabniško središče - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Ta oddelek vsebuje dokumentacijo, ki je v splošnem koristna za uporabnike programa FreeCAD: seznam vseh delovnih okolij, podrobnejša navodila za namestitev in uporabo programa FreeCAD, učne vaje in vse, kar potrebujete za začetek. - + Power users hub Središče za napredne uporabnike - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Ta oddelek zbira dokumentacijo za napredne uporabnike in tiste, ki se zanimajo za pisanje python skript. Našli boste tudi skladišče makrov, navodila za njihovo namestitev in uporabo ter več informacij o prilagajanju programa FreeCAD vašim specifičnim potrebam. - + Developers hub Središče za razvijalce - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Ta oddelek vsebuje vsebino za razvijalce: Kako sami zgradite FreeCAD, kako je strukturirana FreeCAD izvorna koda + kako krmariti po njej ter kako razviti novo delovno okolje in/, ali vgraditi FreeCAD v vašo aplikacijo. - + Manual Priročnik - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD priročnik je še en, bolj premočrten način predstavitve informacij iz te "wiki" strani. Pripravljen je kot knjiga in vam bo predstavil številne druge strani oddelkov zgoraj. Na voljo so tudi <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-knjiga različice</a>. - + Workbenches documentation Dokumentacija delovnih okolij - + These are the help pages of all the workbenches currently installed on this computer. To so strani za pomoč vseh delovnih okolij, ki so trenutno nameščeni na tem računalniku. - + Getting help from the community Pridobi pomoč od skupnosti - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Če prvič objavljate na forumu, najprej <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">preberite smernice</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD upravlja tudi z javnim <a href="https://www.freecad.org/tracker">sledilnikom hroščev</a>, kjer lahko vsak objavi ugotovljene napake in predlaga nove zmožnosti. V izognitev odvečnemu delu in za povečanje možnosti, da bo napaka odpravljena, pred objavljanjem preberite <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">vodič prijave hrošča</a>. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Spodaj so zadnje spremembe na <a href="http://github.com/FreeCAD/FreeCAD/">FreeCADovi izvorni kodi</a>. Te spremembe lahko še niso vključene v različici FreeCADa, ki jo trenutno uporabljate. Preverite <a href="https://www.freecad.org/wiki/Downloads">razpoložljive možnosti</a>, če želite pridobiti razvojno različico. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Zadnje objave na <a href="https://forum.freecad.org">FreeCADovem forumu</a>: - + Available addons Razpoložljivi dodatki - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Spodaj je seznam razpoložljivih delovnih okolij, ki so lahko dodane FreeCAD namestitvi. Poiščite in namestite jih z menija Orodja -> Upravljalnik dodatkov. Več lahko izveste o katerem koli s klikom na spodnje povezave. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Če ni priložena vaši FreeCAD različici, namestite paket FreeCAD dokumentacije, s katerim dobite zvezdišča dokumentacije, pomoč o delovnih okoljih in dokumentacijo o posameznih ukazih, vse brez spletne povezave. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Prinašanje podatkov s strani GitHub ni mogoče. <a href="EnableDownload.py">Omogoči FreeCAD-u dostop do interneta</a> in znova naloži začetno stran. - + Recent commits Nedavni prispevki - + See all commits on github Poglej vse prispevke na githubu - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Mapo po meri, ki bo prikazana tukaj, lahko nastavite v meniju Uredi -> Prednastavitve -> Začetek -> Prikaži dodatno mapo - + version različica - + build zgradi - + Create new... Ustvari novo... - + Unknown Neznano - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Za odpretje katerekoli od zgornjih povezav v vašem brskalniku, Desni-klik -> Odpri v zunanjem brskalniku - + Creation date Datum nastanka - + Last modification Zadnje spremembe - + Size Velikost - + Author Avtor - + License Dovoljenje - + File path File path - + Notes Opombe - + Open start page preferences Odpri prednastavitve začetne strani @@ -307,7 +317,7 @@ Workbench - + Start page Začetna stran diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sr-CS.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_sr-CS.ts index 8c17f01e58..7d52b66c2f 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_sr-CS.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_sr-CS.ts @@ -66,240 +66,250 @@ Standard Part - Obični deo + Deo - + Create a part with the Part Design workbench Napravi deo u Part Design radnom okruženju - + + Assembly + Sklop + + + + Create an assembly project + Napravi projekat sklopa + + + 2D Draft 2D crtež - + Create a 2D draft with the Draft workbench Napravi 2D crtež u Draft radnom okruženju - + BIM/Architecture BIM/Arhitektura - + Create an architecture project Napravi arhitektonski projekat - + Recent files Recent files - + Tip Savet - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Podesi broj nedavnih datoteka koje će biti prikazane ovde u meniju Uredi -> Podešavanja -> Opšte -> Veličina liste nedavno otvaranih datoteka - + Examples Primeri - + General documentation Opšta dokumentacija - + User hub Čvorište korisnika - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Ovaj odeljak sadrži opštu dokumentaciju korisnu za korisnike FreeCAD-a: listu svih radnih okruženja, detaljna uputstva o tome kako da instaliraš i koristiš FreeCAD program, tutorijale i sve što je potrebno za početak. - + Power users hub Čvorište naprednih korisnika - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Ovaj odeljak prikuplja dokumentaciju za napredne korisnike i ljude zainteresovane za pisanje python skripti. Tamo ćeš takođe pronaći spremište makro-a, uputstva o tome kako da ih instaliraš i koristiš, i više informacija o prilagođavanju FreeCAD-a tvojim specifičnim potrebama. - + Developers hub Čvorište programera - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Ovaj odeljak sadrži materijal za programere: Kako sam kompajlirati FreeCAD, kako je strukturiran izvorni kod FreeCAD-a + kako se kretati po njemu, kako razviti nove radne površine i/ili ugraditi FreeCAD u svoju aplikaciju. - + Manual Uputstvo - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Priručnik za FreeCAD je još jedan, linearniji način za predstavljanje informacija sadržanih u ovoj wiki. Napravljen je da se čita kao knjiga i polako će te upoznati sa mnogim drugim stranicama iz gore navedenih čvorišta. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">verzije e-knjiga</a>su takođe dostupne. - + Workbenches documentation Dokumentacija radnih okruženja - + These are the help pages of all the workbenches currently installed on this computer. Ovo su stranice pomoći za sva radna okruženja koja su trenutno instalirana na ovom računaru. - + Getting help from the community Dobijanje pomoći od FreeCAD zajednice - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Ako po prvi put objavljuješ na forumu, kao prvo <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">pročitaj smernice</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD takođe održava zajednica <a href="https://www.freecad.org/tracker">pratioci grešaka</a> gde svako može da prijavi greške i predloži nove funkcije. Da izbegneš suvišan posao i da sa najvećom verovatnoćom tvoj problem bude rešen, prvo pročitaj <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">uputstvo o prijavi greške</a> pre objavljivanja. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Ispod se nalaze poslednje izmene dodate <a href="http://github.com/FreeCAD/FreeCAD/">izvornom kodu FreeCAD-a</a>. Ove promene se možda još uvek neće odraziti na verziju FreeCAD-a koju trenutno koristiš. Proveri <a href="https://www.freecad.org/wiki/Downloads">dostupne opcije</a> ako želiš da nabaviš razvojnu verziju. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Najnovije objave na <a href="https://forum.freecad.org">FreeCAD forumu</a>: - + Available addons Dostupni dodatni moduli - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Ispod je spisak dostupnih dodatnih radnih okruženja koja se mogu dodati u tvoju instalaciju FreeCAD-a. Pregledaj ih i instaliraj iz menija „Alati → Menadžer dodataka“. Možeš saznati više o bilo kom od njih klikom na linkove ispod. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Ako nije u paketu sa tvojom verzijom FreeCAD-a, instaliraj paket dokumentacije za FreeCAD da bi dobio čvorišta dokumentacije, pomoć za radno okruženje i dokumentaciju o pojedinačnim komandama bez internet veze. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Ne mogu da dovučem informacije sa GitHaba. <a href="EnableDownload.py">Ovlasti FreeCAD da pristupi internetu</a> i da ponovo učita početnu stranicu. - + Recent commits Nedavno verifikovane promene - + See all commits on github Vidi sve verifikovane promene na github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Možeš da konfigurišeš sopstvenu fasciklu da se prikazuje ovde u meniju Uredi -> Podešavanja -> Start -> Prikaži dodatni folder - + version verzija - + build sastav - + Create new... Napravi novi... - + Unknown Nepoznato - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Da bi otvorio bilo koju od gornjih veza u veb-pregledaču, klikni desnim tasterom miša na link -> Otvori u spoljnom veb-pregledaču - + Creation date Datum stvaranja - + Last modification Poslednja izmena - + Size Veličina - + Author Autor - + License Licenca - + File path File path - + Notes Napomene - + Open start page preferences Otvori podešavanje početne stranice @@ -307,7 +317,7 @@ Workbench - + Start page Početna stranica diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sr.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_sr.ts index e884bcbc0c..cac8ac6a16 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_sr.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_sr.ts @@ -66,240 +66,250 @@ Standard Part - Обични део + Део - + Create a part with the Part Design workbench Направи део у Part Design радном окружењу - + + Assembly + Скупштина + + + + Create an assembly project + Направи пројекат склопа + + + 2D Draft 2D цртеж - + Create a 2D draft with the Draft workbench Направи 2D цртеж у Draft радном окружењу - + BIM/Architecture БИМ/Архитектура - + Create an architecture project Направи архитектонски пројекат - + Recent files Recent files - + Tip Савет - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Подеси број недавних датотека које ће бити приказане овде у менију Уреди -> Подешавања -> Опште -> Величина листе недавнo отвараних датотека - + Examples Примери - + General documentation Општа документација - + User hub Чвориште корисника - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Овај одељак садржи општу документацију корисну за кориснике FreeCAD-а: листу свих радних окружења, детаљна упутства о томе како да инсталираш и користиш FreeCAD програм, туторијале и све што је потребно за почетак. - + Power users hub Чвориште напредних корисника - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Овај одељак прикупља документацију за напредне кориснике и људе заинтересоване за писање python скрипти. Тамо ћеш такође пронаћи спремиште макро-а, упутства о томе како да их инсталираш и користиш, и више информација о прилагођавању FreeCAD-а твојим специфичним потребама. - + Developers hub Чвориште програмера - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Овај одељак садржи материјал за програмере: Како сам компајлирати FreeCAD, како је структуриран изворни код FreeCAD-а + како се кретати по њему, како развити нове радне површине и/или уградити FreeCAD у своју апликацију. - + Manual Упутство - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Приручник за FreeCAD је још један, линеарнији начин за представљање информација садржаних у овој wiki. Направљен је да се чита као књига и полако ће те упознати са многим другим страницама из горе наведених чворишта. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">верзије е-књига</a>су такође доступне. - + Workbenches documentation Документација радних окружења - + These are the help pages of all the workbenches currently installed on this computer. Ово су странице помоћи за сва радна окружења која су тренутно инсталирана на овом рачунару. - + Getting help from the community Добијање помоћи од FreeCAD заједнице - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Ако по први пут објављујеш на форуму, као прво <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">прочитај смернице</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD такође одржава заједница <a href="https://www.freecad.org/tracker">пратиоци грешака</a> где свако може да пријави грешке и предложи нове функције. Да избегнеш сувишан посао и да са највећом вероватноћом твој проблем буде решен, прво прочитај <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">упутство о пријави грешке</a> пре објављивања. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Испод се налазе последње измене додате <a href="http://github.com/FreeCAD/FreeCAD/">изворном коду FreeCAD-а</a>. Ове промене се можда још увек неће одразити на верзију FreeCAD-а коју тренутно користиш. Провери <a href="https://www.freecad.org/wiki/Downloads">доступне опције</a> ако желиш да набавиш развојну верзију. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Најновије објаве на <a href="https://forum.freecad.org">FreeCAD форуму</a>: - + Available addons Доступни додатни модули - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Испод је списак доступних додатних радних окружења која се могу додати у твоју инсталацију FreeCAD-а. Прегледај их и инсталирај из менија „Алати → Менаџер додатака“. Можеш сазнати више о било ком од њих кликом на линкове испод. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Ако није у пакету са твојом верзијом FreeCAD-а, инсталирај пакет документације за FreeCAD да би добио чворишта документације, помоћ за радно окружење и документацију о појединачним командама без интернет везе. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Не могу да довучем информације са ГитХаба. <a href="EnableDownload.py">Овласти FreeCAD да приступи интернету</a> и да поново учита почетну страницу. - + Recent commits Недавно верификоване промене - + See all commits on github Види све верификоване промене на github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Можеш да конфигуришеш сопствену фасциклу да се приказује овде у менију Уреди -> Подешавања -> Старт -> Прикажи додатни фолдер - + version верзија - + build састав - + Create new... Направи нови... - + Unknown Непознато - + Forum Форум - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Да би отворио било коју од горњих веза у веб-прегледачу, кликни десним тастером миша на линк -> Отвори у спољном веб-прегледачу - + Creation date Датум стварања - + Last modification Последња измена - + Size Величина - + Author Аутор - + License Лиценца - + File path File path - + Notes Напомене - + Open start page preferences Отвори подешавање почетне странице @@ -307,7 +317,7 @@ Workbench - + Start page Почетна страница diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.ts index 8f7775d65e..b9f49eb1e6 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Ihopsättning + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Senaste filer - + Tip Tips - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Ange antal nyligen öppnade filer som visas genom menyn Redigera -> Alternativ... -> Allmänt -> Storlek på listan för senast öppnade filer - + Examples Exempel - + General documentation Allmän dokumentation - + User hub Användar-nav - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Detta avsnitt innehåller dokumentation användbar för FreeCAD-användare i allmänhet: en lista över alla arbetsytor, detaljerade instruktioner om hur man installerar och använder programmet FreeCAD, självstudier och allt du behöver för att komma igång. - + Power users hub Expert-nav - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Detta avsnitt samlar dokumentation för avancerade användare och personer intresserade av att skriva Python-skript. Du hittar också ett förråd för makron, instruktioner om hur man installerar och använder dem, och mer information om hur du anpassar FreeCAD till dina specifika behov. - + Developers hub Utvecklar-nav - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Detta avsnitt innehåller material för utvecklare: Hur du kompilerar FreeCAD själv, hur FreeCADs källkod är strukturerad + hur man navigerar i den, hur man utvecklar nya arbetsytor och/eller bygger in FreeCAD in ditt egna program. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD-manualen är ett annat, mer linjärt sätt att presentera informationen i denna wiki på. Den är gjord för att läsas som en bok och introducerar dig till många andra sidor från naven ovan. Det finns även <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-bokversioner</a> tillgängliga. - + Workbenches documentation Dokumentation för arbetsytor - + These are the help pages of all the workbenches currently installed on this computer. Detta är hjälpsidor för alla de arbetsytor som är installerade på datorn. - + Getting help from the community Få hjälp från intressegruppen - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons Tillgängliga tillägg - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Nedan är en lista över tillgängliga extra arbetsytor som kan läggas till i din FreeCAD-installation. Bläddra bland och installera dem från menyn Verktyg -> Tilläggshanterare. Du kan lära dig mer om dem genom att klicka på länkarna nedan. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Om det inte kom med din FreeCAD-installation, installera paketet FreeCAD-dokumentation för att kunna använda dokumentations-naven, hjälp för arbetsytor och dokumentation om individuella kommandon utan en internet-uppkoppling. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Kan inte hämta information från GitHub. <a href="EnableDownload.py">Tillåt FreeCAD att kunna nå internet</a> och ladda om startsidan. - + Recent commits Nyligen utförda insättningar (commits) - + See all commits on github Se alla insättningar (commits) på GitHub - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Du kan konfigurera en egen mapp som visas här i menyn Redigera -> Alternativ -> Start -> Visa extra mapp - + version version - + build build - + Create new... Skapa ny... - + Unknown Okänd - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser För att öppna någon av länkarna ovanför i din webbläsare, högerklicka och välj "Öppna i extern webbläsare" - + Creation date Skapandedatum - + Last modification Senaste ändring - + Size Storlek - + Author Upphovsman - + License Licens - + File path Filsökväg - + Notes Noteringar - + Open start page preferences Open start page preferences @@ -307,7 +317,7 @@ Workbench - + Start page Startsida diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_tr.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_tr.ts index 8d001b88ab..e2ac4a779b 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_tr.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_tr.ts @@ -69,237 +69,247 @@ Standart Parça - + Create a part with the Part Design workbench Parça Tasarımı tezgahı ile parça oluştur - + + Assembly + Montaj + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Taslak - + Create a 2D draft with the Draft workbench Taslak tezgahı ile 2D taslak oluştur - + BIM/Architecture BIM/Mimari - + Create an architecture project Mimari yapı projesi oluştur - + Recent files Son dosyalar - + Tip İpucu - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Menüde gösterilecek son dosyaların sayısını, Düzenle -> Tercihler -> Genel -> son dosya listesi boyutu buradan ayarlayın - + Examples Örnekler - + General documentation Genel belgeler - + User hub Kullanıcı merkezi - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Bu bölüm, genel olarak FreeCAD kullanıcıları için yararlı belgeleri içerir: tüm çalışma tezgahlarının bir listesi, FreeCAD uygulamasını nasıl kuracağınıza ve kullanacağınıza ilişkin ayrıntılı talimatlar, öğretici belgeler ve başlamak için ihtiyacınız olan her şeyi. - + Power users hub Yönetici Merkezi - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Bu bölüm, ileri düzey kullanıcılar ve python komut dosyalarını yazmakla ilgilenen kişiler için belgeleri barındırır. Ayrıca orada bir makro deposu, makroları nasıl kuracağınıza ve kullanacağınıza ilişkin talimatları ve FreeCAD'i özel ihtiyaçlarınıza göre nasıl özelleştirebileceğiniz hakkında daha fazla bilgi bulacaksınız. - + Developers hub Geliştirici Merkezi - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Bu bölüm geliştiriciler için malzeme içerir: FreeCAD'i nasıl derleyeceğinizi, FreeCAD kaynak kodunun nasıl yapılandırıldığını + içinde nasıl gezinileceğini, yeni çalışma tezgahlarının nasıl geliştirileceğini ve / veya FreeCAD'in kendi uygulamasına nasıl yerleştirileceğini. - + Manual Kullanım kılavuzu - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD kılavuzu, wiki sayfasında bulunan bilgileri sunmanın başka, daha doğrusal bir yoludur. Kılavuz, bir kitap gibi okunacak şekilde ve sizi yukarı bölümden diğer birçok sayfaya yönlendirecektir. <a href = "https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"> e-kitap sürümleri </a> de mevcuttur. - + Workbenches documentation Çalışma Tezgahları Belgeleri - + These are the help pages of all the workbenches currently installed on this computer. Bunlar şu anda bu bilgisayarda yüklü olan tüm tezgahların yardım sayfalarıdır. - + Getting help from the community Topluluktan yardım al - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Eğer bu, forumda yayınlayacağınız ilk gönderi ise, öncelikle < A href="http://forum.freecadweb.org/viewtopic.php?f=3&t=2264" > yönergeleri okuyun! < / a >! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: <a href="https://forum.freecad.org">FreeCAD forum</a> Sayfasındaki son gönderiler: - + Available addons Mevcut eklentiler - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Aşağıda, FreeCAD kurulumunuza eklenebilecek mevcut ekstra çalışma tezgahlarının bir listesi bulunmaktadır. Araçlar -> Eklenti yöneticisi menüsünden göz atın ve yükleyin. Aşağıdaki bağlantıları tıklayarak bunlardan herhangi biri hakkında daha fazla bilgi edinebilirsiniz. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. FreeCAD sürümünüzle birlikte yüklü gelmediyse, dokümantasyon merkezi, çalışma tezgahı yardımı ve kişisel komut belgelerine sahip olmak ve internet bağlantısı olmadan kullanmak için FreeCAD dokümantasyon paketini kurun. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. GitHub'tan bilgi alınamıyor. <a href="EnableDownload.py"> İnternete erişmek için FreeCAD'i yetkilendirin </a> ve Başlangıç sayfasını yeniden yükleyin. - + Recent commits Son işlemler - + See all commits on github Github'daki tüm işlemleri görün - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Özel bir klasörü burada görüntülemek için menüden Düzenle -> Seçenekler -> Başlat -> ek klasörleri göster'e gitmelisiniz - + version sürüm - + build yapı - + Create new... Yeni oluştur... - + Unknown Bilinmeyen - + Forum Forum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Masaüstü tarayıcınızda yukarıdaki bağlantılardan herhangi birini açmak için, Sağ tıklayın -> Harici tarayıcıda aç seçeneğini seçin - + Creation date Oluşturma tarihi - + Last modification Son düzenleme - + Size Boyut - + Author Yazar - + License Lisans - + File path File path - + Notes Notlar - + Open start page preferences Başlangıç sayfası tercihlerini aç @@ -307,7 +317,7 @@ Workbench - + Start page Başlangıç sayfası diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_uk.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_uk.ts index a1d73450e0..2c691bd2a5 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_uk.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_uk.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Збірка + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Порада - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Налаштувати кількість останніх файлів, які будуть показані тут, можна в меню Правка -> Налаштування -> Загальні -> Розмір списку останніх файлів - + Examples Приклади - + General documentation Загальна документація - + User hub Розділ для користувачів - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Цей розділ містить документацію, корисну для користувачів FreeCAD загалом: перелік усіх робочих середовищ, детальні інструкції для встановлення та використання додатку FreeCAD, навчальні посібники та все, що вам потрібно для початку. - + Power users hub Розділ для досвідчених користувачів - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. У цьому розділі зібрана документація для досвідчених користувачів і людей, зацікавлених в написанні скриптів python. Ви також знайдете там сховище макросів, інструкції щодо їх встановлення, використання та додаткову інформацію про налаштування FreeCAD під ваші конкретні потреби. - + Developers hub Розділ для розробників - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Цей розділ містить матеріали для розробників: Як самостійно встановити FreeCAD, як структурувати початковий код FreeCAD + як орієнтуватися в ньому, як розробляти нові робочі середовища та / або вбудовувати FreeCAD у свій власний додаток. - + Manual Посібник - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. Посібник із FreeCAD - це інший, більш лінійний спосіб представлення інформації з вікі. Він створений для читання як книга, та поступово познайомить вас з багатьма іншими сторінками з вищезгаданих розділів. Також доступний у форматі <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">електронної книги</a>. - + Workbenches documentation Документація робочих середовищ - + These are the help pages of all the workbenches currently installed on this computer. Це сторінки допомоги всіх робочих середовищ, встановлених на цьому комп’ютері. - + Getting help from the community Отримати допомогу від спільноти - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! Якщо це буде ваш перший допис на форумі, спочатку обовʼязково <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">прочитайте рекомендації</a>. - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: Останні дописи на <a href="https://forum.freecad.org">форумі FreeCAD</a>: - + Available addons Доступні доповнення - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Нижче наведено список доступних додаткових робочих середовищ, які можна додати до інсталяції FreeCAD. Перегляньте та встановіть їх з меню Інструменти -> Менеджер додатків. Ви можете дізнатись більше про будь-яке з них, натиснувши посилання нижче. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Встановіть пакет документації FreeCAD (якщо він не входить до комплекту постачання вашої версії FreeCAD), щоб отримати пакети документації, довідку з робочих середовищ та документацію за окремими командами без підключення до Інтернету. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Не вдається отримати інформацію з GitHub. <a href="EnableDownload.py"> Авторизуйте FreeCAD з доступом до Інтернету </a>та перезавантажте стартову сторінку. - + Recent commits Останні комміти - + See all commits on github Переглянути всі комміти на GitHub - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Ви можете налаштувати показ теки користувача в меню Правка -> Налаштування -> Пуск -> Показати додаткову теку - + version версія - + build збірка - + Create new... Створити новий... - + Unknown Невідомо - + Forum Форум - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Щоб відкрити будь-яке з наведених вище посилань у браузері вашого робочого столу, клацніть правою кнопкою миші -> Відкрити у зовнішньому браузері - + Creation date Дата створення - + Last modification Остання зміна - + Size Розмір - + Author Автор - + License Ліцензія - + File path File path - + Notes Нотатки - + Open start page preferences Відкрити налаштування стартової сторінки @@ -307,7 +317,7 @@ Workbench - + Start page Стартова сторінка diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.ts index 33bbbbacee..1a5c2dabcc 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + Assembly + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip Consell - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list Ajusteu el nombre de fitxers recents que es mostren ací en el menú Edita->Preferències->General->Mida de la llista de fitxers recents - + Examples Exemples - + General documentation Documentació general - + User hub Centre d'activitat de l'usuari - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. Aquesta secció conté documentació útil per als usuaris de FreeCAD en general: una llista de tots els bancs de treball, instruccions detallades sobre com instal·lar i utilitzar l'aplicació FreeCAd, tutorials i tot allò que es necessita per a començar. - + Power users hub Centre d'activitat dels usuaris experimentats - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. Aquesta secció recopila documentació per a usuaris avançats i persones interessades en crear scripts de Python. També trobarà un repositori de macros, instruccions sobre com instal·lar-les i utilitzar-les, i més informació sobre com personalitzar FreeCAD per a les seues necessitats específiques. - + Developers hub Centre d'activitat de desenvolupadors - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. Aquesta secció conté materials per a desenvolupadors: com compilar FreeCAD, com està estructurat el codi font de FreeCAD + com navegar per ell, i com desenvolupar nous bancs de treball, i/o incrustar FreeCAD en la vostra pròpia aplicació. - + Manual Manual - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. El manual de FreeCAD és una altra forma més lineal de presentar la informació continguda en aquest wiki. Està fet per a ser llegit com un llibre i us introduirà gradualment en moltes altres pàgines dels centres d'activitat anteriors. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">versions de llibres anteriors</a> també estan disponibles. - + Workbenches documentation Documentació dels bancs de treballs - + These are the help pages of all the workbenches currently installed on this computer. Aquestes són les pàgines d'ajuda de tots els bancs de treball instal·lats actualment en aquest ordinador. - + Getting help from the community Obtín d'ajuda de la comunitat - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons Complements disponibles - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. A continuació es mostren una llista de bancs de treballs addicionals disponibles que es poden afegir a la vostra instal·lació de FreeCAD. Examineu-los i instal·leu-los des del menú Eines-> Administrador de complements. Pot obtenir més informació sobre qualsevol d'ells fent clic en els enllaços següents. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. Si no està inclòs en la seua versió de FreeCAD, instal·le el paquet de documentació de FreeCAD per a obtenir els centres de documentació, l'ajuda del banc de treball i la documentació d'ordres individuals sense connexió a Internet. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. No es pot obtindre informació de GitHub. <a href="EnableDownload.py">Autoritze FreeCAD a accedir a Internet</a> i torne a carregar la pàgina d'inici. - + Recent commits Últimes confirmacions - + See all commits on github Mostra tots els canvis de github - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder Podeu configurar una carpeta personalitzada per a mostrar ací en el menú Edita-> Preferències-> Inici-> Mostra carpeta addicional - + version versió - + build construeix - + Create new... Crea... - + Unknown Desconegut - + Forum Fòrum - + To open any of the links above in your desktop browser, Right-click -> Open in external browser Per a obrir qualsevol dels enllaços anteriors en el seu navegador d'escriptori, feu clic amb el botó dret del ratolí -> Obri en el navegador extern - + Creation date Data de creació - + Last modification Última modificació - + Size Mida - + Author Autor - + License Llicència - + File path File path - + Notes Notes - + Open start page preferences Open start page preferences @@ -307,7 +317,7 @@ Workbench - + Start page Pàgina d'inici diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.ts index f567d96731..fd623cf936 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + 装配 + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files 最近打开的文件 - + Tip 提示 - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list 调整要在菜单 "编辑" 中显示的最近文件的数量-> 首选项-> "常规" > "最近文件列表的大小" - + Examples 例子 - + General documentation 一般文件 - + User hub 用户中心 - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. 本节包含对 FreeCAD 用户普遍有用的文档: 所有工作台的列表、有关如何安装和使用 FreeCAD 应用程序、教程的详细说明以及入门所需的所有内容。 - + Power users hub 高级用户中心 - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. 本节收集高级用户和对编写 python 脚本感兴趣的人员的文档。您还可以在那里找到宏的存储库、有关如何安装和使用它们的说明, 以及有关根据您的特定需求自定义 FreeCAD 的详细信息。 - + Developers hub 开发人员中心 - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. 本节包含供开发人员使用的材料: 如何自己编译 FreeCAD, FreeCAD 源代码的结构, 以及如何浏览代码, 如何开发新的工作台以及/或在您自己的应用程序中嵌入 FreeCAD。 - + Manual 手册 - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. FreeCAD 手册是以另一种更直接方式来呈现包含在此维基中的信息。它是为了能像一本书一样阅读而制作的, 并将温和地从上面的各个中心向您介绍许多其他页面。 <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">电子书版本</a> 也可使用。 - + Workbenches documentation 工作台文档 - + These are the help pages of all the workbenches currently installed on this computer. 这些是当前安装在此计算机上的所有工作台的帮助页。 - + Getting help from the community 从社区获得帮助 - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. <a href="https://forum.freecad.org"> FreeCAD 论坛</a>是从其他 FreeCAD 用户和开发人员那里获得帮助的好地方。 该论坛有许多部分,讨论不同类型的问题和讨论主题。 如有疑问,请在<a href="https://forum.freecad.org/viewforum.php?f=3">使用 FreeCAD 的帮助</a> 部分中发布。 - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! 如果这是您第一次在论坛上发布,请务必先阅读 <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">指南</a>! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: <a href="https://forum.freecad.org">FreeCAD 论坛</a> 上的最新帖子: - + Available addons 可用的插件 - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. 下面是其他可用的工作台列表,可以添加到您的 FreeCAD 安装中。从菜单工具 -> 插件管理器浏览并安装它们。您可以通过点击下面的链接更多的了解这些工具。 - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. 如果未与您的 FreeCAD 版本捆绑在一起,请安装 FreeCAD 文档包以获取文档中心,工作台帮助和单独的命令文档,而无需连接因特网。 - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. 无法从 GitHub 获取信息。 <a href="EnableDownload.py">授权 FreeCAD 访问互联网</a> 并重新加载开始页面。 - + Recent commits 最近提交 - + See all commits on github 查看 github 上的所有提交 - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder 您可以在菜单编辑 -> 首选项 -> 开始 -> 显示额外文件夹中配置自定义文件夹 - + version 版本 - + build 构建 - + Create new... 新建... - + Unknown 未知的 - + Forum 论坛 - + To open any of the links above in your desktop browser, Right-click -> Open in external browser 要在桌面浏览器中打开上面的任何链接, 请右键单击-> 在外部浏览器中打开 - + Creation date 创建日期 - + Last modification 最后修改 - + Size 大小 - + Author 作者 - + License 授权许可 - + File path File path - + Notes 备注 - + Open start page preferences 打开起始页首选项 @@ -307,7 +317,7 @@ Workbench - + Start page 起始页 diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.ts index 9b261e6738..81093ccc33 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.ts @@ -69,237 +69,247 @@ Standard Part - + Create a part with the Part Design workbench Create a part with the Part Design workbench - + + Assembly + 程式集 + + + + Create an assembly project + Create an assembly project + + + 2D Draft 2D Draft - + Create a 2D draft with the Draft workbench Create a 2D draft with the Draft workbench - + BIM/Architecture BIM/Architecture - + Create an architecture project Create an architecture project - + Recent files Recent files - + Tip 提示 - + Adjust the number of recent files to be shown here in menu Edit -> Preferences -> General -> Size of recent file list 調整最近開啟的檔案數量,以在選單“編輯”->“偏好”->“一般”->“最近檔案清單的數量”中顯示在此處 - + Examples 範例 - + General documentation 使用者文件 - + User hub 使用者中心 - + This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started. - + Power users hub 超級使用者中心 - + This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs. - + Developers hub 開發人員中心 - + This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application. - + Manual 使用說明 - + The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. <a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details">e-book versions</a> are also available. - + Workbenches documentation 工作台文件 - + These are the help pages of all the workbenches currently installed on this computer. These are the help pages of all the workbenches currently installed on this computer. - + Getting help from the community 從社群取得協助 - + The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. The <a href="https://forum.freecad.org">FreeCAD forum</a> is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general <a href="https://forum.freecad.org/viewforum.php?f=3">Help on using FreeCAD</a> section. - + If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! If it is the first time you are posting on the forum, be sure to <a href="https://forum.freecad.org/viewtopic.php?f=3&t=2264">read the guidelines</a> first! - + FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. FreeCAD also maintains a public <a href="https://www.freecad.org/tracker">bug tracker</a> where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the <a href="https://forum.freecad.org/viewtopic.php?f=3&t=5236">bug submission guide</a> before posting. - + Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. Below are the latest changes added to the <a href="http://github.com/FreeCAD/FreeCAD/">FreeCAD source code</a>. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the <a href="https://www.freecad.org/wiki/Downloads">available options</a> if you wish to obtain a development version. - + The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: The latest posts on the <a href="https://forum.freecad.org">FreeCAD forum</a>: - + Available addons 可以使用的附加元件 - + Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -> Addons manager. You can learn more about any of them by clicking the links below. - + If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection. - + Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. Cannot fetch information from GitHub. <a href="EnableDownload.py">Authorize FreeCAD to access the internet</a> and reload the Start page. - + Recent commits 最近的提交 - + See all commits on github 查看 Github 上的所有提交 - + You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder You can configure a custom folder to display here in menu Edit -> Preferences -> Start -> Show additional folder - + version 版本 - + build 建立 - + Create new... 建立新的... - + Unknown 未知 - + Forum 討論區 - + To open any of the links above in your desktop browser, Right-click -> Open in external browser To open any of the links above in your desktop browser, Right-click -> Open in external browser - + Creation date 建立的日期 - + Last modification 最後修改 - + Size 尺寸 - + Author 作者 - + License 版權 - + File path File path - + Notes 備註 - + Open start page preferences 開啟開始頁的偏好設定 @@ -307,7 +317,7 @@ Workbench - + Start page 開始頁面 diff --git a/src/Mod/TechDraw/App/CMakeLists.txt b/src/Mod/TechDraw/App/CMakeLists.txt index 994a077017..7f2736df87 100644 --- a/src/Mod/TechDraw/App/CMakeLists.txt +++ b/src/Mod/TechDraw/App/CMakeLists.txt @@ -106,6 +106,8 @@ SET(Draw_SRCS DimensionFormatter.h GeometryMatcher.cpp GeometryMatcher.h + DimensionAutoCorrect.cpp + DimensionAutoCorrect.h DrawViewBalloon.cpp DrawViewBalloon.h DrawViewSection.cpp diff --git a/src/Mod/TechDraw/App/Cosmetic.cpp b/src/Mod/TechDraw/App/Cosmetic.cpp index 5b65996ff1..070999655a 100644 --- a/src/Mod/TechDraw/App/Cosmetic.cpp +++ b/src/Mod/TechDraw/App/Cosmetic.cpp @@ -173,6 +173,8 @@ void CosmeticEdge::initialize() m_geometry->setCosmeticTag(getTagAsString()); } +// TODO: not sure that this method should be doing the inversion. CV for example +// accepts input point as is. The caller should have figured out the correct points. TopoDS_Edge CosmeticEdge::TopoDS_EdgeFromVectors(const Base::Vector3d& pt1, const Base::Vector3d& pt2) { // Base::Console().Message("CE::CE(p1, p2)\n"); diff --git a/src/Mod/TechDraw/App/CosmeticExtension.h b/src/Mod/TechDraw/App/CosmeticExtension.h index 3b7f024dae..d55bf415bd 100644 --- a/src/Mod/TechDraw/App/CosmeticExtension.h +++ b/src/Mod/TechDraw/App/CosmeticExtension.h @@ -99,11 +99,6 @@ public: PyObject* getExtensionPyObject() override; -protected: -/* virtual void extHandleChangedPropertyName(Base::XMLReader &reader, */ -/* const char* TypeName, */ -/* const char* PropName);*/ - private: }; diff --git a/src/Mod/TechDraw/App/CosmeticVertex.cpp b/src/Mod/TechDraw/App/CosmeticVertex.cpp index c4cb055101..225c504b66 100644 --- a/src/Mod/TechDraw/App/CosmeticVertex.cpp +++ b/src/Mod/TechDraw/App/CosmeticVertex.cpp @@ -195,7 +195,7 @@ Base::Vector3d CosmeticVertex::rotatedAndScaled(const double scale, const double //! converts a point into its unscaled, unrotated form. If point is Gui space coordinates, //! it should be inverted (DU::invertY) before calling this method, and the result should be -//! inverted on return. +//! inverted back on return. Base::Vector3d CosmeticVertex::makeCanonicalPoint(DrawViewPart* dvp, Base::Vector3d point, bool unscale) { // Base::Console().Message("CV::makeCanonicalPoint(%s)\n", DU::formatVector(point).c_str()); diff --git a/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp b/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp new file mode 100644 index 0000000000..98d74fa48f --- /dev/null +++ b/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp @@ -0,0 +1,596 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/*************************************************************************** + * Copyright (c) 2023 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 * + * * + ***************************************************************************/ +// a class to validate and correct dimension references + +// the dimension reference auto correct algo: +// +// when a dimension is created, the shape of each reference is saved, so in addition +// to the dimensionedObject + subElement reference, we also keep a Part::TopoShape copy +// of the reference. +// +// when we later use that dimension, we check its references as follows: +// for each reference: +// // auto correct phase 1 +// if ref.currentGeometry == ref.savedGeometry: +// // the reference points to the same geometry as before, so we +// // so we consider this to be correct. same geometry, same index case. +// continue +// else: +// // search all the source shapes for a subelement with the exact same +// // geometry. same geometry, different index case. +// newRef = searchForExactSameGeometry(ref) // geometry matcher +// if newRef: +// // substitute the reference we just found in place of the old +// // reference +// replace(ref, newRef) +// else: +// // auto correct phase 2 +// // 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 +// // that to rebuild our reference. +// // we do not have a good algo for searchForMostSimilarGeometry() yet. +// newRef = searchForMostSimilarGeometry(ref) // geometry guesser +// if newRef: +// replace(ref, newRef) +// else: +// //we can't fix this + + +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include + +#include +#include +#include + +#include + +#include "GeometryMatcher.h" +#include "DimensionReferences.h" +#include "DimensionGeometry.h" +#include "DimensionAutoCorrect.h" +#include "DrawUtil.h" +#include "Preferences.h" + +using namespace TechDraw; +using DU = DrawUtil; + +//! true if references point to valid geometry and the valid geometry matches the +//! corresponding saved geometry. this method does not correct anything, it just +//! verifies if the references point to the same geometry as when the reference +//! was created. +bool DimensionAutoCorrect::referencesHaveValidGeometry(std::vector& referenceState) const +{ + // Base::Console().Message("DAC::referencesHaveValidGeometry()\n"); + + ReferenceVector refsAll = getDimension()->getEffectiveReferences(); + const std::vector savedGeometry = getDimension()->SavedGeometry.getValues(); + + if (savedGeometry.empty() || savedGeometry.size() != refsAll.size()) { + // this must be an old document without savedGeometry property. We can not + // validate the references in this case so we hope they are valid. + referenceState = std::vector(refsAll.size(), true); + return true; + } + + bool result {true}; + size_t iRef {0}; + for (auto& entry : refsAll) { + if (entry.hasGeometry()) { + // entry points to something, is it the correct geom? + if (isMatchingGeometry(entry, savedGeometry.at(iRef))) { + referenceState.emplace_back(true); + } + else { + result = false; + referenceState.emplace_back(false); + } + } + else { + result = false; + referenceState.emplace_back(false); + } + } + return result; +} + +//! try to correct references that point to non-existent geometry or when the saved +//! geometry does not match the current geometry the reference points to. +//! referenceState is the output of a previous use of referencesHaveValidGeometry. +bool DimensionAutoCorrect::autocorrectReferences(std::vector& referenceState, + ReferenceVector& repairedRefs) const +{ + // Base::Console().Message("DAC::autocorrectReferences()\n"); + if (!Preferences::autoCorrectDimRefs()) { + return false; + } + + bool result {true}; + ReferenceVector refsAll = getDimension()->getEffectiveReferences(); + const std::vector savedGeometry = getDimension()->SavedGeometry.getValues(); + if (savedGeometry.empty() || savedGeometry.size() != refsAll.size()) { + // this must be an old document without savedGeometry property. We can not + // validate the references in this case. + return false; + } + + std::vector referenceGeometry; + for (auto& entry : refsAll) { + if (entry.hasGeometry()) { + referenceGeometry.push_back(entry.asTopoShape()); + } + else { + referenceGeometry.push_back(Part::TopoShape()); + } + } + + size_t iRef {0}; + for (const auto& state : referenceState) { + if (state) { + // ref points to valid geometry that matches saved geometry + referenceState.at(iRef) = true; + repairedRefs.push_back(refsAll.at(iRef)); + iRef++; + continue; + } + + Part::TopoShape temp = savedGeometry.at(iRef); + if (temp.isNull()) { + result = false; + referenceState.at(iRef) = false; + repairedRefs.push_back(refsAll.at(iRef)); + iRef++; + // we could exit here instead of checking all the refs? + continue; + } + + // this ref does not point to valid geometry or + // the geometry it points to does not match the saved geometry + + ReferenceEntry fixedRef = refsAll.at(iRef); + + // first, look for an exact match to the saved geometry + bool success = fix1GeomExact(fixedRef, savedGeometry.at(iRef).getShape()); + if (success) { + // we did find a match + referenceState.at(iRef) = true; + repairedRefs.push_back(fixedRef); + iRef++; + continue; + } + + // we did not find an exact match, so check for an Similar match + success = fix1GeomSimilar(fixedRef, savedGeometry.at(iRef).getShape()); + if (success) { + // we did find an Similar match + referenceState.at(iRef) = true; + repairedRefs.push_back(fixedRef); + iRef++; + continue; + } + + // we did not find an Similar match the geometry + result = false; + referenceState.at(iRef) = false; + repairedRefs.push_back(fixedRef); + iRef++; + // we could exit here + } + + return result; +} + +//! fix a single reference with an exact match to geomToFix +bool DimensionAutoCorrect::fix1GeomExact(ReferenceEntry& refToFix, TopoDS_Shape geomToFix) const +{ + // Base::Console().Message("DAC::fix1GeomExact()\n"); + ReferenceEntry fixedRef = refToFix; + Part::TopoShape topoShapeToFix(geomToFix); + bool success {false}; + if (refToFix.is3d()) { + if (!refToFix.getObject() && m_3dObjectCache.empty()) { + return false; + } + if (geomToFix.ShapeType() == TopAbs_VERTEX) { + success = findExactVertex3d(refToFix, topoShapeToFix); + } + else { + success = findExactEdge3d(refToFix, topoShapeToFix); + } + } + else { + if (geomToFix.ShapeType() == TopAbs_VERTEX) { + success = findExactVertex2d(refToFix, topoShapeToFix); + } + else { + success = findExactEdge2d(refToFix, topoShapeToFix); + } + } + return success; +} + + +//! fix a single reference with an Similar match to geomToFix +bool DimensionAutoCorrect::fix1GeomSimilar(ReferenceEntry& refToFix, TopoDS_Shape geomToFix) const +{ + // Base::Console().Message("DAC::fix1GeomSimilar()\n"); + Part::TopoShape topoShapeToFix(geomToFix); + bool success {false}; + if (refToFix.is3d()) { + if (!refToFix.getObject() && m_3dObjectCache.empty()) { + // can't fix this. nothing to compare. + return false; + } + if (geomToFix.ShapeType() == TopAbs_VERTEX) { + success = findSimilarVertex3d(refToFix, topoShapeToFix); + } + else { + success = findSimilarEdge3d(refToFix, topoShapeToFix); + } + } + else { + if (geomToFix.ShapeType() == TopAbs_VERTEX) { + success = findSimilarVertex2d(refToFix, topoShapeToFix); + } + else { + success = findSimilarEdge2d(refToFix, topoShapeToFix); + } + } + return success; +} + + +//! search the view for a 2d vertex that is the same as the saved reference geometry +//! and return a reference pointing to the matching vertex +bool DimensionAutoCorrect::findExactVertex2d(ReferenceEntry& refToFix, + Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findExactVertex2d()\n"); + getMatcher()->setPointTolerance(EWTOLERANCE); + auto refObj = refToFix.getObject(); + auto refDvp = dynamic_cast(refObj); + if (refDvp) { + ReferenceEntry fixedRef = searchViewForVert(refDvp, refGeom); + if (fixedRef.getObject()) { + refToFix = fixedRef; + return true; + } + } + // no match + return false; +} + +//! search the view for a 2d edge that is the same as the saved reference geometry +//! and return a reference pointing to the matching edge. +bool DimensionAutoCorrect::findExactEdge2d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findExactEdge2d()\n"); + double scale = getDimension()->getViewPart()->getScale(); + BaseGeomPtrVector gEdgeAll = getDimension()->getViewPart()->getEdgeGeometry(); + int iEdge {0}; + for (auto& edge : gEdgeAll) { + Part::TopoShape temp = edge->asTopoShape(scale); + bool isSame = getMatcher()->compareGeometry(refGeom, temp); + if (isSame) { + refToFix.setSubName(std::string("Edge") + std::to_string(iEdge)); + return true; + } + iEdge++; + } + + // no match, return the input reference + return false; +} + +//! search the model for a 3d vertex that is the same as the saved reference geometry +//! and return a reference pointing to the matching vertex +bool DimensionAutoCorrect::findExactVertex3d(ReferenceEntry& refToFix, + Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findExactVertex3d()\n"); + getMatcher()->setPointTolerance(EWTOLERANCE); + + // try the referenced object + auto refObj = refToFix.getObject(); + if (refObj) { + ReferenceEntry fixedRef = searchObjForVert(refObj, refGeom); + if (fixedRef.getObject()) { + refToFix = fixedRef; + return true; + } + } + + // not match in refObj (or no refObj!) + for (auto& objectName : m_3dObjectCache) { + auto object3d = getDimension()->getDocument()->getObject(objectName.c_str()); + ReferenceEntry fixedRef = searchObjForVert(object3d, refGeom); + if (fixedRef.getObject()) { + refToFix = fixedRef; + return true; + } + } + + return false; +} + +//! search the model for a 3d edge that is the same as the saved reference geometry +//! and return a reference pointing to the matching edge. +bool DimensionAutoCorrect::findExactEdge3d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findExactEdge3d() - cache: %d\n", m_3dObjectCache.size()); + // first, try to find a match in the referenced object + auto refObj = refToFix.getObject(); + if (refObj) { + ReferenceEntry fixedRef = searchObjForEdge(refObj, refGeom); + if (fixedRef.getObject()) { + refToFix = fixedRef; + return true; + } + } + + // no match in refObj, so now search the cached objects + for (auto& objectName : m_3dObjectCache) { + auto object3d = getDimension()->getDocument()->getObject(objectName.c_str()); + auto shape3d = Part::Feature::getShape(object3d); + auto edgesAll = getDimension()->getEdges(shape3d); + size_t iEdge {1}; + for (auto& edge : edgesAll) { + if (getMatcher()->compareGeometry(edge, refGeom)) { + // found a match! + refToFix.setObjectName(objectName); + refToFix.setObject(object3d); + refToFix.setSubName(std::string("Edge") + std::to_string(iEdge)); + return true; + } + iEdge++; + } + } + return false; +} + +//! search the view for a vertex that is within a tolerance of the saved reference geometry +//! and return a reference pointing to the matching vertex +bool DimensionAutoCorrect::findSimilarVertex2d(ReferenceEntry& refToFix, + Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findSimilarVertex2d()\n"); + (void)refToFix; + (void)refGeom; + Base::Console().Message("DAC::findSimilarVertex2d is not implemented yet\n"); + return false; +} + +//! search the view for a 2d edge that is similar to the saved reference geometry +//! and return a reference pointing to the similar edge. +bool DimensionAutoCorrect::findSimilarEdge2d(ReferenceEntry& refToFix, + Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findSimilarEdge2d()\n"); + (void)refToFix; + (void)refGeom; + Base::Console().Message("DAC::findSimilarEdge2d is not implemented yet\n"); + return false; +} + +//! search the referenced 3d object and the object cache for a vertex that is within +//! a tolerance of the saved reference geometry and return a reference pointing +//! to the matching vertex +bool DimensionAutoCorrect::findSimilarVertex3d(ReferenceEntry& refToFix, + Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findSimilarVertex3d()\n"); + (void)refToFix; + (void)refGeom; + Base::Console().Message("DAC::findSimilarVertex3d is not implemented yet\n"); + return false; +} + +//! search the referenced 3d object and the object cache for an edge that is +//! similar to the saved reference geometry and return a reference pointing +//! to the similar edge +bool DimensionAutoCorrect::findSimilarEdge3d(ReferenceEntry& refToFix, + Part::TopoShape refGeom) const +{ + // Base::Console().Message("DAC::findSimilarEdge3d(%s)\n", refToFix.getObjectName().c_str()); + (void)refToFix; + (void)refGeom; + Base::Console().Message("DAC::findSimilarEdge3d is not implemented yet\n"); + return false; +} + +//! compare the geometry pointed to by a reference to the corresponding saved geometry +bool DimensionAutoCorrect::isMatchingGeometry(ReferenceEntry ref, + Part::TopoShape savedGeometry) const +{ + Part::TopoShape temp = ref.asTopoShape(); + if (temp.isNull()) { + // this shouldn't happen as we already know that this ref points to valid geometry + return false; + } + if (getMatcher()->compareGeometry(temp, savedGeometry)) { + // reference still points to the same geometry + return true; + } + + return false; +} + +//! search obj (3d object with a shape) for a match to refVertex. This is always +//! an exact match for phase 1 (GeometryMatcher), but in phase 2 (GeometryGuesser) +//! a similar match will be allowed. +ReferenceEntry DimensionAutoCorrect::searchObjForVert(App::DocumentObject* obj, + Part::TopoShape refVertex, + bool exact) const +{ + (void)exact; + auto shape3d = Part::Feature::getShape(obj); + if (shape3d.IsNull()) { + // how to handle this? + return {}; + } + auto vertsAll = getDimension()->getVertexes(shape3d); + size_t iVert {1}; + for (auto& vert : vertsAll) { + bool isSame = getMatcher()->compareGeometry(refVertex, vert); + if (isSame) { + auto newSubname = std::string("Vertex") + std::to_string(iVert); + return {obj, newSubname, getDimension()->getDocument()}; + } + iVert++; + } + return {}; +} + + +//! search View (2d part display) for a match to refVertex. This can be an +//! exact or Similar match depending on the setting of exact. +ReferenceEntry DimensionAutoCorrect::searchViewForVert(DrawViewPart* obj, + Part::TopoShape refVertex, + bool exact) const +{ + (void)exact; + double scale = getDimension()->getViewPart()->getScale(); + std::vector gVertexAll = + getDimension()->getViewPart()->getVertexGeometry(); + getMatcher()->setPointTolerance(EWTOLERANCE); + int iVertex = 0; + for (auto& vert : gVertexAll) { + Part::TopoShape temp = vert->asTopoShape(scale); + bool isSame = getMatcher()->compareGeometry(refVertex, temp); + if (isSame) { + auto newSubname = std::string("Vertex") + std::to_string(iVertex); + return {obj, newSubname, getDimension()->getDocument()}; + } + iVertex++; + } + return {}; +} + +//! search View (2d part display) for an exact match to refEdge. +ReferenceEntry DimensionAutoCorrect::searchViewForExactEdge(DrawViewPart* obj, + Part::TopoShape refEdge) const +{ + // Base::Console().Message("DAC::searchViewForExactEdge()\n"); + double scale = getDimension()->getViewPart()->getScale(); + auto gEdgeAll = getDimension()->getViewPart()->getEdgeGeometry(); + int iEdge {0}; + for (auto& edge : gEdgeAll) { + Part::TopoShape temp = edge->asTopoShape(scale); + bool isSame = getMatcher()->compareGeometry(refEdge, temp); + if (isSame) { + auto newSubname = std::string("Edge") + std::to_string(iEdge); + return {obj, newSubname, getDimension()->getDocument()}; + } + iEdge++; + } + return {}; +} + + +//! search View (2d part display) for an edge that is similar to refEdge +ReferenceEntry DimensionAutoCorrect::searchViewForSimilarEdge(DrawViewPart* obj, + Part::TopoShape refEdge) const +{ + // Base::Console().Message("DAC::searchViewForSimilarEdge()\n"); + (void)obj; + (void)refEdge; + Base::Console().Message("DAC::searchViewForSimilarEdge is not implemented yet\n"); + return {}; +} + +//! search model for for a 3d edge that is a match to refEdge +//! note that only the exact match is implemented in phase 1 +ReferenceEntry DimensionAutoCorrect::searchObjForEdge(App::DocumentObject* obj, + Part::TopoShape refEdge, + bool exact) const +{ + // Base::Console().Message("DAC::searchObjForEdge(%s)\n", obj->Label.getValue()); + (void)exact; + auto shape3d = Part::Feature::getShape(obj); + if (shape3d.IsNull()) { + // how to handle this? + // Base::Console().Message("DAC::searchObjForEdge - object shape is null\n"); + return {}; + } + auto edgesAll = getDimension()->getEdges(shape3d); + size_t iEdge {1}; + for (auto& edge : edgesAll) { + bool isSame = getMatcher()->compareGeometry(refEdge, edge); + if (isSame) { + auto newSubname = std::string("Edge") + std::to_string(iEdge); + return {obj, newSubname, getDimension()->getDocument()}; + } + iEdge++; + } + return {}; +} + +//! rebuild 3d references from saved geometry. returns true is all references +//! have been repaired +bool DimensionAutoCorrect::fixBrokenReferences(ReferenceVector& fixedReferences) const +{ + // Base::Console().Message("DAC::fixBrokenReferences()\n"); + bool success {true}; + const std::vector savedGeometry = getDimension()->SavedGeometry.getValues(); + int iGeom {0}; + for (auto& geom : savedGeometry) { + if (fixedReferences.at(iGeom).hasGeometry()) { + iGeom++; + continue; + } + // + TopoDS_Shape geomShape = geom.getShape(); + for (auto& objectName : m_3dObjectCache) { + auto object3d = getDimension()->getDocument()->getObject(objectName.c_str()); + if (!object3d) { + // cached object has been deleted + continue; + } + // TODO: do we need to check for Similar matches here too? + ReferenceEntry newRef; + if (geomShape.ShapeType() == TopAbs_VERTEX) { + newRef = searchObjForVert(object3d, geomShape); + fixedReferences.at(iGeom) = newRef; + } + else { + newRef = searchObjForEdge(object3d, geomShape); + fixedReferences.at(iGeom) = newRef; + } + fixedReferences.at(iGeom) = newRef; + if (!newRef.getObject()) { + success = false; + } + } + } + return success; +} + + +GeometryMatcher* DimensionAutoCorrect::getMatcher() const +{ + return getDimension()->getMatcher(); +} diff --git a/src/Mod/TechDraw/App/DimensionAutoCorrect.h b/src/Mod/TechDraw/App/DimensionAutoCorrect.h new file mode 100644 index 0000000000..a3e154d490 --- /dev/null +++ b/src/Mod/TechDraw/App/DimensionAutoCorrect.h @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/*************************************************************************** + * Copyright (c) 2023 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 * + * * + ***************************************************************************/ +// a class to validate and correct dimension references + +#ifndef DIMAUTOCORRECT_H +#define DIMAUTOCORRECT_H + +#include + +#include + +namespace Part +{ +class TopoShape; +} + +namespace TechDraw +{ +class GeometryMatcher; + + +class TechDrawExport DimensionAutoCorrect +{ +public: + DimensionAutoCorrect() + {} + explicit DimensionAutoCorrect(DrawViewDimension* dim) + { + m_dimension = dim; + } + ~DimensionAutoCorrect() = default; + + bool referencesHaveValidGeometry(std::vector& referenceState) const; + bool autocorrectReferences(std::vector& referenceState, + ReferenceVector& repairedRefs) const; + + void set3dObjectCache(std::set cache) + { + m_3dObjectCache = cache; + } + bool fixBrokenReferences(ReferenceVector& fixedReferences) const; + +private: + bool fix1GeomExact(ReferenceEntry& refToFix, TopoDS_Shape geomToFix) const; + bool fix1GeomSimilar(ReferenceEntry& refToFix, TopoDS_Shape geomToFix) const; + + bool findExactVertex2d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + bool findExactEdge2d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + bool findExactVertex3d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + bool findExactEdge3d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + + bool findSimilarVertex2d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + bool findSimilarEdge2d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + bool findSimilarVertex3d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + bool findSimilarEdge3d(ReferenceEntry& refToFix, Part::TopoShape refGeom) const; + + ReferenceEntry + searchObjForVert(App::DocumentObject* obj, Part::TopoShape refVertex, bool exact = true) const; + ReferenceEntry + searchViewForVert(DrawViewPart* obj, Part::TopoShape refVertex, bool exact = true) const; + ReferenceEntry + searchObjForEdge(App::DocumentObject* obj, Part::TopoShape refEdge, bool exact = true) const; + + ReferenceEntry searchViewForExactEdge(DrawViewPart* obj, Part::TopoShape refEdge) const; + ReferenceEntry searchViewForSimilarEdge(DrawViewPart* obj, Part::TopoShape refEdge) const; + + + bool isMatchingGeometry(ReferenceEntry ref, Part::TopoShape savedGeometry) const; + + DrawViewDimension* getDimension() const + { + return m_dimension; + } + GeometryMatcher* getMatcher() const; + + DrawViewDimension* m_dimension; + std::set m_3dObjectCache; +}; + +} // end namespace TechDraw +#endif diff --git a/src/Mod/TechDraw/App/DimensionFormatter.cpp b/src/Mod/TechDraw/App/DimensionFormatter.cpp index 7508a9d9c4..1c78d2357e 100644 --- a/src/Mod/TechDraw/App/DimensionFormatter.cpp +++ b/src/Mod/TechDraw/App/DimensionFormatter.cpp @@ -191,6 +191,9 @@ std::string DimensionFormatter::formatValue(const qreal value, return formattedValueString; } + +//! get the formatted OverTolerance value +// wf: is this a leftover from when we only had 1 tolerance instead of over/under? std::string DimensionFormatter::getFormattedToleranceValue(const int partial) const { QString FormatSpec = QString::fromUtf8(m_dimension->FormatSpecOverTolerance.getStrValue().data()); @@ -207,7 +210,7 @@ std::string DimensionFormatter::getFormattedToleranceValue(const int partial) co return ToleranceString.toStdString(); } -//get over and under tolerances +//! get formatted over and under tolerances std::pair DimensionFormatter::getFormattedToleranceValues(const int partial) const { QString underFormatSpec = QString::fromUtf8(m_dimension->FormatSpecUnderTolerance.getStrValue().data()); @@ -219,30 +222,14 @@ std::pair DimensionFormatter::getFormattedToleranceVal underTolerance = underFormatSpec; overTolerance = overFormatSpec; } else { - if (DrawUtil::fpCompare(m_dimension->UnderTolerance.getValue(), 0.0)) { - underTolerance = QString::fromUtf8(formatValue(m_dimension->UnderTolerance.getValue(), - QString::fromUtf8("%.0f"), - partial, - false).c_str()); - } - else { - underTolerance = QString::fromUtf8(formatValue(m_dimension->UnderTolerance.getValue(), + underTolerance = QString::fromUtf8(formatValue(m_dimension->UnderTolerance.getValue(), underFormatSpec, partial, false).c_str()); - } - if (DrawUtil::fpCompare(m_dimension->OverTolerance.getValue(), 0.0)) { - overTolerance = QString::fromUtf8(formatValue(m_dimension->OverTolerance.getValue(), - QString::fromUtf8("%.0f"), - partial, - false).c_str()); - } - else { - overTolerance = QString::fromUtf8(formatValue(m_dimension->OverTolerance.getValue(), + overTolerance = QString::fromUtf8(formatValue(m_dimension->OverTolerance.getValue(), overFormatSpec, partial, false).c_str()); - } } tolerances.first = underTolerance.toStdString(); diff --git a/src/Mod/TechDraw/App/DimensionReferences.cpp b/src/Mod/TechDraw/App/DimensionReferences.cpp index 6ff8cb462e..9f82c903be 100644 --- a/src/Mod/TechDraw/App/DimensionReferences.cpp +++ b/src/Mod/TechDraw/App/DimensionReferences.cpp @@ -31,6 +31,8 @@ #include #include +#include +#include #include #include #include @@ -44,16 +46,65 @@ using namespace TechDraw; using DU = DrawUtil; + +ReferenceEntry::ReferenceEntry( App::DocumentObject* docObject, std::string subName, App::Document* document) +{ + setObject(docObject); + setSubName(subName); + setDocument(document); + if (docObject) { + setObjectName(docObject->getNameInDocument()); + if (document == nullptr) { + setDocument(docObject->getDocument()); + } + } +} + +ReferenceEntry::ReferenceEntry(const ReferenceEntry& other) +{ + setObject(other.getObject()); + setSubName(other.getSubName()); + setObjectName(other.getObjectName()); + setDocument(other.getDocument()); +} + + + +ReferenceEntry& ReferenceEntry::operator=(const ReferenceEntry& otherRef) +{ + setObject(otherRef.getObject()); + setSubName(otherRef.getSubName()); + setObjectName(otherRef.getObjectName()); + setDocument(otherRef.getDocument()); + return *this; +} + + TopoDS_Shape ReferenceEntry::getGeometry() const { -// Base::Console().Message("RE::getGeometry() - obj: %s sub: %s\n", -// getObject()->getNameInDocument(), getSubName()); + // 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) { + Base::Console().Message("RE::getGeometry - %s no longer exists!\n", getObjectName().c_str()); + return {}; + } + + if (getSubName().empty()) { + Base::Console().Message("RE::getGeometry - Reference has no subelement!\n"); + return {}; + } + if ( getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) ) { + // Base::Console().Message("RE::getGeometry - getting 2d geometry\n"); std::string gType; try { auto dvp = static_cast(getObject()); gType = geomType(); if (gType == "Vertex") { + // getVertex throws on not found, but we want to return null + // shape auto vgeom = dvp->getVertex(getSubName()); return vgeom->getOCCVertex(); } @@ -67,11 +118,12 @@ TopoDS_Shape ReferenceEntry::getGeometry() const } } catch (...) { -// Base::Console().Message("RE::getGeometry - no shape for dimension reference - gType: %s\n", gType.c_str()); + Base::Console().Message("RE::getGeometry - no shape for dimension 2d reference - gType: **%s**\n", gType.c_str()); return {}; } } + // Base::Console().Message("RE::getGeometry - getting 2d geometry\n"); Part::TopoShape shape = Part::Feature::getTopoShape(getObject()); auto geoFeat = dynamic_cast(getObject()); if (geoFeat) { @@ -100,13 +152,15 @@ std::string ReferenceEntry::getSubName(bool longForm) const App::DocumentObject* ReferenceEntry::getObject() const { - // For PartDesign objects, when the reference is created from a selection, - // the SelectionObject is a Feature within the Body. - PartDesign::Body* pdBody = PartDesign::Body::findBodyOf(m_object); - if (pdBody && pdBody->Tip.getValue()) { - return pdBody->Tip.getValue(); + if (!getDocument()) { + return nullptr; } - return m_object; + App::DocumentObject* obj = getDocument()->getObject(getObjectName().c_str()); + if (!obj) { + return nullptr; + } + + return obj; } Part::TopoShape ReferenceEntry::asTopoShape() const @@ -114,7 +168,9 @@ 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"); + // throw Base::RuntimeError("Dimension Reference has null geometry"); + Base::Console().Message("RE::asTopoShape - reference geometry is null\n"); + return {}; } if (geom.ShapeType() == TopAbs_VERTEX) { TopoDS_Vertex vert = TopoDS::Vertex(geom); @@ -153,6 +209,7 @@ Part::TopoShape ReferenceEntry::asTopoShapeEdge(TopoDS_Edge &edge) const std::string ReferenceEntry::geomType() const { + // Base::Console().Message("RE::geomType() - subName: **%s**\n", getSubName().c_str()); return DrawUtil::getGeomTypeFromName(getSubName()); } @@ -163,15 +220,61 @@ bool ReferenceEntry::isWholeObject() const bool ReferenceEntry::is3d() const { - return !getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()); -} - -//! check if this reference has valid geometry -bool ReferenceEntry::isValid() const -{ - TopoDS_Shape geom = getGeometry(); - if (geom.IsNull()) { + if (getObject() && + getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && + !getSubName().empty()) { + // this is a well formed 2d reference 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; } + +//! check if this reference has valid geometry in the model +bool ReferenceEntry::hasGeometry() const +{ + // Base::Console().Message("RE::hasGeometry()\n"); + if (!getObject()) { + return false; + } + + if ( getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) ) { + // 2d reference + auto dvp = static_cast(getObject()); + if (getSubName().empty()) { + return false; + } + int geomNumber = DU::getIndexFromName(getSubName()); + std::string gType = geomType(); + if (gType == "Vertex") { + auto vert = dvp->getProjVertexByIndex(geomNumber); + if (vert) { + return true; + } + } else if (gType == "Edge") { + auto edge = dvp->getGeomByIndex(geomNumber); + if (edge) { + return true; + } + } + // if we ever have dimensions for faces, add something here. + return false; + } + + // 3d reference + auto shape = Part::Feature::getTopoShape(getObject()); + auto subShape = shape.getSubShape(getSubName().c_str()); + if (!subShape.IsNull()) { + return true; + } + + return false; +} diff --git a/src/Mod/TechDraw/App/DimensionReferences.h b/src/Mod/TechDraw/App/DimensionReferences.h index 28c239cd7d..e9c41ed80e 100644 --- a/src/Mod/TechDraw/App/DimensionReferences.h +++ b/src/Mod/TechDraw/App/DimensionReferences.h @@ -37,6 +37,7 @@ namespace App { class DocumentObject; +class Document; } namespace Part @@ -51,34 +52,39 @@ namespace TechDraw class TechDrawExport ReferenceEntry { public: - ReferenceEntry( App::DocumentObject* docObject, std::string subName ) { - setObject(docObject); - setSubName(subName); - } - ReferenceEntry(const ReferenceEntry& other) { - setObject(other.getObject()); - setSubName(other.getSubName()); - } + ReferenceEntry() {}; + ReferenceEntry( App::DocumentObject* docObject, std::string subName, App::Document* document = nullptr); + ReferenceEntry(const ReferenceEntry& other); ~ReferenceEntry() = default; + ReferenceEntry& operator= (const ReferenceEntry& otherRef); + App::DocumentObject* getObject() const; void setObject(App::DocumentObject* docObj) { m_object = docObj; } std::string getSubName(bool longForm = false) const; void setSubName(std::string subName) { m_subName = subName; } + std::string getObjectName() const { return m_objectName; } + void setObjectName(std::string name) { m_objectName = name; } + App::Document* getDocument() const { return m_document; } + void setDocument(App::Document* document) { m_document = document; } + TopoDS_Shape getGeometry() const; std::string geomType() const; bool isWholeObject() const; Part::TopoShape asTopoShape() const; + + bool is3d() const; + bool hasGeometry() const; + +private: Part::TopoShape asTopoShapeVertex(TopoDS_Vertex &vert) const; Part::TopoShape asTopoShapeEdge(TopoDS_Edge& edge) const; - bool is3d() const; - bool isValid() const; - -private: - App::DocumentObject* m_object; - std::string m_subName; + App::DocumentObject* m_object{nullptr}; + std::string m_subName{""}; + std::string m_objectName{""}; + App::Document* m_document{nullptr}; }; using ReferenceVector = std::vector; diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.h b/src/Mod/TechDraw/App/DrawLeaderLine.h index 46f28baa34..2b91909869 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLine.h +++ b/src/Mod/TechDraw/App/DrawLeaderLine.h @@ -65,6 +65,8 @@ public: Base::Vector3d getAttachPoint(); DrawView* getBaseView() const; virtual App::DocumentObject* getBaseObject() const; + App::PropertyLink *getOwnerProperty() override { return &LeaderParent; } + bool keepUpdated() override; double getScale() const override; double getBaseScale() const; diff --git a/src/Mod/TechDraw/App/DrawProjGroup.cpp b/src/Mod/TechDraw/App/DrawProjGroup.cpp index 48740c253d..0a7fcf49ea 100644 --- a/src/Mod/TechDraw/App/DrawProjGroup.cpp +++ b/src/Mod/TechDraw/App/DrawProjGroup.cpp @@ -452,6 +452,7 @@ bool DrawProjGroup::canDelete(const char* viewProjType) const App::DocumentObject* DrawProjGroup::addProjection(const char* viewProjType) { + // Base::Console().Message("DPG::addProjection(%s)\n", viewProjType ? viewProjType : "null"); DrawProjGroupItem* view(nullptr); std::pair vecs; @@ -499,10 +500,6 @@ App::DocumentObject* DrawProjGroup::addProjection(const char* viewProjType) true);//Front should stay locked. view->LockPosition.purgeTouched(); } - // addView(view); //from DrawViewCollection - // if (view != getAnchor()) { //anchor is done elsewhere - // view->recomputeFeature(); - // } } } return view; diff --git a/src/Mod/TechDraw/App/DrawProjGroupItem.cpp b/src/Mod/TechDraw/App/DrawProjGroupItem.cpp index d49cbedaa4..5803e85667 100644 --- a/src/Mod/TechDraw/App/DrawProjGroupItem.cpp +++ b/src/Mod/TechDraw/App/DrawProjGroupItem.cpp @@ -181,14 +181,7 @@ void DrawProjGroupItem::onDocumentRestored() DrawProjGroup* DrawProjGroupItem::getPGroup() const { - std::vector parent = getInList(); - for (std::vector::iterator it = parent.begin(); it != parent.end(); ++it) { - if ((*it)->isDerivedFrom()) { - DrawProjGroup* result = dynamic_cast(*it); - return result; - } - } - return nullptr; + return dynamic_cast(getCollection()); } bool DrawProjGroupItem::isAnchor(void) const diff --git a/src/Mod/TechDraw/App/DrawSVGTemplate.cpp b/src/Mod/TechDraw/App/DrawSVGTemplate.cpp index fe36964dcc..abd145f84c 100644 --- a/src/Mod/TechDraw/App/DrawSVGTemplate.cpp +++ b/src/Mod/TechDraw/App/DrawSVGTemplate.cpp @@ -132,10 +132,10 @@ QString DrawSVGTemplate::processTemplate() query.processItems(QString::fromUtf8( "declare default element namespace \"" SVG_NS_URI "\"; " "declare namespace freecad=\"" FREECAD_SVG_NS_URI "\"; " - "//text[@freecad:editable]/tspan"), + "//text[@" FREECAD_ATTR_EDITABLE "]/tspan"), [&substitutions, &templateDocument](QDomElement& tspan) -> bool { // Replace the editable text spans with new nodes holding actual values - QString editableName = tspan.parentNode().toElement().attribute(QString::fromUtf8("freecad:editable")); + QString editableName = tspan.parentNode().toElement().attribute(QString::fromUtf8(FREECAD_ATTR_EDITABLE)); std::map::iterator item = substitutions.find(editableName.toStdString()); if (item != substitutions.end()) { @@ -296,15 +296,28 @@ std::map DrawSVGTemplate::getEditableTextsFromTemplate query.processItems(QString::fromUtf8( "declare default element namespace \"" SVG_NS_URI "\"; " "declare namespace freecad=\"" FREECAD_SVG_NS_URI "\"; " - "//text[@freecad:editable]/tspan"), - [&editables](QDomElement& tspan) -> bool { - QString editableName = tspan.parentNode().toElement().attribute(QString::fromUtf8("freecad:editable")); - QString editableValue = tspan.firstChild().nodeValue(); + "//text[@" FREECAD_ATTR_EDITABLE "]/tspan"), + [this, &editables](QDomElement& tspan) -> bool { + QDomElement parent = tspan.parentNode().toElement(); + QString editableName = parent.attribute(QString::fromUtf8(FREECAD_ATTR_EDITABLE)); - editables[std::string(editableName.toUtf8().constData())] = - std::string(editableValue.toUtf8().constData()); - return true; - }); + QString editableValue; + if (parent.hasAttribute(QString::fromUtf8(FREECAD_ATTR_AUTOFILL))) { + QString autofillValue = getAutofillValue(parent.attribute(QString::fromUtf8(FREECAD_ATTR_AUTOFILL))); + if (!autofillValue.isNull()) { + editableValue = autofillValue; + } + } + + // If the autofill value is not specified or unsupported, use the default text value + if (editableValue.isNull()) { + editableValue = tspan.firstChild().nodeValue(); + } + + editables[std::string(editableName.toUtf8().constData())] = + std::string(editableValue.toUtf8().constData()); + return true; + }); return editables; } diff --git a/src/Mod/TechDraw/App/DrawTemplate.cpp b/src/Mod/TechDraw/App/DrawTemplate.cpp index 35709cd26e..7ba1cfbe50 100644 --- a/src/Mod/TechDraw/App/DrawTemplate.cpp +++ b/src/Mod/TechDraw/App/DrawTemplate.cpp @@ -24,13 +24,19 @@ #ifndef _PreComp_ # include +# include +# include #endif #include +#include +#include + #include "DrawTemplate.h" #include "DrawTemplatePy.h" #include "DrawPage.h" +#include "DrawUtil.h" using namespace TechDraw; @@ -94,6 +100,67 @@ DrawPage* DrawTemplate::getParentPage() const return page; } +QString DrawTemplate::getAutofillValue(const QString &id) const +{ + // author + if (id.compare(QString::fromUtf8(Autofill::Author)) == 0) { + std::string value = App::GetApplication().GetUserParameter().GetGroup("BaseApp")->GetGroup("Preferences") + ->GetGroup("Document")->GetASCII("prefAuthor"); + if (!value.empty()) { + return QString::fromUtf8(value.c_str()); + } + } + // date + else if (id.compare(QString::fromUtf8(Autofill::Date)) == 0) { + QDateTime date = QDateTime::currentDateTime(); + return date.toString(QLocale().dateFormat(QLocale::ShortFormat)); + } + // organization + else if (id.compare(QString::fromUtf8(Autofill::Organization)) == 0) { + std::string value = App::GetApplication().GetUserParameter().GetGroup("BaseApp")->GetGroup("Preferences") + ->GetGroup("Document")->GetASCII("prefCompany"); + if (!value.empty()) { + return QString::fromUtf8(value.c_str()); + } + } + // scale + else if (id.compare(QString::fromUtf8(Autofill::Scale)) == 0) { + DrawPage *page = getParentPage(); + if (page) { + std::pair scale = DrawUtil::nearestFraction(page->Scale.getValue()); + return QString::asprintf("%d : %d", scale.first, scale.second); + } + } + // sheet + else if (id.compare(QString::fromUtf8(Autofill::Sheet)) == 0) { + std::vector pages = getDocument()->getObjectsOfType(TechDraw::DrawPage::getClassTypeId()); + std::vector pageNames; + for (auto page : pages) { + pageNames.push_back(QString::fromUtf8(page->Label.getValue())); + } + + QCollator collator; + std::sort(pageNames.begin(), pageNames.end(), collator); + + int pos = 0; + DrawPage *page = getParentPage(); + if (page) { + auto it = std::find(pageNames.begin(), pageNames.end(), QString::fromUtf8(page->Label.getValue())); + if (it != pageNames.end()) { + pos = it - pageNames.begin() + 1; + } + } + + return QString::asprintf("%d / %d", pos, (int) pageNames.size()); + } + // title + else if (id.compare(QString::fromUtf8(Autofill::Title)) == 0) { + return QString::fromUtf8(getDocument()->Label.getValue()); + } + + return QString(); +} + // Python Template feature --------------------------------------------------------- namespace App { diff --git a/src/Mod/TechDraw/App/DrawTemplate.h b/src/Mod/TechDraw/App/DrawTemplate.h index 4849381aab..f2c6be5390 100644 --- a/src/Mod/TechDraw/App/DrawTemplate.h +++ b/src/Mod/TechDraw/App/DrawTemplate.h @@ -57,6 +57,8 @@ public: virtual DrawPage* getParentPage() const; + virtual QString getAutofillValue(const QString &id) const; + /// returns the type name of the ViewProvider const char* getViewProviderName(void) const override{ return "TechDrawGui::ViewProviderTemplate"; @@ -65,6 +67,17 @@ public: // from base class PyObject *getPyObject(void) override; + class Autofill + { + public: + static constexpr const char *Author = "author"; + static constexpr const char *Date = "date"; + static constexpr const char *Organization = "organization"; + static constexpr const char *Scale = "scale"; + static constexpr const char *Sheet = "sheet"; + static constexpr const char *Title = "title"; + }; + private: static const char* OrientationEnums[]; diff --git a/src/Mod/TechDraw/App/DrawUtil.cpp b/src/Mod/TechDraw/App/DrawUtil.cpp index e6c6385eb8..915e9e5807 100644 --- a/src/Mod/TechDraw/App/DrawUtil.cpp +++ b/src/Mod/TechDraw/App/DrawUtil.cpp @@ -1312,6 +1312,80 @@ double DrawUtil::angleDifference(double fi1, double fi2, bool reflex) return fi1; } +std::pair DrawUtil::nearestFraction(double val, int maxDenom) +{ +// Find rational approximation to given real number +// David Eppstein / UC Irvine / 8 Aug 1993 +// +// With corrections from Arno Formella, May 2008 +// and additional fiddles by WF 2017 +// usage: a.out r d +// r is real number to approx +// d is the maximum denominator allowed +// +// Based on the theory of continued fractions +// if x = a1 + 1/(a2 + 1/(a3 + 1/(a4 + ...))) +// then best approximation is found by truncating this series +// (with some adjustments in the last term). +// +// Note the fraction can be recovered as the first column of the matrix +// ( a1 1 ) ( a2 1 ) ( a3 1 ) ... +// ( 1 0 ) ( 1 0 ) ( 1 0 ) +// Instead of keeping the sequence of continued fraction terms, +// we just keep the last partial product of these matrices. + std::pair result; + long m[2][2]; + long maxden = maxDenom; + long ai; + double x = val; + double startx = x; + + /* initialize matrix */ + m[0][0] = m[1][1] = 1; + m[0][1] = m[1][0] = 0; + + /* loop finding terms until denom gets too big */ + while (m[1][0] * ( ai = (long)x ) + m[1][1] <= maxden) { + long t; + t = m[0][0] * ai + m[0][1]; + m[0][1] = m[0][0]; + m[0][0] = t; + t = m[1][0] * ai + m[1][1]; + m[1][1] = m[1][0]; + m[1][0] = t; + if(x == (double) ai) + break; // AF: division by zero + x = 1/(x - (double) ai); + if(x > (double) std::numeric_limits::max()) + break; // AF: representation failure + } + + /* now remaining x is between 0 and 1/ai */ + /* approx as either 0 or 1/m where m is max that will fit in maxden */ + /* first try zero */ + double error1 = startx - ((double) m[0][0] / (double) m[1][0]); + int n1 = m[0][0]; + int d1 = m[1][0]; + + /* now try other possibility */ + ai = (maxden - m[1][1]) / m[1][0]; + m[0][0] = m[0][0] * ai + m[0][1]; + m[1][0] = m[1][0] * ai + m[1][1]; + double error2 = startx - ((double) m[0][0] / (double) m[1][0]); + int n2 = m[0][0]; + int d2 = m[1][0]; + + if (std::fabs(error1) <= std::fabs(error2)) { + result.first = n1; + result.second = d1; + } else { + result.first = n2; + result.second = d2; + } + + return result; +} + // Interval marking functions // ========================== diff --git a/src/Mod/TechDraw/App/DrawUtil.h b/src/Mod/TechDraw/App/DrawUtil.h index 503de91462..c6b6bdd069 100644 --- a/src/Mod/TechDraw/App/DrawUtil.h +++ b/src/Mod/TechDraw/App/DrawUtil.h @@ -58,6 +58,9 @@ #define SVG_NS_URI "http://www.w3.org/2000/svg" #define FREECAD_SVG_NS_URI "https://www.freecad.org/wiki/index.php?title=Svg_Namespace" +#define FREECAD_ATTR_EDITABLE "freecad:editable" +#define FREECAD_ATTR_AUTOFILL "freecad:autofill" + //some shapes are being passed in where edges that should be connected are in fact //separated by more than 2*Precision::Confusion (expected tolerance for 2 TopoDS_Vertex) //this value is used in EdgeWalker, DrawProjectSplit and DrawUtil and needs to be in sync in @@ -217,6 +220,7 @@ public: static void angleNormalize(double& fi); static double angleComposition(double fi, double delta); static double angleDifference(double fi1, double fi2, bool reflex = false); + static std::pair nearestFraction(double val, int maxDenom = 999); // Interval marking functions static unsigned int intervalMerge(std::vector>& marking, diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index 0a75e1063b..6773d625e2 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -409,10 +409,14 @@ DrawView *DrawView::claimParent() const { App::PropertyLink *ownerProp = const_cast(this)->getOwnerProperty(); if (ownerProp) { - return dynamic_cast(ownerProp->getValue()); + auto ownerView = dynamic_cast(ownerProp->getValue()); + if (ownerView) { + return ownerView; + } } - return nullptr; + // If there is no parent view we are aware of, return the view collection we may belong to + return getCollection(); } DrawViewClip* DrawView::getClipGroup() @@ -430,6 +434,19 @@ DrawViewClip* DrawView::getClipGroup() return nullptr; } +DrawViewCollection *DrawView::getCollection() const +{ + std::vector parents = getInList(); + for (auto it = parents.begin(); it != parents.end(); ++it) { + auto parentCollection = dynamic_cast(*it); + if (parentCollection) { + return parentCollection; + } + } + + return nullptr; +} + double DrawView::autoScale() const { auto page = findParentPage(); diff --git a/src/Mod/TechDraw/App/DrawView.h b/src/Mod/TechDraw/App/DrawView.h index 32cd91fe59..73097254fe 100644 --- a/src/Mod/TechDraw/App/DrawView.h +++ b/src/Mod/TechDraw/App/DrawView.h @@ -37,6 +37,7 @@ namespace TechDraw { class DrawPage; +class DrawViewCollection; class DrawViewClip; class DrawLeaderLine; /*class CosmeticVertex;*/ @@ -74,6 +75,7 @@ public: bool isInClip(); DrawViewClip* getClipGroup(); + DrawViewCollection *getCollection() const; /// returns the type name of the ViewProvider const char* getViewProviderName() const override { diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index dfff03bf85..af497d6a1c 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -23,33 +23,33 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include +#include +#include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #endif #include @@ -64,7 +64,7 @@ #include #include -#include // generated from DrawViewDimensionPy.xml +#include // generated from DrawViewDimensionPy.xml #include "DrawViewDimension.h" #include "DimensionFormatter.h" @@ -73,6 +73,7 @@ #include "Geometry.h" #include "GeometryMatcher.h" #include "Preferences.h" +#include "DimensionAutoCorrect.h" using namespace TechDraw; using namespace Part; @@ -84,70 +85,125 @@ using DU = DrawUtil; PROPERTY_SOURCE(TechDraw::DrawViewDimension, TechDraw::DrawView) -const char* DrawViewDimension::TypeEnums[] = {"Distance", "DistanceX", "DistanceY", - "DistanceZ", "Radius", "Diameter", - "Angle", "Angle3Pt", nullptr}; +const char* DrawViewDimension::TypeEnums[] = {"Distance", + "DistanceX", + "DistanceY", + "DistanceZ", + "Radius", + "Diameter", + "Angle", + "Angle3Pt", + nullptr}; const char* DrawViewDimension::MeasureTypeEnums[] = {"True", "Projected", nullptr}; // constraint to set the step size to 0.1 -static const App::PropertyQuantityConstraint::Constraints ToleranceConstraint = {-DBL_MAX, DBL_MAX, +static const App::PropertyQuantityConstraint::Constraints ToleranceConstraint = {-DBL_MAX, + DBL_MAX, 0.1}; // constraint to force positive values static const App::PropertyQuantityConstraint::Constraints PositiveConstraint = {0.0, DBL_MAX, 0.1}; DrawViewDimension::DrawViewDimension() { - //create the formatter since it will be needed to set default property values + // create the formatter since it will be needed to set default property values m_formatter = new DimensionFormatter(this); - ADD_PROPERTY_TYPE(References2D, (nullptr, nullptr), "", (App::Prop_None), + ADD_PROPERTY_TYPE(References2D, + (nullptr, nullptr), + "", + (App::Prop_None), "Projected Geometry References"); References2D.setScope(App::LinkScope::Global); - ADD_PROPERTY_TYPE(References3D, (nullptr, nullptr), "", (App::Prop_None), + ADD_PROPERTY_TYPE(References3D, + (nullptr, nullptr), + "", + (App::Prop_None), "3D Geometry References"); References3D.setScope(App::LinkScope::Global); - ADD_PROPERTY_TYPE(FormatSpec, (getDefaultFormatSpec()), "Format", App::Prop_Output, + ADD_PROPERTY_TYPE(FormatSpec, + (getDefaultFormatSpec()), + "Format", + App::Prop_Output, "Dimension format"); - ADD_PROPERTY_TYPE(FormatSpecOverTolerance, (getDefaultFormatSpec(true)), "Format", - App::Prop_Output, "Dimension overtolerance format"); - ADD_PROPERTY_TYPE(FormatSpecUnderTolerance, (getDefaultFormatSpec(true)), "Format", - App::Prop_Output, "Dimension undertolerance format"); + ADD_PROPERTY_TYPE(FormatSpecOverTolerance, + (getDefaultFormatSpec(true)), + "Format", + App::Prop_Output, + "Dimension overtolerance format"); + ADD_PROPERTY_TYPE(FormatSpecUnderTolerance, + (getDefaultFormatSpec(true)), + "Format", + App::Prop_Output, + "Dimension undertolerance format"); ADD_PROPERTY_TYPE(Arbitrary, (false), "Format", App::Prop_Output, "Value overridden by user"); - ADD_PROPERTY_TYPE(ArbitraryTolerances, (false), "Format", App::Prop_Output, + ADD_PROPERTY_TYPE(ArbitraryTolerances, + (false), + "Format", + App::Prop_Output, "Tolerance values overridden by user"); - Type.setEnums(TypeEnums);//dimension type: length, radius etc + Type.setEnums(TypeEnums); // dimension type: length, radius etc ADD_PROPERTY(Type, ((long)0)); MeasureType.setEnums(MeasureTypeEnums); - ADD_PROPERTY(MeasureType, ((long)1));//Projected (or True) measurement - ADD_PROPERTY_TYPE(TheoreticalExact, (false), "", App::Prop_Output, + ADD_PROPERTY(MeasureType, ((long)1)); // Projected (or True) measurement + ADD_PROPERTY_TYPE(TheoreticalExact, + (false), + "", + App::Prop_Output, "If theoretical exact (basic) dimension"); - ADD_PROPERTY_TYPE(EqualTolerance, (true), "", App::Prop_Output, + ADD_PROPERTY_TYPE(EqualTolerance, + (true), + "", + App::Prop_Output, "If over- and undertolerance are equal"); - ADD_PROPERTY_TYPE(OverTolerance, (0.0), "", App::Prop_Output, + ADD_PROPERTY_TYPE(OverTolerance, + (0.0), + "", + App::Prop_Output, "Overtolerance value\nIf 'Equal Tolerance' is true this is also\nthe negated " "value for 'Under Tolerance'"); OverTolerance.setUnit(Base::Unit::Length); OverTolerance.setConstraints(&ToleranceConstraint); - ADD_PROPERTY_TYPE(UnderTolerance, (0.0), "", App::Prop_Output, + ADD_PROPERTY_TYPE(UnderTolerance, + (0.0), + "", + App::Prop_Output, "Undertolerance value\nIf 'Equal Tolerance' is true it will be replaced\nby " "negative value of 'Over Tolerance'"); UnderTolerance.setUnit(Base::Unit::Length); UnderTolerance.setConstraints(&ToleranceConstraint); - ADD_PROPERTY_TYPE(Inverted, (false), "", App::Prop_Output, + ADD_PROPERTY_TYPE(Inverted, + (false), + "", + App::Prop_Output, "The dimensional value is displayed inverted"); - ADD_PROPERTY_TYPE(AngleOverride, (false), "Override", App::Prop_Output, + ADD_PROPERTY_TYPE(AngleOverride, + (false), + "Override", + App::Prop_Output, "User specified angles"); ADD_PROPERTY_TYPE(LineAngle, (0.0), "Override", App::Prop_Output, "Dimension line angle"); ADD_PROPERTY_TYPE(ExtensionAngle, (0.0), "Override", App::Prop_Output, "Extension line angle"); - ADD_PROPERTY_TYPE(SavedGeometry, () ,"References",(App::PropertyType)(App::Prop_None),"Reference Geometry"); + ADD_PROPERTY_TYPE(SavedGeometry, + (), + "References", + (App::PropertyType)(App::Prop_None), + "Reference Geometry"); SavedGeometry.setOrderRelevant(true); + ADD_PROPERTY_TYPE( + BoxCorners, + (), + "References", + (App::Prop_None), + "Feature bounding box corners as of last reference update. Used by autocorrect"); + + // hide the DrawView properties that don't apply to Dimensions ScaleType.setStatus(App::Property::ReadOnly, true); ScaleType.setStatus(App::Property::Hidden, true); @@ -163,16 +219,18 @@ DrawViewDimension::DrawViewDimension() FormatSpecUnderTolerance.setStatus(App::Property::ReadOnly, true); measurement = new Measure::Measurement(); - //TODO: should have better initial datumLabel position than (0, 0) in the DVP?? something closer to the object being measured? + // TODO: should have better initial datumLabel position than (0, 0) in the DVP?? something + // closer to the object being measured? - //initialize the descriptive geometry. - //TODO: should this be more like DVP with a "geometry object"? + // initialize the descriptive geometry. + // TODO: should this be more like DVP with a "geometry object"? resetLinear(); resetAngular(); resetArc(); m_hasGeometry = false; m_matcher = new GeometryMatcher(this); m_referencesCorrect = true; + m_corrector = new DimensionAutoCorrect(this); } DrawViewDimension::~DrawViewDimension() @@ -181,6 +239,7 @@ DrawViewDimension::~DrawViewDimension() measurement = nullptr; delete m_formatter; delete m_matcher; + delete m_corrector; } void DrawViewDimension::resetLinear() @@ -211,8 +270,8 @@ void DrawViewDimension::resetArc() void DrawViewDimension::onChanged(const App::Property* prop) { if (prop == &References3D) { - //have to rebuild the Measurement object - clear3DMeasurements();//Measurement object + // have to rebuild the Measurement object + clear3DMeasurements(); // Measurement object if (!(References3D.getValues()).empty()) { setAll3DMeasurement(); } @@ -225,15 +284,16 @@ void DrawViewDimension::onChanged(const App::Property* prop) if (prop == &References2D) { updateSavedGeometry(); - } else if (prop == &References3D) { + } + else if (prop == &References3D) { // remove the old measurement object clear3DMeasurements(); if (!(References3D.getValues()).empty()) { // rebuild the Measurement object setAll3DMeasurement(); } - else if (MeasureType.isValue("True")) {//empty 3dRefs, but True - MeasureType.touch(); //run MeasureType logic for this case + else if (MeasureType.isValue("True")) { // empty 3dRefs, but True + MeasureType.touch(); // run MeasureType logic for this case } updateSavedGeometry(); } @@ -302,12 +362,12 @@ void DrawViewDimension::onChanged(const App::Property* prop) } } else if (prop == &FormatSpecOverTolerance) { - if (!ArbitraryTolerances.getValue()) { + if (EqualTolerance.getValue() && !ArbitraryTolerances.getValue()) { FormatSpecUnderTolerance.setValue(FormatSpecOverTolerance.getValue()); } } else if (prop == &FormatSpecUnderTolerance) { - if (!ArbitraryTolerances.getValue()) { + if (EqualTolerance.getValue() && !ArbitraryTolerances.getValue()) { FormatSpecOverTolerance.setValue(FormatSpecUnderTolerance.getValue()); } } @@ -317,8 +377,8 @@ void DrawViewDimension::onChanged(const App::Property* prop) void DrawViewDimension::Restore(Base::XMLReader& reader) // Old drawings did not have the equal tolerance options. -// We cannot just introduce it as being set to true because that would e.g. destroy tolerances like +1-2 -// Therefore set it to false for existing documents +// We cannot just introduce it as being set to true because that would e.g. destroy tolerances like +// +1-2 Therefore set it to false for existing documents { EqualTolerance.setValue(false); DrawView::Restore(reader); @@ -337,7 +397,8 @@ void DrawViewDimension::onDocumentRestored() } } -void DrawViewDimension::handleChangedPropertyType(Base::XMLReader& reader, const char* TypeName, +void DrawViewDimension::handleChangedPropertyType(Base::XMLReader& reader, + const char* TypeName, App::Property* prop) { if (prop == &OverTolerance && strcmp(TypeName, "App::PropertyFloat") == 0) { @@ -354,7 +415,8 @@ void DrawViewDimension::handleChangedPropertyType(Base::XMLReader& reader, const TechDraw::DrawView::handleChangedPropertyType(reader, TypeName, prop); } - // Over/Undertolerance were further changed from App::PropertyQuantity to App::PropertyQuantityConstraint + // Over/Undertolerance were further changed from App::PropertyQuantity to + // App::PropertyQuantityConstraint if (prop == &OverTolerance && strcmp(TypeName, "App::PropertyQuantity") == 0) { App::PropertyQuantity OverToleranceProperty; // restore the PropertyQuantity to be able to set its value @@ -382,7 +444,7 @@ short DrawViewDimension::mustExecute() const App::DocumentObjectExecReturn* DrawViewDimension::execute() { -// Base::Console().Message("DVD::execute() - %s\n", getNameInDocument()); + // Base::Console().Message("DVD::execute() - %s\n", getNameInDocument()); if (!okToProceed()) { return App::DocumentObject::StdReturn; } @@ -391,25 +453,40 @@ App::DocumentObjectExecReturn* DrawViewDimension::execute() resetAngular(); resetArc(); - const std::vector savedGeometry = SavedGeometry.getValues(); - if (!savedGeometry.empty()) { - // we can only correct references if we have saved geometry for comparison - m_referencesCorrect = compareSavedGeometry(); - if (!m_referencesCorrect) { - m_referencesCorrect = fixExactMatch(); - if (!m_referencesCorrect) { - handleNoExactMatch(); - } + // check if geometry pointed to by references matches the saved version. If + // everything matches, we don't need to correct anything. + std::vector referenceState; + bool refsAreValid = m_corrector->referencesHaveValidGeometry(referenceState); + if (!refsAreValid) { + m_corrector->set3dObjectCache(m_3dObjectCache); + ReferenceVector repairedRefs; + refsAreValid = m_corrector->autocorrectReferences(referenceState, repairedRefs); + if (!refsAreValid) { + // references are broken and we can not fix them + Base::Console().Warning("Autocorrect failed to fix references for %s\n", + getNameInDocument()); + m_referencesCorrect = false; + return new App::DocumentObjectExecReturn("Autocorrect failed to fix broken references", + this); + } + if (repairedRefs.front().is3d()) { + setReferences3d(repairedRefs); + } + else { + setReferences2d(repairedRefs); } } + // references are good, we can proceed + m_referencesCorrect = true; + // is this check still relevant or is it replace by the autocorrect and + // validate methods? if (References3D.getValues().empty() && !checkReferences2D()) { - Base::Console().Warning("%s has invalid 2D References\n", - getNameInDocument()); + Base::Console().Warning("%s has invalid 2D References\n", getNameInDocument()); return new App::DocumentObjectExecReturn("Dimension object has invalid 2d references"); } - //we have either or both valid References3D and References2D + // we have either or both valid References3D and References2D ReferenceVector references = getEffectiveReferences(); if (Type.isValue("Distance") || Type.isValue("DistanceX") || Type.isValue("DistanceY")) { @@ -461,34 +538,38 @@ bool DrawViewDimension::okToProceed() return false; } DrawViewPart* dvp = getViewPart(); - if (!dvp) + if (!dvp) { return false; + } if (!has2DReferences() && !has3DReferences()) { - //no references, can't do anything + // no references, can't do anything return App::DocumentObject::StdReturn; } if (!getViewPart()->hasGeometry()) { - //can't do anything until Source has geometry + // can't do anything until Source has geometry return false; } return true; } -bool DrawViewDimension::isMultiValueSchema() const { return m_formatter->isMultiValueSchema(); } +bool DrawViewDimension::isMultiValueSchema() const +{ + return m_formatter->isMultiValueSchema(); +} -std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int partial, - bool isDim) +std::string +DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int partial, bool isDim) { return m_formatter->formatValue(value, qFormatSpec, partial, isDim); } bool DrawViewDimension::haveTolerance() { - //if a numeric tolerance is specified AND - //tolerances are NOT arbitrary + // if a numeric tolerance is specified AND + // tolerances are NOT arbitrary if ((!DrawUtil::fpCompare(OverTolerance.getValue(), 0.0) || !DrawUtil::fpCompare(UnderTolerance.getValue(), 0.0)) && !ArbitraryTolerances.getValue()) { @@ -519,20 +600,20 @@ QStringList DrawViewDimension::getPrefixSuffixSpec(QString fSpec) return m_formatter->getPrefixSuffixSpec(fSpec); } -//!NOTE: this returns the Dimension value in internal units (ie mm)!!!! +//! NOTE: this returns the Dimension value in internal units (ie mm)!!!! double DrawViewDimension::getDimValue() { // Base::Console().Message("DVD::getDimValue()\n"); double result = 0.0; if (!has2DReferences() && !has3DReferences()) { - //nothing to measure + // nothing to measure return result; } if (!getViewPart()) { return result; } - if (!getViewPart()->hasGeometry()) { //happens when loading saved document + if (!getViewPart()->hasGeometry()) { // happens when loading saved document return result; } @@ -555,7 +636,7 @@ double DrawViewDimension::getDimValue() else if (Type.isValue("Angle") || Type.isValue("Angle3Pt")) { result = measurement->angle(); } - else {//tarfu + else { // tarfu throw Base::ValueError("getDimValue() - Unknown Dimension Type (3)"); } } @@ -582,14 +663,14 @@ double DrawViewDimension::getDimValue() else if (Type.isValue("Radius")) { arcPoints pts = m_arcPoints; result = - pts.radius / getViewPart()->getScale();//Projected BaseGeom is scaled for drawing + pts.radius / getViewPart()->getScale(); // Projected BaseGeom is scaled for drawing } else if (Type.isValue("Diameter")) { arcPoints pts = m_arcPoints; result = (pts.radius * 2.0) - / getViewPart()->getScale();//Projected BaseGeom is scaled for drawing + / getViewPart()->getScale(); // Projected BaseGeom is scaled for drawing } - else if (Type.isValue("Angle") || Type.isValue("Angle3Pt")) {//same as case "Angle"? + else if (Type.isValue("Angle") || Type.isValue("Angle3Pt")) { // same as case "Angle"? anglePoints pts = m_anglePoints; Base::Vector3d vertex = pts.vertex(); Base::Vector3d leg0 = pts.first() - vertex; @@ -613,13 +694,13 @@ double DrawViewDimension::getDimValue() pointPair DrawViewDimension::getPointsOneEdge(ReferenceVector references) { - // Base::Console().Message("DVD::getPointsOneEdge()\n"); + // 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()) && !references.at(0).getSubName().empty()) { - //TODO: Notify if not straight line Edge? - //this is a 2d object (a DVP + subelements) + // TODO: Notify if not straight line Edge? + // this is a 2d object (a DVP + subelements) TechDraw::BaseGeomPtr geom = getViewPart()->getGeomByIndex(iSubelement); if (!geom) { std::stringstream ssMessage; @@ -635,8 +716,8 @@ pointPair DrawViewDimension::getPointsOneEdge(ReferenceVector references) return {generic->points[0], generic->points[1]}; } - //this is a 3d object - //get the endpoints of the edge in the DVP's coordinates + // this is a 3d object + // get the endpoints of the edge in the DVP's coordinates Base::Vector3d edgeEnd0, edgeEnd1; TopoDS_Shape geometry = references.front().getGeometry(); if (geometry.IsNull() || geometry.ShapeType() != TopAbs_EDGE) { @@ -660,7 +741,7 @@ pointPair DrawViewDimension::getPointsTwoEdges(ReferenceVector references) int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && !references.at(0).getSubName().empty()) { - //this is a 2d object (a DVP + subelements) + // this is a 2d object (a DVP + subelements) TechDraw::BaseGeomPtr geom0 = getViewPart()->getGeomByIndex(iSubelement0); TechDraw::BaseGeomPtr geom1 = getViewPart()->getGeomByIndex(iSubelement1); if (!geom0 || !geom1) { @@ -671,7 +752,7 @@ pointPair DrawViewDimension::getPointsTwoEdges(ReferenceVector references) return closestPoints(geom0->getOCCEdge(), geom1->getOCCEdge()); } - //this is a 3d object + // this is a 3d object TopoDS_Shape geometry0 = references.at(0).getGeometry(); TopoDS_Shape geometry1 = references.at(1).getGeometry(); if (geometry0.IsNull() || geometry1.IsNull() || geometry0.ShapeType() != TopAbs_EDGE @@ -693,7 +774,7 @@ pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references) int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && !references.at(0).getSubName().empty()) { - //this is a 2d object (a DVP + subelements) + // this is a 2d object (a DVP + subelements) TechDraw::VertexPtr v0 = getViewPart()->getProjVertexByIndex(iSubelement0); TechDraw::VertexPtr v1 = getViewPart()->getProjVertexByIndex(iSubelement1); if (!v0 || !v1) { @@ -705,7 +786,7 @@ pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references) return {v0->point(), v1->point()}; } - //this is a 3d object + // this is a 3d object TopoDS_Shape geometry0 = references.at(0).getGeometry(); TopoDS_Shape geometry1 = references.at(1).getGeometry(); if (geometry0.IsNull() || geometry1.IsNull() || geometry0.ShapeType() != TopAbs_VERTEX @@ -731,7 +812,7 @@ pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references) int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && !references.at(0).getSubName().empty()) { - //this is a 2d object (a DVP + subelements) + // this is a 2d object (a DVP + subelements) TechDraw::BaseGeomPtr edge; TechDraw::VertexPtr vertex; if (DrawUtil::getGeomTypeFromName(references.at(0).getSubName()) == "Edge") { @@ -746,33 +827,29 @@ pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references) throw Base::RuntimeError("Missing geometry for dimension (4)"); } - //get curve from edge - double start, end; // curve parameters + // get curve from edge + double start, end; // curve parameters const Handle(Geom_Surface) hplane = new Geom_Plane(gp_Ax3()); - auto const occCurve = BRep_Tool::CurveOnPlane(edge->getOCCEdge() - , hplane - , TopLoc_Location() - , start - , end); + auto const occCurve = + BRep_Tool::CurveOnPlane(edge->getOCCEdge(), hplane, TopLoc_Location(), start, end); auto const occPoint = gp_Pnt2d(vertex->x(), vertex->y()); - //project point on curve + // project point on curve auto projector = Geom2dAPI_ProjectPointOnCurve(occPoint, occCurve); if (projector.NbPoints() > 0) { - auto p1 = Base::Vector3d(vertex->x(), vertex->y(), 0.0); - auto p2 = Base::Vector3d(projector.NearestPoint().X() - , projector.NearestPoint().Y() - , 0.0); - pointPair result = pointPair(p1, p2); - result.setExtensionLine(closestPoints(edge->getOCCEdge(), vertex->getOCCVertex())); - return result; + auto p1 = Base::Vector3d(vertex->x(), vertex->y(), 0.0); + auto p2 = + Base::Vector3d(projector.NearestPoint().X(), projector.NearestPoint().Y(), 0.0); + pointPair result = pointPair(p1, p2); + result.setExtensionLine(closestPoints(edge->getOCCEdge(), vertex->getOCCVertex())); + return result; } else { - // unable to project - return closestPoints(edge->getOCCEdge(), vertex->getOCCVertex()); + // unable to project + return closestPoints(edge->getOCCEdge(), vertex->getOCCVertex()); } } - //this is a 3d object + // this is a 3d object TopoDS_Shape geometry0 = references.at(0).getGeometry(); TopoDS_Shape geometry1 = references.at(1).getGeometry(); if (geometry0.IsNull() || geometry1.IsNull() || geometry0.ShapeType() != TopAbs_VERTEX @@ -793,7 +870,7 @@ arcPoints DrawViewDimension::getArcParameters(ReferenceVector references) int iSubelement = DrawUtil::getIndexFromName(references.front().getSubName()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && !references.at(0).getSubName().empty()) { - //this is a 2d object (a DVP + subelements) + // this is a 2d object (a DVP + subelements) TechDraw::BaseGeomPtr geom = getViewPart()->getGeomByIndex(iSubelement); if (!geom) { std::stringstream ssMessage; @@ -803,7 +880,7 @@ arcPoints DrawViewDimension::getArcParameters(ReferenceVector references) return arcPointsFromBaseGeom(getViewPart()->getGeomByIndex(iSubelement)); } - //this is a 3d reference + // this is a 3d reference TopoDS_Shape geometry = references.front().getGeometry(); if (geometry.IsNull() || geometry.ShapeType() != TopAbs_EDGE) { throw Base::RuntimeError("Geometry for dimension reference is null."); @@ -837,10 +914,10 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) } else { pts.isArc = false; - pts.onCurve.first(pts.center - + Base::Vector3d(1, 0, 0) * circle->radius);//arbitrary point on edge + pts.onCurve.first( + pts.center + Base::Vector3d(1, 0, 0) * circle->radius); // arbitrary point on edge pts.onCurve.second( - pts.center + Base::Vector3d(-1, 0, 0) * circle->radius);//arbitrary point on edge + pts.center + Base::Vector3d(-1, 0, 0) * circle->radius); // arbitrary point on edge } } else if ((base && base->getGeomType() == TechDraw::GeomType::ELLIPSE) @@ -853,9 +930,10 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) pts.center = Base::Vector3d(ellipse->center.x, ellipse->center.y, 0.0); pts.radius = rAvg; pts.isArc = false; - pts.onCurve.first(pts.center + Base::Vector3d(1, 0, 0) * rAvg);//arbitrary point on edge + pts.onCurve.first(pts.center + + Base::Vector3d(1, 0, 0) * rAvg); // arbitrary point on edge pts.onCurve.second(pts.center - + Base::Vector3d(-1, 0, 0) * rAvg);//arbitrary point on edge + + Base::Vector3d(-1, 0, 0) * rAvg); // arbitrary point on edge } else { TechDraw::AOEPtr aoe = std::static_pointer_cast(base); @@ -869,10 +947,11 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) pts.arcEnds.second(Base::Vector3d(aoe->endPnt.x, aoe->endPnt.y, 0.0)); pts.midArc = Base::Vector3d(aoe->midPnt.x, aoe->midPnt.y, 0.0); pts.arcCW = aoe->cw; - pts.onCurve.first(Base::Vector3d(aoe->midPnt.x, aoe->midPnt.y, 0.0));//for radius - // pts.onCurve.first(pts.center + Base::Vector3d(1, 0,0) * rAvg); //for diameter + pts.onCurve.first(Base::Vector3d(aoe->midPnt.x, aoe->midPnt.y, 0.0)); // for radius + // pts.onCurve.first(pts.center + Base::Vector3d(1, 0,0) * rAvg); //for + // diameter pts.onCurve.second(pts.center - + Base::Vector3d(-1, 0, 0) * rAvg);//arbitrary point on edge + + Base::Vector3d(-1, 0, 0) * rAvg); // arbitrary point on edge } } else if (base && base->getGeomType() == TechDraw::GeomType::BSPLINE) { @@ -881,7 +960,7 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) bool arc; double rad; Base::Vector3d center; - //bool circ = + // bool circ = GeometryUtils::getCircleParms(spline->getOCCEdge(), rad, center, arc); pts.center = Base::Vector3d(center.x, center.y, 0.0); pts.radius = rad; @@ -895,14 +974,14 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) } else { pts.onCurve.first(pts.center - + Base::Vector3d(1, 0, 0) * rad);//arbitrary point on edge + + Base::Vector3d(1, 0, 0) * rad); // arbitrary point on edge pts.onCurve.second(pts.center - + Base::Vector3d(-1, 0, 0) * rad);//arbitrary point on edge + + Base::Vector3d(-1, 0, 0) * rad); // arbitrary point on edge } } else { - //fubar - can't have non-circular spline as target of Diameter dimension, but this is already - //checked, so something has gone badly wrong. + // fubar - can't have non-circular spline as target of Diameter dimension, but this is + // already checked, so something has gone badly wrong. Base::Console().Error("%s: can not make a Circle from this BSpline edge\n", getNameInDocument()); throw Base::RuntimeError("Bad BSpline geometry for arc dimension"); @@ -939,7 +1018,7 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) pts.center = DrawUtil::toVector3d(circle.Location()); pts.radius = circle.Radius(); if (pts.isArc) { - //part of circle + // part of circle gp_Ax1 axis = circle.Axis(); gp_Vec startVec = DrawUtil::togp_Vec(pts.arcEnds.first() - pts.center); gp_Vec endVec = DrawUtil::togp_Vec(pts.arcEnds.second() - pts.center); @@ -947,11 +1026,11 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) pts.arcCW = (angle < 0.0); } else { - //full circle + // full circle pts.onCurve.first(pts.center - + Base::Vector3d(1, 0, 0) * pts.radius);//arbitrary point on edge + + Base::Vector3d(1, 0, 0) * pts.radius); // arbitrary point on edge pts.onCurve.second(pts.center - + Base::Vector3d(-1, 0, 0) * pts.radius);//arbitrary point on edge + + Base::Vector3d(-1, 0, 0) * pts.radius); // arbitrary point on edge } } else if (adapt.GetType() == GeomAbs_Ellipse) { @@ -959,7 +1038,7 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) pts.center = DrawUtil::toVector3d(ellipse.Location()); pts.radius = (ellipse.MajorRadius() + ellipse.MinorRadius()) / 2.0; if (pts.isArc) { - //part of ellipse + // part of ellipse gp_Ax1 axis = ellipse.Axis(); gp_Vec startVec = DrawUtil::togp_Vec(pts.arcEnds.first() - pts.center); gp_Vec endVec = DrawUtil::togp_Vec(pts.arcEnds.second() - pts.center); @@ -967,11 +1046,11 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) pts.arcCW = (angle < 0.0); } else { - //full ellipse + // full ellipse pts.onCurve.first(pts.center - + Base::Vector3d(1, 0, 0) * pts.radius);//arbitrary point on edge + + Base::Vector3d(1, 0, 0) * pts.radius); // arbitrary point on edge pts.onCurve.second(pts.center - + Base::Vector3d(-1, 0, 0) * pts.radius);//arbitrary point on edge + + Base::Vector3d(-1, 0, 0) * pts.radius); // arbitrary point on edge } } else if (adapt.GetType() == GeomAbs_BSplineCurve) { @@ -984,11 +1063,11 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) throw Base::RuntimeError("failed to get circle from bspline"); } gp_Circ circle = adapt.Circle(); - //TODO: same code as above. reuse opportunity. + // TODO: same code as above. reuse opportunity. pts.center = DrawUtil::toVector3d(circle.Location()); pts.radius = circle.Radius(); if (pts.isArc) { - //part of circle + // part of circle gp_Ax1 axis = circle.Axis(); gp_Vec startVec = DrawUtil::togp_Vec(pts.arcEnds.first() - pts.center); gp_Vec endVec = DrawUtil::togp_Vec(pts.arcEnds.second() - pts.center); @@ -996,11 +1075,11 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) pts.arcCW = (angle < 0.0); } else { - //full circle - pts.onCurve.first(pts.center - + Base::Vector3d(1, 0, 0) * pts.radius);//arbitrary point on edge + // full circle + pts.onCurve.first( + pts.center + Base::Vector3d(1, 0, 0) * pts.radius); // arbitrary point on edge pts.onCurve.second( - pts.center + Base::Vector3d(-1, 0, 0) * pts.radius);//arbitrary point on edge + pts.center + Base::Vector3d(-1, 0, 0) * pts.radius); // arbitrary point on edge } } else { @@ -1016,13 +1095,13 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references) { - //Base::Console().Message("DVD::getAnglePointsTwoEdges() - %s\n", getNameInDocument()); + // 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()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && !references.at(0).getSubName().empty()) { - //this is a 2d object (a DVP + subelements) + // this is a 2d object (a DVP + subelements) TechDraw::BaseGeomPtr geom0 = getViewPart()->getGeomByIndex(iSubelement0); TechDraw::BaseGeomPtr geom1 = getViewPart()->getGeomByIndex(iSubelement1); if (!geom0 || !geom1) { @@ -1046,7 +1125,7 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references TechDraw::GenericPtr generic1 = std::static_pointer_cast(geom1); Base::Vector3d apex = generic0->apparentInter(generic1); Base::Vector3d farPoint0, farPoint1; - //pick the end of generic0 farthest from the apex + // pick the end of generic0 farthest from the apex if ((generic0->getStartPoint() - apex).Length() > (generic0->getEndPoint() - apex).Length()) { farPoint0 = generic0->getStartPoint(); @@ -1054,7 +1133,7 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references else { farPoint0 = generic0->getEndPoint(); } - //pick the end of generic1 farthest from the apex + // pick the end of generic1 farthest from the apex if ((generic1->getStartPoint() - apex).Length() > (generic1->getEndPoint() - apex).Length()) { farPoint1 = generic1->getStartPoint(); @@ -1065,24 +1144,26 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references Base::Vector3d leg0Dir = (generic0->getStartPoint() - generic0->getEndPoint()).Normalize(); Base::Vector3d leg1Dir = (generic1->getStartPoint() - generic1->getEndPoint()).Normalize(); if (DrawUtil::fpCompare(fabs(leg0Dir.Dot(leg1Dir)), 1.0)) { - //legs of the angle are parallel. + // legs of the angle are parallel. throw Base::RuntimeError("Can not make angle from parallel edges"); } - Base::Vector3d extenPoint0 = farPoint0;//extension line points + Base::Vector3d extenPoint0 = farPoint0; // extension line points Base::Vector3d extenPoint1 = farPoint1; if (DrawUtil::fpCompare(fabs(leg0Dir.Dot(leg1Dir)), 0.0)) { - //legs of angle are perpendicular farPoints will do + // legs of angle are perpendicular farPoints will do } else { - //legs of the angle are skew - //project farthest points onto opposite edge + // legs of the angle are skew + // project farthest points onto opposite edge Base::Vector3d projFar0OnLeg1 = farPoint0.Perpendicular(apex, leg1Dir); Base::Vector3d projFar1OnLeg0 = farPoint1.Perpendicular(apex, leg0Dir); - if (DrawUtil::isBetween(projFar0OnLeg1, generic1->getStartPoint(), + if (DrawUtil::isBetween(projFar0OnLeg1, + generic1->getStartPoint(), generic1->getEndPoint())) { extenPoint1 = projFar0OnLeg1; } - else if (DrawUtil::isBetween(projFar1OnLeg0, generic0->getStartPoint(), + else if (DrawUtil::isBetween(projFar1OnLeg0, + generic0->getStartPoint(), generic0->getEndPoint())) { extenPoint0 = projFar1OnLeg0; } @@ -1095,7 +1176,7 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references return pts; } - //this is a 3d object + // this is a 3d object TopoDS_Shape geometry0 = references.at(0).getGeometry(); TopoDS_Shape geometry1 = references.at(1).getGeometry(); if (geometry0.IsNull() || geometry1.IsNull() || geometry0.ShapeType() != TopAbs_EDGE @@ -1117,9 +1198,11 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references gp_Pnt gEnd1 = BRep_Tool::Pnt(TopExp::LastVertex(edge1)); gp_Vec gDir1(gEnd1.XYZ() - gStart1.XYZ()); Base::Vector3d vApex; - bool haveIntersection = DrawUtil::intersect2Lines3d( - DrawUtil::toVector3d(gStart0), DrawUtil::toVector3d(gDir0), DrawUtil::toVector3d(gStart1), - DrawUtil::toVector3d(gDir1), vApex); + bool haveIntersection = DrawUtil::intersect2Lines3d(DrawUtil::toVector3d(gStart0), + DrawUtil::toVector3d(gDir0), + DrawUtil::toVector3d(gStart1), + DrawUtil::toVector3d(gDir1), + vApex); if (!haveIntersection) { throw Base::RuntimeError("Geometry for 3d angle dimension does not intersect"); } @@ -1134,14 +1217,16 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references if (gStart1.Distance(gApex) > gEnd1.Distance(gApex)) { gFar1 = gStart1; } - anglePoints pts(DrawUtil::toVector3d(gApex), DrawUtil::toVector3d(gFar0), + anglePoints pts(DrawUtil::toVector3d(gApex), + DrawUtil::toVector3d(gFar0), DrawUtil::toVector3d(gFar1)); pts.move(getViewPart()->getCurrentCentroid()); pts.project(getViewPart()); return pts; } -//TODO: this makes assumptions about the order of references (p - v - p). is this checked somewhere? +// TODO: this makes assumptions about the order of references (p - v - p). is this checked +// somewhere? anglePoints DrawViewDimension::getAnglePointsThreeVerts(ReferenceVector references) { // Base::Console().Message("DVD::getAnglePointsThreeVerts() - %s\n", getNameInDocument()); @@ -1154,7 +1239,7 @@ anglePoints DrawViewDimension::getAnglePointsThreeVerts(ReferenceVector referenc int iSubelement2 = DrawUtil::getIndexFromName(references.at(2).getSubName()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && !references.at(0).getSubName().empty()) { - //this is a 2d object (a DVP + subelements) + // this is a 2d object (a DVP + subelements) TechDraw::VertexPtr vert0 = getViewPart()->getProjVertexByIndex(iSubelement0); TechDraw::VertexPtr vert1 = getViewPart()->getProjVertexByIndex(iSubelement1); TechDraw::VertexPtr vert2 = getViewPart()->getProjVertexByIndex(iSubelement2); @@ -1165,7 +1250,7 @@ anglePoints DrawViewDimension::getAnglePointsThreeVerts(ReferenceVector referenc return pts; } - //this is a 3d object + // this is a 3d object TopoDS_Shape geometry0 = references.at(0).getGeometry(); TopoDS_Shape geometry1 = references.at(1).getGeometry(); TopoDS_Shape geometry2 = references.at(2).getGeometry(); @@ -1180,7 +1265,8 @@ anglePoints DrawViewDimension::getAnglePointsThreeVerts(ReferenceVector referenc gp_Pnt point1 = BRep_Tool::Pnt(vertex1); TopoDS_Vertex vertex2 = TopoDS::Vertex(geometry2); gp_Pnt point2 = BRep_Tool::Pnt(vertex2); - anglePoints pts(DrawUtil::toVector3d(point1), DrawUtil::toVector3d(point0), + anglePoints pts(DrawUtil::toVector3d(point1), + DrawUtil::toVector3d(point0), DrawUtil::toVector3d(point2)); pts.move(getViewPart()->getCurrentCentroid()); pts.project(getViewPart()); @@ -1195,79 +1281,50 @@ DrawViewPart* DrawViewDimension::getViewPart() const return dynamic_cast(References2D.getValues().at(0)); } -//return the references controlling this dimension. 3d references are used when available -//otherwise 2d references are returned. no checking is performed. Result is pairs of (object, subName) +// return the references controlling this dimension. 3d references are used when available +// otherwise 2d references are returned. no checking is performed. Result is pairs of (object, +// subName) ReferenceVector DrawViewDimension::getEffectiveReferences() const { -// Base::Console().Message("DVD::getEffectiveReferences()\n"); + // Base::Console().Message("DVD::getEffectiveReferences()\n"); const std::vector& objects3d = References3D.getValues(); const std::vector& subElements3d = References3D.getSubValues(); const std::vector& objects = References2D.getValues(); const std::vector& subElements = References2D.getSubValues(); ReferenceVector effectiveRefs; - if (!objects3d.empty()) { - //use 3d references by preference + + // note that 3d references can be destroyed without our notice if the object + // is deleted. + if (objects3d.empty()) { + // use 2d references + int refCount = objects.size(); + for (int i = 0; i < refCount; i++) { + if (subElements.empty()) { + // the 3d references have likely been nulled out by an object + // deletion. + ReferenceEntry ref(objects.at(i), std::string()); + effectiveRefs.push_back(ref); + } + else { + // normal 2d reference + ReferenceEntry ref(objects.at(i), subElements.at(i)); + effectiveRefs.push_back(ref); + } + } + } + else { + // use 3d references int refCount = objects3d.size(); for (int i = 0; i < refCount; i++) { ReferenceEntry ref(objects3d.at(i), std::string(subElements3d.at(i))); effectiveRefs.push_back(ref); } } - else { - //use 2d references if necessary - int refCount = objects.size(); - for (int i = 0; i < refCount; i++) { - ReferenceEntry ref(objects.at(i), subElements.at(i)); - effectiveRefs.push_back(ref); - } - } return effectiveRefs; } -//return the 2d references as a ReferenceVector -ReferenceVector DrawViewDimension::getReferences2d() const -{ - const std::vector& objects = References2D.getValues(); - const std::vector& subElements = References2D.getSubValues(); - ReferenceVector refs2d; - int refCount = objects.size(); - for (int i = 0; i < refCount; i++) { - ReferenceEntry ref(objects.at(i), subElements.at(i)); - refs2d.push_back(ref); - } - return refs2d; -} -//return the 3d references as a ReferenceVector -ReferenceVector DrawViewDimension::getReferences3d() const -{ - const std::vector& objects3d = References3D.getValues(); - const std::vector& subElements3d = References3D.getSubValues(); - ReferenceVector refs3d; - int refCount = objects3d.size(); - for (int i = 0; i < refCount; i++) { - ReferenceEntry ref(objects3d.at(i), subElements3d.at(i)); - refs3d.push_back(ref); - } - return refs3d; -} - -void DrawViewDimension::replaceReferenceSubElement2d(int iRef, std::string& newSubelement) -{ -// Base::Console().Message("DVD::replaceReferenceSubElement2d(%d, %s)\n", iRef, newSubelement.c_str()); - ReferenceVector refs = getReferences2d(); - refs.at(iRef).setSubName(newSubelement); - setReferences2d(refs); -} - -void DrawViewDimension::replaceReferenceSubElement3d(int iRef, std::string& newSubelement) -{ - ReferenceVector refs = getReferences3d(); - refs.at(iRef).setSubName(newSubelement); - setReferences3d(refs); -} - -//what configuration of references do we have - Vertex-Vertex, Edge-Vertex, Edge, ... +// what configuration of references do we have - Vertex-Vertex, Edge-Vertex, Edge, ... int DrawViewDimension::getRefType() const { if (isExtentDim()) { @@ -1277,17 +1334,17 @@ int DrawViewDimension::getRefType() const ReferenceVector refs = getEffectiveReferences(); std::vector subNames; - //std::vector subNames = getEffectiveSubNames(); //??? + // std::vector subNames = getEffectiveSubNames(); //??? for (auto& ref : refs) { if (ref.getSubName().empty()) { - //skip this one + // skip this one continue; } subNames.push_back(ref.getSubName()); } if (subNames.empty()) { - //something went wrong, there were no subNames. + // something went wrong, there were no subNames. Base::Console().Message("DVD::getRefType - %s - there are no subNames.\n", getNameInDocument()); return 0; @@ -1296,8 +1353,8 @@ int DrawViewDimension::getRefType() const return getRefTypeSubElements(subNames); } -//TODO: Gui/DimensionValidators.cpp has almost the same code -//decide what the reference configuration is by examining the names of the sub elements +// TODO: Gui/DimensionValidators.cpp has almost the same code +// decide what the reference configuration is by examining the names of the sub elements int DrawViewDimension::getRefTypeSubElements(const std::vector& subElements) { int refType = invalidRef; @@ -1342,12 +1399,12 @@ bool DrawViewDimension::checkReferences2D() const const std::vector& subElements = References2D.getSubValues(); if (subElements.empty()) { - //must have at least 1 null string entry to balance DVP + // must have at least 1 null string entry to balance DVP return false; } if (subElements.front().empty() && !References3D.getValues().empty()) { - //this is (probably) a dim with 3d refs + // this is (probably) a dim with 3d refs return true; } @@ -1374,10 +1431,28 @@ bool DrawViewDimension::checkReferences2D() const return true; } +//! detect the state where 3d references have been nulled out due to +//! object deletion and the reference will need to be rebuilt. +bool DrawViewDimension::hasBroken3dReferences() const +{ + const std::vector& objects3d = References3D.getValues(); + const std::vector& objects = References2D.getValues(); + const std::vector& subElements = References2D.getSubValues(); + + if (objects.size() == 1 && objects3d.empty() && subElements.empty()) { + // we have the reference to the View, but no 2d subelements or 3d objects + // this means that the 3d references have been nulled out due to + // object deletion and the reference will need to be rebuilt. + return true; + } + return false; +} + + void DrawViewDimension::updateSavedGeometry() { -// Base::Console().Message("DVD::updateSavedGeometry() - %s - savedGeometry: %d\n", -// getNameInDocument(), SavedGeometry.getValues().size()); + // Base::Console().Message("DVD::updateSavedGeometry() - %s - savedGeometry: %d\n", + // getNameInDocument(), SavedGeometry.getValues().size()); ReferenceVector references = getEffectiveReferences(); if (references.empty()) { // no references to save @@ -1385,7 +1460,7 @@ void DrawViewDimension::updateSavedGeometry() } std::vector newGeometry; const std::vector oldGeometry = SavedGeometry.getValues(); - //need to clean up old geometry objects here? + // need to clean up old geometry objects here? size_t iOldGeom(0); for (auto& entry : references) { @@ -1393,14 +1468,16 @@ void DrawViewDimension::updateSavedGeometry() // view only reference has no geometry. continue; } - if (entry.isValid()) { + if (entry.hasGeometry()) { newGeometry.push_back(entry.asTopoShape()); - } else { - // use old geometry entry? null shape? have to put something in the vector - // so SavedGeometry and references stay in sync. + } + else { + // use old geometry entry? null shape? have to put something in the vector + // so SavedGeometry and references stay in sync. if (iOldGeom < oldGeometry.size()) { newGeometry.push_back(oldGeometry.at(iOldGeom)); - } else { + } + else { newGeometry.push_back(Part::TopoShape()); } } @@ -1408,209 +1485,10 @@ void DrawViewDimension::updateSavedGeometry() } if (!newGeometry.empty()) { SavedGeometry.setValues(newGeometry); + saveFeatureBox(); } } -// routines related to detecting that references no longer point to the same geometry as -// when they were created. -// returns true if the saved geometry is the same as the current reference geometry -// returns false if the saved geometry is different from the the current reference geometry -bool DrawViewDimension::compareSavedGeometry() -{ -// Base::Console().Message("DVD::compareSavedGeometry() - isRestoring: %d\n", isRestoring()); - const std::vector savedGeometry = SavedGeometry.getValues(); - if (savedGeometry.empty()) { - // no saved geometry, so we have nothing to compare, so we don't know if there has been a change - // this should return false, since something != nothing -// Base::Console().("%s has no saved reference geometry!\n", getNameInDocument()); - return false; - } - - ReferenceVector references = getEffectiveReferences(); - std::vector referenceGeometry; - for (auto& entry : references) { - referenceGeometry.push_back(entry.asTopoShape()); - } - if (savedGeometry.size() != referenceGeometry.size()) { -// Base::Console().Message("DVD::compareSavedGeometry - geometry sizes have changed\n"); - return false; - } - int geometryCount = savedGeometry.size(); - int iGeom = 0; - for ( ; iGeom < geometryCount; iGeom++) { - if (savedGeometry.at(iGeom).getTypeId() != referenceGeometry.at(iGeom).getTypeId()) { -// Base::Console().Message("DVD::compareSavedGeometry - saved geometry (%d) has different type\n", iGeom); - return false; - } - } - //saved and reference geometry have same count and types - for (iGeom = 0; iGeom < geometryCount; iGeom++) { - Part::TopoShape temp = savedGeometry.at(iGeom); - if (!m_matcher->compareGeometry(temp, referenceGeometry.at(iGeom)) ) { -// Base::Console().Message("DVD::compareSavedGeometry - saved geometry (%d) does not match current geometry\n", iGeom); - return false; - } - } - - //free the reference geometry? - return true; -} - -// deal with the situation where references do not point to the same geometry as -// when they were created. -bool DrawViewDimension::fixExactMatch() -{ -// Base::Console().Message("DVD::fixExactMatch() - reference geometry has changed\n"); - if (!Preferences::autoCorrectDimRefs()) { - return false; - } - ReferenceVector references = getEffectiveReferences(); - if (references.empty()) { - // could not get refs, something is wrong! - return false; - } - - if (SavedGeometry.getValues().empty()) { - // there is no saved geometry, so we can't repair anything. - return false; - } - std::vector< std::pair > refsToFix2d; - std::vector< std::pair > refsToFix3d; - bool success(true); - size_t referenceCount = references.size(); - size_t iRef = 0; - for ( ; iRef < referenceCount; iRef++) { - std::string newReference(""); - TopoDS_Shape geomShape = references.at(iRef).getGeometry(); - if (geomShape.IsNull()) { -// Base::Console().Message("DVD::fixExactMatch - no geometry found for reference: %d\n", iRef); - return false; - } - if (references.at(iRef).is3d()) { - if (geomShape.ShapeType() == TopAbs_VERTEX) { - newReference = recoverChangedVertex3d(iRef); - } else { - newReference = recoverChangedEdge3d(iRef); - } - if (!newReference.empty()) { - std::pair toFix(iRef, newReference); - refsToFix3d.push_back(toFix); - } else { - Base::Console().Message("%s - no exact match for changed 3d reference: %d\n", getNameInDocument(), iRef); - success = false; - } - } else { - if (geomShape.ShapeType() == TopAbs_VERTEX) { - newReference = recoverChangedVertex2d(iRef); - } else { - newReference = recoverChangedEdge2d(iRef); - } - if (!newReference.empty()) { - std::pair toFix(iRef, newReference); - refsToFix2d.push_back(toFix); - } else { - Base::Console().Message("%s - no exact match for changed 2d reference: %d\n", getNameInDocument(), iRef); - success = false; - } - } - } - - for (auto& fix : refsToFix2d) { - replaceReferenceSubElement2d(fix.first, fix.second); - } - for (auto& fix : refsToFix3d) { - replaceReferenceSubElement3d(fix.first, fix.second); - } - - return success; -} - -// deal with situation where the current geometry does not match the saved geometry, -// but we did not find an exact match in the geometry pile -void DrawViewDimension::handleNoExactMatch() -{ -// Base::Console().Message("DVD::handleNoExactMatch()\n"); -// Base::Console().Message("%s - trying to match changed geometry - stage 2\n", getNameInDocument()); - // this is where we insert the clever logic to determine that the changed geometry - // actually still represents the "front top left" edge. - // after figuring out the new reference, save the geometry - // updateSavedGeometry(); - m_referencesCorrect = true; -} - -//find an edge in the view that matches the reference entry's type and characteristics -std::string DrawViewDimension::recoverChangedEdge2d(int iReference) -{ -// Base::Console().Message("DVD::recoverChangedEdge2d(ref: %d)\n", iReference); - double scale = getViewPart()->getScale(); - Part::TopoShape savedGeometryItem = SavedGeometry.getValues().at(iReference); - std::vector gEdges = getViewPart()->getEdgeGeometry(); - int iEdge = 0; - for (auto& edge : gEdges) { - Part::TopoShape temp = edge->asTopoShape(scale); - if (savedGeometryItem.getTypeId() != temp.getTypeId()) { - // if the typeIds don't match, we can not compare the geometry -// Base::Console().Message("DVD::recoverChangedEdge2d - types do not match\n"); - iEdge++; - continue; - } - bool isSame = m_matcher->compareGeometry(savedGeometryItem, temp); -// Base::Console().Message("DVD::recoverChangedEdge2d - iEdge: %d isSame: %d\n", iEdge, isSame); - if (isSame) { - return std::string("Edge") + std::to_string(iEdge); - } - iEdge++; - } - return std::string(""); -} - -std::string DrawViewDimension::recoverChangedVertex2d(int iReference) -{ -// Base::Console().Message("DVD::recoverChangedVertex2d(%d)\n", iReference); - double scale = getViewPart()->getScale(); - std::vector savedAll = SavedGeometry.getValues(); - if (savedAll.empty() || - iReference >= int(savedAll.size())) { - return std::string(); - } - Part::TopoShape savedGeometryItem = SavedGeometry.getValues().at(iReference); - std::vector gVertexAll = getViewPart()->getVertexGeometry(); - int iVertex = 0; - for (auto& vert : gVertexAll) { - Part::TopoShape temp = vert->asTopoShape(scale); - bool isSame = m_matcher->compareGeometry(savedGeometryItem, temp); - if (isSame) { - return std::string("Vertex") + std::to_string(iVertex); - } - iVertex++; - } - return std::string(""); -} - -std::string DrawViewDimension::recoverChangedEdge3d(int iReference) -{ -// Base::Console().Message("DVD::recoverChangedEdge3d(%d)\n", iReference); - Part::TopoShape savedGeometryItem = SavedGeometry.getValues().at(iReference); - ReferenceVector references = getEffectiveReferences(); - App::DocumentObject* searchObject = references.at(iReference).getObject(); - Part::TopoShape shape = Part::Feature::getTopoShape(searchObject); - App::GeoFeature* geoFeat = dynamic_cast(searchObject); - //does a feature in a body get the body's globalPlacement?? - if (geoFeat) { - shape.setPlacement(geoFeat->globalPlacement()); - } - //TODO: these TopoShapes will have to be released when we are finished with them - std::vector edgesAll = getEdges(shape); - int iEdge = 1; //note that edge numbering starts at 1! - for (auto& edge : edgesAll) { - bool isSame = m_matcher->compareGeometry(savedGeometryItem, edge); - if (isSame) { - return std::string("Edge") + std::to_string(iEdge); - } - iEdge++; - } - return std::string(""); -} // based on Part::TopoShapePyImp::getShapes. Produces a vector of unique edges within the shape std::vector DrawViewDimension::getEdges(const TopoShape& inShape) @@ -1631,31 +1509,6 @@ std::vector DrawViewDimension::getEdges(const TopoShape& inShape) return ret; } -// as recoverChangedVertex2d, but 3d references do not need to be unscaled -std::string DrawViewDimension::recoverChangedVertex3d(int iReference) -{ -// Base::Console().Message("DVD::recoverChangedVertex3d(%d)\n", iReference); - Part::TopoShape savedGeometryItem = SavedGeometry.getValues().at(iReference); - ReferenceVector references = getEffectiveReferences(); - App::DocumentObject* searchObject = references.at(iReference).getObject(); - Part::TopoShape shape = Part::Feature::getTopoShape(searchObject); - App::GeoFeature* geoFeat = dynamic_cast(searchObject); - if (geoFeat) { - shape.setPlacement(geoFeat->globalPlacement()); - } - - //TODO: these TopoShapes will have to be released when we are finished with them - std::vector vertsAll = getVertexes(shape); - int iVert = 1; //note that vertex numbering starts at 1! - for (auto& vert : vertsAll) { - bool isSame = m_matcher->compareGeometry(savedGeometryItem, vert); - if (isSame) { - return std::string("Vertex") + std::to_string(iVert); - } - iVert++; - } - return std::string(""); -} // based on Part::TopoShapePyImp::getShapes std::vector DrawViewDimension::getVertexes(const TopoShape& inShape) @@ -1689,15 +1542,15 @@ pointPair DrawViewDimension::closestPoints(TopoDS_Shape s1, TopoDS_Shape s2) con result.first(Base::Vector3d(p.X(), p.Y(), p.Z())); p = extss.PointOnShape2(1); result.second(Base::Vector3d(p.X(), p.Y(), p.Z())); - }//TODO: else { explode } + } // TODO: else { explode } return result; } -//set the reference property from a reference vector +// set the reference property from a reference vector void DrawViewDimension::setReferences2d(ReferenceVector refs) { -// Base::Console().Message("DVD::setReferences2d(%d)\n", refs.size()); + // Base::Console().Message("DVD::setReferences2d(%d)\n", refs.size()); std::vector objects; std::vector subNames; if (objects.size() != subNames.size()) { @@ -1712,11 +1565,12 @@ void DrawViewDimension::setReferences2d(ReferenceVector refs) References2D.setValues(objects, subNames); } -//set the reference property from a reference vector +// set the reference property from a reference vector void DrawViewDimension::setReferences3d(ReferenceVector refs) { + // Base::Console().Message("DVD::setReferences3d()\n"); if (refs.empty() && !References3D.getValues().empty()) { - //clear the property of any old links + // clear the property of any old links References3D.setValue(nullptr, nullptr); return; } @@ -1729,12 +1583,23 @@ void DrawViewDimension::setReferences3d(ReferenceVector refs) for (size_t iRef = 0; iRef < refs.size(); iRef++) { objects.push_back(refs.at(iRef).getObject()); subNames.push_back(refs.at(iRef).getSubName()); + // cache the referenced object + m_3dObjectCache.insert(refs.at(iRef).getObject()->getNameInDocument()); + // cache the parent object if available. Ideally, we would handle deletion + // of a reference object in a slot for DocumentObject::signalDeletedObject, + // but by the time we get the signal the document will have severed any links + // between our object and its parents. So we need to cache the parent here while + // we still have the link + App::DocumentObject* firstParent = refs.at(iRef).getObject()->getFirstParent(); + if (firstParent) { + m_3dObjectCache.insert(firstParent->getNameInDocument()); + } } References3D.setValues(objects, subNames); } -//!add Dimension 3D references to measurement +//! add Dimension 3D references to measurement void DrawViewDimension::setAll3DMeasurement() { // Base::Console().Message("DVD::setAll3dMeasurement()\n"); @@ -1745,13 +1610,24 @@ void DrawViewDimension::setAll3DMeasurement() int i = 0; for (; i < end; i++) { static_cast(measurement->addReference3D(Objs.at(i), Subs.at(i))); + // cache the referenced object + m_3dObjectCache.insert(Objs.at(i)->getNameInDocument()); + // cache the parent object if available. Ideally, we would handle deletion + // of a reference object in a slot for DocumentObject::signalDeletedObject, + // but by the time we get the signal the document will have severed any links + // between our object and its parents. So we need to cache the parent here while + // we still have the link + App::DocumentObject* firstParent = Objs.at(i)->getFirstParent(); + if (firstParent) { + m_3dObjectCache.insert(firstParent->getNameInDocument()); + } } } -//delete all previous measurements +// delete all previous measurements void DrawViewDimension::clear3DMeasurements() { - //set sublinklist to empty? + // set sublinklist to empty? measurement->clear(); } @@ -1764,12 +1640,16 @@ void DrawViewDimension::dumpRefs2D(const char* text) const std::vector::const_iterator subIt = subElements.begin(); int i = 0; for (; objIt != objects.end(); objIt++, subIt++, i++) { - Base::Console().Message("DUMP - ref: %d object: %s subElement: %s\n", i, - (*objIt)->getNameInDocument(), (*subIt).c_str()); + Base::Console().Message("DUMP - ref: %d object: %s subElement: %s\n", + i, + (*objIt)->getNameInDocument(), + (*subIt).c_str()); } } -double DrawViewDimension::dist2Segs(Base::Vector3d s1, Base::Vector3d e1, Base::Vector3d s2, +double DrawViewDimension::dist2Segs(Base::Vector3d s1, + Base::Vector3d e1, + Base::Vector3d s2, Base::Vector3d e2) const { gp_Pnt start(s1.x, s1.y, 0.0); @@ -1794,7 +1674,7 @@ double DrawViewDimension::dist2Segs(Base::Vector3d s1, Base::Vector3d e1, Base:: double minDist = 0.0; if (count != 0) { minDist = extss.Value(); - }//TODO: else { explode } + } // TODO: else { explode } return minDist; } @@ -1836,9 +1716,41 @@ void DrawViewDimension::saveArrowPositions(const Base::Vector2d positions[]) } } -//return position within parent view of dimension arrow heads/dimline endpoints -//note positions are in apparent coord (inverted y). -pointPair DrawViewDimension::getArrowPositions() { return m_arrowPositions; } +// return the 2d references as a ReferenceVector +ReferenceVector DrawViewDimension::getReferences2d() const +{ + const std::vector& objects = References2D.getValues(); + const std::vector& subElements = References2D.getSubValues(); + ReferenceVector refs2d; + int refCount = objects.size(); + for (int i = 0; i < refCount; i++) { + ReferenceEntry ref(objects.at(i), subElements.at(i)); + refs2d.push_back(ref); + } + return refs2d; +} + +// return the 3d references as a ReferenceVector +ReferenceVector DrawViewDimension::getReferences3d() const +{ + const std::vector& objects3d = References3D.getValues(); + const std::vector& subElements3d = References3D.getSubValues(); + ReferenceVector refs3d; + int refCount = objects3d.size(); + for (int i = 0; i < refCount; i++) { + ReferenceEntry ref(objects3d.at(i), subElements3d.at(i)); + refs3d.push_back(ref); + } + return refs3d; +} + + +// return position within parent view of dimension arrow heads/dimline endpoints +// note positions are in apparent coord (inverted y). +pointPair DrawViewDimension::getArrowPositions() +{ + return m_arrowPositions; +} bool DrawViewDimension::has2DReferences() const { @@ -1846,23 +1758,26 @@ bool DrawViewDimension::has2DReferences() const const std::vector& objects = References2D.getValues(); const std::vector& subNames = References2D.getSubValues(); if (objects.empty()) { - //we don't even have a DVP + // we don't even have a DVP return false; } if (subNames.front().empty()) { - //this is ok, as we must have a null string entry to balance DVP in first object position + // this is ok, as we must have a null string entry to balance DVP in first object position return true; } - //we have a reference to a DVP and at least 1 subName entry, so we have 2d references + // we have a reference to a DVP and at least 1 subName entry, so we have 2d references return true; } -//there is no special structure to 3d references, so anything > 0 is good -bool DrawViewDimension::has3DReferences() const { return (References3D.getSize() > 0); } +// there is no special structure to 3d references, so anything > 0 is good +bool DrawViewDimension::has3DReferences() const +{ + return (References3D.getSize() > 0); +} -//has arbitrary or nonzero tolerance +// has arbitrary or nonzero tolerance bool DrawViewDimension::hasOverUnderTolerance() const { if (ArbitraryTolerances.getValue() || !DrawUtil::fpCompare(OverTolerance.getValue(), 0.0) @@ -1877,7 +1792,10 @@ bool DrawViewDimension::showUnits() const return Preferences::getPreferenceGroup("Dimensions")->GetBool("ShowUnits", false); } -bool DrawViewDimension::useDecimals() const { return Preferences::useGlobalDecimals(); } +bool DrawViewDimension::useDecimals() const +{ + return Preferences::useGlobalDecimals(); +} std::string DrawViewDimension::getPrefixForDimType() const { @@ -1885,7 +1803,8 @@ std::string DrawViewDimension::getPrefixForDimType() const return "R"; } else if (Type.isValue("Diameter")) { - return std::string(Preferences::getPreferenceGroup("Dimensions")->GetASCII("DiameterSymbol", "\xe2\x8c\x80"));// Diameter symbol + return std::string(Preferences::getPreferenceGroup("Dimensions") + ->GetASCII("DiameterSymbol", "\xe2\x8c\x80")); // Diameter symbol } return ""; @@ -1914,3 +1833,34 @@ PyObject* DrawViewDimension::getPyObject() } return Py::new_reference_to(PythonObject); } + +void DrawViewDimension::saveFeatureBox() +{ + std::vector bbxCorners; + auto bbx = getFeatureBox(); + bbxCorners.push_back(bbx.GetMinimum()); + bbxCorners.push_back(bbx.GetMaximum()); + BoxCorners.setValues(bbxCorners); +} + +Base::BoundBox3d DrawViewDimension::getSavedBox() +{ + std::vector bbxCorners = BoxCorners.getValues(); + if (bbxCorners.empty()) { + // need to advise caller if BoxCorners not filled in yet. zero length + // diagonal? + Base::Console().Message("DVD::getSavedBox - no corners!\n"); + return Base::BoundBox3d(); + } + return Base::BoundBox3d(bbxCorners.front().x, + bbxCorners.front().y, + bbxCorners.front().z, + bbxCorners.back().x, + bbxCorners.back().y, + bbxCorners.back().z); +} + +Base::BoundBox3d DrawViewDimension::getFeatureBox() +{ + return getViewPart()->getBoundingBox(); +} diff --git a/src/Mod/TechDraw/App/DrawViewDimension.h b/src/Mod/TechDraw/App/DrawViewDimension.h index 665a7445b6..67987b8beb 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.h +++ b/src/Mod/TechDraw/App/DrawViewDimension.h @@ -23,8 +23,6 @@ #ifndef TechDraw_DrawViewDimension_h_ #define TechDraw_DrawViewDimension_h_ -#include - #include #include #include @@ -39,7 +37,8 @@ class TopoDS_Shape; -namespace Measure { +namespace Measure +{ class Measurement; } namespace TechDraw @@ -47,60 +46,63 @@ namespace TechDraw class DrawViewPart; class DimensionFormatter; class GeometryMatcher; +class DimensionAutoCorrect; -class TechDrawExport DrawViewDimension : public TechDraw::DrawView +class TechDrawExport DrawViewDimension: public TechDraw::DrawView { PROPERTY_HEADER_WITH_OVERRIDE(TechDraw::DrawViewDimension); public: - -// keep this enum synchronized with TypeEnums -enum DimensionType { - Distance, - DistanceX, - DistanceY, - DistanceZ, - Radius, - Diameter, - Angle, - Angle3Pt -}; + // keep this enum synchronized with TypeEnums + enum DimensionType + { + Distance, + DistanceX, + DistanceY, + DistanceZ, + Radius, + Diameter, + Angle, + Angle3Pt + }; /// Constructor DrawViewDimension(); ~DrawViewDimension() override; - App::PropertyEnumeration MeasureType; //True/Projected - App::PropertyLinkSubList References2D; //Points to Projection SubFeatures - App::PropertyLinkSubList References3D; //Points to 3D Geometry SubFeatures - App::PropertyEnumeration Type; //DistanceX, DistanceY, Diameter, etc. + App::PropertyEnumeration MeasureType; // True/Projected + App::PropertyLinkSubList References2D; // Points to Projection SubFeatures + App::PropertyLinkSubList References3D; // Points to 3D Geometry SubFeatures + App::PropertyEnumeration Type; // DistanceX, DistanceY, Diameter, etc. - App::PropertyBool TheoreticalExact; - App::PropertyBool Inverted; - App::PropertyString FormatSpec; - App::PropertyString FormatSpecOverTolerance; - App::PropertyString FormatSpecUnderTolerance; - App::PropertyBool Arbitrary; - App::PropertyBool ArbitraryTolerances; - App::PropertyBool EqualTolerance; + App::PropertyBool TheoreticalExact; + App::PropertyBool Inverted; + App::PropertyString FormatSpec; + App::PropertyString FormatSpecOverTolerance; + App::PropertyString FormatSpecUnderTolerance; + App::PropertyBool Arbitrary; + App::PropertyBool ArbitraryTolerances; + App::PropertyBool EqualTolerance; App::PropertyQuantityConstraint OverTolerance; App::PropertyQuantityConstraint UnderTolerance; - App::PropertyBool AngleOverride; - App::PropertyAngle LineAngle; - App::PropertyAngle ExtensionAngle; + App::PropertyBool AngleOverride; + App::PropertyAngle LineAngle; + App::PropertyAngle ExtensionAngle; - Part::PropertyTopoShapeList SavedGeometry; + Part::PropertyTopoShapeList SavedGeometry; + App::PropertyVectorList BoxCorners; - enum RefType{ - invalidRef, - oneEdge, - twoEdge, - twoVertex, - vertexEdge, - threeVertex, - extent - }; + enum RefType + { + invalidRef, + oneEdge, + twoEdge, + twoVertex, + vertexEdge, + threeVertex, + extent + }; short mustExecute() const override; @@ -108,23 +110,20 @@ enum DimensionType { virtual bool has3DReferences() const; bool hasOverUnderTolerance() const; - /** @name methods override Feature */ - //@{ - /// recalculate the Feature - App::DocumentObjectExecReturn *execute() override; - //@} + App::DocumentObjectExecReturn* execute() override; - /// returns the type name of the ViewProvider - const char* getViewProviderName() const override { + const char* getViewProviderName() const override + { return "TechDrawGui::ViewProviderDimension"; } - //return PyObject as DrawViewDimensionPy - PyObject *getPyObject() override; + // return PyObject as DrawViewDimensionPy + PyObject* getPyObject() override; virtual std::string getFormattedToleranceValue(int partial); virtual std::pair getFormattedToleranceValues(int partial = 0); virtual std::string getFormattedDimensionValue(int partial = 0); - virtual std::string formatValue(qreal value, QString qFormatSpec, int partial = 0, bool isDim = true); + virtual std::string + formatValue(qreal value, QString qFormatSpec, int partial = 0, bool isDim = true); virtual bool haveTolerance(); @@ -132,24 +131,51 @@ enum DimensionType { QStringList getPrefixSuffixSpec(QString fSpec); virtual DrawViewPart* getViewPart() const; - QRectF getRect() const override { return {0, 0, 1, 1}; } //pretend dimensions always fit! - virtual int getRefType() const; //Vertex-Vertex, Edge, Edge-Edge - static int getRefTypeSubElements(const std::vector &); //Vertex-Vertex, Edge, Edge-Edge + QRectF getRect() const override + { + return {0, 0, 1, 1}; + } // pretend dimensions always fit! + virtual int getRefType() const; // Vertex-Vertex, Edge, Edge-Edge + static int + getRefTypeSubElements(const std::vector&); // Vertex-Vertex, Edge, Edge-Edge void setReferences2d(ReferenceVector refs); void setReferences3d(ReferenceVector refs); ReferenceVector getReferences2d() const; ReferenceVector getReferences3d() const; + bool hasGoodReferences() const + { + return m_referencesCorrect; + } void setAll3DMeasurement(); void clear3DMeasurements(); virtual bool checkReferences2D() const; - virtual pointPair getLinearPoints() const {return m_linearPoints; } - virtual void setLinearPoints(Base::Vector3d point0, Base::Vector3d point1) { m_linearPoints.first(point0); - m_linearPoints.second(point1); }; - virtual void setLinearPoints(pointPair newPair) { m_linearPoints = newPair; } - arcPoints getArcPoints() {return m_arcPoints; } - anglePoints getAnglePoints() {return m_anglePoints; } + bool hasBroken3dReferences() const; + + + virtual pointPair getLinearPoints() const + { + return m_linearPoints; + } + virtual void setLinearPoints(Base::Vector3d point0, Base::Vector3d point1) + { + m_linearPoints.first(point0); + m_linearPoints.second(point1); + }; + virtual void setLinearPoints(pointPair newPair) + { + m_linearPoints = newPair; + } + arcPoints getArcPoints() + { + return m_arcPoints; + } + anglePoints getAnglePoints() + { + return m_anglePoints; + } + bool leaderIntersectsArc(Base::Vector3d s, Base::Vector3d pointOnCircle); bool isMultiValueSchema() const; @@ -161,10 +187,27 @@ enum DimensionType { bool useDecimals() const; bool isExtentDim() const; virtual ReferenceVector getEffectiveReferences() const; - bool goodReferenceGeometry() const { return m_referencesCorrect; } + + GeometryMatcher* getMatcher() const + { + return m_matcher; + } + DimensionAutoCorrect* getCorrector() const + { + 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); + + // autocorrect support methods + void saveFeatureBox(); + Base::BoundBox3d getSavedBox(); + Base::BoundBox3d getFeatureBox(); protected: - void handleChangedPropertyType(Base::XMLReader &, const char * , App::Property * ) override; + void handleChangedPropertyType(Base::XMLReader&, const char*, App::Property*) override; void Restore(Base::XMLReader& reader) override; void onChanged(const App::Property* prop) override; void onDocumentRestored() override; @@ -182,13 +225,10 @@ protected: virtual anglePoints getAnglePointsTwoEdges(ReferenceVector references); virtual anglePoints getAnglePointsThreeVerts(ReferenceVector references); - Measure::Measurement *measurement; - double dist2Segs(Base::Vector3d s1, - Base::Vector3d e1, - Base::Vector3d s2, - Base::Vector3d e2) const; - pointPair closestPoints(TopoDS_Shape s1, - TopoDS_Shape s2) const; + Measure::Measurement* measurement; + double + dist2Segs(Base::Vector3d s1, Base::Vector3d e1, Base::Vector3d s2, Base::Vector3d e2) const; + pointPair closestPoints(TopoDS_Shape s1, TopoDS_Shape s2) const; void resetLinear(); void resetAngular(); @@ -196,36 +236,27 @@ protected: bool okToProceed(); void updateSavedGeometry(); - bool compareSavedGeometry(); - bool fixExactMatch(); - void handleNoExactMatch(); - std::string recoverChangedEdge2d(int iReference); - std::string recoverChangedEdge3d(int iReference); - std::string recoverChangedVertex2d(int iReference); - std::string recoverChangedVertex3d(int iReference); - void replaceReferenceSubElement2d(int iRef, std::string &newSubelement); - void replaceReferenceSubElement3d(int iRef, std::string &newSubelement); - - std::vector getEdges(const Part::TopoShape& inShape); - std::vector getVertexes(const Part::TopoShape& inShape); private: static const char* TypeEnums[]; static const char* MeasureTypeEnums[]; void dumpRefs2D(const char* text) const; - //Dimension "geometry" - pointPair m_linearPoints; - pointPair m_arrowPositions; - arcPoints m_arcPoints; + // Dimension "geometry" + pointPair m_linearPoints; + pointPair m_arrowPositions; + arcPoints m_arcPoints; anglePoints m_anglePoints; - bool m_hasGeometry; + bool m_hasGeometry; friend class DimensionFormatter; DimensionFormatter* m_formatter; GeometryMatcher* m_matcher; + DimensionAutoCorrect* m_corrector; - bool m_referencesCorrect; + bool m_referencesCorrect {false}; + + std::set m_3dObjectCache; }; -} //namespace TechDraw +} // namespace TechDraw #endif diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index 67c3f150bc..a8aec4423a 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -862,7 +862,7 @@ TechDraw::VertexPtr DrawViewPart::getProjVertexByIndex(int idx) const return nullptr; } if ((unsigned)idx >= geoms.size()) { - Base::Console().Error("DVP::getProjVertexByIndex(%d) - invalid index\n", idx); + Base::Console().Error("DVP::getProjVertexByIndex(%d) - invalid index - size: %d\n", idx); return nullptr; } return geoms.at(idx); diff --git a/src/Mod/TechDraw/App/DrawViewPy.xml b/src/Mod/TechDraw/App/DrawViewPy.xml index 7bc1d48a31..4e368bd30d 100644 --- a/src/Mod/TechDraw/App/DrawViewPy.xml +++ b/src/Mod/TechDraw/App/DrawViewPy.xml @@ -20,6 +20,13 @@ + + + float scale = getScale(). Returns the correct scale for this view. Handles whether to + use this view's scale property or a parent's view (as in a projection group). + + + diff --git a/src/Mod/TechDraw/App/DrawViewPyImp.cpp b/src/Mod/TechDraw/App/DrawViewPyImp.cpp index 9d43c4044f..936244f0d1 100644 --- a/src/Mod/TechDraw/App/DrawViewPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewPyImp.cpp @@ -78,6 +78,19 @@ PyObject* DrawViewPy::translateLabel(PyObject *args) Py_Return; } +//! return the correct scale for this view +PyObject* DrawViewPy::getScale(PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) { + throw Py::TypeError("Do not understand passed parameter."); + } + + DrawView* dv = getDrawViewPtr(); + + return PyFloat_FromDouble(dv->getScale()); +} + + PyObject *DrawViewPy::getCustomAttributes(const char* /*attr*/) const { diff --git a/src/Mod/TechDraw/App/DrawViewSection.cpp b/src/Mod/TechDraw/App/DrawViewSection.cpp index 01ab923556..1b9a53695b 100644 --- a/src/Mod/TechDraw/App/DrawViewSection.cpp +++ b/src/Mod/TechDraw/App/DrawViewSection.cpp @@ -385,7 +385,7 @@ TopoDS_Shape DrawViewSection::getShapeForDetail() const App::DocumentObjectExecReturn* DrawViewSection::execute() { - // Base::Console().Message("DVS::execute() - %s\n", getNameInDocument()); + // Base::Console().Message("DVS::execute() - %s\n", Label.getValue()); if (!keepUpdated()) { return App::DocumentObject::StdReturn; } @@ -445,9 +445,7 @@ bool DrawViewSection::isBaseValid() const void DrawViewSection::sectionExec(TopoDS_Shape& baseShape) { - // Base::Console().Message("DVS::sectionExec() - %s baseShape.IsNull: - // %d\n", - // getNameInDocument(), baseShape.IsNull()); + // Base::Console().Message("DVS::sectionExec() - %s baseShape.IsNull: %d\n", Label.getValue(), baseShape.IsNull()); if (waitingForHlr() || waitingForCut()) { return; @@ -486,9 +484,7 @@ void DrawViewSection::sectionExec(TopoDS_Shape& baseShape) void DrawViewSection::makeSectionCut(const TopoDS_Shape& baseShape) { - // Base::Console().Message("DVS::makeSectionCut() - %s - baseShape.IsNull: - // %d\n", - // getNameInDocument(), baseShape.IsNull()); + // Base::Console().Message("DVS::makeSectionCut() - %s - baseShape.IsNull:%d\n", Label.getValue(), baseShape.IsNull()); showProgressMessage(getNameInDocument(), "is making section cut"); @@ -638,8 +634,7 @@ void DrawViewSection::onSectionCutFinished() // activities that depend on updated geometry object void DrawViewSection::postHlrTasks(void) { - // Base::Console().Message("DVS::postHlrTasks() - %s\n", - // getNameInDocument()); + // Base::Console().Message("DVS::postHlrTasks() - %s\n", Label.getValue()); DrawViewPart::postHlrTasks(); @@ -1172,8 +1167,10 @@ gp_Ax2 DrawViewSection::getProjectionCS(const Base::Vector3d pt) const std::vector DrawViewSection::getDrawableLines(int i) { - // Base::Console().Message("DVS::getDrawableLines(%d) - lineSets: %d\n", i, - // m_lineSets.size()); + // Base::Console().Message("DVS::getDrawableLines(%d) - lineSets: %d\n", i, m_lineSets.size()); + if (m_lineSets.empty()) { + makeLineSets(); + } std::vector result; return DrawGeomHatch::getTrimmedLinesSection(this, m_lineSets, @@ -1236,7 +1233,7 @@ void DrawViewSection::setupObject() // create geometric hatch lines void DrawViewSection::makeLineSets(void) { - // Base::Console().Message("DVS::makeLineSets()\n"); + // Base::Console().Message("DVS::makeLineSets()\n"); if (PatIncluded.isEmpty()) { return; } @@ -1277,8 +1274,7 @@ void DrawViewSection::replaceSvgIncluded(std::string newSvgFile) void DrawViewSection::replacePatIncluded(std::string newPatFile) { - // Base::Console().Message("DVS::replacePatIncluded(%s)\n", - // newPatFile.c_str()); + // Base::Console().Message("DVS::replacePatIncluded(%s)\n", newPatFile.c_str()); if (newPatFile.empty()) { return; } diff --git a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp index 3f2bed8383..a7b293152a 100644 --- a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp +++ b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp @@ -31,6 +31,8 @@ #include #include +#include + #include #include @@ -268,12 +270,13 @@ std::string DrawViewSpreadsheet::getSheetImage() App::Property* prop = sheet->getPropertyByName(address.toString().c_str()); std::stringstream field; if (prop && cell) { - if ( - prop->isDerivedFrom(App::PropertyQuantity::getClassTypeId()) || - prop->isDerivedFrom(App::PropertyFloat::getClassTypeId()) || - prop->isDerivedFrom(App::PropertyInteger::getClassTypeId()) - ) { - std::string temp = cell->getFormattedQuantity(); //writable + if (prop->isDerivedFrom(App::PropertyQuantity::getClassTypeId())) { + auto contentAsQuantity = static_cast(prop)->getQuantityValue(); + auto ustring = contentAsQuantity.getUserString(); + field << Base::Tools::toStdString(ustring); + } else if (prop->isDerivedFrom(App::PropertyFloat::getClassTypeId()) || + prop->isDerivedFrom(App::PropertyInteger::getClassTypeId())) { + std::string temp = cell->getFormattedQuantity(); DrawUtil::encodeXmlSpecialChars(temp); field << temp; } else if (prop->isDerivedFrom(App::PropertyString::getClassTypeId())) { diff --git a/src/Mod/TechDraw/App/DrawViewSymbol.cpp b/src/Mod/TechDraw/App/DrawViewSymbol.cpp index a7488fe082..d2bfa7d638 100644 --- a/src/Mod/TechDraw/App/DrawViewSymbol.cpp +++ b/src/Mod/TechDraw/App/DrawViewSymbol.cpp @@ -125,7 +125,7 @@ std::vector DrawViewSymbol::getEditableFields() // has "freecad:editable" attribute query.processItems(QString::fromUtf8("declare default element namespace \"" SVG_NS_URI "\"; " "declare namespace freecad=\"" FREECAD_SVG_NS_URI "\"; " - "//text[@freecad:editable]/tspan"), + "//text[@" FREECAD_ATTR_EDITABLE "]/tspan"), [&editables](QDomElement& tspan) -> bool { QString editableValue = tspan.firstChild().nodeValue(); editables.emplace_back(editableValue.toStdString()); @@ -154,7 +154,7 @@ void DrawViewSymbol::updateFieldsInSymbol() // has "freecad:editable" attribute query.processItems(QString::fromUtf8("declare default element namespace \"" SVG_NS_URI "\"; " "declare namespace freecad=\"" FREECAD_SVG_NS_URI "\"; " - "//text[@freecad:editable]/tspan"), + "//text[@" FREECAD_ATTR_EDITABLE "]/tspan"), [&symbolDocument, &editText, &count](QDomElement& tspanElement) -> bool { if (count >= editText.size()) { diff --git a/src/Mod/TechDraw/App/DrawWeldSymbol.cpp b/src/Mod/TechDraw/App/DrawWeldSymbol.cpp index 05b17e800d..9358bba53b 100644 --- a/src/Mod/TechDraw/App/DrawWeldSymbol.cpp +++ b/src/Mod/TechDraw/App/DrawWeldSymbol.cpp @@ -98,6 +98,12 @@ void DrawWeldSymbol::onSettingDocument() void DrawWeldSymbol::onChanged(const App::Property* prop) { DrawView::onChanged(prop); + + // If leader was switched, our coordinates were adjusted, but we want to stick to the new leader line + if (prop == &Leader && Leader.getValue()) { + X.setValue(0.0); + Y.setValue(0.0); + } } short DrawWeldSymbol::mustExecute() const diff --git a/src/Mod/TechDraw/App/DrawWeldSymbol.h b/src/Mod/TechDraw/App/DrawWeldSymbol.h index 0e85712990..bf6d50a3cc 100644 --- a/src/Mod/TechDraw/App/DrawWeldSymbol.h +++ b/src/Mod/TechDraw/App/DrawWeldSymbol.h @@ -62,6 +62,8 @@ public: bool isTailRightSide(); std::vector getTiles() const; + App::PropertyLink *getOwnerProperty() override { return &Leader; } + protected: void onChanged(const App::Property* prop) override; diff --git a/src/Mod/TechDraw/App/Geometry.cpp b/src/Mod/TechDraw/App/Geometry.cpp index 9aa51f5b1f..e73a2faf1a 100644 --- a/src/Mod/TechDraw/App/Geometry.cpp +++ b/src/Mod/TechDraw/App/Geometry.cpp @@ -1716,3 +1716,21 @@ bool GeometryUtils::isLine(TopoDS_Edge occEdge) } return false; } + + +//! make a line Edge from BSpline Edge +TopoDS_Edge GeometryUtils::asLine(TopoDS_Edge occEdge) +{ + BRepAdaptor_Curve c(occEdge); + + // find the two ends + Handle(Geom_Curve) curve = c.Curve().Curve(); + double first = c.FirstParameter(); + double last = c.LastParameter(); + gp_Pnt start = c.Value(first); + gp_Pnt end = c.Value(last); + + TopoDS_Edge result = BRepBuilderAPI_MakeEdge(start, end); + return result; +} + diff --git a/src/Mod/TechDraw/App/Geometry.h b/src/Mod/TechDraw/App/Geometry.h index 6c23407c32..6243ec5086 100644 --- a/src/Mod/TechDraw/App/Geometry.h +++ b/src/Mod/TechDraw/App/Geometry.h @@ -446,6 +446,8 @@ class TechDrawExport GeometryUtils static bool getCircleParms(TopoDS_Edge occEdge, double& radius, Base::Vector3d& center, bool& isArc); static TopoDS_Edge asCircle(TopoDS_Edge occEdge, bool& arc); static bool isLine(TopoDS_Edge occEdge); + static TopoDS_Edge asLine(TopoDS_Edge occEdge); + }; } //end namespace TechDraw diff --git a/src/Mod/TechDraw/App/GeometryMatcher.cpp b/src/Mod/TechDraw/App/GeometryMatcher.cpp index 1f3237073a..f177b94894 100644 --- a/src/Mod/TechDraw/App/GeometryMatcher.cpp +++ b/src/Mod/TechDraw/App/GeometryMatcher.cpp @@ -45,23 +45,29 @@ #include "GeometryMatcher.h" #include "DrawUtil.h" +#include "Preferences.h" using namespace TechDraw; using DU = DrawUtil; // a set of routines for comparing geometry for equality. -bool GeometryMatcher::compareGeometry(Part::TopoShape shape1, Part::TopoShape shape2) +bool GeometryMatcher::compareGeometry(Part::TopoShape shape1, Part::TopoShape shape2) { -// Base::Console().Message("GM::compareGeometry()\n"); + // Base::Console().Message("GM::compareGeometry()\n"); + if (!Preferences::useExactMatchOnDims()) { + return false; + } if (shape1.isNull() || shape2.isNull()) { -// Base::Console().Message("GM::compareGeometry - one or more TopoShapes are null\n"); + // Base::Console().Message("GM::compareGeometry - one or more TopoShapes are + // null\n"); return false; } TopoDS_Shape geom1 = shape1.getShape(); TopoDS_Shape geom2 = shape2.getShape(); if (geom1.IsNull() || geom2.IsNull()) { -// Base::Console().Message("GM::compareGeometry - one or more TopoDS_Shapes are null\n"); + // Base::Console().Message("GM::compareGeometry - one or more TopoDS_Shapes are + // null\n"); return false; } @@ -74,11 +80,11 @@ bool GeometryMatcher::compareGeometry(Part::TopoShape shape1, Part::TopoShape s return false; } -bool GeometryMatcher::comparePoints(TopoDS_Shape &shape1, TopoDS_Shape &shape2) +bool GeometryMatcher::comparePoints(TopoDS_Shape& shape1, TopoDS_Shape& shape2) { -// Base::Console().Message("GM::comparePoints()\n"); - if (shape1.ShapeType() != TopAbs_VERTEX || - shape2.ShapeType() != TopAbs_VERTEX) { + // Base::Console().Message("GM::comparePoints()\n"); + + if (shape1.ShapeType() != TopAbs_VERTEX || shape2.ShapeType() != TopAbs_VERTEX) { // can not compare these shapes return false; } @@ -92,50 +98,47 @@ bool GeometryMatcher::comparePoints(TopoDS_Shape &shape1, TopoDS_Shape &shape2) return false; } -bool GeometryMatcher::compareEdges(TopoDS_Shape &shape1, TopoDS_Shape &shape2) +bool GeometryMatcher::compareEdges(TopoDS_Shape& shape1, TopoDS_Shape& shape2) { -// Base::Console().Message("GM::compareEdges()\n"); - if (shape1.ShapeType() != TopAbs_EDGE || - shape2.ShapeType() != TopAbs_EDGE) { + // Base::Console().Message("GM::compareEdges()\n"); + if (shape1.ShapeType() != TopAbs_EDGE || shape2.ShapeType() != TopAbs_EDGE) { // can not compare these shapes -// Base::Console().Message("GM::compareEdges - shape is not an edge\n"); + // Base::Console().Message("GM::compareEdges - shape is not an edge\n"); return false; } TopoDS_Edge edge1 = TopoDS::Edge(shape1); TopoDS_Edge edge2 = TopoDS::Edge(shape2); - if (edge1.IsNull() || edge2.IsNull()) { -// Base::Console().Message("GM::compareEdges - an input edge is null\n"); + if (edge1.IsNull() || edge2.IsNull()) { + // Base::Console().Message("GM::compareEdges - an input edge is null\n"); return false; } BRepAdaptor_Curve adapt1(edge1); BRepAdaptor_Curve adapt2(edge2); - if (adapt1.GetType() == GeomAbs_Line && - adapt2.GetType() == GeomAbs_Line) { + if (adapt1.GetType() == GeomAbs_Line && adapt2.GetType() == GeomAbs_Line) { return compareLines(edge1, edge2); } - if (adapt1.GetType() == GeomAbs_Circle && - adapt2.GetType() == GeomAbs_Circle) { + if (adapt1.GetType() == GeomAbs_Circle && adapt2.GetType() == GeomAbs_Circle) { if (adapt1.IsClosed() && adapt2.IsClosed()) { return compareCircles(edge1, edge2); - } else { + } + else { return compareCircleArcs(edge1, edge2); } } - if (adapt1.GetType() == GeomAbs_Ellipse && - adapt2.GetType() == GeomAbs_Ellipse) { + if (adapt1.GetType() == GeomAbs_Ellipse && adapt2.GetType() == GeomAbs_Ellipse) { if (adapt1.IsClosed() && adapt2.IsClosed()) { return compareEllipses(edge1, edge2); - } else { + } + else { return compareEllipseArcs(edge1, edge2); } } - if (adapt1.GetType() == GeomAbs_BSplineCurve && - adapt2.GetType() == GeomAbs_BSplineCurve) { + if (adapt1.GetType() == GeomAbs_BSplineCurve && adapt2.GetType() == GeomAbs_BSplineCurve) { return compareBSplines(edge1, edge2); } @@ -143,33 +146,32 @@ bool GeometryMatcher::compareEdges(TopoDS_Shape &shape1, TopoDS_Shape &shape2) return compareDifferent(edge1, edge2); } -bool GeometryMatcher::compareLines(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareLines(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { -// Base::Console().Message("GM::compareLines()\n"); + // Base::Console().Message("GM::compareLines()\n"); // how does the edge that was NOT null in compareEdges become null here? // should not happen, but does! if (edge1.IsNull() || edge2.IsNull()) { -// Base::Console().Message("GM::compareLine - an input edge is null\n"); + // Base::Console().Message("GM::compareLine - an input edge is null\n"); return false; } auto start1 = DU::toVector3d(BRep_Tool::Pnt(TopExp::FirstVertex(edge1))); auto end1 = DU::toVector3d(BRep_Tool::Pnt(TopExp::LastVertex(edge1))); auto start2 = DU::toVector3d(BRep_Tool::Pnt(TopExp::FirstVertex(edge2))); auto end2 = DU::toVector3d(BRep_Tool::Pnt(TopExp::LastVertex(edge2))); - if (start1.IsEqual(start2, EWTOLERANCE) && - end1.IsEqual(end2, EWTOLERANCE)) { - //exact match + if (start1.IsEqual(start2, EWTOLERANCE) && end1.IsEqual(end2, EWTOLERANCE)) { + // exact match return true; } return false; } -bool GeometryMatcher::compareCircles(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareCircles(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { -// Base::Console().Message("GM::compareCircles()\n"); + // Base::Console().Message("GM::compareCircles()\n"); // how does the edge that was NOT null in compareEdges become null here? if (edge1.IsNull() || edge2.IsNull()) { -// Base::Console().Message("GM::compareCircles - an input edge is null\n"); + // Base::Console().Message("GM::compareCircles - an input edge is null\n"); return false; } @@ -181,19 +183,18 @@ bool GeometryMatcher::compareCircles(TopoDS_Edge &edge1, TopoDS_Edge &edge2) double radius2 = circle2.Radius(); auto center1 = DU::toVector3d(circle1.Location()); auto center2 = DU::toVector3d(circle2.Location()); - if (DU::fpCompare(radius1, radius2, EWTOLERANCE) && - center1.IsEqual(center2, EWTOLERANCE)) { - //exact match + if (DU::fpCompare(radius1, radius2, EWTOLERANCE) && center1.IsEqual(center2, EWTOLERANCE)) { + // exact match return true; - } + } return false; } -bool GeometryMatcher::compareEllipses(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareEllipses(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { // how does the edge that was NOT null in compareEdges become null here? if (edge1.IsNull() || edge2.IsNull()) { -// Base::Console().Message("GM::compareEllipses - an input edge is null\n"); + // Base::Console().Message("GM::compareEllipses - an input edge is null\n"); return false; } @@ -207,19 +208,18 @@ bool GeometryMatcher::compareEllipses(TopoDS_Edge &edge1, TopoDS_Edge &edge2) double minor2 = ellipse2.MinorRadius(); auto center1 = DU::toVector3d(ellipse1.Location()); auto center2 = DU::toVector3d(ellipse2.Location()); - if (DU::fpCompare(major1, major2, EWTOLERANCE) && - DU::fpCompare(minor1, minor2, EWTOLERANCE) && - center1.IsEqual(center2, EWTOLERANCE)) { + if (DU::fpCompare(major1, major2, EWTOLERANCE) && DU::fpCompare(minor1, minor2, EWTOLERANCE) + && center1.IsEqual(center2, EWTOLERANCE)) { // exact match return true; } return false; - } +} // for our purposes, only lines or circles masquerading as bsplines are of interest -bool GeometryMatcher::compareBSplines(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareBSplines(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { -// Base::Console().Message("GM::compareBSplines()\n"); + // Base::Console().Message("GM::compareBSplines()\n"); // how does the edge that was NOT null in compareEdges become null here? if (edge1.IsNull() || edge2.IsNull()) { Base::Console().Message("GM::compareBSplines - an input edge is null\n"); @@ -258,31 +258,31 @@ bool GeometryMatcher::compareBSplines(TopoDS_Edge &edge1, TopoDS_Edge &edge2) } // this is a weak comparison. we should also check center & radius? -bool GeometryMatcher::compareCircleArcs(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareCircleArcs(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { return compareEndPoints(edge1, edge2); } -bool GeometryMatcher::compareEllipseArcs(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareEllipseArcs(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { return compareEndPoints(edge1, edge2); - } +} // this is where we would try to match a bspline against a line or a circle. // not sure how successful this would be. For now, we just say it doesn't match -bool GeometryMatcher::compareDifferent(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareDifferent(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { -// Base::Console().Message("GM::compareDifferent()\n"); + // Base::Console().Message("GM::compareDifferent()\n"); BRepAdaptor_Curve adapt1(edge1); BRepAdaptor_Curve adapt2(edge2); return false; } -bool GeometryMatcher::compareEndPoints(TopoDS_Edge &edge1, TopoDS_Edge &edge2) +bool GeometryMatcher::compareEndPoints(TopoDS_Edge& edge1, TopoDS_Edge& edge2) { // how does the edge that was NOT null in compareEdges become null here? if (edge1.IsNull() || edge2.IsNull()) { -// Base::Console().Message("GM::compareLine - an input edge is null\n"); + // Base::Console().Message("GM::compareLine - an input edge is null\n"); return false; } @@ -301,9 +301,8 @@ bool GeometryMatcher::compareEndPoints(TopoDS_Edge &edge1, TopoDS_Edge &edge2) props2.SetParameter(pLast2); auto end2 = DU::toVector3d(props2.Value()); - if (begin1.IsEqual(begin2, EWTOLERANCE) && - end1.IsEqual(end2, EWTOLERANCE)) { - //exact match + if (begin1.IsEqual(begin2, EWTOLERANCE) && end1.IsEqual(end2, EWTOLERANCE)) { + // exact match return true; } return false; diff --git a/src/Mod/TechDraw/App/GeometryMatcher.h b/src/Mod/TechDraw/App/GeometryMatcher.h index f6b27d24a6..ad81be80d4 100644 --- a/src/Mod/TechDraw/App/GeometryMatcher.h +++ b/src/Mod/TechDraw/App/GeometryMatcher.h @@ -33,17 +33,23 @@ namespace Part class TopoShape; } -namespace TechDraw { +namespace TechDraw +{ -class TechDrawExport GeometryMatcher { +class TechDrawExport GeometryMatcher +{ public: - GeometryMatcher() {} - explicit GeometryMatcher(DrawViewDimension* dim) { m_dimension = dim; } + GeometryMatcher() + {} + explicit GeometryMatcher(DrawViewDimension* dim) + { + m_dimension = dim; + } ~GeometryMatcher() = default; - bool compareGeometry(Part::TopoShape geom1, Part::TopoShape geom2); - bool comparePoints(TopoDS_Shape& shape1, TopoDS_Shape& shape2); - bool compareEdges(TopoDS_Shape& shape1, TopoDS_Shape& shape2); + bool compareGeometry(Part::TopoShape geom1, Part::TopoShape geom2); + bool comparePoints(TopoDS_Shape& shape1, TopoDS_Shape& shape2); + bool compareEdges(TopoDS_Shape& shape1, TopoDS_Shape& shape2); bool compareLines(TopoDS_Edge& edge1, TopoDS_Edge& edge2); bool compareCircles(TopoDS_Edge& edge1, TopoDS_Edge& edge2); @@ -53,12 +59,21 @@ public: bool compareCircleArcs(TopoDS_Edge& edge1, TopoDS_Edge& edge2); bool compareEllipseArcs(TopoDS_Edge& edge1, TopoDS_Edge& edge2); + double getPointTolerance() const + { + return m_pointTolerance; + } + void setPointTolerance(double tol) + { + m_pointTolerance = tol; + } + private: bool compareEndPoints(TopoDS_Edge& edge1, TopoDS_Edge& edge2); DrawViewDimension* m_dimension; + double m_pointTolerance {EWTOLERANCE}; }; -} //end namespace TechDraw +} // end namespace TechDraw #endif - diff --git a/src/Mod/TechDraw/App/LineGenerator.cpp b/src/Mod/TechDraw/App/LineGenerator.cpp index 21952ffd55..8770c137f1 100644 --- a/src/Mod/TechDraw/App/LineGenerator.cpp +++ b/src/Mod/TechDraw/App/LineGenerator.cpp @@ -362,6 +362,17 @@ std::string LineGenerator::getLineStandardsBody() { int activeStandard = Preferences::lineStandard(); std::vector choices = getAvailableLineStandards(); + if (activeStandard < 0 || + (size_t) activeStandard >= choices.size()) { + // there is a condition where the LineStandard parameter exists, but is -1 (the + // qt value for no current index in a combobox). This is likely caused by an old + // development version writing an unvalidated value. In this case, the existing but + // invalid value will be returned. This is a temporary fix and can be removed for + // production. + // Preferences::lineStandard() will print a message about this every time it is called + // (lots of messages!). + activeStandard = 0; + } return getBodyFromString(choices.at(activeStandard)); } diff --git a/src/Mod/TechDraw/App/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 9546ac73ed..3517849a19 100644 --- a/src/Mod/TechDraw/App/Preferences.cpp +++ b/src/Mod/TechDraw/App/Preferences.cpp @@ -23,7 +23,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include - +# include # include #endif @@ -422,6 +422,18 @@ bool Preferences::SectionUsePreviousCut() //! an index into the list of available line standards/version found in LineGroupDirectory int Preferences::lineStandard() { + // there is a condition where the LineStandard parameter exists, but is -1 (the + // qt value for no current index in a combobox). This is likely caused by an old + // development version writing an unvalidated value. In this case, the + // existing but invalid value will be returned. This is a temporary fix and + // can be removed for production. + // this message will appear many times if the parameter is invalid. + int parameterValue = getPreferenceGroup("Standards")->GetInt("LineStandard", 1); + if (parameterValue < 0) { + Base::Console().Warning(qPrintable(QApplication::translate( + "Preferences", "The LineStandard parameter is invalid. Using zero instead.", nullptr))); + return 0; + } return getPreferenceGroup("Standards")->GetInt("LineStandard", 1); } @@ -527,3 +539,13 @@ int Preferences::sectionLineConvention() { return getPreferenceGroup("Standards")->GetInt("SectionLineStandard", 1); } + + +//! true if the GeometryMatcher should be used in correcting Dimension references +bool Preferences::useExactMatchOnDims() +{ + return getPreferenceGroup("Dimensions")->GetBool("UseMatcher", true); +} + + + diff --git a/src/Mod/TechDraw/App/Preferences.h b/src/Mod/TechDraw/App/Preferences.h index 6387bc9ed7..d36636832b 100644 --- a/src/Mod/TechDraw/App/Preferences.h +++ b/src/Mod/TechDraw/App/Preferences.h @@ -126,6 +126,8 @@ public: static std::string currentElementDefFile(); static int sectionLineConvention(); + + static bool useExactMatchOnDims(); }; diff --git a/src/Mod/TechDraw/App/XMLQuery.cpp b/src/Mod/TechDraw/App/XMLQuery.cpp index 6a88c3b6a3..adae6bac12 100644 --- a/src/Mod/TechDraw/App/XMLQuery.cpp +++ b/src/Mod/TechDraw/App/XMLQuery.cpp @@ -27,6 +27,7 @@ #include #endif +#include "DrawUtil.h" #include "XMLQuery.h" @@ -51,7 +52,7 @@ static bool processElements(const QDomElement& element, const QString& queryStr, for(int i = 0; i < editable.count(); i++) { QDomNode node = editable.item(i); QDomElement element = node.toElement(); - if (element.hasAttribute(QString(QLatin1String("freecad:editable")))) { + if (element.hasAttribute(QString(QLatin1String(FREECAD_ATTR_EDITABLE)))) { if (find_tspan) { element = element.firstChildElement(); } diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index 53d0863695..dea656de90 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #endif @@ -54,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -75,7 +75,7 @@ #include "TaskProjection.h" #include "TaskSectionView.h" #include "ViewProviderPage.h" -#include "ViewProviderViewPart.h" +#include "ViewProviderDrawingView.h" void execSimpleSection(Gui::Command* cmd); void execComplexSection(Gui::Command* cmd); @@ -106,40 +106,33 @@ void CmdTechDrawPageDefault::activated(int iMsg) Q_UNUSED(iMsg); QString templateFileName = Preferences::defaultTemplate(); - - std::string PageName = getUniqueObjectName("Page"); - std::string TemplateName = getUniqueObjectName("Template"); - QFileInfo tfi(templateFileName); if (tfi.isReadable()) { Gui::WaitCursor wc; openCommand(QT_TRANSLATE_NOOP("Command", "Drawing create page")); - doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawPage', '%s')", - PageName.c_str()); - doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawPage', 'Page', '%s')", - PageName.c_str(), PageName.c_str()); - doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawSVGTemplate', '%s')", - TemplateName.c_str()); - doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawSVGTemplate', 'Template', '%s')", - TemplateName.c_str(), TemplateName.c_str()); + auto page = dynamic_cast + (getDocument()->addObject("TechDraw::DrawPage", "Page")); + if (!page) { + throw Base::TypeError("CmdTechDrawPageDefault - page not created"); + } + page->translateLabel("DrawPage", "Page", page->getNameInDocument()); - doCommand(Doc, "App.activeDocument().%s.Template = '%s'", TemplateName.c_str(), - templateFileName.toStdString().c_str()); - doCommand(Doc, "App.activeDocument().%s.Template = App.activeDocument().%s", - PageName.c_str(), TemplateName.c_str()); + auto svgTemplate = dynamic_cast + (getDocument()->addObject("TechDraw::DrawSVGTemplate", "Template")); + if (!svgTemplate) { + throw Base::TypeError("CmdTechDrawPageDefault - template not created"); + } + svgTemplate->translateLabel("DrawSVGTemplate", "Template", svgTemplate->getNameInDocument()); + + page->Template.setValue(svgTemplate); + svgTemplate->Template.setValue(templateFileName.toStdString()); updateActive(); commitCommand(); - TechDraw::DrawPage* fp = - dynamic_cast(getDocument()->getObject(PageName.c_str())); - if (!fp) { - throw Base::TypeError("CmdTechDrawPageDefault fp not found\n"); - } - Gui::ViewProvider* vp = - Gui::Application::Instance->getDocument(getDocument())->getViewProvider(fp); - TechDrawGui::ViewProviderPage* dvp = dynamic_cast(vp); + TechDrawGui::ViewProviderPage *dvp = dynamic_cast + (Gui::Application::Instance->getViewProvider(page)); if (dvp) { dvp->show(); } @@ -183,44 +176,33 @@ void CmdTechDrawPageTemplate::activated(int iMsg) return; } - std::string PageName = getUniqueObjectName("Page"); - std::string TemplateName = getUniqueObjectName("Template"); - QFileInfo tfi(templateFileName); if (tfi.isReadable()) { Gui::WaitCursor wc; openCommand(QT_TRANSLATE_NOOP("Command", "Drawing create page")); - doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawPage', '%s')", - PageName.c_str()); - doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawPage', 'Page', '%s')", - PageName.c_str(), PageName.c_str()); - // Create the Template Object to attach to the page - doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawSVGTemplate', '%s')", - TemplateName.c_str()); - doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawSVGTemplate', 'Template', '%s')", - TemplateName.c_str(), TemplateName.c_str()); + auto page = dynamic_cast + (getDocument()->addObject("TechDraw::DrawPage", "Page")); + if (!page) { + throw Base::TypeError("CmdTechDrawPageTemplate - page not created"); + } + page->translateLabel("DrawPage", "Page", page->getNameInDocument()); - //why is "Template" property set twice? -wf - // once to set DrawSVGTemplate.Template to OS template file name - templateFileName = Base::Tools::escapeEncodeFilename(templateFileName); - doCommand(Doc, "App.activeDocument().%s.Template = \"%s\"", TemplateName.c_str(), - templateFileName.toUtf8().constData()); - // once to set Page.Template to DrawSVGTemplate.Name - doCommand(Doc, "App.activeDocument().%s.Template = App.activeDocument().%s", - PageName.c_str(), TemplateName.c_str()); - // consider renaming DrawSVGTemplate.Template property? + auto svgTemplate = dynamic_cast + (getDocument()->addObject("TechDraw::DrawSVGTemplate", "Template")); + if (!svgTemplate) { + throw Base::TypeError("CmdTechDrawPageTemplate - template not created"); + } + svgTemplate->translateLabel("DrawSVGTemplate", "Template", svgTemplate->getNameInDocument()); + + page->Template.setValue(svgTemplate); + svgTemplate->Template.setValue(templateFileName.toStdString()); updateActive(); commitCommand(); - TechDraw::DrawPage* fp = - dynamic_cast(getDocument()->getObject(PageName.c_str())); - if (!fp) { - throw Base::TypeError("CmdTechDrawNewPagePick fp not found\n"); - } - Gui::ViewProvider* vp = - Gui::Application::Instance->getDocument(getDocument())->getViewProvider(fp); - TechDrawGui::ViewProviderPage* dvp = dynamic_cast(vp); + + TechDrawGui::ViewProviderPage *dvp = dynamic_cast + (Gui::Application::Instance->getViewProvider(page)); if (dvp) { dvp->show(); } diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index 831d2d58f2..5b32915763 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -829,6 +829,8 @@ void execAngle3Pt(Gui::Command* cmd) positionDimText(dim); } + +// TechDraw_LinkDimension is DEPRECATED. Use TechDraw_DimensionRepair instead. //! link 3D geometry to Dimension(s) on a Page //TODO: should we present all potential Dimensions from all Pages? //=========================================================================== diff --git a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp index 346e8cb226..c09c3221d5 100644 --- a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp +++ b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp @@ -2122,8 +2122,8 @@ void _createThreadLines(std::vector SubNames, TechDraw::DrawViewPar TechDraw::GenericPtr line0 = std::static_pointer_cast(geom0); TechDraw::GenericPtr line1 = std::static_pointer_cast(geom1); - // start and end points are scaled and rotated. invert the points - // so the canonicalPoint math works correctly. + // start and end points are scaled,rotated and inverted (CSRIx). We need to + // uninvert the points so the canonicalPoint math works correctly. Base::Vector3d start0 = DU::invertY(line0->getStartPoint()); Base::Vector3d end0 = DU::invertY(line0->getEndPoint()); Base::Vector3d start1 = DU::invertY(line1->getStartPoint()); @@ -2133,11 +2133,6 @@ void _createThreadLines(std::vector SubNames, TechDraw::DrawViewPar start1 = CosmeticVertex::makeCanonicalPoint(objFeat, start1); end0 = CosmeticVertex::makeCanonicalPoint(objFeat, end0); end1 = CosmeticVertex::makeCanonicalPoint(objFeat, end1); - // put the points back into weird Qt coord system. - start0 = DU::invertY(start0); - start1 = DU::invertY(start1); - end0 = DU::invertY(end0); - end1 = DU::invertY(end1); if (DrawUtil::circulation(start0, end0, start1) != DrawUtil::circulation(end0, end1, start1)) { Base::Vector3d help1 = start1; @@ -2148,6 +2143,7 @@ void _createThreadLines(std::vector SubNames, TechDraw::DrawViewPar float kernelDiam = (start1 - start0).Length(); float kernelFactor = (kernelDiam * factor - kernelDiam) / 2; Base::Vector3d delta = (start1 - start0).Normalize() * kernelFactor; + // addCosmeticEdge(pt1, pt2) inverts the points before creating the edge std::string line0Tag = objFeat->addCosmeticEdge(start0 - delta, end0 - delta); std::string line1Tag = diff --git a/src/Mod/TechDraw/Gui/PagePrinter.cpp b/src/Mod/TechDraw/Gui/PagePrinter.cpp index e9eae36dcb..7c74f39cfc 100644 --- a/src/Mod/TechDraw/Gui/PagePrinter.cpp +++ b/src/Mod/TechDraw/Gui/PagePrinter.cpp @@ -59,6 +59,11 @@ using namespace TechDrawGui; using namespace TechDraw; +constexpr double A4Heightmm = 297.0; +constexpr double A4Widthmm = 210.0; +constexpr double mmPerInch = 25.4; + + /* TRANSLATOR TechDrawGui::PagePrinter */ //TYPESYSTEM_SOURCE_ABSTRACT(TechDrawGui::PagePrinter) @@ -77,24 +82,31 @@ void PagePrinter::setScene(QGSPage* scene) void PagePrinter::setDocumentName(const std::string& name) { m_documentName = name; } -PaperAttributes PagePrinter::getPaperAttributes(TechDraw::DrawPage* pageObject) +//! retrieve the attributes of a DrawPage and its Template +PaperAttributes PagePrinter::getPaperAttributes(TechDraw::DrawPage* dPage) { PaperAttributes result; - if (!pageObject) { + if (!dPage) { return result; } - auto pageTemplate(dynamic_cast(pageObject->Template.getValue())); + double width = A4Widthmm; + double height = A4Heightmm; + auto pageTemplate(dynamic_cast(dPage->Template.getValue())); if (pageTemplate) { - result.pagewidth = pageTemplate->Width.getValue(); - result.pageheight = pageTemplate->Height.getValue(); - } - result.paperSize = QPageSize::id(QSizeF(result.pagewidth, result.pageheight), QPageSize::Millimeter, - QPageSize::FuzzyOrientationMatch); - if (result.pagewidth > result.pageheight) { - result.orientation = QPageLayout::Landscape; - } else { - result.orientation = QPageLayout::Portrait; + width = pageTemplate->Width.getValue(); + height = pageTemplate->Height.getValue(); } + result.pagewidth = width; + result.pageheight = height; + + //Qt's page size determination assumes Portrait orientation. To get the right paper size + //we need to ask in the proper form. + QPageSize::PageSizeId paperSizeID = + QPageSize::id(QSizeF(std::min(width, height), std::max(width, height)), + QPageSize::Millimeter, QPageSize::FuzzyOrientationMatch); + result.paperSize = paperSizeID; + + result.orientation = (QPageLayout::Orientation)dPage->getOrientation(); if (result.paperSize == QPageSize::Ledger) { // Ledger size paper orientation is reversed inside Qt result.orientation =(QPageLayout::Orientation)(1 - result.orientation); @@ -112,6 +124,18 @@ void PagePrinter::getPaperAttributes() m_orientation = attr.orientation; } +//! construct a page layout object that reflects the characteristics of a DrawPage +//static +void PagePrinter::makePageLayout(TechDraw::DrawPage* dPage, QPageLayout& pageLayout, double& width, + double& height) +{ + PaperAttributes attr = getPaperAttributes(dPage); + width = attr.pagewidth; + height = attr.pageheight; + pageLayout.setPageSize(QPageSize(attr.paperSize)); + pageLayout.setOrientation(attr.orientation); +} + /// print the Page associated with the parent MDIViewPage as a Pdf file void PagePrinter::printPdf(std::string file) { @@ -120,32 +144,33 @@ void PagePrinter::printPdf(std::string file) Base::Console().Warning("PagePrinter - no file specified\n"); return; } - QString filename = QString::fromUtf8(file.data(), file.size()); - QPrinter printer(QPrinter::HighResolution); - printer.setFullPage(true); - printer.setOutputFormat(QPrinter::PdfFormat); - QPdfWriter pdfWriter(filename); + // set up the pdfwriter + QString outputFile = QString::fromUtf8(file.data(), file.size()); + QPdfWriter pdfWriter(outputFile); + QPageLayout pageLayout = pdfWriter.pageLayout(); QString documentName = QString::fromUtf8(m_vpPage->getDrawPage()->getNameInDocument()); pdfWriter.setTitle(documentName); - pdfWriter.setResolution(printer.resolution()); + // default pdfWriter dpi is 1200. - PaperAttributes attr = getPaperAttributes(m_vpPage->getDrawPage()); - double width = attr.pagewidth; - double height = attr.pageheight; - QPageLayout pageLayout = printer.pageLayout(); - setPageLayout(pageLayout, m_vpPage->getDrawPage(), width, height); + // set up the page layout + auto dPage = m_vpPage->getDrawPage(); + double width = A4Heightmm;//default to A4 Landscape 297 x 210 + double height = A4Widthmm; + makePageLayout(dPage, pageLayout, width, height); pdfWriter.setPageLayout(pageLayout); // first page does not respect page layout unless painter is created after // pdfWriter layout is established. QPainter painter(&pdfWriter); + // render the page QRectF sourceRect(0.0, Rez::guiX(-height), Rez::guiX(width), Rez::guiX(height)); - double dpmm = printer.resolution() / 25.4; - QRect targetRect(0, 0, width * dpmm, height * dpmm); + double dpmm = pdfWriter.resolution() / mmPerInch; + int twide = int(std::round(width * dpmm)); + int thigh = int(std::round(height * dpmm)); + QRect targetRect(0, 0, twide, thigh); renderPage(m_vpPage, painter, sourceRect, targetRect); - painter.end(); } @@ -156,9 +181,9 @@ void PagePrinter::print(QPrinter* printer) QPageLayout pageLayout = printer->pageLayout(); TechDraw::DrawPage* dp = m_vpPage->getDrawPage(); - double width = 297.0;//default to A4 Landscape 297 x 210 - double height = 210.0; - setPageLayout(pageLayout, dp, width, height); + double width = A4Heightmm;//default to A4 Landscape 297 x 210 + double height = A4Widthmm; + makePageLayout(dp, pageLayout, width, height); printer->setPageLayout(pageLayout); QPainter painter(printer); @@ -166,32 +191,40 @@ void PagePrinter::print(QPrinter* printer) QRect targetRect = printer->pageLayout().fullRectPixels(printer->resolution()); QRectF sourceRect(0.0, Rez::guiX(-height), Rez::guiX(width), Rez::guiX(height)); renderPage(m_vpPage, painter, sourceRect, targetRect); - painter.end(); } //static routine to print all pages in a document void PagePrinter::printAll(QPrinter* printer, App::Document* doc) { // Base::Console().Message("PP::printAll()\n"); - QPainter painter(printer); + QPageLayout pageLayout = printer->pageLayout(); - bool firstTime = true; std::vector docObjs = doc->getObjectsOfType(TechDraw::DrawPage::getClassTypeId()); + auto firstPage = docObjs.front(); + + auto dPage = static_cast(firstPage); + double width = A4Heightmm;//default to A4 Landscape 297 x 210 + double height = A4Widthmm; + makePageLayout(dPage, pageLayout, width, height); + printer->setPageLayout(pageLayout); + QPainter painter(printer); + + bool firstTime = true; for (auto& obj : docObjs) { Gui::ViewProvider* vp = Gui::Application::Instance->getViewProvider(obj); if (!vp) { continue;// can't print this one } - TechDrawGui::ViewProviderPage* vpp = dynamic_cast(vp); + auto* vpp = dynamic_cast(vp); if (!vpp) { continue;// can't print this one } - TechDraw::DrawPage* dp = static_cast(obj); - double width = 297.0;//default to A4 Landscape 297 x 210 - double height = 210.0; - setPageLayout(pageLayout, dp, width, height); + auto dPage = static_cast(obj); + double width = A4Heightmm;//default to A4 Landscape 297 x 210 + double height = A4Widthmm; + makePageLayout(dPage, pageLayout, width, height); printer->setPageLayout(pageLayout); //for some reason the first page doesn't obey the pageLayout, so we have to print @@ -200,25 +233,27 @@ void PagePrinter::printAll(QPrinter* printer, App::Document* doc) // Note: if the painter(printer) occurs after the printer->setPageLayout, then the // first page will obey the layout. This would mean creating the painter inside the // loop. - if (firstTime) { - firstTime = false; - printBannerPage(printer, painter, pageLayout, doc, docObjs); + // if (firstTime) { + // firstTime = false; + // printBannerPage(printer, painter, pageLayout, doc, docObjs); + // } + if (!firstTime) { + printer->newPage(); } - - printer->newPage(); + firstTime = false; QRectF sourceRect(0.0, Rez::guiX(-height), Rez::guiX(width), Rez::guiX(height)); QRect targetRect = printer->pageLayout().fullRectPixels(printer->resolution()); renderPage(vpp, painter, sourceRect, targetRect); + } - painter.end(); } //static routine to print all pages in a document to pdf void PagePrinter::printAllPdf(QPrinter* printer, App::Document* doc) { // Base::Console().Message("PP::printAllPdf()\n"); - double dpmm = printer->resolution() / 25.4; + double dpmm = printer->resolution() / mmPerInch; QString outputFile = printer->outputFileName(); QString documentName = QString::fromUtf8(doc->getName()); @@ -229,47 +264,51 @@ void PagePrinter::printAllPdf(QPrinter* printer, App::Document* doc) //pdfWriter.setPdfVersion(QPagedPaintDevice::PdfVersion_A1b); pdfWriter.setTitle(documentName); pdfWriter.setResolution(printer->resolution()); - QPainter painter(&pdfWriter); QPageLayout pageLayout = printer->pageLayout(); - - bool firstTime = true; + // we want to set the layout for the first page before we make the painter(&pdfWriter) or the layout for the first page will + // not be correct. std::vector docObjs = doc->getObjectsOfType(TechDraw::DrawPage::getClassTypeId()); + auto firstPage = docObjs.front(); + + auto dPage = static_cast(firstPage); + double width = A4Heightmm;//default to A4 Landscape 297 x 210 + double height = A4Widthmm; + makePageLayout(dPage, pageLayout, width, height); + + pdfWriter.setPageLayout(pageLayout); + // to get several pages into the same pdf, we must use the same painter for each page and not have any + // start() or end() until all the pages are printed. + QPainter painter(&pdfWriter); + + bool firstTime = true; for (auto& obj : docObjs) { Gui::ViewProvider* vp = Gui::Application::Instance->getViewProvider(obj); if (!vp) { continue;// can't print this one } - TechDrawGui::ViewProviderPage* vpp = dynamic_cast(vp); + auto vpp = dynamic_cast(vp); if (!vpp) { continue;// can't print this one } - - TechDraw::DrawPage* dp = static_cast(obj); - PaperAttributes attr = getPaperAttributes(dp); - double width = attr.pagewidth; - double height = attr.pageheight; - setPageLayout(pageLayout, dp, width, height); + auto dPage = static_cast(obj); + double width{0}; + double height{0}; + makePageLayout(dPage, pageLayout, width, height); pdfWriter.setPageLayout(pageLayout); - - //for some reason the first page doesn't obey the pageLayout, so we have to print - //a sacrificial blank page, but we make it a feature instead of a bug by printing a - //table of contents on the sacrificial page. - // see the note about this in printAll() - if (firstTime) { - firstTime = false; - printBannerPage(printer, painter, pageLayout, doc, docObjs); + if (!firstTime) { + pdfWriter.newPage(); } - pdfWriter.newPage(); + firstTime = false; QRectF sourceRect(0.0, Rez::guiX(-height), Rez::guiX(width), Rez::guiX(height)); QRect targetRect(0, 0, width * dpmm, height * dpmm); renderPage(vpp, painter, sourceRect, targetRect); } - painter.end(); } //static +//! we don't need the banner page any more void PagePrinter::printBannerPage(QPrinter* printer, QPainter& painter, QPageLayout& pageLayout, App::Document* doc, std::vector& docObjs) { @@ -277,13 +316,13 @@ void PagePrinter::printBannerPage(QPrinter* printer, QPainter& painter, QPageLay QFont painterFont; painterFont.setFamily(Preferences::labelFontQString()); int fontSizeMM = Preferences::labelFontSizeMM(); - double dpmm = printer->resolution() / 25.4; + double dpmm = printer->resolution() / mmPerInch; int fontSizePx = fontSizeMM * dpmm; painterFont.setPixelSize(fontSizePx); painter.setFont(painterFont); //print a header - QString docLine = QObject::tr("Document Name: ") + QString::fromUtf8(doc->getName()); + QString docLine = QObject::tr("Document Name:") + QLatin1String(" ") + QString::fromUtf8(doc->getName()); int leftMargin = pageLayout.margins().left() * dpmm + 5 * dpmm; //layout margin + 5mm int verticalPos = pageLayout.margins().top() * dpmm + 20 * dpmm;//layout margin + 20mm int verticalSpacing = 2; //double space @@ -329,30 +368,6 @@ void PagePrinter::renderPage(ViewProviderPage* vpp, QPainter& painter, QRectF& s vpp->getQGSPage()->refreshViews(); } -//static -void PagePrinter::setPageLayout(QPageLayout& pageLayout, TechDraw::DrawPage* dPage, double& width, - double& height) -{ - auto pageTemplate(dynamic_cast(dPage->Template.getValue())); - if (pageTemplate) { - width = pageTemplate->Width.getValue(); - height = pageTemplate->Height.getValue(); - } - //Qt's page size determination assumes Portrait orientation. To get the right paper size - //we need to ask in the proper form. - QPageSize::PageSizeId paperSizeID = - QPageSize::id(QSizeF(std::min(width, height), std::max(width, height)), - QPageSize::Millimeter, QPageSize::FuzzyOrientationMatch); - if (paperSizeID == QPageSize::Custom) { - pageLayout.setPageSize(QPageSize(QSizeF(std::min(width, height), std::max(width, height)), - QPageSize::Millimeter)); - } - else { - pageLayout.setPageSize(QPageSize(paperSizeID)); - } - pageLayout.setOrientation((QPageLayout::Orientation)dPage->getOrientation()); -} - void PagePrinter::saveSVG(std::string file) { if (file.empty()) { @@ -389,6 +404,6 @@ PaperAttributes::PaperAttributes() // set default values to A4 Landscape orientation = QPageLayout::Orientation::Landscape; paperSize = QPageSize::A4; - pagewidth = 297.0; - pageheight = 210.0; + pagewidth = A4Heightmm; + pageheight = A4Widthmm; } diff --git a/src/Mod/TechDraw/Gui/PagePrinter.h b/src/Mod/TechDraw/Gui/PagePrinter.h index 79ebe887a4..720a9723a8 100644 --- a/src/Mod/TechDraw/Gui/PagePrinter.h +++ b/src/Mod/TechDraw/Gui/PagePrinter.h @@ -51,7 +51,7 @@ class TechDrawGuiExport PaperAttributes { public: PaperAttributes(); - ~PaperAttributes() = default; +// ~PaperAttributes() = default; QPageLayout::Orientation orientation; QPageSize::PageSizeId paperSize; @@ -62,8 +62,7 @@ public: class TechDrawGuiExport PagePrinter { public: - PagePrinter(ViewProviderPage *page); - ~PagePrinter() = default; + explicit PagePrinter(ViewProviderPage *page); void print(QPrinter* printer); void printPdf(); @@ -74,6 +73,8 @@ public: App::Document* doc); static void printAllPdf(QPrinter* printer, App::Document* doc); + + // print banner page is no longer used static void printBannerPage(QPrinter* printer, QPainter& painter, QPageLayout& pageLayout, App::Document* doc, @@ -82,8 +83,8 @@ public: QPainter& painter, QRectF& sourceRect, QRect& targetRect); - static void setPageLayout(QPageLayout& pageLayout, - TechDraw::DrawPage* dPage, + static void makePageLayout(TechDraw::DrawPage* dPage, + QPageLayout& pageLayout, double& width, double& height); void saveSVG(std::string file); diff --git a/src/Mod/TechDraw/Gui/QGILeaderLine.cpp b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp index 5c313119ba..19fdc10e69 100644 --- a/src/Mod/TechDraw/Gui/QGILeaderLine.cpp +++ b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp @@ -52,8 +52,7 @@ using namespace TechDraw; //************************************************************** QGILeaderLine::QGILeaderLine() - : m_parentItem(nullptr), - m_lineColor(Qt::black), + : m_lineColor(Qt::black), m_lineStyle(Qt::SolidLine), m_hasHover(false), m_saveX(0.0), @@ -169,22 +168,6 @@ void QGILeaderLine::hoverLeaveEvent(QGraphicsSceneHoverEvent* event) QGIView::hoverLeaveEvent(event); } -void QGILeaderLine::onSourceChange(TechDraw::DrawView* newParent) -{ - // Base::Console().Message("QGILL::onSoureChange(%s)\n", newParent->getNameInDocument()); - std::string parentName = newParent->getNameInDocument(); - QGIView* qgiParent = getQGIVByName(parentName); - if (qgiParent) { - m_parentItem = qgiParent; - setParentItem(m_parentItem); - draw(); - } - else { - Base::Console().Warning("QGILL::onSourceChange - new parent %s has no QGIView\n", - parentName.c_str()); - } -} - void QGILeaderLine::setNormalColorAll() { // Base::Console().Message("QGILL::setNormalColorAll - normal color: %s\n", qPrintable(getNormalColor().name())); diff --git a/src/Mod/TechDraw/Gui/QGILeaderLine.h b/src/Mod/TechDraw/Gui/QGILeaderLine.h index 002a205ee3..4d65041068 100644 --- a/src/Mod/TechDraw/Gui/QGILeaderLine.h +++ b/src/Mod/TechDraw/Gui/QGILeaderLine.h @@ -100,7 +100,6 @@ public: public Q_SLOTS: void onLineEditFinished(QPointF tipDisplace, std::vector points);//QGEPath is finished editing points - void onSourceChange(TechDraw::DrawView* newParent) override; Q_SIGNALS: void editComplete();//tell caller that edit session is finished @@ -121,7 +120,6 @@ protected: private: std::vector m_pathPoints; - QGraphicsItem* m_parentItem; QGIPrimPath* m_line;//actual leader line QColor m_lineColor; Qt::PenStyle m_lineStyle; diff --git a/src/Mod/TechDraw/Gui/QGIProjGroup.cpp b/src/Mod/TechDraw/Gui/QGIProjGroup.cpp index e3e5f7aabc..f2e15b2c17 100644 --- a/src/Mod/TechDraw/Gui/QGIProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/QGIProjGroup.cpp @@ -103,7 +103,6 @@ QVariant QGIProjGroup::itemChange(GraphicsItemChange change, const QVariant &val QString type = QString::fromLatin1(projItemPtr->Type.getValueAsString()); if (type == QString::fromLatin1("Front")) { - gView->setLocked(true); //this locks in GUI only gView->alignTo(m_origin, QString::fromLatin1("None")); installSceneEventFilter(gView); } else if ( type == QString::fromLatin1("Top") || diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp index 919616c9c1..1762ea90a2 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp @@ -178,9 +178,9 @@ void QGISVGTemplate::createClickHandles() // XPath query to select all nodes with "freecad:editable" attribute query.processItems(QString::fromUtf8("declare default element namespace \"" SVG_NS_URI "\"; " "declare namespace freecad=\"" FREECAD_SVG_NS_URI "\"; " - "//text[@freecad:editable]"), + "//text[@" FREECAD_ATTR_EDITABLE "]"), [&](QDomElement& textElement) -> bool { - QString name = textElement.attribute(QString::fromUtf8("freecad:editable")); + QString name = textElement.attribute(QString::fromUtf8(FREECAD_ATTR_EDITABLE)); double x = Rez::guiX( textElement.attribute(QString::fromUtf8("x"), QString::fromUtf8("0.0")).toDouble()); double y = Rez::guiX( diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index fbfe65335e..17d801c261 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -69,7 +69,6 @@ const float labelCaptionFudge = 0.2f; // temp fiddle for devel QGIView::QGIView() :QGraphicsItemGroup(), viewObj(nullptr), - m_locked(false), m_innerView(false), m_multiselectActivated(false) { @@ -103,11 +102,6 @@ QGIView::QGIView() m_lock->hide(); } -void QGIView::onSourceChange(TechDraw::DrawView* newParent) -{ - Q_UNUSED(newParent); -} - void QGIView::isVisible(bool state) { auto feat = getViewObject(); @@ -162,15 +156,8 @@ QVariant QGIView::itemChange(GraphicsItemChange change, const QVariant &value) // Base::Console().Message("QGIV::itemChange(%d)\n", change); if(change == ItemPositionChange && scene()) { newPos = value.toPointF(); //position within parent! - if(m_locked){ - // ignore position change for locked items - newPos.setX(pos().x()); - newPos.setY(pos().y()); - return newPos; - } TechDraw::DrawView *viewObj = getViewObject(); - if (viewObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) { // restrict movements of secondary views. TechDraw::DrawProjGroupItem* dpgi = static_cast(viewObj); diff --git a/src/Mod/TechDraw/Gui/QGIView.h b/src/Mod/TechDraw/Gui/QGIView.h index 77c2ca7a4f..46c835a65f 100644 --- a/src/Mod/TechDraw/Gui/QGIView.h +++ b/src/Mod/TechDraw/Gui/QGIView.h @@ -122,9 +122,7 @@ public: void isInnerView(bool state) { m_innerView = state; } QGIViewClip* getClipGroup(); - void alignTo(QGraphicsItem*, const QString &alignment); - void setLocked(bool isLocked) { m_locked = isLocked; } QColor prefNormalColor(); //preference QColor getNormalColor() { return m_colNormal; } //current setting @@ -163,9 +161,6 @@ public: void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; -public Q_SLOTS: - virtual void onSourceChange(TechDraw::DrawView* newParent); - protected: QGIView* getQGIVByName(std::string name); @@ -183,7 +178,6 @@ private: std::string viewName; QHash alignHash; - bool m_locked; bool m_innerView; //View is inside another View bool m_multiselectActivated; diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index 1064c7d17f..6a3e7d139d 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -275,20 +275,13 @@ void QGIDatumLabel::setPosFromCenter(const double& xCenter, const double& yCente //set tolerance position QRectF overBox = m_tolTextOver->boundingRect(); - double overWidth = overBox.width(); - QRectF underBox = m_tolTextUnder->boundingRect(); - double underWidth = underBox.width(); - double width = underWidth; - if (overWidth > underWidth) { - width = overWidth; - } - double tolRight = unitRight + width; + double tolLeft = unitRight; // Adjust for difference in tight and original bounding box sizes, note the y-coord down system QPointF tol_adj = m_tolTextOver->tightBoundingAdjust(); - m_tolTextOver->justifyRightAt(tolRight + tol_adj.x(), middle - tol_adj.y(), false); + m_tolTextOver->justifyLeftAt(tolLeft + tol_adj.x(), middle - tol_adj.y(), false); tol_adj = m_tolTextUnder->tightBoundingAdjust(); - m_tolTextUnder->justifyRightAt(tolRight + tol_adj.x(), middle + overBox.height() - tol_adj.y(), + m_tolTextUnder->justifyLeftAt(tolLeft + tol_adj.x(), middle + overBox.height() - tol_adj.y(), false); } @@ -637,10 +630,9 @@ void QGIViewDimension::updateView(bool update) updateDim(); } - if (dim->goodReferenceGeometry()) { + if (dim->hasGoodReferences()) { m_refFlag->hide(); } else { -// m_refFlag->setPos(datumLabel->pos()); m_refFlag->centerAt(datumLabel->pos() + datumLabel->boundingRect().center()); m_refFlag->show(); } diff --git a/src/Mod/TechDraw/Gui/QGIViewSection.cpp b/src/Mod/TechDraw/Gui/QGIViewSection.cpp index 07f90a1a1a..86a623fb2f 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSection.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewSection.cpp @@ -47,6 +47,7 @@ void QGIViewSection::draw() void QGIViewSection::drawSectionFace() { + // Base::Console().Message("QGIVS::drawSectionFace()\n"); auto section( dynamic_cast(getViewObject()) ); if (!section) { return; @@ -85,13 +86,14 @@ void QGIViewSection::drawSectionFace() return; } - QColor faceColor = (sectionVp->CutSurfaceColor.getValue()).asValue(); - faceColor.setAlpha((100 - sectionVp->CutSurfaceTransparency.getValue())*255/100); - newFace->setFillColor(faceColor); - if (section->CutSurfaceDisplay.isValue("Color")) { + newFace->isHatched(true); + QColor faceColor = (sectionVp->CutSurfaceColor.getValue()).asValue(); + faceColor.setAlpha((100 - sectionVp->CutSurfaceTransparency.getValue())*255/100); + newFace->setFillColor(faceColor); newFace->setFillMode(faceColor.alpha() ? QGIFace::PlainFill : QGIFace::NoFill); } else if (section->CutSurfaceDisplay.isValue("SvgHatch")) { + newFace->isHatched(true); newFace->setFillMode(QGIFace::SvgFill); newFace->setHatchColor(sectionVp->HatchColor.getValue()); newFace->setHatchScale(section->HatchScale.getValue()); @@ -104,9 +106,9 @@ void QGIViewSection::drawSectionFace() newFace->setFillMode(QGIFace::GeomHatchFill); newFace->setHatchColor(sectionVp->GeomHatchColor.getValue()); newFace->setHatchScale(section->HatchScale.getValue()); - newFace->setLineWeight(sectionVp->WeightPattern.getValue()); newFace->setHatchRotation(section->HatchRotation.getValue()); newFace->setHatchOffset(section->HatchOffset.getValue()); + newFace->setLineWeight(sectionVp->WeightPattern.getValue()); std::vector lineSets = section->getDrawableLines(i); if (!lineSets.empty()) { newFace->clearLineSets(); diff --git a/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp b/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp index df264cdbbb..df6e67e093 100644 --- a/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp +++ b/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp @@ -52,12 +52,9 @@ using namespace TechDrawGui; //************************************************************** -QGIWeldSymbol::QGIWeldSymbol(QGILeaderLine* myParent) : - m_weldFeat(nullptr), - m_leadFeat(nullptr), +QGIWeldSymbol::QGIWeldSymbol() : m_arrowFeat(nullptr), m_otherFeat(nullptr), - m_qgLead(myParent), m_tailText(nullptr), m_fieldFlag(nullptr), m_allAround(nullptr), @@ -67,9 +64,6 @@ QGIWeldSymbol::QGIWeldSymbol(QGILeaderLine* myParent) : setFlag(QGraphicsItem::ItemIsMovable, false); setCacheMode(QGraphicsItem::NoCache); - - setParentItem(m_qgLead); - m_leadFeat = m_qgLead->getFeature(); setZValue(ZVALUE::DIMENSION); m_tailText = new QGCustomText(); @@ -126,15 +120,17 @@ void QGIWeldSymbol::updateView(bool update) { // Base::Console().Message("QGIWS::updateView()\n"); Q_UNUSED(update); - auto viewWeld( dynamic_cast(getViewObject()) ); - if (!viewWeld) - return; - if (!getFeature()) { + TechDraw::DrawWeldSymbol *feature = getFeature(); + if (!feature) { Base::Console().Warning("QGIWS::updateView - no feature!\n"); return; } + if (feature->isRestoring() || !getLeader()) { + return; + } + draw(); } @@ -171,16 +167,17 @@ void QGIWeldSymbol::drawTile(TechDraw::DrawTileWeld* tileFeat) return; } - const auto sym( dynamic_cast(getViewObject()) ); + const auto sym = getFeature(); if (!sym) return; - auto vp = static_cast(getViewProvider(getViewObject())); + auto vp = dynamic_cast(getViewProvider(sym)); if (!vp) return; std::string fontName = vp->Font.getValue(); int fontSize = QGIView::exactFontSize(vp->Font.getValue(), vp->TileFontSize.getValue()); - double featScale = m_leadFeat->getScale(); + + double featScale = getLeader()->getScale(); std::string tileTextL = tileFeat->LeftText.getValue(); std::string tileTextR = tileFeat->RightText.getValue(); @@ -202,8 +199,8 @@ void QGIWeldSymbol::drawTile(TechDraw::DrawTileWeld* tileFeat) // tile->setSymbolFile(symbolFile); tile->setZValue(ZVALUE::DIMENSION); tile->setTileScale(featScale); - tile->setTailRight(m_weldFeat->isTailRightSide()); - tile->setAltWeld(m_weldFeat->AlternatingWeld.getValue()); + tile->setTailRight(getFeature()->isTailRightSide()); + tile->setAltWeld(getFeature()->AlternatingWeld.getValue()); tile->draw(); } @@ -227,8 +224,11 @@ void QGIWeldSymbol::drawAllAround() m_allAround->setFill(Qt::NoBrush); // m_allAround->setRadius(calculateFontPixelSize(getDimFontSize())); m_allAround->setRadius(PreferencesGui::dimFontSizePX()); - double width = m_qgLead->getLineWidth(); - m_allAround->setWidth(width); + + auto qgiLead = dynamic_cast(getQGIVByName(getLeader()->getNameInDocument())); + if (qgiLead) { + m_allAround->setWidth(qgiLead->getLineWidth()); + } m_allAround->setZValue(ZVALUE::DIMENSION); } @@ -244,10 +244,10 @@ void QGIWeldSymbol::drawTailText() } else { m_tailText->show(); } - const auto sym( dynamic_cast(getViewObject()) ); + const auto sym = getFeature(); if (!sym) return; - auto vp = static_cast(getViewProvider(getViewObject())); + auto vp = dynamic_cast(getViewProvider(sym)); if (!vp) { return; } @@ -305,8 +305,10 @@ void QGIWeldSymbol::drawFieldFlag() path.lineTo(flagPoints.at(i) * scale); } - double width = m_qgLead->getLineWidth(); - m_fieldFlag->setWidth(width); + auto qgiLead = dynamic_cast(getQGIVByName(getLeader()->getNameInDocument())); + if (qgiLead) { + m_fieldFlag->setWidth(qgiLead->getLineWidth()); + } m_fieldFlag->setZValue(ZVALUE::DIMENSION); m_fieldFlag->setPath(path); @@ -449,35 +451,38 @@ void QGIWeldSymbol::setPrettySel() QPointF QGIWeldSymbol::getTileOrigin() { - Base::Vector3d org = m_leadFeat->getTileOrigin(); + Base::Vector3d org = getLeader()->getTileOrigin(); QPointF result(org.x, org.y); return result; } QPointF QGIWeldSymbol::getKinkPoint() { - Base::Vector3d org = m_leadFeat->getKinkPoint(); + Base::Vector3d org = getLeader()->getKinkPoint(); QPointF result(org.x, org.y); return result; } QPointF QGIWeldSymbol::getTailPoint() { - Base::Vector3d org = m_leadFeat->getTailPoint(); + Base::Vector3d org = getLeader()->getTailPoint(); QPointF result(org.x, org.y); return result; } -void QGIWeldSymbol::setFeature(TechDraw::DrawWeldSymbol* feat) -{ -// Base::Console().Message("QGIWS::setFeature(%s)\n", feat->getNameInDocument()); - m_weldFeat = feat; - m_weldFeatName = feat->getNameInDocument(); -} - TechDraw::DrawWeldSymbol* QGIWeldSymbol::getFeature() { - return m_weldFeat; + return dynamic_cast(getViewObject()); +} + +TechDraw::DrawLeaderLine *QGIWeldSymbol::getLeader() +{ + DrawWeldSymbol *feature = getFeature(); + if (!feature) { + return nullptr; + } + + return dynamic_cast(feature->Leader.getValue()); } //preference diff --git a/src/Mod/TechDraw/Gui/QGIWeldSymbol.h b/src/Mod/TechDraw/Gui/QGIWeldSymbol.h index 4d8ceeedb7..416dce3849 100644 --- a/src/Mod/TechDraw/Gui/QGIWeldSymbol.h +++ b/src/Mod/TechDraw/Gui/QGIWeldSymbol.h @@ -63,7 +63,7 @@ class TechDrawGuiExport QGIWeldSymbol : public QGIView public: enum {Type = QGraphicsItem::UserType + 340}; - explicit QGIWeldSymbol(QGILeaderLine* myParent = nullptr); + explicit QGIWeldSymbol(); ~QGIWeldSymbol() override = default; int type() const override { return Type;} @@ -78,7 +78,7 @@ public: void updateView(bool update = false) override; virtual TechDraw::DrawWeldSymbol* getFeature(); - virtual void setFeature(TechDraw::DrawWeldSymbol* feat); + virtual TechDraw::DrawLeaderLine *getLeader(); QPointF getTileOrigin(); QPointF getKinkPoint(); @@ -110,14 +110,11 @@ protected: double prefArrowSize(); double prefFontSize() const; - TechDraw::DrawWeldSymbol* m_weldFeat; - TechDraw::DrawLeaderLine* m_leadFeat; TechDraw::DrawTileWeld* m_arrowFeat; TechDraw::DrawTileWeld* m_otherFeat; std::string m_arrowName; std::string m_otherName; - QGILeaderLine* m_qgLead; QGCustomText* m_tailText; QGIPrimPath* m_fieldFlag; QGIVertex* m_allAround; @@ -126,7 +123,6 @@ protected: bool m_blockDraw; //prevent redraws while updating. - std::string m_weldFeatName; virtual QRectF customBoundingRect() const; }; diff --git a/src/Mod/TechDraw/Gui/QGSPage.cpp b/src/Mod/TechDraw/Gui/QGSPage.cpp index d85de20d9c..05199449b2 100644 --- a/src/Mod/TechDraw/Gui/QGSPage.cpp +++ b/src/Mod/TechDraw/Gui/QGSPage.cpp @@ -95,6 +95,7 @@ using namespace Gui; using namespace TechDraw; using namespace TechDrawGui; +using DU = DrawUtil; QGSPage::QGSPage(ViewProviderPage* vpPage, QWidget* parent) : QGraphicsScene(parent), pageTemplate(nullptr), m_vpPage(nullptr) @@ -129,7 +130,6 @@ void QGSPage::addChildrenToPage() //therefore we need to make sure parentage of the graphics representation is set properly. bit of a kludge. setDimensionGroups(); setBalloonGroups(); - setLeaderGroups(); App::DocumentObject* obj = m_vpPage->getDrawPage()->Template.getValue(); auto pageTemplate(dynamic_cast(obj)); @@ -254,13 +254,11 @@ int QGSPage::addQView(QGIView* view) TechDraw::DrawView *viewObj = view->getViewObject(); // Preserve the desired position, as addToGroup() adjusts the child view's position QPointF viewPos(Rez::guiX(viewObj->X.getValue()), -Rez::guiX(viewObj->Y.getValue())); - // Find if it belongs to a parent QGIView *parent = findParent(view); if (parent) { parent->addToGroup(view); } - view->setPos(viewPos); auto viewProvider = dynamic_cast(QGIView::getViewProvider(view->getViewObject())); @@ -389,7 +387,7 @@ bool QGSPage::attachView(App::DocumentObject* obj) QGIView* QGSPage::addViewPart(TechDraw::DrawViewPart* partFeat) { - // Base::Console().Message("QGSP::addViewPart(%s)\n", part->getNameInDocument()); + // Base::Console().Message("QGSP::addViewPart(%s)\n", partFeat->Label.getValue()); auto viewPart(new QGIViewPart); viewPart->setViewPartFeature(partFeat); @@ -410,6 +408,7 @@ QGIView* QGSPage::addViewSection(DrawViewSection* sectionFeat) QGIView* QGSPage::addProjectionGroup(TechDraw::DrawProjGroup* projGroupFeat) { + // Base::Console().Message("QGSP::addprojectionGroup(%s)\n", projGroupFeat->Label.getValue()); auto qview(new QGIProjGroup); qview->setViewFeature(projGroupFeat); @@ -596,29 +595,11 @@ void QGSPage::addDimToParent(QGIViewDimension* dim, QGIView* parent) QGIView* QGSPage::addViewLeader(TechDraw::DrawLeaderLine* leaderFeat) { - // Base::Console().Message("QGSP::addViewLeader(%s)\n", leader->getNameInDocument()); - QGILeaderLine* leaderGroup = new QGILeaderLine(); - addItem(leaderGroup); + QGILeaderLine *leaderView = new QGILeaderLine; + leaderView->setViewFeature(leaderFeat); - leaderGroup->setLeaderFeature(leaderFeat); - - QGIView* parent = nullptr; - parent = findParent(leaderGroup); - - if (parent) { - addLeaderToParent(leaderGroup, parent); - } - - leaderGroup->updateView(true); - - return leaderGroup; -} - -void QGSPage::addLeaderToParent(QGILeaderLine* lead, QGIView* parent) -{ - // Base::Console().Message("QGSP::addLeaderToParent()\n"); - parent->addToGroup(lead); - lead->setZValue(ZVALUE::DIMENSION); + addQView(leaderView); + return leaderView; } QGIView* QGSPage::addRichAnno(TechDraw::DrawRichAnno* richFeat) @@ -632,28 +613,11 @@ QGIView* QGSPage::addRichAnno(TechDraw::DrawRichAnno* richFeat) QGIView* QGSPage::addWeldSymbol(TechDraw::DrawWeldSymbol* weldFeat) { - // Base::Console().Message("QGSP::addWeldSymbol()\n"); - QGIWeldSymbol* weldGroup = nullptr; - TechDraw::DrawView* parentDV = nullptr; + QGIWeldSymbol *weldView = new QGIWeldSymbol; + weldView->setViewFeature(weldFeat); - App::DocumentObject* parentObj = weldFeat->Leader.getValue(); - if (parentObj) { - parentDV = dynamic_cast(parentObj); - } - else { - // Base::Console().Message("QGSP::addWeldSymbol - no parent doc obj\n"); - } - if (parentDV) { - QGIView* parentQV = findQViewForDocObj(parentObj); - QGILeaderLine* leadParent = dynamic_cast(parentQV); - if (leadParent) { - weldGroup = new QGIWeldSymbol(leadParent); - weldGroup->setFeature(weldFeat); //for QGIWS - weldGroup->setViewFeature(weldFeat);//for QGIV - weldGroup->updateView(true); - } - } - return weldGroup; + addQView(weldView); + return weldView; } void QGSPage::setDimensionGroups(void) @@ -688,25 +652,6 @@ void QGSPage::setBalloonGroups(void) } } -void QGSPage::setLeaderGroups(void) -{ - // Base::Console().Message("QGSP::setLeaderGroups()\n"); - const std::vector& allItems = getViews(); - int leadItemType = QGraphicsItem::UserType + 232; - - //make sure that qgileader belongs to correct parent. - //quite possibly redundant - for (auto& item : allItems) { - if (item->type() == leadItemType && !item->group()) { - QGIView* parent = findParent(item); - if (parent) { - QGILeaderLine* lead = dynamic_cast(item); - addLeaderToParent(lead, parent); - } - } - } -} - //! find the graphic for a DocumentObject QGIView* QGSPage::findQViewForDocObj(App::DocumentObject* obj) const { @@ -789,41 +734,6 @@ QGIView* QGSPage::findParent(QGIView* view) const } } - //If type is LeaderLine we check LeaderParent - TechDraw::DrawLeaderLine* lead = nullptr; - lead = dynamic_cast(myFeat); - - if (lead) { - App::DocumentObject* obj = lead->LeaderParent.getValue(); - if (obj) { - std::string parentName = obj->getNameInDocument(); - for (std::vector::const_iterator it = qviews.begin(); it != qviews.end(); - ++it) { - if (strcmp((*it)->getViewName(), parentName.c_str()) == 0) { - return *it; - } - } - } - } - - // Check if part of view collection - for (std::vector::const_iterator it = qviews.begin(); it != qviews.end(); ++it) { - QGIViewCollection* grp = nullptr; - grp = dynamic_cast(*it); - if (grp) { - TechDraw::DrawViewCollection* collection = nullptr; - collection = dynamic_cast(grp->getViewObject()); - if (collection) { - std::vector objs = collection->Views.getValues(); - for (std::vector::iterator it = objs.begin(); - it != objs.end(); ++it) { - if (strcmp(myFeat->getNameInDocument(), (*it)->getNameInDocument()) == 0) - - return grp; - } - } - } - } // Not found a parent return nullptr; } diff --git a/src/Mod/TechDraw/Gui/QGSPage.h b/src/Mod/TechDraw/Gui/QGSPage.h index bf49aeb6d7..f15280ba2a 100644 --- a/src/Mod/TechDraw/Gui/QGSPage.h +++ b/src/Mod/TechDraw/Gui/QGSPage.h @@ -65,7 +65,6 @@ class QGIViewDimension; class QGITemplate; class ViewProviderPage; class QGIViewBalloon; -class QGILeaderLine; class QGITile; class TechDrawGuiExport QGSPage: public QGraphicsScene @@ -111,7 +110,6 @@ public: void createBalloon(QPointF origin, TechDraw::DrawView* parent); void addDimToParent(QGIViewDimension* dim, QGIView* parent); - void addLeaderToParent(QGILeaderLine* lead, QGIView* parent); std::vector getViews() const; @@ -139,7 +137,6 @@ public: void setDimensionGroups(); void setBalloonGroups(); - void setLeaderGroups(); protected: QColor getBackgroundColor(); diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw.ts index 8e84fb741a..e7234bbf25 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw - + Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw - - + + Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw - - + + Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw - - + + Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw - + Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw - + Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw - + Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw - - + + Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw - - + + Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw - - + + Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw - + Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw - - + + Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw - - + + Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw - - + + Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw - - + + Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw - - + + Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw - + Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw - - + + Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw - - + + Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw - + Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw - - + + Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw - + Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw - - + + Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw - + Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw - - + + Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw - - + + Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw - - + + Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw - + Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ + - Save page to dxf @@ -2058,7 +2058,7 @@ - + Create Balloon @@ -2073,8 +2073,8 @@ - + Create Cosmetic Line @@ -2150,102 +2150,102 @@ - + TechDraw Insert Prefix - + Insert Prefix - + TechDraw Remove Prefix - + Remove Prefix - + Increase/Decrease Decimal - + Pos Horiz Chain Dim - + Pos Vert Chain Dim - + Pos Oblique Chain Dim - + Cascade Horiz Dim - + Cascade Vert Dim - + Cascade Oblique Dim - + Create Horiz Chain Dim - + Create Vert Chain Dim - + Create Oblique Chain Dim - + Create Horiz Coord Dim - + Create Vert Coord Dim - + Create Oblique Coord Dim - + Create Horiz Chamfer Dim - + Create Vert Chamfer Dim - + Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection @@ -2744,10 +2744,9 @@ - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection - + Select an object first - + Too many objects selected - + Create a page first. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. @@ -2906,6 +2906,8 @@ + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection @@ -3058,9 +3058,6 @@ - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection @@ -3318,28 +3318,22 @@ - - + SurfaceFinishSymbols - - No page to insert the symbol! - - - - + Selected object is not a part view, nor a leader line - + No Part View in Selection - + No %1 in Selection @@ -3417,7 +3411,7 @@ - + Document Name: @@ -3432,19 +3426,19 @@ - - + + Are you sure you want to continue? - + Show drawing - + Toggle KeepUpdated @@ -3469,9 +3463,9 @@ - + Rich text editor @@ -3589,133 +3583,133 @@ - + Edit %1 - + TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected - - + + TechDraw PosVertChainDimension - - + + No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected - - + + TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension - + TechDraw Customize Format - + No subelements selected - + Selection is empty - + No object selected @@ -3858,28 +3852,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies @@ -3904,7 +3898,7 @@ it has a weld symbol that would become broken. - + The page is not empty, therefore the following referencing objects might be lost: @@ -7359,8 +7353,8 @@ You can pick further points to get line segments. - - + + Top @@ -7371,8 +7365,8 @@ You can pick further points to get line segments. - - + + Left @@ -7383,14 +7377,14 @@ You can pick further points to get line segments. - - + + Right - + Rear @@ -7401,8 +7395,8 @@ You can pick further points to get line segments. - - + + Bottom @@ -7453,31 +7447,31 @@ using the given X/Y Spacing - - + + FrontTopLeft - - + + FrontBottomRight - - + + FrontTopRight - - + + FrontBottomLeft - + Front @@ -8117,12 +8111,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9311,4 +9305,24 @@ there is an open task dialog. + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + + + + + + Insert 'n×' Prefix + + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_be.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_be.ts index 7b2ded8149..f35c80635e 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_be.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_be.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw Тэхнічны чарцёж - + Cascade Horizontal Dimensions Каскад гарызантальных вымярэнняў - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Раўнамерна размяркуйце гарызантальныя вымярэнні:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце два ці болей гарызантальных вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw Тэхнічны чарцёж - - + + Cascade Horizontal Dimensions Каскад гарызантальных вымярэнняў - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Раўнамерна размяркуйце гарызантальныя вымярэнні:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце два ці болей гарызантальных вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw Тэхнічны чарцёж - - + + Cascade Oblique Dimensions Каскад нахіленых вымярэнняў - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Раўнамерна размяркуйце нахіленыя вымярэнні:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце два ці болей паралельных нахіленых вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw Тэхнічны чарцёж - - + + Cascade Vertical Dimensions Каскад вертыкальных вымярэнняў - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Раўнамерна размяркуйце вертыкальныя вымярэнні:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце два ці болей вертыкальных вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw Тэхнічны чарцёж - + Create Horizontal Chamfer Dimension Стварыць гарызантальнае вымярэнне фаскі - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Стварыце гарызантальны памер і вуглавое вымярэнне для фаскі:<br>- Абярыце дзве вяршыні<br>- Пстрыкніце інструмент @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw Тэхнічны чарцёж - + Create Horizontal Chain Dimensions Стварыць гарызантальнае вымярэнне ланцуга - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Стварыце паслядоўнасць выраўнаваных гарызантальных вымярэнняў:<br>- Абярыце тры ці больш вяршынь<br>- Пстрыкніце інструмент @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw Тэхнічны чарцёж - + Create Horizontal Coordinate Dimensions Стварыць гарызантальнае вымярэнне каардынат - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Стварыце некалькі раўнамерна размешчаных гарызантальных вымярэнняў, пачынаючы з адной падставы:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце тры ці больш вяршынь<br>- Парадак выбару першых дзвюх вяршынь вызначае становішча падставы<br>- Пстрыкніце інструмент @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw Тэхнічны чарцёж - - + + Create Horizontal Chain Dimensions Стварыць гарызантальнае вымярэнне ланцуга - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Стварыце паслядоўнасць выраўнаваных гарызантальных вымярэнняў:<br>- Абярыце тры ці больш вяршынь<br>- Пстрыкніце інструмент @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw Тэхнічны чарцёж - - + + Create Horizontal Chamfer Dimension Стварыць гарызантальнае вымярэнне фаскі - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Стварыце гарызантальны памер і вуглавое вымярэнне для фаскі:<br>- Абярыце дзве вяршыні<br>- Пстрыкніце інструмент @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw Тэхнічны чарцёж - - + + Create Horizontal Coordinate Dimensions Стварыць гарызантальнае вымярэнне каардынат - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Стварыце некалькі раўнамерна размешчаных гарызантальных вымярэнняў, пачынаючы з адной падставы:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце тры ці больш вяршынь<br>- Парадак выбару першых дзвюх вяршынь вызначае становішча падставы<br>- Пстрыкніце інструмент @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw Тэхнічны чарцёж - + Create Arc Length Dimension Стварыць вымярэнне даўжыні дугі - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Стварыце вымярэнне даўжыні дугі:<br>- Абярыце адну дугу<br>- Пстрыкніце інструмент @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw Тэхнічны чарцёж - - + + Create Oblique Chain Dimensions Стварыць нахіленае вымярэнне ланцуга - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Стварыце паслядоўнасць выраўнаваных нахільных вымярэнняў:<br>- Абярыце тры і больш вяршынь<br>- Першыя дзве вяршыні вызначаюць напрамак<br>- Пстрыкніце інструмент @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw Тэхнічны чарцёж - - + + Create Oblique Coordinate Dimensions Стварыць нахіленае вымярэнне каардынат - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Стварыце некалькі раўнамерна размешчаных нахіленых вымярэнняў, пачынаючы з адной падставы:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце тры ці больш вяршынь<br>- Парадак выбару першых дзвюх вяршынь вызначае становішча падставы<br>- Першыя дзве вяршыні таксама вызначаюць напрамак<br>- Пстрыкніце інструмент @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw Тэхнічны чарцёж - - + + Create Vertical Chain Dimensions Стварыць вертыкальнае вымярэнне ланцуга - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Стварыце паслядоўнасць выраўнаваных вертыкальных вымярэнняў:<br>- Абярыце тры ці больш вяршынь<br>- Пстрыкніце інструмент @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw Тэхнічны чарцёж - - + + Create Vertical Chamfer Dimension Стварыць вертыкальнае вымярэнне фаскі - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Стварыце вертыкальны памер і вуглавое вымярэнне для фаскі:<br>- Абярыце дзве вяршыні<br>- Пстрыкніце інструмент @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw Тэхнічны чарцёж - - + + Create Vertical Coordinate Dimensions Стварыць вертыкальнае вымярэнне каардынат - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Стварыце некалькі раўнамерна размешчаных вертыкальных вымярэнняў, пачынаючы з адной падставы:<br>- Пакажыце каскадную адлегласць (неабавязкова)<br>- Абярыце тры ці больш вяршынь<br>- Парадак выбару першых дзвюх вяршынь вызначае становішча падставы<br>- Пстрыкніце інструмент @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw Тэхнічны чарцёж - + Customize Format Label Карыстальніцкі фармат меткі - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Абярыце вымярэнне ці пазіцыйную зноску<br> - пстрыкніце інструмент<br> - змяніце поле фармату, ужывая клавіятуру і/ці спецыяльныя кнопкі @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw Тэхнічны чарцёж - - + + Decrease Decimal Places Паменшыць дзесятковыя разрады - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Паменшыце колькасць дзесятковых знакаў пасля коскі ў тэксце вымярэння:<br>- Абярыце адзін ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw Тэхнічны чарцёж - - + + Increase Decimal Places Павялічыць дзесятковыя разрады - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Павялічце колькасць дзесятковых знакаў пасля коскі ў тэксце вымярэння:<br> -Абярыце адзін ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw Тэхнічны чарцёж - + Increase Decimal Places Павялічыць дзесятковыя разрады - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Павялічце колькасць дзесятковых знакаў пасля коскі ў тэксце вымярэння:<br> -Абярыце адзін ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw Тэхнічны чарцёж - - + + Insert '⌀' Prefix Уставіць прыстаўку '⌀' - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Устаўце знак '⌀' у пачатку тэксту вымярэння:<br>- Абярыце адзін ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw Тэхнічны чарцёж - + Insert '⌀' Prefix Уставіць прыстаўку '⌀' - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Устаўце знак '⌀' у пачатку тэксту вымярэння:<br>- Абярыце адзін ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw Тэхнічны чарцёж - - + + Insert '□' Prefix Уставіць прыстаўку '□' - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Устаўце знак '□' у пачатку тэксту вымярэння:<br>- Абярыце адзін ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw Тэхнічны чарцёж - + Position Horizontal Chain Dimensions Становішча гарызантальнага вымярэння ланцуга - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Выраўнуйце гарызантальныя памеры, каб стварыць вымярэнне ланцуга:<br>- Абярыце два ці больш гарызантальных вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw Тэхнічны чарцёж - - + + Position Horizontal Chain Dimensions Становішча гарызантальнага вымярэння ланцуга - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Выраўнуйце гарызантальныя вымярэнні, каб стварыць вымярэнне ланцуга:<br>- Абярыце два ці больш гарызантальных вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw Тэхнічны чарцёж - - + + Position Oblique Chain Dimensions Становішча нахіленых вымярэнняў ланцуга - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Выраўнуйце нахільныя памеры, каб стварыць вымярэнне ланцуга:<br>- Абярыце два ці больш паралельных нахільных вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw Тэхнічны чарцёж - - + + Position Vertical Chain Dimensions Становішча вертыкальнага вымярэння ланцуга - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Выраўнуйце вертыкальныя памеры, каб стварыць вымярэнне ланцуга:<br>- Абярыце два ці больш вертыкальных вымярэнняў<br>- Першае вымярэнне вызначае становішча<br>- Пстрыкніце інструмент @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw Тэхнічны чарцёж - + Remove Prefix Выдаліць прыстаўку - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Выдаляе знак прыстаўкі ў пачатку тэксту вымярэння:<br>- Абярыце адзін ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -1996,8 +1996,8 @@ Стварыць выгляд Аркуша + - Save page to dxf Захаваць старонку ў файл dxf @@ -2058,7 +2058,7 @@ Перацягнуць вымярэнне - + Create Balloon Стварыць пазіцыйную зноску @@ -2073,8 +2073,8 @@ Стварыць цэнтральную лінію - + Create Cosmetic Line Стварыць касметычную лінію @@ -2150,102 +2150,102 @@ Дадаць касметычную вяршыню - + TechDraw Insert Prefix TechDraw: Уставіць прыстаўку - + Insert Prefix Уставіць прыстаўку - + TechDraw Remove Prefix TechDraw: Выдаліць прыстаўку - + Remove Prefix Выдаліць прыстаўку - + Increase/Decrease Decimal Павялічыць/Паменшыць колькасць лічбаў пасля коскі - + Pos Horiz Chain Dim Становішча гарызантальнага вымярэння ланцуга - + Pos Vert Chain Dim Становішча вертыкальнага вымярэння ланцуга - + Pos Oblique Chain Dim Становішча нахіленага вымярэння ланцуга - + Cascade Horiz Dim Каскад гарызантальных вымярэнняў - + Cascade Vert Dim Каскад вертыкальных вымярэнняў - + Cascade Oblique Dim Каскад нахіленых вымярэнняў - + Create Horiz Chain Dim Стварыць гарызантальнае вымярэнне ланцуга - + Create Vert Chain Dim Стварыць вертыкальнае вымярэнне ланцуга - + Create Oblique Chain Dim Стварыць нахіленае вымярэнне ланцуга - + Create Horiz Coord Dim Стварыць гарызантальныя вымярэнні каардынат - + Create Vert Coord Dim Стварыць вертыкальныя вымярэнні каардынат - + Create Oblique Coord Dim Стварыць нахіленыя вымярэнні каардынат - + Create Horiz Chamfer Dim Стварыць гарызантальныя вымярэнні фаскі - + Create Vert Chamfer Dim Стварыць вертыкальныя вымярэнні фаскі - + Create Arc Length Dim Стварыць вымярэнне даўжыні дугі @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Няправільны выбар @@ -2744,10 +2744,9 @@ Аб'ект профілю не знойдзены ў абраным - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Няправільны выбар - + Select an object first Спачатку абярыце аб'ект - + Too many objects selected Абрана зашмат аб'ектаў - + Create a page first. Спачатку стварыць старонку. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Без выгляду дэталі ў абраным. @@ -2906,6 +2906,8 @@ Абранае рабро ўяўляе сабой B-сплайн. Радыус будзе прыблізным. Ці працягнуць? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Няправільны выбар @@ -3058,9 +3058,6 @@ Абярыце два кропкавых аб'екта і адзін выгляд. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Задача ў працэсе - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Зачыніце дыялогавае акно бягучай задачы і паўтарыце спробу. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Няправільны выбар @@ -3318,28 +3318,22 @@ Абярыце толькі адну лінію зноскі, альбо адзін сімвал зварнога шва. - - + SurfaceFinishSymbols Знакі аздаблення паверхні - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + Абраны аб'ект не з'яўляецца выглядам дэталі ці лініяй зноскі - + No Part View in Selection Без выгляду Дэталі ў абраным - + No %1 in Selection Без %1 у абраным @@ -3417,7 +3411,7 @@ Экспартаваць старонку ў DXF - + Document Name: Назва дакументу: @@ -3432,19 +3426,19 @@ Экспартаваць старонку ў SVG - - + + Are you sure you want to continue? Ці ўпэўненыя вы, што жадаеце працягнуць? - + Show drawing Паказаць чарцёж - + Toggle KeepUpdated Пераключыць абнаўленне @@ -3469,9 +3463,9 @@ Сродак стварэння адфарматаванага тэксту - + Rich text editor Рэдактар адфарматаванага тэксту @@ -3589,133 +3583,133 @@ Змяніць вынасны элемент - + Edit %1 Змяніць %1 - + TechDraw Increase/Decrease Decimal Тэхнічны чарцёж: Павялічыць/паменшыць колькасць лічбаў пасля коскі - - + + TechDraw PosHorizChainDimension Тэхнічны чарцёж: Становішча гарызантальнага ланцуга вымярэнняў - - + + No horizontal dimensions selected Без абраных гарызантальных вымярэнняў - - + + TechDraw PosVertChainDimension Тэхнічны чарцёж: Становішча вертыкальнага ланцуга вымярэнняў - - + + No vertical dimensions selected Без абраных вертыкальных вымярэнняў - - + + TechDraw PosObliqueChainDimension Тэхнічны чарцёж: Становішча нахіленага вымярэння ланцуга - - + + No oblique dimensions selected Без абраных нахіленых вымярэнняў - - + + TechDraw CascadeHorizDimension Тэхнічны чарцёж: Каскад гарызантальных вымярэнняў - - + + TechDraw CascadeVertDimension Тэхнічны чарцёж: Каскад вертыкальных вымярэнняў - - + + TechDraw CascadeObliqueDimension Тэхнічны чарцёж: Каскад нахіленых вымярэнняў - + TechDraw Create Horizontal Chain Dimension Тэхнічны чарцёж: Стварыць гарызантальнае вымярэнне ланцуга - + TechDraw Create Vertical Chain Dimension Тэхнічны чарцёж: Стварыць вертыкальнае вымярэнне ланцуга - + TechDraw Create Oblique Chain Dimension Тэхнічны чарцёж: Становішча нахіленага вымярэння ланцуга - + TechDraw Create Horizontal Coord Dimension Тэхнічны чарцёж: Стварыць гарызантальнае вымярэнне каардынаты - + TechDraw Create Vertical Coord Dimension Тэхнічны чарцёж: Стварыць вертыкальнае вымярэнне каардынаты - + TechDraw Create Oblique Coord Dimension Тэхнічны чарцёж: Стварыць нахіленае вымярэнне каардынаты - + TechDraw Create Horizontal Chamfer Dimension Тэхнічны чарцёж: Стварыць гарызантальнае вымярэнне фаскі - + TechDraw Create Vertical Chamfer Dimension Тэхнічны чарцёж: Стварыць вертыкальнае вымярэнне фаскі - + TechDraw Create Arc Length Dimension Тэхнічны чарцёж: Стварыць вымярэнне даўжыні дугі - + TechDraw Customize Format Тэхнічны чарцёж: Налады фармату - + No subelements selected Без абраных укладзеных элементаў - + Selection is empty Выбар пусты - + No object selected Без абранага аб'екту @@ -3861,28 +3855,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Вы не можаце выдаліць лінію зноскі, бо на ёй ёсць знак зварнога шва, які можа стаць пашкоджаным. - + You cannot delete this view because it has one or more dependent views that would become broken. Вы не можаце выдаліць выгляд, бо ў ім ёсць адзін ці некалькі залежных выглядаў, якія могуць стаць пашкоджанымі. - - - - + - - + + + + + Object dependencies Залежнасці аб'екта @@ -3907,7 +3901,7 @@ it has a weld symbol that would become broken. Вы не можаце выдаліць выгляд, бо ў яго ёсць лінія зноскі, якая можа стаць пашкоджанай. - + The page is not empty, therefore the following referencing objects might be lost: Старонка не з'яўляецца пустой, таму наступныя спасылачныя аб'екты могуць быць страчаныя: @@ -7409,8 +7403,8 @@ You can pick further points to get line segments. - - + + Top Верхні @@ -7421,8 +7415,8 @@ You can pick further points to get line segments. - - + + Left Левы @@ -7433,14 +7427,14 @@ You can pick further points to get line segments. - - + + Right Правы - + Rear Задні @@ -7451,8 +7445,8 @@ You can pick further points to get line segments. - - + + Bottom Ніжні @@ -7503,31 +7497,31 @@ using the given X/Y Spacing Вертыкальная прастора паміж межамі праекцый - - + + FrontTopLeft Пярэдні верхні левы - - + + FrontBottomRight Пярэдні ніжні правы - - + + FrontTopRight Пярэдні верхні правы - - + + FrontBottomLeft Пярэдні ніжні левы - + Front Спераду @@ -8167,12 +8161,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Выдаліць прыстаўку - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Выдаляе знак прыстаўкі ў пачатку тэксту вымярэння:<br>- Абярыце адно ці некалькі вымярэнняў<br>- Пстрыкніце інструмент @@ -9375,4 +9369,26 @@ there is an open task dialog. Пстрыкніце гэты інструмент + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + Тэхнічны чарцёж + + + + + Insert 'n×' Prefix + Уставіць прыстаўку 'n×' + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Устаўце колькасць элементаў, якія паўтараюцца, у пачатак тэксту вымярэння: +- Абярыце адно ці некалькі вымярэнняў +- Пстрыкніце інструмент + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.ts index 5cfb0b8ad7..9007fadba9 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Crea una vista de full de càlcul + - Save page to dxf Guardar pàgina com dxf @@ -2058,7 +2058,7 @@ Arrossegar Dimensió - + Create Balloon Crea un globus @@ -2073,8 +2073,8 @@ Crea una línia central - + Create Cosmetic Line Crea una línia cosmètica @@ -2150,102 +2150,102 @@ Afegeix un vèrtex cosmètic - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Selecció incorrecta @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Selecció incorrecta - + Select an object first Seleccioneu primer un objecte - + Too many objects selected Hi ha masses objectes seleccionats - + Create a page first. Crear una pàgina primer. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No hi ha cap vista d'una peça en la selecció. @@ -2906,6 +2906,8 @@ L'aresta seleccionada és una BSpline. El radi serà aproximat. Voleu continuar? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Selecció incorrecta @@ -3058,9 +3058,6 @@ Seleccioneu 2 objectes punt i una vista. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tasca en procés - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Tanca el quadre de diàleg de tasques actiu i intenta-ho altra vegada. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Selecció incorrecta @@ -3318,28 +3318,22 @@ Seleccioneu exactament una única línia guia o un únic símbol de soldadura. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Exporta la Pàgina com a PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Exporta la Pàgina com a SVG - - + + Are you sure you want to continue? Segur que voleu continuar? - + Show drawing Mostra el dibuix - + Toggle KeepUpdated Activa/desactiva l'actualització automàtica @@ -3469,9 +3463,9 @@ Creador de text enriquit - + Rich text editor Editor de text enriquit @@ -3589,133 +3583,133 @@ Edita la vista de detall - + Edit %1 Editar %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No s’ha seleccionat cap cota horitzontal - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No s’ha seleccionat cap cota vertical - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No s’ha seleccionat cap cota obliqua - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,28 +3855,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. No podeu suprimir aquesta línia guia perquè conté un símbol de soldadura que es trencaria. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Dependències de l'objecte @@ -3907,7 +3901,7 @@ it has a weld symbol that would become broken. No podeu suprimir aquesta vista perquè conté una línia guia que es trencaria. - + The page is not empty, therefore the following referencing objects might be lost: La pàgina no està buida, per tant @@ -7401,8 +7395,8 @@ You can pick further points to get line segments. - - + + Top Planta @@ -7413,8 +7407,8 @@ You can pick further points to get line segments. - - + + Left Esquerra @@ -7425,14 +7419,14 @@ You can pick further points to get line segments. - - + + Right Dreta - + Rear Posterior @@ -7443,8 +7437,8 @@ You can pick further points to get line segments. - - + + Bottom Inferior @@ -7496,31 +7490,31 @@ usant l'espaiat X/Y donat Espai vertical entre límits de les projeccions - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Alçat @@ -8160,12 +8154,12 @@ usant l'espaiat X/Y donat TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9370,4 +9364,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.ts index b2bb387e79..bc13fc319c 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Horizontální rozměry kaskády - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Rovnoměrné rozmístění vodorovných rozměrů:<br>- Zadejte kaskádové rozmístění (volitelné)<br>- Vyberte dva nebo více vodorovných rozměrů<br>- První rozměr určuje polohu<br>- Klikněte na tento nástroj @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Horizontální rozměry kaskády - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Rovnoměrné rozmístění vodorovných rozměrů:<br>- Zadejte kaskádové rozmístění (volitelné)<br>- Vyberte dva nebo více vodorovných rozměrů<br>- První rozměr určuje polohu<br>- Klikněte na tento nástroj @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Rozměry kaskádové krychle - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Rovnoměrné rozmístění šikmých rozměrů:<br>- Zadejte kaskádové rozmístění (volitelné)<br>- Vyberte dva nebo více šikmých paralelních rozměrů<br>- První rozměr určuje polohu<br>- Klikněte na tento nástroj @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Svislé rozměry kaskády - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Rovnoměrné rozmístění svislých rozměrů:<br>- Zadejte kaskádové rozmístění (volitelné)<br>- Vyberte dva nebo více svislých rozměrů<br>- První rozměr určuje polohu<br>- Klikněte na tento nástroj @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Vytvořit vodorovnou dimenzi Chamfer - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Vytvořte vodorovnou velikost a úhlovou dimenzi pro komoru:<br>- Vyberte dva vrcholy<br>- klikněte na tento nástroj @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Vytvořit rozměry vodorovného řetězce - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Vytvořte posloupnost zarovnaných horizontálních rozměrů:<br>- Vyberte tři nebo více vrcholů<br>- klikněte na tento nástroj @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Vytvořit rozměry vodorovné souřadnice - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Vytvořte více rovnoměrně odstupňovaných horizontálních rozměrů počínaje stejnou základní linií:<br>- Specifikujte mezeru mezi kaskádami (volitelné)<br>- Vyberte tři nebo více vrcholů<br>- Pořadí výběru prvních dvou vrcholů určuje polohu základní osy<br>- Klikněte na tento nástroj @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Vytvořit rozměry vodorovného řetězce - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Vytvořte posloupnost zarovnaných horizontálních rozměrů:<br>- Vyberte tři nebo více vrcholů<br>- klikněte na tento nástroj @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Vytvořit vodorovnou dimenzi Chamfer - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Vytvořte vodorovnou velikost a úhlovou dimenzi pro komoru:<br>- Vyberte dva vrcholy<br>- klikněte na tento nástroj @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Vytvořit rozměry vodorovné souřadnice - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Vytvořte více rovnoměrně odstupňovaných horizontálních rozměrů počínaje stejnou základní linií:<br>- Specifikujte mezeru mezi kaskádami (volitelné)<br>- Vyberte tři nebo více vrcholů<br>- Pořadí výběru prvních dvou vrcholů určuje polohu základní osy<br>- Klikněte na tento nástroj @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Vytvořit rozměr délky oblouku - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Vytvořit rozměr délky oblouku:<br>- Vyberte jeden oblouk<br>- klikněte na tento nástroj @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Vytvořit dimenzi řetězového řetězce - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Vytvořte posloupnost zarovnaných rozměrů:<br>- Vyberte tři nebo více vrcholů<br>- První dva vrcholy definují směr<br>- klikněte na tento nástroj @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Vytvořit dimenzi souřadnic krychle - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Vytvořte více rovnoměrně rozložených rozměrů počínaje stejnou základní linií:<br>- Specifikujte mezeru mezi kaskádami (volitelné)<br>- Vyberte tři nebo více vrcholů<br>- Pořadí prvních dvou vrcholů určuje polohu základní linie<br>- První dva vrcholy také definují směr<br>- Klikněte na tento nástroj @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Vytvořit vertikální dimenze - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Vytvořte posloupnost zarovnaných vertikálních rozměrů:<br>- Vyberte tři nebo více vrcholů<br>- klikněte na tento nástroj @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Vytvořit vertikální rozměr Chamfer - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Vytvořte vertikální velikost a rozměry úhlu pro komoru:<br>- Vyberte dva vrcholy<br>- klikněte na tento nástroj @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Vytvořit rozměry vertikálních souřadnic - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Vytvořte více rovnoměrně odstupňovaných vertikálních rozměrů počínaje stejnou základní linií:<br>- Specifikujte mezeru mezi kaskádami (volitelné)<br>- Vyberte tři nebo více vrcholů<br>- Pořadí prvních dvou vrcholů určuje pozici základní linie<br>- Klikněte na tento nástroj @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Přizpůsobit popisek formátu - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Vyberte rozměr nebo balón<br> - klikněte na tento nástroj<br> - upravte pole formátu pomocí klávesnice a/nebo speciálních tlačítek @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Snížit desetinná místa - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Snížit počet desetinných míst textu dimenze:<br>- Vyberte jeden nebo více rozměrů<br>- klikněte na tento nástroj @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Zvýšit desetinná místa - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Zvyšte počet desetinných míst textu dimenze:<br>- Vyberte jeden nebo více rozměrů<br>- klikněte na tento nástroj @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Zvýšit desetinná místa - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Zvyšte počet desetinných míst textu dimenze:<br>- Vyberte jeden nebo více rozměrů<br>- klikněte na tento nástroj @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Vložte symbol '⌀' na začátku textu kótu:<br>- Vyberte jeden nebo více rozměrů<br>- Klikněte na tento nástroj @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Vložte symbol '⌀' na začátku textu kótu:<br>- Vyberte jeden nebo více rozměrů<br>- Klikněte na tento nástroj @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Vložte symbol '□' na začátku textu kótu:<br>- Vyberte jeden nebo více rozměrů<br>- Klikněte na tento nástroj @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Poloha vodorovného řetězce - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Zarovnejte vodorovné rozměry a vytvořte dimenzi řetězce:<br>- Vyberte dva nebo více horizontálních rozměrů<br>- První rozměr definuje pozici<br>- Klikněte na tento nástroj @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Poloha vodorovného řetězce - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Zarovnejte vodorovné rozměry a vytvořte dimenzi řetězce:<br>- Vyberte dva nebo více horizontálních rozměrů<br>- První rozměr definuje pozici<br>- Klikněte na tento nástroj @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Poloha šikmého řetězce - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Zarovnejte šikmé rozměry a vytvořte dimenzi řetězce:<br>- Vyberte dva nebo více paralelních zlomků<br>- První rozměr definuje pozici<br>- klikněte na tento nástroj @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Poloha vertikálního řetězce - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Zarovnejte vertikální rozměry a vytvořte dimenzi řetězce:<br>- Vyberte dva nebo více vertikálních rozměrů<br>- První rozměr definuje pozici<br>- klikněte na tento nástroj @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Odstranit předponu - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Odstranit prefix symbolů na začátku textu kótu:<br>- Vyberte jeden nebo více rozměrů<br>- klikněte na tento nástroj @@ -1996,8 +1996,8 @@ Vytvořit pohled tabulky + - Save page to dxf Uložit stránku do dxf @@ -2058,7 +2058,7 @@ Táhnout kótu - + Create Balloon Vytvořit balon @@ -2073,8 +2073,8 @@ Vytvořit osu - + Create Cosmetic Line Vytvořit pomocnou čáru @@ -2150,102 +2150,102 @@ Přidat pomocný vrchol - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Odstranit předponu - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Neplatný výběr @@ -2744,10 +2744,9 @@ Ve výběru nebyl nalezen žádný objekt profilu - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Nesprávný výběr - + Select an object first Nejprve vyberte objekt - + Too many objects selected Příliš mnoho vybraných objektů - + Create a page first. Vytvořte nejprve stránku. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Ve výběru není zobrazení součásti. @@ -2906,6 +2906,8 @@ Vybraná hrana je BSplajn. Poloměr bude přibližný. Pokračovat? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Nesprávný výběr @@ -3058,9 +3058,6 @@ Vyberte 2 bodové objekty a 1 pohled. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Probíhá úkol - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Zavřete aktivní dialog úkolů a zkuste to znovu. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Chybný výběr @@ -3318,28 +3318,22 @@ Vybrat přesně jednu odkazovou čáru, nebo jeden symbol svaru. - - + SurfaceFinishSymbols SurfaceFinishSymboly - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection Ve výběru není zobrazena žádná část - + No %1 in Selection Žádný %1 ve výběru @@ -3417,7 +3411,7 @@ Exportovat stránku do PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Exportovat stránku do SVG - - + + Are you sure you want to continue? Opravdu si přejete pokračovat? - + Show drawing Zobrazit výkres - + Toggle KeepUpdated Přepnout průběžné aktualizace @@ -3469,9 +3463,9 @@ Editor rozsáhlého textu - + Rich text editor Editor rozsáhlého textu @@ -3589,133 +3583,133 @@ Upravit detail pohledu - + Edit %1 Upravit %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected Nejsou vybrány žádné dílčí položky - + Selection is empty Výběr je prázdný - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Nemůžete smazat tuto odkazovou čáru, protože obsahuje symbol svaru, který by se rozbil. - + You cannot delete this view because it has one or more dependent views that would become broken. Nemůžete smazat tento názor, protože má jeden nebo více závislých názorů, které by byly porušeny. - - - - + - - + + + + + Object dependencies Závislosti objektu @@ -3908,7 +3902,7 @@ protože obsahuje symbol svaru, který by se rozbil. Nemůžete odstranit tento pohled, protože obsahuje odkazovou čáru, která by se rozbila. - + The page is not empty, therefore the following referencing objects might be lost: Stránka není prázdná, následující referenční objekty budou možná ztraceny: @@ -7411,8 +7405,8 @@ You can pick further points to get line segments. - - + + Top Horní @@ -7423,8 +7417,8 @@ You can pick further points to get line segments. - - + + Left Vlevo @@ -7435,14 +7429,14 @@ You can pick further points to get line segments. - - + + Right Vpravo - + Rear Zadní @@ -7453,8 +7447,8 @@ You can pick further points to get line segments. - - + + Bottom Dole @@ -7506,31 +7500,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Přední @@ -8170,12 +8164,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Odstranit předponu - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Odstranit prefix symbolů na začátku textu kótu:<br>- Vyberte jeden nebo více rozměrů<br>- klikněte na tento nástroj @@ -9380,4 +9374,24 @@ je zde otevřený dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts index 7914b59fdd..424281ce52 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Horizontale Maße anordnen - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Horizontale Maße mit gleichen Abständen anordnen:<br>- Zeilenabstand eingeben (optional)<br>- Zwei oder mehr horizontale Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Horizontale Maße anordnen - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Horizontale Maße mit gleichen Abständen anordnen:<br>- Zeilenabstand eingeben (optional)<br>- Zwei oder mehr horizontale Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Schräge Maße anordnen - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Schräge Maße mit gleichen Abständen anordnen:<br>- Zeilenabstand eingeben (optional)<br>- Zwei oder mehr parallele schräge Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Vertikale Maße anordnen - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Vertikale Maße mit gleichen Abständen anordnen:<br>- Zeilenabstand eingeben (optional)<br>- Zwei oder mehr vertikale Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Horizontales Maß an Fase erstellen - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Ein horizontales Maß mit Längen- und Winkelangabe für eine Fase erstellen:<br>- Zwei Knotenpunkte auswählen<br>- Dieses Werkzeug anklicken @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Horizontale Maßketten erstellen - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Eine Folge von fluchtenden horizontalen Maßen erstellen:<br>- Drei oder mehr Knotenpunkte auswählen<br>- Dieses Werkzeug anklicken @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Horizontale Koordinatenmaße erstellen - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Horizontale Maße mit gleichen Abständen erstellen, die an derselben Grundlinie beginnen:<br>- Zeilenabstand eingeben (optional)<br>- Drei oder mehr Knotenpunkte auswählen<br>- Die Auswahlreihenfolge der ersten beiden Knotenpunkte ergibt die Position der Grundlinie<br>- Dieses Werkzeug anklicken @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Horizontale Maßketten erstellen - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Eine Folge von fluchtenden horizontalen Maßen erstellen:<br>- Drei oder mehr Knotenpunkte auswählen<br>- Dieses Werkzeug anklicken @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Horizontales Maß an Fase erstellen - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Ein horizontales Maß mit Längen- und Winkelangabe für eine Fase erstellen:<br>- Zwei Knotenpunkte auswählen<br>- Dieses Werkzeug anklicken @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Horizontale Koordinatenmaße erstellen - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Horizontale Maße mit gleichen Abständen erstellen, die an derselben Grundlinie beginnen:<br>- Zeilenabstand eingeben (optional)<br>- Drei oder mehr Knotenpunkte auswählen<br>- Die Auswahlreihenfolge der ersten beiden Knotenpunkte ergibt die Position der Grundlinie<br>- Dieses Werkzeug anklicken @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Bogenmaß erstellen - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Ein Bogenmaß erstellen:<br>- Einen einzelnen Bogen auswählen<br>- Dieses Werkzeug anklicken @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Schräge Maßketten erstellen - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Eine Folge von fluchtenden schrägen Maßen erstellen:<br>- Drei oder mehr Knotenpunkte auswählen<br>- Die ersten beiden Punkte definieren die Richtung<br>- Dieses Werkzeug anklicken @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Schräge Koordinatenmaße erstellen - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Schräge Maße mit gleichen Abständen erstellen, die an derselben Grundlinie beginnen:<br>- Zeilenabstand eingeben (optional)<br>- Drei oder mehr Knotenpunkte auswählen<br>- Die Auswahlreihenfolge der ersten beiden Knotenpunkte ergibt die Position der Grundlinie<br>- Die ersten beiden Knotenpunkte definieren auch die Richtung<br>- Dieses Werkzeug anklicken @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Vertikale Maßketten erstellen - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Eine Folge von fluchtenden vertikalen Maßen erstellen:<br>- Drei oder mehr Knotenpunkte auswählen<br>- Dieses Werkzeug anklicken @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Vertikales Maß an Fase erstellen - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Ein vertikales Maß mit Längen- und Winkelangabe für eine Fase erstellen:<br>- Zwei Knotenpunkte auswählen<br>- Dieses Werkzeug anklicken @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Vertikale Koordinatenmaße erstellen - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Vertikale Maße mit gleichen Abständen erstellen, die an derselben Grundlinie beginnen:<br>- Zeilenabstand eingeben (optional)<br>- Drei oder mehr Knotenpunkte auswählen<br>- Die Auswahlreihenfolge der ersten beiden Knotenpunkte ergibt die Position der Grundlinie<br>- Dieses Werkzeug anklicken @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Beschriftungsformat anpassen - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Ein Maß oder ein Hinweisfeld auswählen<br> - Dieses Werkzeug anklicken<br> - Das Formatfeld bearbeiten, mit der Tastatur und/oder den speziellen Schaltflächen @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Dezimalstellenanzahl verringern - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Die Anzahl der Dezimalstellen der Maßzahl verringern:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Dezimalstellenanzahl erhöhen - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Die Anzahl der Dezimalstellen der Maßzahl erhöhen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Dezimalstellenanzahl erhöhen - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Die Anzahl der Dezimalstellen der Maßzahl erhöhen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix '⌀'-Symbol einfügen - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ein '⌀'-Symbol am Anfang des Maßtextes einfügen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix '⌀'-Symbol einfügen - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ein '⌀'-Symbol am Anfang des Maßtextes einfügen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix '□'-Symbol einfügen - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ein '□'-Symbol am Anfang des Maßtextes einfügen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Horizontale Kettenmaße anordnen - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Horizontale Maße fluchtend anordnen, um eine Maßkette zu erstellen:<br>- Zwei oder mehr horizontale Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Horizontale Kettenmaße anordnen - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Horizontale Maße fluchtend anordnen, um eine Maßkette zu erstellen:<br>- Zwei oder mehr horizontale Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Schräge Kettenmaße anordnen - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Schräge Maße fluchtend anordnen, um eine Maßkette zu erstellen:<br>- Zwei oder mehr parallele schräge Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Vertikale Kettenmaße anordnen - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Vertikale Maße fluchtend anordnen, um eine Maßkette zu erstellen:<br>- Zwei oder mehr vertikale Maße auswählen<br>- Das erste Maß definiert die Position<br>- Dieses Werkzeug anklicken @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Präfixsymbol entfernen - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ein Präfixsymbol vom Anfang des Maßtextes entfernen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -1996,8 +1996,8 @@ Kalkulationstabellenansicht erstellen + - Save page to dxf Seite als dxf speichern @@ -2058,7 +2058,7 @@ Maß ziehen - + Create Balloon Hinweisfeld erstellen @@ -2073,8 +2073,8 @@ Mittellinie erstellen - + Create Cosmetic Line Hilfslinie erstellen @@ -2150,102 +2150,102 @@ Hilfspunkt hinzufügen - + TechDraw Insert Prefix TechDraw Symbol voranstellen - + Insert Prefix Präfixsymbol einfügen - + TechDraw Remove Prefix TechDraw Symbol entfernen - + Remove Prefix Präfix entfernen - + Increase/Decrease Decimal Dezimalstellenanzahl erhöhen/verringern - + Pos Horiz Chain Dim Horizontale Kettenmaße anordnen - + Pos Vert Chain Dim Vertikale Kettenmaße anordnen - + Pos Oblique Chain Dim Schräge Kettenmaße anordnen - + Cascade Horiz Dim Horizontale Maße anordnen - + Cascade Vert Dim Vertikale Maße anordnen - + Cascade Oblique Dim Schräge Maße anordnen - + Create Horiz Chain Dim Horizontale Maßketten erstellen - + Create Vert Chain Dim Vertikale Maßketten erstellen - + Create Oblique Chain Dim Schräge Maßketten erstellen - + Create Horiz Coord Dim Horizontale Koordinatenmaße erstellen - + Create Vert Coord Dim Vertikale Koordinatenmaße erstellen - + Create Oblique Coord Dim Schräge Koordinatenmaße erstellen - + Create Horiz Chamfer Dim Horizontales Maß an Fase erstellen - + Create Vert Chamfer Dim Vertikales Maß an Fase erstellen - + Create Arc Length Dim Bogenmaß erstellen @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Falsche Auswahl @@ -2744,10 +2744,9 @@ Kein Profilobjekt in der Auswahl gefunden - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Falsche Auswahl - + Select an object first Zuerst ein Objekt auswählen - + Too many objects selected Zu viele Objekte ausgewählt - + Create a page first. Erstellen Sie zunächst eine Seite. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Keine Teileansicht in der Auswahl. @@ -2906,6 +2906,8 @@ Ausgewählte Kante ist ein B-Spline. Radius wird angenähert. Fortfahren? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Falsche Auswahl @@ -3058,9 +3058,6 @@ Wähle 2 Punktobjekte und 1 Ansicht. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Aufgabe in Bearbeitung - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Den aktiven Aufgaben-Dialog schliessen und erneut versuchen. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Falsche Auswahl @@ -3318,28 +3318,22 @@ Auswahl genau einer Hinweislinie oder eines Schweißsymbols. - - + SurfaceFinishSymbols Oberflächensymbole - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + Ausgewähltes Objekt ist keine Bauteilansicht oder Hinweislinie - + No Part View in Selection Keine Bauteilansicht ausgewählt - + No %1 in Selection Kein %1 in der Auswahl @@ -3417,7 +3411,7 @@ Seite als PDF-Datei exportieren - + Document Name: Dokumentname: @@ -3432,19 +3426,19 @@ Seite als SVG-Datei exportieren - - + + Are you sure you want to continue? Bist du sicher, dass du fortfahren möchtest? - + Show drawing Zeichnung anzeigen - + Toggle KeepUpdated Automatisches Aktualisieren umschalten @@ -3469,9 +3463,9 @@ Rich-Text Ersteller - + Rich text editor Rich-Text Editor @@ -3589,133 +3583,133 @@ Detailansicht bearbeiten - + Edit %1 %1 bearbeiten - + TechDraw Increase/Decrease Decimal TechDraw Nachkommastellenanzahl erhöhen/verringern - - + + TechDraw PosHorizChainDimension TechDraw Horizontale Kettenmaße anordnen - - + + No horizontal dimensions selected Keine horizontalen Maße ausgewählt - - + + TechDraw PosVertChainDimension TechDraw Vertikale Kettenmaße anordnen - - + + No vertical dimensions selected Keine vertikalen Maße ausgewählt - - + + TechDraw PosObliqueChainDimension TechDraw Schräge Kettenmaße anordnen - - + + No oblique dimensions selected Keine schrägen Maße ausgewählt - - + + TechDraw CascadeHorizDimension TechDraw Horizontale Maße anordnen - - + + TechDraw CascadeVertDimension TechDraw Vertikale Maße anordnen - - + + TechDraw CascadeObliqueDimension TechDraw Schräge Maße anordnen - + TechDraw Create Horizontal Chain Dimension TechDraw Horizontale Maßketten erstellen - + TechDraw Create Vertical Chain Dimension TechDraw Vertikale Maßketten erstellen - + TechDraw Create Oblique Chain Dimension TechDraw Schräge Maßketten erstellen - + TechDraw Create Horizontal Coord Dimension TechDraw Horizontale Koordinatenmaße erstellen - + TechDraw Create Vertical Coord Dimension TechDraw Vertikale Koordinatenmaße erstellen - + TechDraw Create Oblique Coord Dimension TechDraw Schräge Koordinatenmaße erstellen - + TechDraw Create Horizontal Chamfer Dimension TechDraw Horizontales Maß an Fase erstellen - + TechDraw Create Vertical Chamfer Dimension TechDraw Vertikales Maß an Fase erstellen - + TechDraw Create Arc Length Dimension TechDraw Bogenmaß erstellen - + TechDraw Customize Format TechDraw Format anpassen - + No subelements selected Keine Unterelemente ausgewählt - + Selection is empty Nichts ausgewählt - + No object selected Kein Objekt ausgewählt @@ -3861,28 +3855,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Diese Hinweislinie kann nicht gelöscht werden, weil ihr ein Schweißsymbol zugeordnet ist, das dadurch unbrauchbar werden würde. - + You cannot delete this view because it has one or more dependent views that would become broken. Diese Ansicht kann nicht gelöscht werden, da von ihr eine oder mehrere Ansichten abhängen, die beschädigt werden könnten. - - - - + - - + + + + + Object dependencies Objektabhängigkeiten @@ -3907,7 +3901,7 @@ it has a weld symbol that would become broken. Diese Ansicht kann nicht gelöscht werden, weil ihr eine Hinweislinie zugeordnet ist, die dadurch unbrauchbar werden würde. - + The page is not empty, therefore the following referencing objects might be lost: Das Zeichnungsblatt ist nicht leer, deshalb könnten die @@ -7310,12 +7304,12 @@ Du kannst weitere Punkte auswählen, um Liniensegmente zu erhalten. First Angle - Erstwinkelprojektion + First Angle / Europäisch Third Angle - Drittwinkelprojektion + Third Angle / Amerikanisch @@ -7400,8 +7394,8 @@ Du kannst weitere Punkte auswählen, um Liniensegmente zu erhalten. - - + + Top Draufsicht @@ -7412,8 +7406,8 @@ Du kannst weitere Punkte auswählen, um Liniensegmente zu erhalten. - - + + Left Seitenansicht von links @@ -7424,14 +7418,14 @@ Du kannst weitere Punkte auswählen, um Liniensegmente zu erhalten. - - + + Right Seitenansicht von rechts - + Rear Rückansicht @@ -7442,10 +7436,10 @@ Du kannst weitere Punkte auswählen, um Liniensegmente zu erhalten. - - + + Bottom - Unten + Untersicht @@ -7495,31 +7489,31 @@ mit dem vorgegebenen X/Y-Abstand Vertikaler Abstand zwischen den Rändern der Ansichten - - + + FrontTopLeft VorneObenLinks - - + + FrontBottomRight VorneUntenRechts - - + + FrontTopRight VorneObenRechts - - + + FrontBottomLeft VorneUntenLinks - + Front Vorderansicht @@ -8159,12 +8153,12 @@ mit dem vorgegebenen X/Y-Abstand TechDraw_ExtensionremovePrefixChar - + Remove Prefix Präfixsymbol entfernen - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ein Präfixsymbol vom Anfang des Maßtextes entfernen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken @@ -9369,4 +9363,24 @@ noch ein Aufgaben-Dialog geöffnet ist. Klicke auf dieses Werkzeug + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + 'n×' Präfix einfügen + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Wiederholte Elemente am Anfang des Maßtextes einfügen:<br>- Ein oder mehrere Maße auswählen<br>- Dieses Werkzeug anklicken + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.ts index 3a089b3454..3e222d5192 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw Τεχνική Σχεδίαση - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw Τεχνική Σχεδίαση - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw Τεχνική Σχεδίαση - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw Τεχνική Σχεδίαση - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw Τεχνική Σχεδίαση - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw Τεχνική Σχεδίαση - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw Τεχνική Σχεδίαση - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw Τεχνική Σχεδίαση - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw Τεχνική Σχεδίαση - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw Τεχνική Σχεδίαση - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Επιλέξτε μια διάσταση ή ένα μπαλόνι <br> - κάντε κλικ σε αυτό το εργαλείο <br> - επεξεργαστείτε το πεδίο Μορφοποίηση, χρησιμοποιώντας το πληκτρολόγιο ή/και τα ειδικά κουμπιά @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw Τεχνική Σχεδίαση - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw Τεχνική Σχεδίαση - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw Τεχνική Σχεδίαση - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw Τεχνική Σχεδίαση - - + + Insert '⌀' Prefix Εισαγωγή '⌀' Πρόθεμα - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw Τεχνική Σχεδίαση - + Insert '⌀' Prefix Εισαγωγή '⌀' Πρόθεμα - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw Τεχνική Σχεδίαση - - + + Insert '□' Prefix Εισαγωγή '⌀' Πρόθεμα - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw Τεχνική Σχεδίαση - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw Τεχνική Σχεδίαση - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw Τεχνική Σχεδίαση - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw Τεχνική Σχεδίαση - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw Τεχνική Σχεδίαση - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Create spreadsheet view + - Save page to dxf Save page to dxf @@ -2058,7 +2058,7 @@ Drag Dimension - + Create Balloon Create Balloon @@ -2073,8 +2073,8 @@ Create CenterLine - + Create Cosmetic Line Create Cosmetic Line @@ -2150,102 +2150,102 @@ Add Cosmetic Vertex - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Εισαγωγή προθέματος - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Λάθος επιλογή @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Εσφαλμένη επιλογή - + Select an object first Επιλέξτε πρώτα ένα αντικείμενο - + Too many objects selected Επιλέχθηκαν πάρα πολλά αντικείμενα - + Create a page first. Δημιουργήστε πρώτα μια σελίδα. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No View of a Part in selection. @@ -2906,6 +2906,8 @@ Selected edge is a BSpline. Radius will be approximate. Continue? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Εσφαλμένη Επιλογή @@ -3058,9 +3058,6 @@ Select 2 point objects and 1 View. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Task In Progress - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Close active task dialog and try again. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Wrong Selection @@ -3318,28 +3318,22 @@ Select exactly one Leader line or one Weld symbol. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Εξαγωγή Σελίδας ως PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Εξαγωγή Σελίδας ως SVG - - + + Are you sure you want to continue? Are you sure you want to continue? - + Show drawing Εμφανίστε σχέδιο - + Toggle KeepUpdated Εναλλαγή Ενημέρωσης της σελίδας @@ -3469,9 +3463,9 @@ Rich text creator - + Rich text editor Rich text editor @@ -3589,133 +3583,133 @@ Edit Detail View - + Edit %1 Επεξεργασία %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Εξαρτήσεις αντικειμένου @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. You cannot delete this view because it has a leader line that would become broken. - + The page is not empty, therefore the following referencing objects might be lost: The page is not empty, therefore the @@ -7414,8 +7408,8 @@ You can pick further points to get line segments. - - + + Top Πάνω @@ -7426,8 +7420,8 @@ You can pick further points to get line segments. - - + + Left Αριστερά @@ -7438,14 +7432,14 @@ You can pick further points to get line segments. - - + + Right Δεξιά - + Rear Οπίσθια @@ -7456,8 +7450,8 @@ You can pick further points to get line segments. - - + + Bottom Κάτω @@ -7509,31 +7503,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Εμπρόσθια @@ -8173,12 +8167,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9383,4 +9377,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + Τεχνική Σχεδίαση + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-AR.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-AR.ts index 9e847fd727..3d5f91c5a0 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-AR.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-AR.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw DibujoTécnico - + Cascade Horizontal Dimensions Acotación horizontal en cascada - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Acotación horizontal uniformemente espaciada:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas horizontales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw DibujoTécnico - - + + Cascade Horizontal Dimensions Acotación horizontal en cascada - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Acotación horizontal uniformemente espaciada:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas horizontales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw DibujoTécnico - - + + Cascade Oblique Dimensions Acotación oblicua en cascada - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Acotación oblicua uniformemente espaciada:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas oblicuas paralelas<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw DibujoTécnico - - + + Cascade Vertical Dimensions Acotación vertical en cascada - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Acotación vertical uniformemente espaciada:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas verticales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw DibujoTécnico - + Create Horizontal Chamfer Dimension Crear cota horizontal de bisel - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crea una medida horizontal y una cota angular de un bisel:<br>- Seleccione dos vértices<br>- Haga clic en esta herramienta @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw DibujoTécnico - + Create Horizontal Chain Dimensions Crear acotación horizontal en cadena - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Crea una secuencia de cotas horizontales alineadas:<br>- Seleccione tres o más vértices<br>- Haga clic en esta herramienta @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw DibujoTécnico - + Create Horizontal Coordinate Dimensions Crear acotación paralela horizontal - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crea múltiples cotas horizontales con espacio uniforme a partir de la misma línea de referencia:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de referencia<br>- Haga clic en esta herramienta @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw DibujoTécnico - - + + Create Horizontal Chain Dimensions Crear acotación horizontal en cadena - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Crea una secuencia de cotas horizontales alineadas:<br>- Seleccione tres o más vértices<br>- Haga clic en esta herramienta @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw DibujoTécnico - - + + Create Horizontal Chamfer Dimension Crear cota horizontal de bisel - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crea una medida horizontal y una cota angular de un bisel:<br>- Seleccione dos vértices<br>- Haga clic en esta herramienta @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw DibujoTécnico - - + + Create Horizontal Coordinate Dimensions Crear acotación paralela horizontal - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crea múltiples cotas horizontales con espacio uniforme a partir de la misma línea de referencia:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de referencia<br>- Haga clic en esta herramienta @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw DibujoTécnico - + Create Arc Length Dimension Crear cota de longitud del arco - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Crea una cota de longitud del arco:<br>- Seleccione un solo arco<br>- Haga clic en esta herramienta @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw DibujoTécnico - - + + Create Oblique Chain Dimensions Crear acotación oblicua en cadena - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Crea una secuencia de cotas oblicuas alineadas:<br>- Seleccione tres o más vértices<br>- Los dos primeros vértices definen la dirección<br>- Haga clic en esta herramienta @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw DibujoTécnico - - + + Create Oblique Coordinate Dimensions Crear acotación paralela oblicua - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Crea múltiples cotas oblicuas con espacio uniforme a partir de la misma línea de base:<br>- Especifica el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de base<br>- Los dos primeros vértices también definen la dirección<br>- Haga clic en esta herramienta @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw DibujoTécnico - - + + Create Vertical Chain Dimensions Crear acotación vertical en cadena - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Crea una secuencia de cotas verticales alineadas:<br>- Seleccione tres o más vértices<br>- Haga clic en esta herramienta @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw DibujoTécnico - - + + Create Vertical Chamfer Dimension Crear cota vertical de bisel - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crea una medida vertical y una cota angular de un bisel:<br>- Seleccione dos vértices<br>- Haga clic en esta herramienta @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw DibujoTécnico - - + + Create Vertical Coordinate Dimensions Crear acotación paralela vertical - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crea múltiples cotas verticales con espacio uniforme a partir de la misma línea de referencia:<br>- Especificar el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de referencia<br>- Haga clic en esta herramienta @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw DibujoTécnico - + Customize Format Label Personalizar formato de etiqueta - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Seleccione una cota o un globo<br> - haga clic en esta herramienta<br> - edite el campo de Formato, usando el teclado y/o los botones especiales @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw DibujoTécnico - - + + Decrease Decimal Places Disminuir decimales - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Disminuye el número de lugares decimales del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw DibujoTécnico - - + + Increase Decimal Places Aumentar decimales - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumenta el número de lugares decimales del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw DibujoTécnico - + Increase Decimal Places Aumentar decimales - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumenta el número de lugares decimales del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw DibujoTécnico - - + + Insert '⌀' Prefix Insertar prefijo '⌀' - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserta un símbolo '⌀' al principio del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw DibujoTécnico - + Insert '⌀' Prefix Insertar prefijo '⌀' - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserta un símbolo '⌀' al principio del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw DibujoTécnico - - + + Insert '□' Prefix Insertar prefijo '□' - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserta un símbolo '□' al principio del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw DibujoTécnico - + Position Horizontal Chain Dimensions Posición horizontal de cotas en cadena - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Alinea las cotas horizontales para crear una acotación en cadena:<br>- Seleccione dos o más cotas horizontales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw DibujoTécnico - - + + Position Horizontal Chain Dimensions Posición horizontal de cotas en cadena - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Alinea las cotas horizontales para crear una acotación en cadena:<br>- Seleccione dos o más cotas horizontales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw DibujoTécnico - - + + Position Oblique Chain Dimensions Posición oblicua de cotas en cadena - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Alinea las cotas oblicuas para crear una acotación en cadena:<br>- Seleccione dos o más cotas oblicuas paralelas<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw DibujoTécnico - - + + Position Vertical Chain Dimensions Posición vertical de cotas en cadena - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Alinea las cotas verticales para crear una acotación en cadena:<br>- Seleccione dos o más cotas verticales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw DibujoTécnico - + Remove Prefix Eliminar prefijo - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Elimina los prefijos de símbolos al principio del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -1996,8 +1996,8 @@ Crear vista de hoja de cálculo + - Save page to dxf Guardar página como dxf @@ -2058,7 +2058,7 @@ Arrastrar Cota - + Create Balloon Crear globo @@ -2073,8 +2073,8 @@ Crear línea central - + Create Cosmetic Line Crear Línea Adicional @@ -2150,102 +2150,102 @@ Agregar vértice adicional - + TechDraw Insert Prefix Insertar prefijo - + Insert Prefix Insertar prefijo - + TechDraw Remove Prefix Eliminar prefijo - + Remove Prefix Eliminar prefijo - + Increase/Decrease Decimal Aumentar/disminuir decimales - + Pos Horiz Chain Dim Pos cot horiz enc - + Pos Vert Chain Dim Pos cot vert enc - + Pos Oblique Chain Dim Pos cot oblic enc - + Cascade Horiz Dim Cot horiz en cascada - + Cascade Vert Dim Cot vert en cascada - + Cascade Oblique Dim Cot oblic en cascada - + Create Horiz Chain Dim Crear cot horiz enc - + Create Vert Chain Dim Crear cot vert enc - + Create Oblique Chain Dim Crear cot oblic enc - + Create Horiz Coord Dim Crear cot horiz coord - + Create Vert Coord Dim Crear cot vert coord - + Create Oblique Coord Dim Crear cot oblic coord - + Create Horiz Chamfer Dim Crear cot chaf horiz - + Create Vert Chamfer Dim Crear cot chaf vert - + Create Arc Length Dim Crear cot long arc @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Selección Incorrecta @@ -2744,10 +2744,9 @@ No se encontró ningún objeto de perfil en la selección - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Selección incorrecta - + Select an object first Seleccione primero un objeto - + Too many objects selected Demasiados objetos seleccionados - + Create a page first. Cree una página de dibujo primero. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No hay Vista de una Pieza en la selección. @@ -2906,6 +2906,8 @@ La arista seleccionada es un BSpline. El radio será aproximado. ¿Continuar? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Selección incorrecta @@ -3058,9 +3058,6 @@ Seleccione objetos de 2 puntos y 1 Vista. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tarea en progreso - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Cerrar diálogo de tareas activo e inténtelo de nuevo. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Selección Incorrecta @@ -3318,28 +3318,22 @@ Seleccione exactamente una línea de referencia o un símbolo de Soldadura. - - + SurfaceFinishSymbols SímbolosdeAcabadoSuperficial - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + El objeto seleccionado no es parte de una vista, menos una línea de referencia - + No Part View in Selection Ninguna vista de partes en la selección - + No %1 in Selection No hay %1 en la selección @@ -3417,7 +3411,7 @@ Exportar Página Como PDF - + Document Name: Nombre del documento: @@ -3432,19 +3426,19 @@ Exportar página como SVG - - + + Are you sure you want to continue? ¿Estás seguro/a de que quieres continuar? - + Show drawing Mostrar dibujo - + Toggle KeepUpdated Activar MantenerActualizado @@ -3469,9 +3463,9 @@ Creador de texto enriquecido - + Rich text editor Editor de texto enriquecido @@ -3589,133 +3583,133 @@ Editar Vista Detalle - + Edit %1 Editar %1 - + TechDraw Increase/Decrease Decimal Incrementar/disminuir decimales - - + + TechDraw PosHorizChainDimension Dimensión de la cadena Horizontal TechDraw - - + + No horizontal dimensions selected No hay cotas horizontales seleccionadas - - + + TechDraw PosVertChainDimension Dimensión de la cadena Vertical TechDraw - - + + No vertical dimensions selected No hay cotas verticales seleccionadas - - + + TechDraw PosObliqueChainDimension Dimensión de la cadena Oblicua TechDraw - - + + No oblique dimensions selected No hay cotas oblicuas seleccionadas - - + + TechDraw CascadeHorizDimension Dimensiones en cascada horizontal TechDraw - - + + TechDraw CascadeVertDimension Dimensión en cascada vertical TechDraw - - + + TechDraw CascadeObliqueDimension Dimensión en cascada oblicua TechDraw - + TechDraw Create Horizontal Chain Dimension Crear acotación horizontal en cadena - + TechDraw Create Vertical Chain Dimension Crear acotación vertical en cadena - + TechDraw Create Oblique Chain Dimension Crear acotación oblicua en cadena - + TechDraw Create Horizontal Coord Dimension Insertar cota de coordenadas horizontales - + TechDraw Create Vertical Coord Dimension Insertar cota de coordenadas verticales - + TechDraw Create Oblique Coord Dimension Crear cotas verticales encadenadas oblicuas - + TechDraw Create Horizontal Chamfer Dimension Insertar cota de chaflán horizontal - + TechDraw Create Vertical Chamfer Dimension Crear cotas verticales encadenadas - + TechDraw Create Arc Length Dimension Crear cota de longitud del arco - + TechDraw Customize Format Formato personalizado - + No subelements selected No hay sub-elementos seleccionados - + Selection is empty La selección está vacía - + No object selected Ningún objeto seleccionado @@ -3861,29 +3855,29 @@ grueso: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. No puede borrar esta línea de referencia porque tiene un símbolo de soldadura que se rompería. - + You cannot delete this view because it has one or more dependent views that would become broken. No puede eliminar esta vista porque tiene una o más vistas dependientes que se romperían. - - - - + - - + + + + + Object dependencies Dependencias del objeto @@ -3908,7 +3902,7 @@ tiene un símbolo de soldadura que se rompería. No puede eliminar esta vista porque contiene una línea de referencia que se rompería. - + The page is not empty, therefore the following referencing objects might be lost: La página no está vacía, por lo tanto el @@ -7412,8 +7406,8 @@ Puedes seleccionar más puntos para obtener segmentos de línea. - - + + Top Superior @@ -7424,8 +7418,8 @@ Puedes seleccionar más puntos para obtener segmentos de línea. - - + + Left Izquierda @@ -7436,14 +7430,14 @@ Puedes seleccionar más puntos para obtener segmentos de línea. - - + + Right Derecha - + Rear Posterior @@ -7454,8 +7448,8 @@ Puedes seleccionar más puntos para obtener segmentos de línea. - - + + Bottom Inferior @@ -7507,31 +7501,31 @@ usando el espacio X/Y dado Espacio vertical entre el borde de las proyecciones - - + + FrontTopLeft Frente arriba a la izquierda - - + + FrontBottomRight Frente abajo a la derecha - - + + FrontTopRight Frente arriba a la derecha - - + + FrontBottomLeft Frente abajo a la izquierda - + Front Anterior @@ -8171,12 +8165,12 @@ usando el espacio X/Y dado TechDraw_ExtensionremovePrefixChar - + Remove Prefix Eliminar prefijo - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Elimina los prefijos de símbolos al principio del texto de la cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta @@ -9381,4 +9375,24 @@ hay un diálogo de tareas abiertas. Haga clic en esta herramienta + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + DibujoTécnico + + + + + Insert 'n×' Prefix + Insertar 'n×' prefijos + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Inserta el recuento de características repetidas al principio del texto de cota:<br>- Seleccione una o más cotas<br>- Haga clic en esta herramienta + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.ts index f86bfdb95b..e9f08ea052 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw Dibujo técnico - + Cascade Horizontal Dimensions Acotación Horizontal en Cascada - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Acotación Horizontal Uniformemente Espaciada:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas horizontales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw Dibujo técnico - - + + Cascade Horizontal Dimensions Acotación Horizontal en Cascada - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Acotación Horizontal Uniformemente Espaciada:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas horizontales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw Dibujo técnico - - + + Cascade Oblique Dimensions Acotación Oblicua en Cascada - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Acotación Oblicua Uniformemente Espaciada:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas oblicuas paralelas<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw Dibujo técnico - - + + Cascade Vertical Dimensions Cotas verticales en cascada - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Cotas verticales uniformemente espaciadas:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione dos o más cotas verticales<br>- La primera cota define la posición<br>- Haga clic en esta herramienta @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw Dibujo técnico - + Create Horizontal Chamfer Dimension Crear dimensión de chaflán horizontal - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crear un tamaño horizontal y una dimensión de ángulo para un chaflán:<br>- Seleccione dos vértices<br>- Haga clic en esta herramienta @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw Dibujo técnico - + Create Horizontal Chain Dimensions Crear cotas horizontales encadenadas - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Crear una secuencia de cotas horizontales alineadas:<br>- Seleccione tres o más vértices<br>- Haga clic en esta herramienta @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw Dibujo técnico - + Create Horizontal Coordinate Dimensions Crear cotas horizontales coordinadas - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crear múltiples cotas horizontales con espacio uniforme a partir de la misma línea de referencia:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de referencia<br>- Haga clic en esta herramienta @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw Dibujo técnico - - + + Create Horizontal Chain Dimensions Crear cotas horizontales encadenadas - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Crear una secuencia de cotas horizontales alineadas:<br>- Seleccione tres o más vértices<br>- Haga clic en esta herramienta @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw Dibujo técnico - - + + Create Horizontal Chamfer Dimension Crear dimensión de chaflán horizontal - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crear un tamaño horizontal y una dimensión de ángulo para un chaflán:<br>- Seleccione dos vértices<br>- Haga clic en esta herramienta @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw Dibujo técnico - - + + Create Horizontal Coordinate Dimensions Crear cotas horizontales coordinadas - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crear múltiples cotas horizontales con espacio uniforme a partir de la misma línea de referencia:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de referencia<br>- Haga clic en esta herramienta @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw Dibujo técnico - + Create Arc Length Dimension Crear dimensión de longitud del arco - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Crear una cota de longitud del arco:<br>- Seleccione un solo arco<br>- Haga clic en esta herramienta @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw Dibujo técnico - - + + Create Oblique Chain Dimensions Crear cotas oblicuas encadenadas - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Crear una secuencia de dimensiones oblicuas alineadas:<br>- Seleccione tres o más vértices<br>- Los dos primeros vértices definen la dirección<br>- Haga clic en esta herramienta @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw Dibujo técnico - - + + Create Oblique Coordinate Dimensions Crear cotas oblicuas coordinadas - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Crear múltiples dimensiones oblicuas con espacio uniforme a partir de la misma línea de base:<br>- Especifica el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de base<br>- Los dos primeros vértices también definen la dirección<br>- Haga clic en esta herramienta @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw Dibujo técnico - - + + Create Vertical Chain Dimensions Crear cotas verticales encadenadas - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Crear una secuencia de cotas verticales alineadas:<br>- Seleccione tres o más vértices<br>- Haga clic en esta herramienta @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw Dibujo técnico - - + + Create Vertical Chamfer Dimension Crear cotas de chaflán verticales - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crear un tamaño vertical y una cota del ángulo para un chaflán:<br>- Seleccione dos vértices<br>- Haga clic en esta herramienta @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw Dibujo técnico - - + + Create Vertical Coordinate Dimensions Crear cotas verticales coordinadas - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crear múltiples cotas verticales con espacio uniforme a partir de la misma línea de referencia:<br>- Especifique el espaciado en cascada (opcional)<br>- Seleccione tres o más vértices<br>- El orden de selección de los dos primeros vértices determina la posición de la línea de referencia<br>- Haga clic en esta herramienta @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw Dibujo técnico - + Customize Format Label Personalizar formato de etiqueta - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Seleccione una cota o un globo<br> - haga clic en esta herramienta<br> - edite el campo de Formato, usando el teclado y/o los botones especiales @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw Dibujo técnico - - + + Decrease Decimal Places Reducir lugares decimales - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Reducir el número de lugares decimales del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw Dibujo técnico - - + + Increase Decimal Places Aumentar lugares decimales - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumentar el número de lugares decimales del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw Dibujo técnico - + Increase Decimal Places Aumentar lugares decimales - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumentar el número de lugares decimales del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw Dibujo técnico - - + + Insert '⌀' Prefix Insertar Prefijo '⌀' - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserta un símbolo '⌀' al principio del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw Dibujo técnico - + Insert '⌀' Prefix Insertar Prefijo '⌀' - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserta un símbolo '⌀' al principio del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw Dibujo técnico - - + + Insert '□' Prefix Insertar Prefijo '□' - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserta un símbolo '□' al principio del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw Dibujo técnico - + Position Horizontal Chain Dimensions Posicionar cotas horizontales encadenadas - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Alinear las dimensiones horizontales para crear una cadena de cota:<br>- Seleccione dos o más dimensiones horizontales<br>- La primera dimensión define la posición<br>- Haga clic en esta herramienta @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw Dibujo técnico - - + + Position Horizontal Chain Dimensions Posicionar cotas horizontales encadenadas - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Alinear las dimensiones horizontales para crear una cadena de cota:<br>- Seleccione dos o más dimensiones horizontales<br>- La primera dimensión define la posición<br>- Haga clic en esta herramienta @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw Dibujo técnico - - + + Position Oblique Chain Dimensions Posicionar cotas oblicuas encadenadas - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Alinear las dimensiones oblicuas para crear una cadena de cota:<br>- Seleccione dos o más dimensiones oblicuas paralelas<br>- La primera dimensión define la posición<br>- Haga clic en esta herramienta @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw Dibujo técnico - - + + Position Vertical Chain Dimensions Posicionar cotas verticales encadenadas - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Alinear las dimensiones verticales para crear una cadena de cota:<br>- Seleccione dos o más dimensiones verticales<br>- La primera dimensión define la posición<br>- Haga clic en esta herramienta @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw Dibujo técnico - + Remove Prefix Eliminar prefijo - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Eliminar los símbolos de prefijos al principio del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -1996,8 +1996,8 @@ Crear vista de hoja de cálculo + - Save page to dxf Guardar página como dxf @@ -2058,7 +2058,7 @@ Arrastrar Cota - + Create Balloon Crear Globo @@ -2073,8 +2073,8 @@ Crear Línea Central - + Create Cosmetic Line Crear Línea Cosmética @@ -2150,102 +2150,102 @@ Añadir vértice cosmético - + TechDraw Insert Prefix Insertar prefijo de TechDraw - + Insert Prefix Insertar prefijo - + TechDraw Remove Prefix Eliminar prefijo de TechDraw - + Remove Prefix Eliminar prefijo - + Increase/Decrease Decimal Incrementar/Reducir decimales - + Pos Horiz Chain Dim Pos cot horiz enc - + Pos Vert Chain Dim Pos cot vert enc - + Pos Oblique Chain Dim Pos cot oblic enc - + Cascade Horiz Dim Cot horiz en cascada - + Cascade Vert Dim Cot vert en cascada - + Cascade Oblique Dim Cot oblic en cascada - + Create Horiz Chain Dim Crear cot horiz enc - + Create Vert Chain Dim Crear cot vert enc - + Create Oblique Chain Dim Crear cot oblic enc - + Create Horiz Coord Dim Crear cot horiz coord - + Create Vert Coord Dim Crear cot vert coord - + Create Oblique Coord Dim Crear cot oblic coord - + Create Horiz Chamfer Dim Crear cot chaf horiz - + Create Vert Chamfer Dim Crear cot chaf vert - + Create Arc Length Dim Crear cot long arc @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Selección incorrecta @@ -2744,10 +2744,9 @@ No se encontró ningún objeto de perfil en la selección - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Selección incorrecta - + Select an object first Seleccione un objeto en primer lugar - + Too many objects selected Demasiados objetos seleccionados - + Create a page first. Cree una página de dibujo primero. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Sin vista de un objeto Part en la selección. @@ -2906,6 +2906,8 @@ El borde seleccionado es un BSpline. El dadio será aproximado. ¿Continuar? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Selección incorrecta @@ -3058,9 +3058,6 @@ Seleccione objetos de 2 puntos y 1 Vista. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tarea en progreso - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Cerrar diálogo de tareas activo e inténtelo de nuevo. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Selección Incorrecta @@ -3318,28 +3318,22 @@ Seleccione exactamente una Línea de referencia o un símbolo de Soldadura. - - + SurfaceFinishSymbols SímbolosdeAcabadoSuperficial - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + El objeto seleccionado no es parte de una vista, menos una línea de referencia - + No Part View in Selection No hay Vista de parte en la selección - + No %1 in Selection No hay %1 en la selección @@ -3417,7 +3411,7 @@ Exportar página como PDF - + Document Name: Nombre del documento: @@ -3432,19 +3426,19 @@ Exportar página como SVG - - + + Are you sure you want to continue? ¿Está seguro de que desea continuar? - + Show drawing Mostrar dibujo - + Toggle KeepUpdated Activar KeepUpdated @@ -3469,9 +3463,9 @@ Creador de texto enriquecido - + Rich text editor Editor de texto enriquecido @@ -3589,133 +3583,133 @@ Editar vista de detalles - + Edit %1 Editar %1 - + TechDraw Increase/Decrease Decimal Incrementar/Reducir decimales - - + + TechDraw PosHorizChainDimension Dimensión de la cadena Horizontal TechDraw - - + + No horizontal dimensions selected No se seleccionó ninguna cota horizontal - - + + TechDraw PosVertChainDimension Dimensión de la cadena Vertical TechDraw - - + + No vertical dimensions selected No se seleccionó ninguna cota vertical - - + + TechDraw PosObliqueChainDimension Dimensión de la cadena Oblicua TechDraw - - + + No oblique dimensions selected No se seleccionó ninguna cota oblicua - - + + TechDraw CascadeHorizDimension Dimensiones en cascada horizontal TechDraw - - + + TechDraw CascadeVertDimension Dimensión en cascada vertical TechDraw - - + + TechDraw CascadeObliqueDimension Dimensión en cascada oblicua TechDraw - + TechDraw Create Horizontal Chain Dimension Crear cotas horizontales encadenadas - + TechDraw Create Vertical Chain Dimension Crear cotas verticales encadenadas - + TechDraw Create Oblique Chain Dimension Crear cotas verticales encadenadas oblicuas - + TechDraw Create Horizontal Coord Dimension Insertar cota de coordenadas horizontales - + TechDraw Create Vertical Coord Dimension Insertar cota de coordenadas verticales - + TechDraw Create Oblique Coord Dimension Crear cotas verticales encadenadas oblicuas - + TechDraw Create Horizontal Chamfer Dimension Insertar cota de chaflán horizontal - + TechDraw Create Vertical Chamfer Dimension Crear cotas verticales encadenadas - + TechDraw Create Arc Length Dimension Insertar cota de longitud del arco - + TechDraw Customize Format TechDraw personalizar formato - + No subelements selected No hay subelementos seleccionados - + Selection is empty No ha seleccionado nada - + No object selected Ningún objeto seleccionado @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. No puede borrar esta línea de referencia porque tiene un símbolo de soldadura que se rompería. - + You cannot delete this view because it has one or more dependent views that would become broken. No se puede borrar esta vista porque tiene una o más vistas dependientes que se romperían. - - - - + - - + + + + + Object dependencies Dependencias del objeto @@ -3908,7 +3902,7 @@ tiene un símbolo de soldadura que se rompería. No puede eliminar esta vista porque contiene una línea de referencia que se rompería. - + The page is not empty, therefore the following referencing objects might be lost: La página no está vacía, por lo tanto el @@ -7412,8 +7406,8 @@ Puedes elegir más puntos para obtener segmentos de línea. - - + + Top Planta @@ -7424,8 +7418,8 @@ Puedes elegir más puntos para obtener segmentos de línea. - - + + Left Izquierda @@ -7436,14 +7430,14 @@ Puedes elegir más puntos para obtener segmentos de línea. - - + + Right Derecha - + Rear Posterior @@ -7454,8 +7448,8 @@ Puedes elegir más puntos para obtener segmentos de línea. - - + + Bottom Inferior @@ -7507,31 +7501,31 @@ usando el Espaciado X/Y dado Espacio vertical entre el borde de las proyecciones - - + + FrontTopLeft Frontal izquierdo - - + + FrontBottomRight Frontal inferior derecho - - + + FrontTopRight Frontal derecho - - + + FrontBottomLeft Frontal inferior izquierdo - + Front Alzado @@ -8171,12 +8165,12 @@ usando el Espaciado X/Y dado TechDraw_ExtensionremovePrefixChar - + Remove Prefix Eliminar prefijo - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Eliminar los símbolos de prefijos al principio del texto de la cota:<br>- Seleccione una o más dimensiones<br>- Haga clic en esta herramienta @@ -9380,4 +9374,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + Dibujo técnico + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts index 92eb2aafb7..82ab76009c 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Teilakatzearen kota horizontalak - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Uniformeki banatutako kota horizontalak:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu bi kota horizontal edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Teilakatzearen kota horizontalak - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Uniformeki banatutako kota horizontalak:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu bi kota horizontal edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Teilakatzearen zeharkako kotak - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Uniformeki banatutako zeharkako kotak:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu zeharkako bi kota edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Teilakatzearen kota bertikalak - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Uniformeki banatutako kota bertikalak:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu bi kota bertikal edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Sortu alaka-kota horizontala - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Sortu alaka baten tamaina horizontala eta angelu-kota:<br>- Hautatu bi erpin<br>- Egin klik tresna honetan @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Sortu kate-kota horizontalak - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Sortu lerrokatutako kota horizontalen sekuentzia bat:<br>- Hautatu hiru erpin edo gehiago<br>- Egin klik tresna honetan @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Sortu koordenatu-kota horizontalak - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Sortu uniformeki banatutako kota horizontal anitz, oinarri-lerro beretik hasita:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu hiru erpin edo gehiago<br>- Lehen bi erpinen hautapen-ordenak oinarri-lerroaren posizioa zehazten du<br>- Egin klik tresna honetan @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Sortu kate-kota horizontalak - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Sortu lerrokatutako kota horizontalen sekuentzia bat:<br>- Hautatu hiru erpin edo gehiago<br>- Egin klik tresna honetan @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Sortu alaka-kota horizontala - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Sortu alaka baten tamaina horizontala eta angelu-kota:<br>- Hautatu bi erpin<br>- Egin klik tresna honetan @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Sortu koordenatu-kota horizontalak - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Sortu uniformeki banatutako kota horizontal anitz, oinarri-lerro beretik hasita:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu hiru erpin edo gehiago<br>- Lehen bi erpinen hautapen-ordenak oinarri-lerroaren posizioa zehazten du<br>- Egin klik tresna honetan @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Txertatu arku-luzeraren kota - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Sortu arku-luzeraren kota bat:<br>- Hautatu arku bakar bat<br>- Egin klik tresna honetan @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Sortu zeharkako kate-kotak - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Sortu lerrokatutako zeharkako koten sekuentzia bat:<br>- Hautatu hiru erpin edo gehiago<br>- Lehen bi erpinek norabidea definitzen dute<br>- Egin klik tresna honetan @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Sortu zeharkako koordenatu-kotak - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Sortu uniformeki banatutako zeharkako kota anitz, oinarri-lerro beretik hasita:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu hiru erpin edo gehiago<br>- Lehen bi erpinen hautapen-ordenak oinarri-lerroaren posizioa zehazten du<br>- Lehen bi erpinek norabidea ere definitzen dute<br>- Egin klik tresna honetan @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Sortu kate-kota bertikalak - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Sortu lerrokatutako kota bertikalen sekuentzia bat:<br>- Hautatu hiru erpin edo gehiago<br>- Egin klik tresna honetan @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Sortu alaka-kota bertikala - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Sortu alaka baten tamaina bertikala eta angelu-kota:<br>- Hautatu bi erpin<br>- Egin klik tresna honetan @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Sortu koordenatu-kota bertikalak - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Sortu uniformeki banatutako kota bertikal anitz, oinarri-lerro beretik hasita:<br>- Zehaztu teilakatze-tartea (aukerakoa)<br>- Hautatu hiru erpin edo gehiago<br>- Lehen bi erpinen hautapen-ordenak oinarri-lerroaren posizioa zehazten du<br>- Egin klik tresna honetan @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Pertsonalizatu etiketen formatua - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Hautatu kota bat edo bunbuilo bat<br> - egin klik tresna honetan<br> - editatu 'Formatua' eremua, teklatu edota botoi bereziak erabiliz @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Gutxitu dezimalak - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Txikitu kota-testuaren dezimal kopurua:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Gehitu dezimalak - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Handitu kota-testuaren dezimal kopurua:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Gehitu dezimalak - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Handitu kota-testuaren dezimal kopurua:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Txertatu '⌀' aurrizkia - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Txertatu '⌀' ikurra kota-testuaren hasieran:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Txertatu '⌀' aurrizkia - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Txertatu '⌀' ikurra kota-testuaren hasieran:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Txertatu '□' aurrizkia - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Txertatu '□' ikurra kota-testuaren hasieran:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Kokatu kate-kota horizontalak - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Lerrokatu kota horizontalak kate-kota bat sortzeko:<br>- Hautatu bi kota horizontal edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Kokatu kate-kota horizontalak - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Lerrokatu kota horizontalak kate-kota bat sortzeko:<br>- Hautatu bi kota horizontal edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Kokatu zeharkako kate-kotak - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Lerrokatu zeharkako kotak kate-kota bat sortzeko:<br>- Hautatu zeharkako bi kota paralelo edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Kokatu kate-kota bertikalak - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Lerrokatu kota bertikalak kate-kota bat sortzeko:<br>- Hautatu bi kota bertikal edo gehiago<br>- Lehen kotak posizioa zehazten du<br>- Egin klik tresna honetan @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Kendu aurrizkia - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Kendu aurrizki-ikurrak kota-testuen hasieran:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -1996,8 +1996,8 @@ Sortu kalkulu-orriaren bista + - Save page to dxf Gorde orria DXF fitxategi batean @@ -2058,7 +2058,7 @@ Arrastatu kota - + Create Balloon Sortu bunbuiloa @@ -2073,8 +2073,8 @@ Sortu erdiko lerroa - + Create Cosmetic Line Sortu lerro kosmetikoa @@ -2150,102 +2150,102 @@ Gehitu erpin kosmetikoa - + TechDraw Insert Prefix TechDraw txertatu aurrizkia - + Insert Prefix Txertatu aurrizkia - + TechDraw Remove Prefix TechDraw kendu aurrizkia - + Remove Prefix Kendu aurrizkia - + Increase/Decrease Decimal Gehitu/gutxitu dezimalak - + Pos Horiz Chain Dim Kate Kota Horiz Pos - + Pos Vert Chain Dim Kate Kota Bert Pos - + Pos Oblique Chain Dim Zehar Kate Kota Pos - + Cascade Horiz Dim Kota Horiz Teilak - + Cascade Vert Dim Kota Bert Teilak - + Cascade Oblique Dim Zehar Kota Teilak - + Create Horiz Chain Dim Sortu Kate Kota Horiz - + Create Vert Chain Dim Sortu Kate Kota Bert - + Create Oblique Chain Dim Sortu Zehar Kate Kota - + Create Horiz Coord Dim Sortu Koord Kota Horiz - + Create Vert Coord Dim Sortu Koord Kota Bert - + Create Oblique Coord Dim Sortu Zehar Koord Kota - + Create Horiz Chamfer Dim Sortu Alaka Kota Horiz - + Create Vert Chamfer Dim Sortu Alaka Kota Bert - + Create Arc Length Dim Txertatu arku-luzeraren kota @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Hautapen okerra @@ -2744,10 +2744,9 @@ Ez da profil-objekturik aurkitu hautapenean - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Hautapen okerra - + Select an object first Hautatu objektu bat - + Too many objects selected Objektu gehiegi hautatuta - + Create a page first. Lehenengo, sortu orrialde bat. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Ez dago piezaren bistarik hautapenean. @@ -2906,6 +2906,8 @@ Hautatutako ertza B-spline bat da. Erradioa gutxi gorabeherakoa izango da. Jarraitu? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Hautapen okerra @@ -3058,9 +3058,6 @@ Hautatu bi puntu-objektu eta bista bat. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Ataza abian - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Itxi ataza aktiboaren elkarrizketa-koadroa eta saiatu berriro. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Hautapen okerra @@ -3318,28 +3318,22 @@ Hautatu gida-marra bakar bat edo soldadura-ikur bakar bat. - - + SurfaceFinishSymbols Gainazalen amaierarako ikurrak - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection Ez dago pieza-bistarik hautapenean - + No %1 in Selection Ez dago %1 hautapenean @@ -3417,7 +3411,7 @@ Esportatu orrialdea PDF gisa - + Document Name: Dokumentu-izena: @@ -3432,19 +3426,19 @@ Esportatu orrialdea SVG gisa - - + + Are you sure you want to continue? Ziur zaude jarraitu nahi duzula? - + Show drawing Erakutsi marrazkia - + Toggle KeepUpdated Txandakatu eguneratuta mantentzea @@ -3469,9 +3463,9 @@ Testu aberatsaren sortzailea - + Rich text editor Testu aberatsaren editorea @@ -3589,133 +3583,133 @@ Editatu xehetasun-bista - + Edit %1 Editatu %1 - + TechDraw Increase/Decrease Decimal TechDraw gehitu/gutxitu dezimalak - - + + TechDraw PosHorizChainDimension TechDraw kate-kota horizontalaren posizioa - - + + No horizontal dimensions selected Ez da kota horizontalik hautatu - - + + TechDraw PosVertChainDimension TechDraw kate-kota bertikalaren posizioa - - + + No vertical dimensions selected Ez da kota bertikalik hautatu - - + + TechDraw PosObliqueChainDimension TechDraw zeharkako kate-kotaren posizioa - - + + No oblique dimensions selected Ez da zeharkako kotarik hautatu - - + + TechDraw CascadeHorizDimension TechDraw kota horizontal teilakatua - - + + TechDraw CascadeVertDimension TechDraw kota bertikal teilakatua - - + + TechDraw CascadeObliqueDimension TechDraw zeharkako kota teilakatua - + TechDraw Create Horizontal Chain Dimension TechDraw sortu kate-kota horizontala - + TechDraw Create Vertical Chain Dimension TechDraw sortu kate-kota bertikala - + TechDraw Create Oblique Chain Dimension TechDraw sortu zeharkako kate-kota - + TechDraw Create Horizontal Coord Dimension TechDraw sortu kota horizontal koordinatua - + TechDraw Create Vertical Coord Dimension TechDraw sortu kota bertikal koordinatua - + TechDraw Create Oblique Coord Dimension TechDraw sortu zeharkako kota koordinatua - + TechDraw Create Horizontal Chamfer Dimension TechDraw sortu alaka-kota horizontala - + TechDraw Create Vertical Chamfer Dimension TechDraw sortu alaka-kota bertikala - + TechDraw Create Arc Length Dimension TechDraw sortu arku-luzeraren kota - + TechDraw Customize Format TechDraw pertsonalizatu formatua - + No subelements selected Ez da azpielementurik hautatu - + Selection is empty Hautapena hutsik dago - + No object selected Ez da objekturik hautatu @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Ezin da gida-marra hau ezabatu hautsi daitekeen soldadura-ikur bat duelako. - + You cannot delete this view because it has one or more dependent views that would become broken. Ezin da bista hau ezabatu, hautsita geratuko liratekeen mendeko bista bat edo gehiago dituelako. - - - - + - - + + + + + Object dependencies Objektuaren mendekotasunak @@ -3908,7 +3902,7 @@ hautsi daitekeen soldadura-ikur bat duelako. Ezin da bista hau ezabatu hautsita geratuko litzatekeen gida-marra bat duelako. - + The page is not empty, therefore the following referencing objects might be lost: Orria ez dago hutsik, eta honako erreferentzia @@ -7415,8 +7409,8 @@ Puntu gehiago ere aukeratu daitezke lerro segmentuak sortzeko. - - + + Top Goikoa @@ -7427,8 +7421,8 @@ Puntu gehiago ere aukeratu daitezke lerro segmentuak sortzeko. - - + + Left Ezkerrekoa @@ -7439,14 +7433,14 @@ Puntu gehiago ere aukeratu daitezke lerro segmentuak sortzeko. - - + + Right Eskuinekoa - + Rear Atzekoa @@ -7457,8 +7451,8 @@ Puntu gehiago ere aukeratu daitezke lerro segmentuak sortzeko. - - + + Bottom Azpikoa @@ -7510,31 +7504,31 @@ emandako X/Y espazioa erabilita Proiekzioen ertzen arteko tarte bertikala - - + + FrontTopLeft Aurreko goia ezkerra - - + + FrontBottomRight Aurreko behea eskuina - - + + FrontTopRight Aurreko goia eskuina - - + + FrontBottomLeft Aurreko behea ezkerra - + Front Aurrekoa @@ -8174,12 +8168,12 @@ emandako X/Y espazioa erabilita TechDraw_ExtensionremovePrefixChar - + Remove Prefix Kendu aurrizkia - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Kendu aurrizki-ikurrak kota-testuen hasieran:<br>- Hautatu kota bat edo gehiago<br>- Egin klik tresna honetan @@ -9384,4 +9378,24 @@ elkarrizketa-koadroa irekita dagoelako. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.ts index c77b5dca5d..9213fbaea3 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Perättäinen horisontaalinen etäisyys - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Tasaiset horisontaaliset etäisyydet:<br>- Määritä etäisyys (valinnainen)<br>- Valitse kaksi tai useampi horisontaalinen kohde<br>- Ensimmäinen kohde määrittää sijainnin<br>- Valitse toiminto @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Perättäinen horisontaalinen etäisyys - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Tasaiset horisontaaliset etäisyydet:<br>- Määritä etäisyys (valinnainen)<br>- Valitse kaksi tai useampi horisontaalinen kohde<br>- Ensimmäinen kohde määrittää sijainnin<br>- Valitse toiminto @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Perättäinen epäsuora etäisyys - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Horisontaalinen viiste etäisyyden ja kulman perusteella:<br>- Valitse kaksi kärkipistettä<br>- Valitse toiminto @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Horisontaalinen viiste etäisyyden ja kulman perusteella:<br>- Valitse kaksi kärkipistettä<br>- Valitse toiminto @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Luo sarja tasattuja pystymittaja:<br>- Valitse kolme tai useampia kärkipisteitä<br>- Valitse toiminto @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Luo pystysuora viiste etäisyys - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Pystysuora viiste etäisyyden ja kulman perusteella:<br>- Valitse kaksi kärkipistettä<br>- Valitse toiminto @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Luo pystysuora koordinaatti - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Luo useita tasavälein sijoitettuja pystymittoja perusviivasta alkaen:<br>- Määritä etäityys (valinnainen)<br>- Valitse kolme tai useampia kärkipisteitä<br>- Kahden ensimmäisen kärkipisteen valintajärjestys määrittää perusviivan sijainnin<br>- Valitse toiminto @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Muokkaa muodon otsikkoa - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Valitse mitta tai viite<br> -Valitse toiminto<br> - muokkaa Format kenttää näppäimistön ja/tai erityisten painikkeiden avulla @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Lyhennä desimaaliosaa - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Lisää desimaaliosaa - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Lisää desimaaleja mittaan:<br>- Valitse yksi tai useita mittoja<br>- Valitse toiminto @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Lisää desimaaliosaa - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Lisää desimaaleja mittaan:<br>- Valitse yksi tai useita mittoja<br>- Valitse toiminto @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Lisää '⌀' etuliite - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Lisää '⌀' symboli ennen mittatekstiä:<br>- Valitse yksi tai useampi mittateksti <br>- Valitse toiminto @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Lisää '⌀' etuliite - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Lisää '⌀' symboli ennen mittatekstiä:<br>- Valitse yksi tai useampi mittateksti <br>- Valitse toiminto @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Lisää '□' etuliite - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Lisää '□' symboli ennen mittatekstiä:<br>- Valitse yksi tai useampi mittateksti <br>- Valitse toiminto @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Vaakasuoran jonomitan sijainti - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Kohdista vaakasuorat mitat muodostaaksesi jonomitta:<br>- valitse Kaksi tai useampi vaakasuoraa mittaa<br>- Ensimmäinen mitta määrittää sijainnin<br>- Valitse toiminto @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Vaakasuoran jonomitan sijainti - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Kohdista vaakasuorat mitat muodostaaksesi jonomitta:<br>- valitse Kaksi tai useampi vaakasuoraa mittaa<br>- Ensimmäinen mitta määrittää sijainnin<br>- Valitse toiminto @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Epäsuoransuoran jonomitan sijainti - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Kohdista vinot mitat muodostaaksesi jonomitta:<br>- valitse Kaksi tai useampi vinoa mittaa<br>- Ensimmäinen mitta määrittää sijainnin<br>- Valitse toiminto @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Pystysuoran jonomitan sijainti - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Kohdista pystysuorat mitat muodostaaksesi jonomitta:<br>- valitse Kaksi tai useampi pystysuoraa mittaa<br>- Ensimmäinen mitta määrittää sijainnin<br>- Valitse toiminto @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Luo laskentataulukkonäkymä + - Save page to dxf Tallenna sivu dxf-muotoon @@ -2058,7 +2058,7 @@ Raahaa Mittaa - + Create Balloon Luo tekstikupla @@ -2073,8 +2073,8 @@ Luo Keskilinja - + Create Cosmetic Line Luo kosmeettinen viiva @@ -2150,102 +2150,102 @@ Lisää kosmeettinen apupiste - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Lisää etuliite - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Lisää/vähennä desimaaleja - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Virheellinen valinta @@ -2744,10 +2744,9 @@ Valinnassa ei löytynyt profiiliobjektia - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Virheellinen valinta - + Select an object first Valitse ensin objekti - + Too many objects selected Liian monta objektia valittu - + Create a page first. Luo sivu ensin. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Valinnassa ei ole osan näkymää. @@ -2906,6 +2906,8 @@ Valittu reuna on BSpline, joten säteestä ei tule tarkkaa. Jatketaanko? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Virheellinen valinta @@ -3058,9 +3058,6 @@ Valitse 2 pistemäistä objektia ja 1 Näkymä. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Toiminto käynnissä - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Sulje aktiivisen toiminnon syöttöikkuna ja yritä uudelleen. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Väärä valinta @@ -3318,28 +3318,22 @@ Valitse tämälleen yksi Reittiviiva tai yksi Hitsaussymboli. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Vie sivu PDF-tiedostoon - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Vie sivu SVG-tiedostoon - - + + Are you sure you want to continue? Haluatko varmasti jatkaa? - + Show drawing Näytä piirustus - + Toggle KeepUpdated Vaihda PidäPäivitettynä @@ -3469,9 +3463,9 @@ RTF-tekstin luonti - + Rich text editor RTF-tekstin editori @@ -3589,133 +3583,133 @@ Muokkaa Detaljinäkymää - + Edit %1 Muokkaa %1 - + TechDraw Increase/Decrease Decimal TechDraw Lisää/Vähennä desimaaleja - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Luo horisontaalinen Dimensioketju - + TechDraw Create Vertical Chain Dimension TechDraw Luo vertikaalinen Dimensioketju - + TechDraw Create Oblique Chain Dimension TechDraw Luo kalteva Dimensioketju - + TechDraw Create Horizontal Coord Dimension TechDraw Luo horisontaalinen Koordinaattidimensio - + TechDraw Create Vertical Coord Dimension TechDraw Luo vertikaalinen Koordinaattidimensio - + TechDraw Create Oblique Coord Dimension TechDraw Luo kalteva Koordinaattidimensio - + TechDraw Create Horizontal Chamfer Dimension TechDraw Luo vaakasuora Särmädimensio - + TechDraw Create Vertical Chamfer Dimension TechDraw Luo pystysuora Särmädimensio - + TechDraw Create Arc Length Dimension TechDraw Luo kaaren pituuden Dimensio - + TechDraw Customize Format TechDraw Mukauta muotoiluasetuksia - + No subelements selected Alielementtejä ei ole valittu - + Selection is empty Valinta on tyhjä - + No object selected Yhtäkään objektia ei ole valittu @@ -3861,28 +3855,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Tätä Reittiviivaa ei voi poistaa, koska siihen on liitetty hitsaussymboli, joka rikkoutuisi. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Objektin riippuvuudet @@ -3907,7 +3901,7 @@ it has a weld symbol that would become broken. Et voi poistaa tätä Näkymää, koska siihen on liitetty Reittiviiva joka rikkoutuisi. - + The page is not empty, therefore the following referencing objects might be lost: Sivu ei ole tyhjä, joten seuraavat @@ -7404,8 +7398,8 @@ Valitsemalla lisäpisteitä syntyy viivasegmenttejä. - - + + Top Yläpuoli @@ -7416,8 +7410,8 @@ Valitsemalla lisäpisteitä syntyy viivasegmenttejä. - - + + Left Vasen @@ -7428,14 +7422,14 @@ Valitsemalla lisäpisteitä syntyy viivasegmenttejä. - - + + Right Oikea - + Rear Takana @@ -7446,8 +7440,8 @@ Valitsemalla lisäpisteitä syntyy viivasegmenttejä. - - + + Bottom Pohja @@ -7499,31 +7493,31 @@ käyttäen annettuja X/Y-välimatkoja Pystysuuntainen tila projektioiden reunojen välissä - - + + FrontTopLeft Etu-ylä-vasen - - + + FrontBottomRight Etu-ala-oikea - - + + FrontTopRight Etu-ylä-oikea - - + + FrontBottomLeft Etu-ala-vasen - + Front Etupuoli @@ -8163,12 +8157,12 @@ käyttäen annettuja X/Y-välimatkoja TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9372,4 +9366,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.ts index a9c2e69ce6..1b00a4e04b 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.ts @@ -427,17 +427,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascader horizontalement les cotes - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Cotes horizontales uniformément espacées : - Spécifier l'espacement en cascade (facultatif) @@ -449,19 +449,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Cascader horizontalement les cotes - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Cotes horizontales uniformément espacées : - Spécifier l'espacement en cascade (facultatif) @@ -473,19 +473,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Cascader obliquement les cotes - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Cotes obliques uniformément espacées : - Spécifier l'espacement en cascade (facultatif) @@ -497,19 +497,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascader verticalement les cotes - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Cotes verticales uniformément espacées : - Spécifier l'espacement en cascade (facultatif) @@ -521,17 +521,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Cote horizontale et d'angle de chanfrein - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Créer une cote horizontale et une cote d'angle pour un chanfrein : - Sélectionner deux sommets @@ -606,17 +606,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Cotes horizontales - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Créer une séquence de cotes horizontales alignées : - Sélectionner trois sommets ou plus @@ -626,17 +626,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Cotes parallèles horizontales - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Créer plusieurs cotes horizontales uniformément espacées à partir de la même ligne de base : - Spécifier l'espacement en cascade (facultatif) @@ -648,19 +648,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Cotes horizontales - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Créer une séquence de cotes horizontales alignées : - Sélectionner trois sommets ou plus @@ -670,19 +670,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Cote horizontale et d'angle de chanfrein - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Créer une cote horizontale et une cote d'angle pour un chanfrein : - Sélectionner deux sommets @@ -692,19 +692,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Cotes parallèles horizontales - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Créer plusieurs cotes horizontales uniformément espacées à partir de la même ligne de base : - Spécifier l'espacement en cascade (facultatif) @@ -716,17 +716,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Créer la cote de la longueur de l'arc - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Créer une cote de la longueur de l'arc : - Sélectionner un seul arc @@ -736,19 +736,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Cotes obliques - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Créer une séquence de cotes obliques alignées : - Sélectionner trois sommets ou plus @@ -759,19 +759,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Cotes parallèles obliques - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Créer plusieurs cotes obliques uniformément espacées à partir de la même ligne de base : - Spécifier l'espacement en cascade (facultatif) @@ -784,19 +784,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Cotes verticales - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Créer une séquence de cotes verticales alignées : - Sélectionner trois sommets ou plus @@ -806,19 +806,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Cote verticale et d'angle de chanfrein - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Créer une cote verticale et une cote d'angle pour un chanfrein : - Sélectionner deux sommets @@ -828,19 +828,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Cotes parallèles verticales - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Créer plusieurs cotes verticales uniformément espacées à partir de la même ligne de base : - Spécifier l'espacement en cascade (facultatif) @@ -852,17 +852,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Personnaliser le format de l'infobulle - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Sélectionner une cote ou une infobulle - Cliquer sur cet outil @@ -872,19 +872,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Moins de décimales - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Diminuer le nombre de décimales du texte de la cote : - Sélectionner une ou plusieurs cotes @@ -1041,19 +1041,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Plus de décimales - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Augmenter le nombre de décimales du texte de la cote : - Sélectionner une ou plusieurs cotes @@ -1063,17 +1063,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Plus de décimales - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Augmenter le nombre de décimales du texte de la cote : - Sélectionner une ou plusieurs cotes @@ -1083,19 +1083,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insérer un préfixe "⌀" - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insérer un symbole "⌀" au début du texte de cote : - Sélectionner une ou plusieurs cotes @@ -1105,17 +1105,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insérer un préfixe "⌀" - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insérer un symbole "⌀" au début du texte de cote : - Sélectionner une ou plusieurs cotes @@ -1125,19 +1125,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insérer un préfixe "□" - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insérer un symbole "□" au début du texte de la cote : - Sélectionner une ou plusieurs cotes @@ -1234,17 +1234,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Aligner horizontalement - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Aligner les cotes horizontales pour créer une chaîne de cotes : - Sélectionner deux ou plusieurs cotes horizontales @@ -1255,19 +1255,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Aligner horizontalement - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Aligner les cotes horizontales pour créer une chaîne de cotes : - Sélectionner deux ou plusieurs cotes horizontales @@ -1278,19 +1278,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Aligner obliquement - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Aligner les cotes obliques pour créer une chaîne de cotes : - Sélectionner deux ou plusieurs cotes obliques @@ -1301,19 +1301,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Aligner verticalement - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Aligner les cotes verticales pour créer une chaîne de cotes : - Sélectionner deux ou plusieurs cotes verticales @@ -1324,17 +1324,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Supprimer le préfixe - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Supprimer les symboles de préfixe au début du texte de la cote : - Sélectionner une ou plusieurs cotes @@ -2147,8 +2147,8 @@ Créer une vue de feuille de calcul + - Save page to dxf Enregistrer la page en dxf @@ -2209,7 +2209,7 @@ Faire glisser la cote - + Create Balloon Créer une infobulle @@ -2224,8 +2224,8 @@ Créer une trait d'axe - + Create Cosmetic Line Créer une ligne cosmétique @@ -2301,102 +2301,102 @@ Ajouter un sommet cosmétique - + TechDraw Insert Prefix Préfixe d'insertion de TechDraw - + Insert Prefix Insérez un préfixe - + TechDraw Remove Prefix Retirer le préfixe de TechDraw - + Remove Prefix Supprimer le préfixe - + Increase/Decrease Decimal Augmenter/diminuer le nombre décimal - + Pos Horiz Chain Dim Aligner horizontalement - + Pos Vert Chain Dim Aligner verticalement - + Pos Oblique Chain Dim Aligner obliquement - + Cascade Horiz Dim Cascade horizontale - + Cascade Vert Dim Cascade verticale - + Cascade Oblique Dim Cascade oblique - + Create Horiz Chain Dim Aligner horizontalement les cotes - + Create Vert Chain Dim Aligner verticalement les cotes - + Create Oblique Chain Dim Aligner obliquement les cotes - + Create Horiz Coord Dim Cotes parallèles horizontales - + Create Vert Coord Dim Cotes parallèles verticales - + Create Oblique Coord Dim Cotes parallèles obliques - + Create Horiz Chamfer Dim Cote horizontale de chanfrein - + Create Vert Chamfer Dim Cote verticale de chanfrein - + Create Arc Length Dim Longueur d'arc @@ -2837,6 +2837,16 @@ QObject + + + + + + + + + + @@ -2854,16 +2864,6 @@ - - - - - - - - - - Wrong selection Sélection invalide @@ -2895,10 +2895,9 @@ Aucun objet de profil trouvé dans la sélection - - - - + + + @@ -2910,34 +2909,34 @@ - - - + + + + Incorrect selection Sélection non valide - + Select an object first Sélectionner d’abord un objet - + Too many objects selected Trop d'éléments sélectionnés - + Create a page first. Créer d'abord une page. - @@ -2946,6 +2945,7 @@ + No View of a Part in selection. Aucune vue d'une pièce dans la sélection. @@ -3057,6 +3057,8 @@ Le bord sélectionné est un BSpline. Le rayon sera approximatif. Continuer ? + + @@ -3076,12 +3078,10 @@ - - - + Incorrect Selection Sélection non valide @@ -3209,9 +3209,6 @@ Sélectionnez des objets à 2 points et 1 vue. (2) - - - @@ -3238,30 +3235,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tâche en cours - - - @@ -3288,23 +3285,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Fermer la boîte de dialogue des tâches actives et réessayer. @@ -3334,8 +3334,8 @@ - - + + Wrong Selection Sélection incorrecte @@ -3461,36 +3461,30 @@ No Part Views in this selection - Pas de vue dans la sélection + Pas de vues de la pièce dans la sélection Select exactly one Leader line or one Weld symbol. - Sélectionnez exactement une ligne de repère ou un symbole de soudure. + Sélectionner exactement une ligne de référence ou un symbole de soudure. - - + SurfaceFinishSymbols Symboles d'état de surface - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + L'objet sélectionné n'est pas une vue de la pièce, ni une ligne de référence. - + No Part View in Selection Pas de vue de la pièce dans la sélection - + No %1 in Selection %1 n'est pas dans la sélection @@ -3568,7 +3562,7 @@ Exporter la page au format PDF - + Document Name: Nom du document: @@ -3583,19 +3577,19 @@ Exporter la page au format SVG - - + + Are you sure you want to continue? Êtes-vous sûr de vouloir continuer ? - + Show drawing Afficher la mise en plan - + Toggle KeepUpdated Activer/désactiver la mise à jour @@ -3620,9 +3614,9 @@ Créateur de texte enrichi - + Rich text editor Éditeur de texte enrichi @@ -3740,133 +3734,133 @@ Modifier la vue détaillée - + Edit %1 Modifier %1 - + TechDraw Increase/Decrease Decimal Augmenter/diminuer le nombre décimal - - + + TechDraw PosHorizChainDimension Cotes horizontales - - + + No horizontal dimensions selected Aucune cote horizontale sélectionnée - - + + TechDraw PosVertChainDimension Cotes verticales - - + + No vertical dimensions selected Aucune cote verticale sélectionnée - - + + TechDraw PosObliqueChainDimension Cotes obliques - - + + No oblique dimensions selected Aucune cote oblique sélectionnée - - + + TechDraw CascadeHorizDimension Cascader horizontalement les cotes - - + + TechDraw CascadeVertDimension Cascader verticalement les cotes - - + + TechDraw CascadeObliqueDimension Cascader obliquement les cotes - + TechDraw Create Horizontal Chain Dimension Cotes horizontales - + TechDraw Create Vertical Chain Dimension Cotes verticales - + TechDraw Create Oblique Chain Dimension Cotes obliques - + TechDraw Create Horizontal Coord Dimension Cotes parallèles horizontales - + TechDraw Create Vertical Coord Dimension Cotes parallèles verticales - + TechDraw Create Oblique Coord Dimension Cotes parallèles obliques - + TechDraw Create Horizontal Chamfer Dimension Cote horizontale et d'angle de chanfrein - + TechDraw Create Vertical Chamfer Dimension Cote verticale et d'angle de chanfrein - + TechDraw Create Arc Length Dimension Longueur d'arc - + TechDraw Customize Format Format de personnalisation - + No subelements selected Aucun sous-élément sélectionné - + Selection is empty La sélection est vide - + No object selected Aucun objet sélectionné @@ -4012,29 +4006,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Vous ne pouvez pas supprimer cette ligne de référence car elle comporte un symbole de soudure qui se casserait. - + You cannot delete this view because it has one or more dependent views that would become broken. Vous ne pouvez pas supprimer cette vue car elle possède une ou plusieurs vues dépendantes qui deviendraient orphelines. - - - - + - - + + + + + Object dependencies Dépendances des objets @@ -4056,10 +4050,10 @@ elle comporte un symbole de soudure qui se casserait. You cannot delete this view because it has a leader line that would become broken. - Vous ne pouvez pas supprimer cette vue car elle comporte une ligne de référence qui sera cassée. + Vous ne pouvez pas supprimer cette vue car elle comporte une ligne de référence qui deviendrait cassée. - + The page is not empty, therefore the following referencing objects might be lost: La page n'est pas vide, donc les @@ -4069,8 +4063,8 @@ objets de référence suivants pourraient être perdus : The group cannot be deleted because its items have the following section or detail views, or leader lines that would get broken: - Le groupe ne peut pas être supprimé car les vues de coupes, -les vues détaillées ou les lignes de références suivantes seront cassées : + Le groupe ne peut pas être supprimé car les vues de coupes, les vues +détaillées ou les lignes de références suivantes seront cassées : @@ -4708,7 +4702,7 @@ Si cette option n'est pas cochée, FreeCAD utilisera l'algorithme d'origine de r Length of balloon leader line kink - Longueur horizontale de la ligne de l'infobulle + Longueur horizontale de la ligne de référence de l'infobulle @@ -4723,7 +4717,7 @@ Si cette option n'est pas cochée, FreeCAD utilisera l'algorithme d'origine de r Forces last leader line segment to be horizontal - Forcer le dernier segment de ligne de référence à être horizontal + Forcer le dernier segment de la ligne de référence à être horizontal @@ -5925,7 +5919,7 @@ Do you want to continue? Whether the leader line is visible or not - Si la ligne d'attache est visible ou non + Si la ligne de référence est visible ou non @@ -5945,7 +5939,7 @@ Do you want to continue? Leader line width - Epaisseur de trait directeur + Épaisseur de la ligne de référence @@ -5955,7 +5949,7 @@ Do you want to continue? Length of balloon leader line kink - Longueur horizontale de la ligne de l'infobulle + Longueur horizontale de la ligne de référence de l'infobulle @@ -7188,7 +7182,7 @@ Utilise les angles par défaut si cette option n'est pas cochée. Leader Line - Ligne de rappel + Ligne de référence @@ -7205,8 +7199,7 @@ Utilise les angles par défaut si cette option n'est pas cochée. First pick the start point of the line, then at least a second point. You can pick further points to get line segments. - Tout d'abord, sélectionnez le point de départ de la ligne, -puis au moins un deuxième point. + Sélectionnez d'abord le point de départ de la ligne, puis au moins un deuxième point. Vous pouvez sélectionner d'autres points pour obtenir des segments de ligne. @@ -7307,7 +7300,7 @@ Vous pouvez sélectionner d'autres points pour obtenir des segments de ligne. Pick a starting point for leader line - Choisir un point de départ pour la ligne de rappel + Choisir un point de départ pour la ligne de référence @@ -7317,7 +7310,7 @@ Vous pouvez sélectionner d'autres points pour obtenir des segments de ligne. Click and drag markers to adjust leader line - Cliquer et glisser les marqueurs pour ajuster la ligne de rappel + Cliquer et glisser les marqueurs pour ajuster la ligne de référence @@ -7557,8 +7550,8 @@ Vous pouvez sélectionner d'autres points pour obtenir des segments de ligne. - - + + Top Dessus @@ -7569,8 +7562,8 @@ Vous pouvez sélectionner d'autres points pour obtenir des segments de ligne. - - + + Left Gauche @@ -7581,14 +7574,14 @@ Vous pouvez sélectionner d'autres points pour obtenir des segments de ligne. - - + + Right Droit - + Rear Arrière @@ -7599,8 +7592,8 @@ Vous pouvez sélectionner d'autres points pour obtenir des segments de ligne. - - + + Bottom Dessous @@ -7652,31 +7645,31 @@ en utilisant l'espacement X/Y donné Espace vertical entre la bordure des projections - - + + FrontTopLeft Avant en haut à gauche - - + + FrontBottomRight Avant en bas à droite - - + + FrontTopRight Avant en haut à droite - - + + FrontBottomLeft Avant en bas à gauche - + Front Face @@ -8317,12 +8310,12 @@ Peut être lent pour les modèles complexes. TechDraw_ExtensionremovePrefixChar - + Remove Prefix Supprimer le préfixe - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Supprimer les symboles de préfixe au début du texte de la cote : - Sélectionner une ou plusieurs cotes @@ -9528,4 +9521,26 @@ il y a une tâche en cours. - cliquer sur cet outil + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insérer "n×" préfixes + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insérer un nombre répété d'éléments au début du texte de la dimension : +- Sélectionner une ou plusieurs dimensions +- Cliquer sur cet outil + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.ts index ef8e9e7933..242168462c 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Create spreadsheet view + - Save page to dxf Save page to dxf @@ -2058,7 +2058,7 @@ Drag Dimension - + Create Balloon Create Balloon @@ -2073,8 +2073,8 @@ Create CenterLine - + Create Cosmetic Line Create Cosmetic Line @@ -2150,102 +2150,102 @@ Add Cosmetic Vertex - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Escolma errada @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Selección incorrecta - + Select an object first Primeiro escolme un obxecto - + Too many objects selected Demasiados obxectos escolmados - + Create a page first. Primeiro, cree unha páxina. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Sen vista da peza en selección. @@ -2906,6 +2906,8 @@ O bordo escolmado é unha BSpline. O Radio será aproximado. Dámoslle? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Selección Incorrecta @@ -3058,9 +3058,6 @@ Select 2 point objects and 1 View. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tarefa en Progreso - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Pechar o cadro de diálogo e tentalo outra vez. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Wrong Selection @@ -3318,28 +3318,22 @@ Select exactly one Leader line or one Weld symbol. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Exporta Páxina Como PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Exporta páxina como SVG - - + + Are you sure you want to continue? Are you sure you want to continue? - + Show drawing Amosar debuxo - + Toggle KeepUpdated Activar KeepUpdated @@ -3469,9 +3463,9 @@ Creador de texto enriquecido - + Rich text editor Editor de texto enriquecido @@ -3589,133 +3583,133 @@ Edit Detail View - + Edit %1 Editar %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Dependencias do obxecto @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. You cannot delete this view because it has a leader line that would become broken. - + The page is not empty, therefore the following referencing objects might be lost: The page is not empty, therefore the @@ -7414,8 +7408,8 @@ You can pick further points to get line segments. - - + + Top Enriba @@ -7426,8 +7420,8 @@ You can pick further points to get line segments. - - + + Left Esquerda @@ -7438,14 +7432,14 @@ You can pick further points to get line segments. - - + + Right Dereita - + Rear Traseira @@ -7456,8 +7450,8 @@ You can pick further points to get line segments. - - + + Bottom Embaixo @@ -7509,31 +7503,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Fronte @@ -8173,12 +8167,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9383,4 +9377,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts index fa0ff25268..b58d19dc26 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw Tehničko Crtanje - + Cascade Horizontal Dimensions Kaskada vodoravnih dimenzija - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomjerno rasporedite horizontalne dimenzije:<br>- Navedite razmak kaskade (nije obavezno)<br>- Odaberite dvije ili više horizontalnih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw Tehničko Crtanje - - + + Cascade Horizontal Dimensions Kaskada vodoravnih dimenzija - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomjerno rasporedite horizontalne dimenzije:<br>- Navedite razmak kaskade (nije obavezno)<br>- Odaberite dvije ili više horizontalnih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw Tehničko Crtanje - - + + Cascade Oblique Dimensions Kaskada kosih dimenzija - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomjerno rasporedite kosie dimenzije:<br>- Navedite razmak kaskade (nije obavezno)<br>- Odaberite dvije ili više kosih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw Tehničko Crtanje - - + + Cascade Vertical Dimensions Kaskada vertikalnih dimenzija - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomjerno rasporedite vertikalne dimenzije:<br>- Navedite razmak kaskade (nije obavezno)<br>- Odaberite dvije ili više vertikalnih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw Tehničko Crtanje - + Create Horizontal Chamfer Dimension Stvori dimenziju vodoravnog žlijeba - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Napravite vodoravnu veličinu i dimenziju kuta za skošenje:<br>- Odaberite dva vrha<br>- Kliknite ovaj alat @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw Tehničko Crtanje - + Create Horizontal Chain Dimensions Stvori dimenziju vodoravnog lanca - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Napravite slijed poravnatih horizontalnih dimenzija:<br>- Odaberite tri ili više vrhova<br>- Kliknite ovaj alat @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw Tehničko Crtanje - + Create Horizontal Coordinate Dimensions Stvori dimenziju vodoravnih koordinata - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Stvorite više ravnomjerno raspoređenih vodoravnih dimenzija počevši od iste osnovne crte:<br>- Odredite kaskadni razmak (neobavezno)<br>- Odaberite tri ili više vrhova<br>- Redoslijed odabira prva dva vrha određuje položaj osnovna linija<br>- Kliknite ovaj alat @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw Tehničko Crtanje - - + + Create Horizontal Chain Dimensions Stvori dimenziju vodoravnog lanca - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Napravite slijed poravnatih horizontalnih dimenzija:<br>- Odaberite tri ili više vrhova<br>- Kliknite ovaj alat @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw Tehničko Crtanje - - + + Create Horizontal Chamfer Dimension Stvori dimenziju vodoravnog žlijeba - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Napravite vodoravnu veličinu i dimenziju kuta za skošenje:<br>- Odaberite dva vrha<br>- Kliknite ovaj alat @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw Tehničko Crtanje - - + + Create Horizontal Coordinate Dimensions Stvori dimenziju vodoravnih koordinata - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Stvorite više ravnomjerno raspoređenih vodoravnih dimenzija počevši od iste osnovne crte:<br>- Odredite kaskadni razmak (neobavezno)<br>- Odaberite tri ili više vrhova<br>- Redoslijed odabira prva dva vrha određuje položaj osnovna linija<br>- Kliknite ovaj alat @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw Tehničko Crtanje - + Create Arc Length Dimension Stvori dimenziju dužine luka - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Napravite dimenziju duljine luka<br>- Odaberite jedan luk<br>- Kliknite ovaj alat @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw Tehničko Crtanje - - + + Create Oblique Chain Dimensions Stvori dimenzije kosog lanca - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Napravite niz poravnatih kosih dimenzija:<br>- Odaberite tri ili više vrhova<br>- Prva dva vrha definiraju smjer<br>- Kliknite ovaj alat @@ -712,19 +712,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw Tehničko Crtanje - - + + Create Oblique Coordinate Dimensions Stvori dimenzije kosih koordinata - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Stvorite više ravnomjerno raspoređenih kosih dimenzija počevši od iste osnovne crte:<br>- Odredite kaskadni razmak (neobavezno)<br>- Odaberite tri ili više vrhova<br>- Redoslijed odabira prva dva vrha određuje položaj osnovna linija<br>- Prva dva vrha također definiraju smjer<br>- Kliknite ovaj alat @@ -734,19 +734,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw Tehničko Crtanje - - + + Create Vertical Chain Dimensions Stvori dimenzije vertikalnih lanca - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Napravite slijed poravnatih okomitih dimenzija:<br>- Odaberite tri ili više vrhova<br>- Kliknite ovaj alat @@ -754,19 +754,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw Tehničko Crtanje - - + + Create Vertical Chamfer Dimension Stvori dimenziju vertikalnog žlijeba - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Napravite okomitu veličinu i dimenziju kuta za skošenje:<br>- Odaberite dva vrha<br>- Kliknite ovaj alat @@ -774,19 +774,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw Tehničko Crtanje - - + + Create Vertical Coordinate Dimensions Stvori dimenzije vertikalnih koordinata - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Stvorite više ravnomjerno raspoređenih okomitih dimenzija počevši od iste osnovne crte:<br>- Odredite kaskadni razmak (neobavezno)<br>- Odaberite tri ili više vrhova<br>- Redoslijed odabira prva dva vrha određuje položaj osnovna linija<br>- Kliknite ovaj alat @@ -794,17 +794,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw Tehničko Crtanje - + Customize Format Label Prilagodite format oznake - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Odaberite dimenziju ili oblačić<br> - kliknite ovaj alat<br> - uredite polje Format, koristeći tipkovnicu i/ili posebne gumbe @@ -812,19 +812,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw Tehničko Crtanje - - + + Decrease Decimal Places Smanji decimalna mjesta - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Smanjite broj decimalnih mjesta u tekstu dimenzije:<br>- Odaberite jednu ili više dimenzija<br>- Kliknite ovaj alat @@ -964,19 +964,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw Tehničko Crtanje - - + + Increase Decimal Places Povečaj decimalna mjesta - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Povečajte broj decimalnih mjesta u tekstu dimenzije:<br>- Odaberite jednu ili više dimenzija<br>- Kliknite ovaj alat @@ -984,17 +984,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw Tehničko Crtanje - + Increase Decimal Places Povečaj decimalna mjesta - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Povečajte broj decimalnih mjesta u tekstu dimenzije:<br>- Odaberite jednu ili više dimenzija<br>- Kliknite ovaj alat @@ -1002,19 +1002,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw Tehničko Crtanje - - + + Insert '⌀' Prefix Umetni '⌀' Prefiks - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool <html><head/><body><p>Dvaput kliknite za uređivanje linije. Novi redovi se dodaju na trenutno mjesto na popisu.</p></body></html> @@ -1022,17 +1022,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw Tehničko Crtanje - + Insert '⌀' Prefix Umetni '⌀' Prefiks - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool <html><head/><body><p>Dvaput kliknite za uređivanje linije. Novi redovi se dodaju na trenutno mjesto na popisu.</p></body></html> @@ -1040,19 +1040,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw Tehničko Crtanje - - + + Insert '□' Prefix Umetni '□' Prefiks - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Umetnite '□' simbol na početku teksta dimenzije:<br>- Odaberite jednu ili više dimenzija<br>- Kliknite ovaj alat @@ -1136,17 +1136,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw Tehničko Crtanje - + Position Horizontal Chain Dimensions Položaj dimenzie vodoravnog lanca - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnajte vodoravne dimenzije za izradu lančane dimenzije:<br>- Odaberite dvije ili više horizontalnih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -1154,19 +1154,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw Tehničko Crtanje - - + + Position Horizontal Chain Dimensions Položaj dimenzie vodoravnog lanca - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnajte vodoravne dimenzije za izradu lančane dimenzije:<br>- Odaberite dvije ili više horizontalnih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -1174,19 +1174,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw Tehničko Crtanje - - + + Position Oblique Chain Dimensions Položaj dimenzija kosih lanca - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnajte kose dimenzije za izradu lančane dimenzije:<br>- Odaberite dvije ili više paralelnih kosih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -1194,19 +1194,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw Tehničko Crtanje - - + + Position Vertical Chain Dimensions Položaj dimenzija vertikalnih lanca - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnajte okomite dimenzije za izradu lančane dimenzije:<br>- Odaberite dvije ili više okomitih dimenzija<br>- Prva dimenzija definira položaj<br>- Kliknite ovaj alat @@ -1214,17 +1214,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw Tehničko Crtanje - + Remove Prefix Uklonite prefiks - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Uklonite simbole prefiksa na početku teksta dimenzije:<br>- Odaberite jednu ili više dimenzija<br>- Kliknite ovaj alat @@ -2012,8 +2012,8 @@ Stvori pogled pregleda + - Save page to dxf Spremi stranicu u dxf formatu @@ -2074,7 +2074,7 @@ Povuci Dimenziju - + Create Balloon Stvori Balončić @@ -2089,8 +2089,8 @@ Stvori središnju Liniju - + Create Cosmetic Line Stvori Dekoracijsku liniju @@ -2166,106 +2166,106 @@ Dodaj pomoćnu tjemenu točku - + TechDraw Insert Prefix TehnCrtanje umetni prefiks - + Insert Prefix Umetni prefiks - + TechDraw Remove Prefix TehnCrtanje ukloni prefiks - + Remove Prefix Uklonite prefiks - + Increase/Decrease Decimal Povečaj/Smanji decimale - + Pos Horiz Chain Dim Rasporedi horizontalne lančane mjere - + Pos Vert Chain Dim Rasporedi vertikalne lančane mjere - + Pos Oblique Chain Dim Rasporedi kose lančane mjere - + Cascade Horiz Dim Rasporedi horizontalne mjere - + Cascade Vert Dim Rasporedi vertikalne mjere - + Cascade Oblique Dim Rasporedi kose mjere - + Create Horiz Chain Dim Stvori horizontalne lančane mjere - + Create Vert Chain Dim Stvori vertikalne lančane mjere - + Create Oblique Chain Dim Stvori mjere kosog lanca - + Create Horiz Coord Dim Stvori horizontalne koordinatne mjere - + Create Vert Coord Dim Stvori vertikalne koordinatne mjere - + Create Oblique Coord Dim Stvori kose koordinatne mjere - + Create Horiz Chamfer Dim Stvori horizontalnu dimenziju žljeba - + Create Vert Chamfer Dim Stvori vertikalnu dimenziju žljeba - + Create Arc Length Dim Stvori dimenziju dužine luka @@ -2706,6 +2706,16 @@ QObject + + + + + + + + + + @@ -2723,16 +2733,6 @@ - - - - - - - - - - Wrong selection Pogrešan odabir @@ -2764,10 +2764,9 @@ U ovom odabiru nema Objekta profila - - - - + + + @@ -2779,34 +2778,34 @@ - - - + + + + Incorrect selection Netočan odabir - + Select an object first Najprije odaberite objekt - + Too many objects selected Previše objekata odabrano - + Create a page first. Najprije napravite stranicu. - @@ -2815,6 +2814,7 @@ + No View of a Part in selection. Ne postoji Pogled na Dio u odabiru. @@ -2927,6 +2927,8 @@ Odabrani rub je BSpline. Polumjer će biti približan. Nastaviti? + + @@ -2946,12 +2948,10 @@ - - - + Incorrect Selection Netočan odabir @@ -3079,9 +3079,6 @@ Odaberite 2 objekta Točke i 1 Pogled.(2) - - - @@ -3108,30 +3105,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Rješavanje u postupku - - - @@ -3158,23 +3155,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Zatvori aktivni dijalog rješavača i pokušaj ponovo. @@ -3204,8 +3204,8 @@ - - + + Wrong Selection Pogrešan odabir @@ -3340,28 +3340,22 @@ Odaberite samo jednu liniju oznake ili simbol spajanja. - - + SurfaceFinishSymbols Simboli za završnu obradu površine - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection Nema pogleda na Dio u doabiru - + No %1 in Selection Nema %1 u odabiru @@ -3439,7 +3433,7 @@ Izvoz Stranice u PDF - + Document Name: Naziv dokumenta: @@ -3454,19 +3448,19 @@ Izvoz Stranice u SVG - - + + Are you sure you want to continue? Jeste li sigurni da želite nastaviti? - + Show drawing Prikaži crtež - + Toggle KeepUpdated Uključivanje/isključivanje KeepUpdated @@ -3491,9 +3485,9 @@ Rich-Text stvaralac - + Rich text editor Rich-Text uređivač @@ -3611,135 +3605,135 @@ Uredite detaljni pogled - + Edit %1 Uređivanje %1 - + TechDraw Increase/Decrease Decimal TehnCrtanje Povećaj/Smanji decimalu - - + + TechDraw PosHorizChainDimension TehnCrtanje Rasporedi vodoravno skup kota - - + + No horizontal dimensions selected Nema odabranih vodoravnih dimenzija - - + + TechDraw PosVertChainDimension TehnCrtanje Rasporedi uspravni skup kota - - + + No vertical dimensions selected Nema odabranih vertikalnih dimenzija - - + + TechDraw PosObliqueChainDimension TehnCrtanje Rasporedi kosi skup kota - - + + No oblique dimensions selected Nema odabranih kosih dimenzija - - + + TechDraw CascadeHorizDimension TehnCrtanje Poredaj vodoravne kote - - + + TechDraw CascadeVertDimension TehnCrtanje Poredaj uspravne kote - - + + TechDraw CascadeObliqueDimension TehnCrtanje Poredaj kose kote - + TechDraw Create Horizontal Chain Dimension TehnCrtanje Stvori vodoravne redne kote - + TechDraw Create Vertical Chain Dimension TehnCrtanje Stvori uspravne redne kote - + TechDraw Create Oblique Chain Dimension TehnCrtanje Stvori kose redne kote - + TechDraw Create Horizontal Coord Dimension TehnCrtanje Stvori vodoravne koordinatne kote - + TechDraw Create Vertical Coord Dimension TehnCrtanje Stvori uspravne koordinatne kote - + TechDraw Create Oblique Coord Dimension TehnCrtanje Stvori kose koordinatne kote - + TechDraw Create Horizontal Chamfer Dimension TehnCrtanje Stvori vodoravnu kotu žljeba - + TechDraw Create Vertical Chamfer Dimension TehnCrtanje Stvori uspravnu kotu žljeba - + TechDraw Create Arc Length Dimension TehnCrtanje Stvori kotu dužine luka - + TechDraw Customize Format TehnCrtanje Prilagodi format - + No subelements selected Nema izabranih podelemenata - + Selection is empty Odabir je prazan - + No object selected Nema odabranog objekta @@ -3885,7 +3879,7 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Ne možete izbrisati ovu liniju vodilicu jer @@ -3894,22 +3888,22 @@ ima simbol spajanja koji bi se pokidao. - + You cannot delete this view because it has one or more dependent views that would become broken. Ne možete izbrisati ovaj pogled jer ima jedan ili više ovisnih prikaza koji bi se slomili. - - - - + - - + + + + + Object dependencies Zavisnosti objekta @@ -3936,7 +3930,7 @@ ima simbol spajanja koji bi se pokidao. - + The page is not empty, therefore the following referencing objects might be lost: Stranica nije prazna, stoga @@ -7499,8 +7493,8 @@ Možete odabrati daljnje točke da biste dobili segmente linija. - - + + Top Gore @@ -7511,8 +7505,8 @@ Možete odabrati daljnje točke da biste dobili segmente linija. - - + + Left Lijevo @@ -7523,14 +7517,14 @@ Možete odabrati daljnje točke da biste dobili segmente linija. - - + + Right Desno - + Rear Iza @@ -7541,8 +7535,8 @@ Možete odabrati daljnje točke da biste dobili segmente linija. - - + + Bottom Ispod @@ -7594,31 +7588,31 @@ koristeći zadani X/Y razmak Vertikalni prostor između granica projekcija - - + + FrontTopLeft NapredOdozgoLijevo - - + + FrontBottomRight NapredDoljeDesno - - + + FrontTopRight NapredOdozgoDesno - - + + FrontBottomLeft NapredDoljeLijevo - + Front Ispred @@ -8261,12 +8255,12 @@ koristeći zadani X/Y razmak TechDraw_ExtensionremovePrefixChar - + Remove Prefix Uklonite prefiks - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Uklonite simbole prefiksa na početku teksta dimenzije:<br>- Odaberite jednu ili više dimenzija<br>- Kliknite ovaj alat @@ -9477,4 +9471,24 @@ jer je otvoren dijalog zadataka. Kliknite ovaj alat + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + Tehničko Crtanje + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts index 50a1f2c071..641b06df03 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw MűszakiRajz - + Cascade Horizontal Dimensions Vízszintes méretek elrendezése - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Vízszintes méretek elrendezése egyenlő távolsággal:<br>- Adja meg a sortávolságot (opcionális)<br>- Válasszon ki két vagy több vízszintes méretet<br>- Az első méret határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw MűszakiRajz - - + + Cascade Horizontal Dimensions Vízszintes méretek elrendezése - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Vízszintes méretek elrendezése egyenlő távolsággal:<br>- Adja meg a sortávolságot (opcionális)<br>- Válasszon ki két vagy több vízszintes méretet<br>- Az első méret határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw MűszakiRajz - - + + Cascade Oblique Dimensions Ferde méretek elrendezése - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Egyenlő távolságban lévő ferde méretek elrendezése:<br>- Adja meg a sortávolságot (opcionális)<br>- Válasszon ki két vagy több párhuzamos ferde méretet<br>- Az első mérés határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw MűszakiRajz - - + + Cascade Vertical Dimensions Vízszintes méretek elrendezése - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Függőleges méretek elrendezése egyenlő távolsággal:<br>- Adja meg a sortávolságot (opcionális)<br>- Válasszon ki két vagy több függőleges méretet<br>- Az első méret határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw MűszakiRajz - + Create Horizontal Chamfer Dimension Hozzuk létre a levágás vízszintes méretét - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Vízszintes méret- és szögméret létrehozása egy levágáshoz:<br>- Két csúcspont kijelölése<br>- Kattintson erre az eszközre @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw MűszakiRajz - + Create Horizontal Chain Dimensions Vízszintes dimenzióláncok létrehozása - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Hozzon létre összehangolt vízszintes dimenziók sorozatát:<br>- Válasszon ki három vagy több csúcspontot<br>- Kattintson erre az eszközre @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw MűszakiRajz - + Create Horizontal Coordinate Dimensions Vízszintes koordinátaméretek létrehozása - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Egyenlő távolságban lévő vízszintes méretek létrehozása ugyanazon az alapvonaltl:<br>- Vonaltávolság megadása (opcionális)<br>- Három vagy több csomópont kiválasztása<br>- Az első két csomópont kiválasztási sorrendje adja meg az alapvonal pozícióját<br>- Kattintson erre az eszközre @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw MűszakiRajz - - + + Create Horizontal Chain Dimensions Vízszintes dimenzióláncok létrehozása - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Hozzon létre összehangolt vízszintes dimenziók sorozatát:<br>- Válasszon ki három vagy több csúcspontot<br>- Kattintson erre az eszközre @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw MűszakiRajz - - + + Create Horizontal Chamfer Dimension Hozzuk létre a levágás vízszintes méretét - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Vízszintes méret- és szögméret létrehozása egy levágáshoz:<br>- Két csúcspont kijelölése<br>- Kattintson erre az eszközre @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw MűszakiRajz - - + + Create Horizontal Coordinate Dimensions Vízszintes koordinátaméretek létrehozása - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Egyenlő távolságban lévő vízszintes méretek létrehozása ugyanazon az alapvonaltl:<br>- Vonaltávolság megadása (opcionális)<br>- Három vagy több csomópont kiválasztása<br>- Az első két csomópont kiválasztási sorrendje adja meg az alapvonal pozícióját<br>- Kattintson erre az eszközre @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw MűszakiRajz - + Create Arc Length Dimension Ívhosszúság méret létrehozása - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Ívhosszméret létrehozása:<br>- Válasszon ki egy ívet<br>- Kattintson erre az eszközre @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw MűszakiRajz - - + + Create Oblique Chain Dimensions Ferde dimenzióláncok létrehozása - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Ferde méretekláncok létrehozása:<br>- Három vagy több csomópont kiválasztása<br>- Az első két pont határozza meg az irányt<br>- Erre az eszközre kattintva @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw MűszakiRajz - - + + Create Oblique Coordinate Dimensions Ferde koordináta méretek létrehozása - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Egyenlő távolságban lévő átlós méretek létrehozása ugyanazon az alapvonaltól kezdve:<br>- Vonaltávolság megadása (opcionális)<br>- Három vagy több csúcspont kiválasztása<br>- Az első két csomópont kiválasztási sorrendje adja meg az alapvonal helyzetét<br>- Az első két csúcspont határozza meg az irányt is<br>- Kattintson erre az eszközre @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw MűszakiRajz - - + + Create Vertical Chain Dimensions Függőleges dimenzióláncok létrehozása - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Hozzon létre összehangolt függőleges méretek sorozatát:<br>- Válasszon ki három vagy több csúcspontot<br>- Kattintson erre az eszközre @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw MűszakiRajz - - + + Create Vertical Chamfer Dimension Hozzuk létre a levágás függőleges méretét - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Függőleges méret- és szögméret létrehozása egy levágáshoz:<br>- Két csúcspont kijelölése<br>- Kattintson erre az eszközre @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw MűszakiRajz - - + + Create Vertical Coordinate Dimensions Függőleges koordinátaméretek létrehozása - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Egyenlő távolságban lévő függőleges méretek létrehozása ugyanazon az alapvonalon:<br>- Vonaltávolság megadása (opcionális)<br>- Három vagy több csomópont kiválasztása<br>- Az első két csomópont kiválasztási sorrendje adja meg az alapvonal pozícióját<br>- Kattintson erre az eszközre @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw MűszakiRajz - + Customize Format Label Formátum címke testreszabása - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Válasszon ki egy méretet vagy egy ballont<br> - kattintson erre az eszközre<br> - szerkessze a Formátum mezőt a billentyűzet és/vagy a speciális gombok segítségével @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw MűszakiRajz - - + + Decrease Decimal Places Tizedesjegyek csökkentése - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool A méretszöveg tizedesjegyei számának csökkentése:<br>- Egy vagy több méret kiválasztása<br>- Kattintson erre az eszközre @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw MűszakiRajz - - + + Increase Decimal Places Tizedesjegyek növelése - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool A méretszöveg tizedesjegyei számának növelése:<br>- Egy vagy több méret kiválasztása<br>- Kattintson erre az eszközre @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw MűszakiRajz - + Increase Decimal Places Tizedesjegyek növelése - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool A méretszöveg tizedesjegyei számának növelése:<br>- Egy vagy több méret kiválasztása<br>- Kattintson erre az eszközre @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw MűszakiRajz - - + + Insert '⌀' Prefix '⌀'-szimbólum beillesztése - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Szúrjon be egy '⌀'-szimbólumot a méretszöveg elejére:<br>- Válasszon ki egy vagy több méretet<br>- Kattintson erre az eszközre @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw MűszakiRajz - + Insert '⌀' Prefix '⌀'-szimbólum beillesztése - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Szúrjon be egy '⌀'-szimbólumot a méretszöveg elejére:<br>- Válasszon ki egy vagy több méretet<br>- Kattintson erre az eszközre @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw MűszakiRajz - - + + Insert '□' Prefix '□'-szimbólum beillesztése - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Szúrjon be egy '□'-szimbólumot a méretszöveg elejére:<br>- Válasszon ki egy vagy több méretet<br>- Kattintson erre az eszközre @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw MűszakiRajz - + Position Horizontal Chain Dimensions Vízszintes láncméretek elrendezése - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Vízszintes méretek összehangolása méretlánc létrehozásához:<br>- Válasszon ki két vagy több vízszintes méretet<br>- Az első méret határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw MűszakiRajz - - + + Position Horizontal Chain Dimensions Vízszintes láncméretek elrendezése - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Vízszintes méretek összehangolása méretlánc létrehozásához:<br>- Válasszon ki két vagy több vízszintes méretet<br>- Az első méret határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw MűszakiRajz - - + + Position Oblique Chain Dimensions Ferde láncméretek elrendezése - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Ferde méretek összehangolása méretlánc létrehozásához:<br>- Válasszon ki két vagy több párhuzamos ferde méretet<br>- Az első méret határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw MűszakiRajz - - + + Position Vertical Chain Dimensions Függőleges láncméretek elrendezése - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Függőleges méretek összehangolása méretlánc létrehozásához:<br>- Válasszon ki két vagy több függőleges méretet<br>- Az első méret határozza meg a pozíciót<br>- Kattintson erre az eszközre @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw MűszakiRajz - + Remove Prefix Előtag eltávolítása - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Előtag-szimbólum eltávolítása a méretszöveg elejéről:<br>- Egy vagy több méret kiválasztása<br>- Kattintson erre az eszközre @@ -1996,8 +1996,8 @@ Számolótábla nézet létrehozása + - Save page to dxf Oldal mentése dxf-be @@ -2058,7 +2058,7 @@ Dimenzió húzása - + Create Balloon Ballon létrehozása @@ -2073,8 +2073,8 @@ Középvonal létrehozása - + Create Cosmetic Line Segédvonal létrehozása @@ -2150,102 +2150,102 @@ Segéd csúcspont hozzáadása - + TechDraw Insert Prefix Műszakirajz - Előtag beszúrás - + Insert Prefix Előtag beszúrás - + TechDraw Remove Prefix Műszakirajz - Előtag eltávolítás - + Remove Prefix Előtag eltávolítása - + Increase/Decrease Decimal A tizedesjegyek számának növelése/csökkentése - + Pos Horiz Chain Dim Vízszintes láncméretek elrendezése - + Pos Vert Chain Dim Függőleges láncméretek elrendezése - + Pos Oblique Chain Dim A ferde láncméretek elrendezése - + Cascade Horiz Dim Kaszkád méretek elrendezése - + Cascade Vert Dim Kaszkád függőleges méretek - + Cascade Oblique Dim Lépcsőzetes ferde távolság - + Create Horiz Chain Dim Vízszintes láncméretek létrehozása - + Create Vert Chain Dim Függőleges láncméretek létrehozása - + Create Oblique Chain Dim Ferde dimenziólánc létrehozása - + Create Horiz Coord Dim Vízszintes koordinátaméretek létrehozása - + Create Vert Coord Dim Függőleges koordinátaméretek létrehozása - + Create Oblique Coord Dim Ferde koordinátaméretek létrehozása - + Create Horiz Chamfer Dim Vízszintes levágás méretének létrehozása - + Create Vert Chamfer Dim Függőleges levágás méretének létrehozása - + Create Arc Length Dim Ívhosszúság méret létrehozása @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Rossz kijelölés @@ -2744,10 +2744,9 @@ Nem található profiltárgy a kijelölésben - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Hibás kijelölés - + Select an object first Először válasszon ki egy tárgyat - + Too many objects selected Túl sok kijelölt objektum - + Create a page first. Először hozzon létre egy oldalt. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Nincs alkatrész nézet ebben a kiválasztásban. @@ -2906,6 +2906,8 @@ A kijelölt él egy folyamatos ív. A sugár hozzávetőleges érték lesz. Folytatja? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Hibás kijelölés @@ -3058,9 +3058,6 @@ Jelöljön ki 2 pontos objektumokat és 1 nézetet. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress A feladat folyamatban - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Zárja be az aktív feladatot és próbálja később. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Hibás kijelölés @@ -3318,28 +3318,22 @@ Jelöljön ki pontosan egy referenciavonalat vagy egy Hegesztés szimbólumot. - - + SurfaceFinishSymbols Felületi szimbólumok - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + A kiválasztott tárgy nem egy rész nézet, sem egy vezérvonal - + No Part View in Selection Nincs alkatrész nézet a kijelölésben - + No %1 in Selection A %1 nincs a kiválasztásban @@ -3417,7 +3411,7 @@ Oldal export PDF formában - + Document Name: Dokumentum neve: @@ -3432,19 +3426,19 @@ Oldal export SVG formában - - + + Are you sure you want to continue? Biztosan folytatja? - + Show drawing Mutasd a rajzot - + Toggle KeepUpdated Frissen tartás kapcsolója @@ -3469,9 +3463,9 @@ Szöveg szerkesztő - + Rich text editor Szöveg szerkesztő @@ -3589,133 +3583,133 @@ Részletnézet szerkesztése - + Edit %1 %1 szerkesztése - + TechDraw Increase/Decrease Decimal Műszakirajz tizedesjegyek számának növelése/csökkentése - - + + TechDraw PosHorizChainDimension Műszaki rajz a vízszintes méretek sorrendjének összehangolása - - + + No horizontal dimensions selected Nincsenek vízszintes méretek kiválasztva - - + + TechDraw PosVertChainDimension Műszaki rajz A függőleges méretek sorrendjének összehangolása - - + + No vertical dimensions selected Nincsenek függőleges méretek kiválasztva - - + + TechDraw PosObliqueChainDimension Műszaki rajz, a ferde méretek sorrendjének összehangolása - - + + No oblique dimensions selected Nincsenek ferde méretek kiválasztva - - + + TechDraw CascadeHorizDimension Műszaki rajz, Vízszintes lépcsőzetes méret - - + + TechDraw CascadeVertDimension Műszaki rajz, Függőleges lépcsőzetes méret - - + + TechDraw CascadeObliqueDimension Műszak irajz, Ferde l lépcsőzetes méret - + TechDraw Create Horizontal Chain Dimension Műszakirajz vízszintes dimenzióláncok létrehozása - + TechDraw Create Vertical Chain Dimension Műszakirajz függőleges dimenzióláncok létrehozása - + TechDraw Create Oblique Chain Dimension Műszakirajz ferde dimenzióláncok létrehozása - + TechDraw Create Horizontal Coord Dimension Műszakirajz vízszintes koordináta dimenziók létrehozása - + TechDraw Create Vertical Coord Dimension Műszakirajz függőleges koordináta dimenzió létrehozása - + TechDraw Create Oblique Coord Dimension Műszakirajz ferde koordináta dimenzió létrehozása - + TechDraw Create Horizontal Chamfer Dimension Műszakirajz vízszintes letörés dimenzió létrehozása - + TechDraw Create Vertical Chamfer Dimension Műszakirajz függőleges letörés dimenzió létrehozása - + TechDraw Create Arc Length Dimension Műszakirajz ívhosszúság dimenzió létrehozása - + TechDraw Customize Format Műszakirajz testreszabási formátum - + No subelements selected Nincsenek részelemek kiválasztva - + Selection is empty A kijelölési terület nem tartalmaz objektumokat - + No object selected Nincs kijelölt tárgy @@ -3861,29 +3855,29 @@ vastag: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Nem törölheti ezt a referencia vonalat, mert olyan hegesztési szimbólummal rendelkezik, amely megtörne. - + You cannot delete this view because it has one or more dependent views that would become broken. Nem törölheti ezt a nézetet, mert egy vagy több nézetnek függősége van, amely megszakadna. - - - - + - - + + + + + Object dependencies Objektumfüggőségek @@ -3908,7 +3902,7 @@ olyan hegesztési szimbólummal rendelkezik, amely megtörne. Nem törölheti ezt a nézetet, mert van egy referenciavonala, amely megszakadna. - + The page is not empty, therefore the following referencing objects might be lost: Az oldal nem üres, ezért a @@ -7407,8 +7401,8 @@ További pontokat is választhatsz, hogy vonalszakaszokat kapj. - - + + Top Felülnézet @@ -7419,8 +7413,8 @@ További pontokat is választhatsz, hogy vonalszakaszokat kapj. - - + + Left Bal @@ -7431,14 +7425,14 @@ További pontokat is választhatsz, hogy vonalszakaszokat kapj. - - + + Right Jobb oldalnézet - + Rear Hátsó nézet @@ -7449,8 +7443,8 @@ További pontokat is választhatsz, hogy vonalszakaszokat kapj. - - + + Bottom Alsó @@ -7502,31 +7496,31 @@ a megadott X/Y távolság használatával Függőleges tér a vetületek határai között - - + + FrontTopLeft ElölFellülBalra - - + + FrontBottomRight ElölAllulJobbra - - + + FrontTopRight ElölFellülJobbra - - + + FrontBottomLeft ElölAllulBalra - + Front Elölnézet @@ -8166,12 +8160,12 @@ a megadott X/Y távolság használatával TechDraw_ExtensionremovePrefixChar - + Remove Prefix Előtag eltávolítása - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Előtag-szimbólum eltávolítása a méretszöveg elejéről:<br>- Egy vagy több méret kiválasztása<br>- Kattintson erre az eszközre @@ -9376,4 +9370,24 @@ a feladat párbeszédpanel nyitva van. Kattintson erre az eszközre + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + MűszakiRajz + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.ts index 52bf61978c..0a5481506c 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Create spreadsheet view + - Save page to dxf Save page to dxf @@ -2058,7 +2058,7 @@ Drag Dimension - + Create Balloon Create Balloon @@ -2073,8 +2073,8 @@ Create CenterLine - + Create Cosmetic Line Create Cosmetic Line @@ -2150,102 +2150,102 @@ Tambahkan Vertex Kosmetik - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Pilihan salah @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Pilihan salah - + Select an object first Pilih objek terlebih dahulu - + Too many objects selected Terlalu banyak objek yang dipilih - + Create a page first. Buat halaman terlebih dahulu. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No View of a Part in selection. @@ -2906,6 +2906,8 @@ Selected edge is a BSpline. Radius will be approximate. Continue? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Seleksi yang salah @@ -3058,9 +3058,6 @@ Select 2 point objects and 1 View. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Task In Progress - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Close active task dialog and try again. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Wrong Selection @@ -3318,28 +3318,22 @@ Select exactly one Leader line or one Weld symbol. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Halaman Ekspor Sebagai PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Ekspor sebagai SVG - - + + Are you sure you want to continue? Apakah yakin ingin melanjutkan? - + Show drawing Tampilkan gambar - + Toggle KeepUpdated Toggle KeepUpdated @@ -3469,9 +3463,9 @@ Rich text creator - + Rich text editor Rich text editor @@ -3589,133 +3583,133 @@ Edit Detail View - + Edit %1 Edit %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. View ini tidak dapat dihapus karena beberapa view yang terhubung akan rusak. - - - - + - - + + + + + Object dependencies Objek dependensi @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. You cannot delete this view because it has a leader line that would become broken. - + The page is not empty, therefore the following referencing objects might be lost: The page is not empty, therefore the @@ -7412,8 +7406,8 @@ You can pick further points to get line segments. - - + + Top Puncak @@ -7424,8 +7418,8 @@ You can pick further points to get line segments. - - + + Left Kiri @@ -7436,14 +7430,14 @@ You can pick further points to get line segments. - - + + Right Kanan - + Rear Belakang @@ -7454,8 +7448,8 @@ You can pick further points to get line segments. - - + + Bottom Bawah @@ -7507,31 +7501,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Depan @@ -8171,12 +8165,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9381,4 +9375,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.ts index 779227f2f2..4550e6ad7c 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.ts @@ -359,7 +359,7 @@ Export Page as DXF - Esporta la pagina in DXF + Esporta Pagina in DXF @@ -382,7 +382,7 @@ Export Page as SVG - Esporta la pagina in SVG + Esporta Pagina in SVG @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Quote Orizzontali in Parallelo - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Uniforma spaziatura quote orizzontali:<br>- Specificare la spaziatura (opzionale)<br>- Selezionare due o più quote orizzontali<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -443,19 +443,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Quote Orizzontali in Parallelo - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Uniforma spaziatura quote orizzontali:<br>- Specificare la spaziatura (opzionale)<br>- Selezionare due o più quote orizzontali<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -464,19 +464,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Quote Oblique in Parallelo - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Uniforma spaziatura quote oblique:<br>- Specificare la spaziatura (opzionale)<br>- Selezionare due o più quote oblique parallele<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -484,19 +484,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Quote Verticali in Parallelo - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Uniforma spaziatura quote verticali:<br>- Specificare la spaziatura (opzionale)<br>- Selezionare due o più quote verticali<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -504,17 +504,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Crea Quota Smusso Orizzontale - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crea una quota orizzontale e una quota angolare per uno smusso:<br>- Seleziona due vertici<br>- Clicca questo strumento @@ -578,17 +578,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Crea Quote Concatenate Orizzontali - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Crea una sequenza di quote orizzontali allineate:<br>- Seleziona tre o più vertici<br>- Clicca questo strumento @@ -596,17 +596,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Crea Quote Orizzontali Coordinate - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crea più quote orizzontali uniformemente spaziate a partire dalla stessa linea di base:<br>- Specificare la spaziatura (opzionale)<br>- Selezionare tre o più vertici<br>- L'ordine di selezione dei primi due vertici determina la posizione della linea di base<br>- Fare clic su questo strumento @@ -614,19 +614,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Crea Quote Concatenate Orizzontali - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Crea una sequenza di quote orizzontali allineate:<br>- Seleziona tre o più vertici<br>- Clicca questo strumento @@ -634,19 +634,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Crea Quota Smusso Orizzontale - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crea una quota orizzontale e una quota angolare per uno smusso:<br>- Seleziona due vertici<br>- Clicca questo strumento @@ -654,19 +654,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Crea Quote Orizzontali Coordinate - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crea più quote orizzontali uniformemente spaziate a partire dalla stessa linea di base:<br>- Specificare la spaziatura (opzionale)<br>- Selezionare tre o più vertici<br>- L'ordine di selezione dei primi due vertici determina la posizione della linea di base<br>- Fare clic su questo strumento @@ -674,17 +674,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Crea Quota Lunghezza Arco - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Crea una quota di lunghezza dell'arco:<br>- Seleziona un singolo arco<br>- Clicca su questo strumento @@ -692,19 +692,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Crea Quote Concatenate Oblique - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Crea una sequenza di quote oblique allineate:<br>- Seleziona tre o più vertici<br>- I primi due vertici definiscono la direzione<br>- Clicca su questo strumento @@ -712,19 +712,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Crea Quote CoordinateOblique - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Crea più quote oblique uniformemente spaziate a partire dalla stessa linea di base:<br>- Specificare la spaziatura (opzionale)<br>- Selezionare tre o più vertici<br>- L'ordine di selezione dei primi due vertici determina la posizione della linea di base<br>- I primi due vertici definiscono anche la direzione<br>- Fare clic su questo strumento @@ -732,19 +732,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Crea Quote Concatenate Verticali - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Crea una sequenza di quote verticali allineate:<br>- Seleziona tre o più vertici<br>- Clicca su questo strumento @@ -752,19 +752,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Crea Quota Smusso Verticale - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Crea una quota verticale e una quota angolare per uno smusso:<br>- Seleziona due vertici<br>- Clicca questo strumento @@ -772,19 +772,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Crea Quote Coordinate Verticali - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Crea più quote verticali uniformemente spaziate a partire dalla stessa linea di base:<br>- Specifica la spaziatura (opzionale)<br>- Seleziona tre o più vertici<br>- L'ordine di selezione dei primi due vertici determina la posizione della linea di base<br>- Clicca su questo strumento @@ -792,17 +792,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Personalizza Etichetta Formato - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Selezionare una quota o una pallinatura<br> - fare clic su questo strumento<br> - modificare il campo Formato utilizzando la tastiera e/o i pulsanti speciali @@ -810,19 +810,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Diminuisci i Decimali - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Diminuire il numero di posizioni decimali del testo della quota:<br>- Selezionare una o più quote<br>- Fare clic su questo strumento @@ -952,19 +952,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Aumenta i Decimali - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumentare il numero di posizioni decimali del testo della quota:<br>- Selezionare una o più quote<br>- Fare clic su questo strumento @@ -972,17 +972,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Aumenta i Decimali - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumentare il numero di posizioni decimali del testo della quota:<br>- Selezionare una o più quote<br>- Fare clic su questo strumento @@ -990,19 +990,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefisso - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserisci un simbolo '<unk>' all'inizio del testo della quota:<br>- Selezionare una o più quote<br>- Fare clic su questo strumento @@ -1010,17 +1010,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefisso - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserisci un simbolo '<unk>' all'inizio del testo della quota:<br>- Selezionare una o più quote<br>- Fare clic su questo strumento @@ -1028,19 +1028,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Inserisci '□' Prefisso - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Inserisci un simbolo '<unk>' all'inizio del testo della quota:<br>- Seleziona una o più quote<br>- Clicca questo strumento @@ -1124,17 +1124,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Posiziona Quote Concatenate Orizzontali - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Allinea le quote orizzontali per creare una quota concatenata:<br>- Selezionare due o più quote orizzontali<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -1142,19 +1142,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Posiziona Quote Concatenate Orizzontali - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Allinea le quote orizzontali per creare una quota concatenata:<br>- Selezionare due o più quote orizzontali<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -1162,19 +1162,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Posiziona Quote Concatenate Oblique - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Allinea le quote oblique per creare una quota concatenata:<br>- Selezionare due o più quote oblique parallele<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -1182,19 +1182,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Posiziona Quote Concatenate Verticali - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Allinea le quote verticali per creare una quota concatenata:<br>- Selezionare due o più quote verticali<br>- La prima quota definisce la posizione<br>- Fare clic su questo strumento @@ -1202,17 +1202,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Rimuovi Prefisso - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Rimuove i simboli prefissi all'inizio del testo della quota:<br>- Selezionare una o più quote<br>- Fare clic su questo strumento @@ -1368,7 +1368,7 @@ Add cosmetic vertex(es) at the intersection(s) of selected edges:<br>- Select two edges<br>- Click this tool - Add cosmetic vertex(es) at the intersection(s) of selected edges:<br>- Select two edges<br>- Click this tool + Aggiungi vertici cosmetici alle intersezioni dei bordi selezionati:<br>- Selezionare due bordi (linee, cerchi e/o archi)<br>- Fare clic su questo strumento @@ -1524,7 +1524,7 @@ Insert Length Dimension - Lunghezza + Quota allineata @@ -1563,7 +1563,7 @@ Insert Default Page - Nuovo disegno standard + Inserisci Pagina Predefinita @@ -1576,7 +1576,7 @@ Insert Page using Template - Nuovo disegno da modello + Inserisci Pagina usando un Modello @@ -1669,7 +1669,7 @@ Redraw Page - Ridisegna la pagina + Ridisegna Pagina @@ -1998,8 +1998,8 @@ Crea vista foglio di calcolo + - Save page to dxf Salva pagina su dxf @@ -2060,7 +2060,7 @@ Trascina quota - + Create Balloon Crea pallinatura @@ -2075,15 +2075,15 @@ Crea linea di mezzeria - + Create Cosmetic Line Crea linea cosmetica Update CosmeticCircle - Update CosmeticCircle + Aggiorna cerchio cosmetico @@ -2152,102 +2152,102 @@ Vertice cosmetico - + TechDraw Insert Prefix TechDraw Inserisci prefisso - + Insert Prefix Inserisci Prefisso - + TechDraw Remove Prefix TechDraw Rimuovi prefisso - + Remove Prefix Rimuovi Prefisso - + Increase/Decrease Decimal Incrementa/Diminuisci Decimale - + Pos Horiz Chain Dim Pos Quota Oriz. Concatenata - + Pos Vert Chain Dim Pos Quota Vert. Concatenata - + Pos Oblique Chain Dim Pos Quota Obliqua Concatenata - + Cascade Horiz Dim Quota Orizzontale in Parallelo - + Cascade Vert Dim Quota Verticale in Parallelo - + Cascade Oblique Dim Quota Obliqua in Parallelo - + Create Horiz Chain Dim Crea Quota Oriz. Concatenata - + Create Vert Chain Dim Crea Quota Vert. Concatenata - + Create Oblique Chain Dim Crea Quota Obliqua Concatenata - + Create Horiz Coord Dim Crea Quota Coord. Orizzontale - + Create Vert Coord Dim Create Quota Coord. Verticale - + Create Oblique Coord Dim Crea Quota Coord. Obliqua - + Create Horiz Chamfer Dim Crea Quota Oriz. Smusso - + Create Vert Chamfer Dim Crea Quota Vert. Smusso - + Create Arc Length Dim Crea Quota Lunghezza Arco @@ -2404,12 +2404,12 @@ TechDraw calculate selected arc length - TechDraw calculate selected arc length + TechDraw calcola la lunghezza dell'arco selezionato Calculate Edge Length - Calculate Edge Length + Calcola lunghezza bordo @@ -2688,6 +2688,16 @@ QObject + + + + + + + + + + @@ -2705,16 +2715,6 @@ - - - - - - - - - - Wrong selection Selezione errata @@ -2746,10 +2746,9 @@ Nessun oggetto di profilo trovato nella selezione - - - - + + + @@ -2761,34 +2760,34 @@ - - - + + + + Incorrect selection Selezione non corretta - + Select an object first Prima selezionare un oggetto - + Too many objects selected Troppi oggetti selezionati - + Create a page first. Prima creare una pagina. - @@ -2797,6 +2796,7 @@ + No View of a Part in selection. Nessuna vista di una Parte nella selezione. @@ -2818,7 +2818,7 @@ Clip and View must be from same Page. - Clip e Vista deve essere dalla stessa pagina. + Clip e Vista deve essere dalla stessa Pagina. @@ -2868,7 +2868,7 @@ No Drawing View - Nessuna Vista di disegno + Nessuna Vista di Disegno @@ -2908,6 +2908,8 @@ Il bordo selezionato è una BSpline. Il raggio sarà approssimativo. Continuare? + + @@ -2927,12 +2929,10 @@ - - - + Incorrect Selection Selezione non corretta @@ -3060,9 +3060,6 @@ Selezionare 2 oggetti punti e 1 vista. (2) - - - @@ -3089,30 +3086,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Attività in corso - - - @@ -3139,23 +3136,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Chiudere la finestra di dialogo attiva e riprovare. @@ -3185,8 +3185,8 @@ - - + + Wrong Selection Selezione sbagliata @@ -3271,7 +3271,7 @@ You must select a base View for the circle. - You must select a base View for the circle. + È necessario selezionare una vista di base per il cerchio. @@ -3307,7 +3307,7 @@ Selection is not a Cosmetic Circle or a Cosmetic Arc of Circle. - Selection is not a Cosmetic Circle or a Cosmetic Arc of Circle. + La selezione non è un cerchio cosmetico o un arco di cerchio cosmetico. @@ -3320,28 +3320,22 @@ Seleziona solo una linea guida o un simbolo di saldatura. - - + SurfaceFinishSymbols SimboliFinituraSuperficiale - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + L'oggetto selezionato non è una vista di una parte, né una direttrice - + No Part View in Selection Nessuna vista parziale nella selezione - + No %1 in Selection Nessun %1 nella selezione @@ -3358,7 +3352,7 @@ No TechDraw Page - Nessuna pagina di TechDraw + Nessuna Pagina di TechDraw @@ -3400,7 +3394,7 @@ No Drawing Pages in document. - Nel documento non c'è nessuna pagina di disegno. + Nel documento non c'è nessuna Pagina di Disegno. @@ -3416,10 +3410,10 @@ Export Page As PDF - Esporta pagina in PDF + Esporta Pagina in PDF - + Document Name: Nome del documento: @@ -3434,19 +3428,19 @@ Esporta pagina in SVG - - + + Are you sure you want to continue? Sei sicuro di voler continuare? - + Show drawing Mostra disegno - + Toggle KeepUpdated Attiva o disattiva aggiornamento automatico @@ -3471,9 +3465,9 @@ Creatore di testi avanzato RTF - + Rich text editor Editor di testi avanzato @@ -3591,133 +3585,133 @@ Modifica la vista di dettaglio - + Edit %1 Edita %1 - + TechDraw Increase/Decrease Decimal TechDraw Incrementa/diminuisci posti decimali - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected Nessuna quota orizzontale selezionata - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected Nessuna quota verticale selezionata - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected Nessuna quota obliqua selezionata - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Crea quota concatenata orizzontale - + TechDraw Create Vertical Chain Dimension TechDraw Crea quota concatenata verticale - + TechDraw Create Oblique Chain Dimension TechDraw Crea quota concatenata obliqua - + TechDraw Create Horizontal Coord Dimension TechDraw Crea quota coordinata orizzontale - + TechDraw Create Vertical Coord Dimension TechDraw Crea quota coordinata verticale - + TechDraw Create Oblique Coord Dimension TechDraw Crea quota coordinata obliqua - + TechDraw Create Horizontal Chamfer Dimension Techdraw Crea quota orizzontale smusso - + TechDraw Create Vertical Chamfer Dimension TechDraw Crea quota verticale smusso - + TechDraw Create Arc Length Dimension TechDraw Crea quota di lunghezza arco - + TechDraw Customize Format Formato Personalizzazione TechDraw - + No subelements selected Nessun sottoelemento selezionato - + Selection is empty La selezione è vuota - + No object selected Nessun oggetto selezionato @@ -3740,7 +3734,7 @@ No edges in selection. - No edges in selection. + Nessun bordo nella selezione. @@ -3768,10 +3762,10 @@ thin: %2 graphic: %3 thick: %4 - %1 defines these line widths: - thin: %2 - graphic: %3 -thick: %4 + %1 definisce queste spessori di linea: + fine: %2 + media: %3 + grossa: %4 @@ -3852,40 +3846,40 @@ thick: %4 Create Cosmetic Circle - Create Cosmetic Circle + Crea cerchio cosmetico Edit Cosmetic Circle - Edit Cosmetic Circle + Modifica cerchio cosmetico Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Non è possibile eliminare questa linea guida perché essa ha un simbolo di saldatura che si romperebbe. - + You cannot delete this view because it has one or more dependent views that would become broken. Non puoi eliminare questa vista perché ha una o più viste dipendenti che diventerebbero orfani. - - - - + - - + + + + + Object dependencies Dipendenze dell'oggetto @@ -3910,7 +3904,7 @@ it has a weld symbol that would become broken. Non è possibile eliminare questa vista perché ha una linea guida che si romperebbe. - + The page is not empty, therefore the following referencing objects might be lost: La pagina non è vuota, quindi i seguenti @@ -4038,7 +4032,7 @@ it has a tile weld that would become broken. No direction set - No direction set + Nessuna direzione impostata @@ -4422,12 +4416,12 @@ quando si tratteggia una faccia con un modello PAT This checkbox controls whether or not to display a highlight around the detail area in the detail's source view. - This checkbox controls whether or not to display a highlight around the detail area in the detail's source view. + Questa casella di controllo controlla se mostrare o meno un' evidenziazione attorno all' area di dettaglio nella vista sorgente del dettaglio'. Detail Source Show Highlight - Detail Source Show Highlight + Mostra evidenziazione nella sorgente dettaglio @@ -4437,7 +4431,7 @@ quando si tratteggia una faccia con un modello PAT Standard to be used to draw non-continuous lines. - Standard to be used to draw non-continuous lines. + Standard da utilizzare per disegnare le linee non continue. @@ -4539,7 +4533,7 @@ quando si tratteggia una faccia con un modello PAT This checkbox controls whether or not to display the outline around a detail view. - This checkbox controls whether or not to display the outline around a detail view. + Questa casella controlla se visualizzare o meno il contorno attorno a una vista di dettaglio. @@ -4637,15 +4631,15 @@ quando si tratteggia una faccia con un modello PAT 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. - Shape of line end caps. The default (round) should almost -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. + Forma del fine linea. Il valore predefinito (arrotondato) dovrebbe essere quasi +sempre la scelta giusta. Le forme piatta o quadrata sono utili +se hai intenzione di utilizzare un disegno come guida di taglio 1:1. Round - Round + Arrotondato @@ -4863,7 +4857,7 @@ if you are planning to use a drawing as a 1:1 cutting guide. Template Underline - Template Underline + Modello sottolineato @@ -5104,7 +5098,7 @@ Questo può rallentare i tempi di risposta. Keep Page Up To Date - Mantieni aggiornate le pagine + Mantieni aggiornate le Pagine @@ -5198,7 +5192,7 @@ I cambiamenti non hanno effetto sulle quote esistenti. Section Line Convention - Section Line Convention + Convenzione linea di sezione @@ -5313,12 +5307,12 @@ I cambiamenti non hanno effetto sulle quote esistenti. If enabled, clicking without Ctrl does not clear existing vertex/edge/face selection - If enabled, clicking without Ctrl does not clear existing vertex/edge/face selection + Se abilitato, fare clic senza Ctrl non cancella la selezione corrente del vertex/bordo/faccia Enable Multiselection Mode - Enable Multiselection Mode + Abilita Modalità Multiselezione @@ -5450,7 +5444,7 @@ Fast, but result is a collection of short straight lines. Page Scale - Scala della pagina + Scala della Pagina @@ -5573,7 +5567,7 @@ Fast, but result is a collection of short straight lines. Print All Pages - Stampa tutte le pagine + Stampa tutte le Pagine @@ -5620,7 +5614,7 @@ Do you want to continue? Save PDF file - Save PDF file + Salva file PDF @@ -6317,7 +6311,7 @@ Do you want to continue? Least square geometry element - Least square geometry element + Elemento geometrico dei minimi quadrati @@ -7118,7 +7112,7 @@ Si possono scegliere ulteriori punti per ottenere dei segmenti di linea. Continuous - Continuous + Continuo @@ -7231,7 +7225,7 @@ Si possono scegliere ulteriori punti per ottenere dei segmenti di linea. The use of the Qt line style is being phased out. Please use a standard line style instead. - The use of the Qt line style is being phased out. Please use a standard line style instead. + L'uso dello stile della linea Qt è in fase di eliminazione. Si prega di utilizzare uno stile di linea standard. @@ -7412,8 +7406,8 @@ Si possono scegliere ulteriori punti per ottenere dei segmenti di linea. - - + + Top Dall'alto @@ -7424,8 +7418,8 @@ Si possono scegliere ulteriori punti per ottenere dei segmenti di linea. - - + + Left Da sinistra @@ -7436,14 +7430,14 @@ Si possono scegliere ulteriori punti per ottenere dei segmenti di linea. - - + + Right Da destra - + Rear Da dietro @@ -7454,8 +7448,8 @@ Si possono scegliere ulteriori punti per ottenere dei segmenti di linea. - - + + Bottom Dal basso @@ -7507,31 +7501,31 @@ usando la spaziatura X/Y specificata Spazio in verticale tra il bordo delle proiezioni - - + + FrontTopLeft - FrontTopLeft + FronteAltoSinistra - - + + FrontBottomRight FronteSottoDestra - - + + FrontTopRight FronteSopraDestra - - + + FrontBottomLeft FronteSottoSinistra - + Front Di fronte @@ -7712,7 +7706,7 @@ usando la spaziatura X/Y specificata Continuous - Continuous + Continuo @@ -8171,12 +8165,12 @@ usando la spaziatura X/Y specificata TechDraw_ExtensionremovePrefixChar - + Remove Prefix Rimuovi Prefisso - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Rimuove i simboli prefissi all'inizio del testo della quota:<br>- Selezionare una o più quote<br>- Fare clic su questo strumento @@ -8332,7 +8326,7 @@ usando la spaziatura X/Y specificata TechDraw Stacking - TechDraw Stacking + Accatastamento TechDraw @@ -8385,12 +8379,12 @@ usando la spaziatura X/Y specificata Move a View to a new Page - Sposta una vista in una nuova pagina + Sposta una Vista in una nuova Pagina Move View to a different Page - Sposta la vista in una pagina diversa + Sposta la Vista in una Pagina diversa @@ -8429,12 +8423,12 @@ usando la spaziatura X/Y specificata Share a View on a second Page - Condividi una vista su una seconda pagina + Condividi una Vista su una seconda Pagina Share View with another Page - Condividi la vista con un'altra pagina + Condividi la Vista con un'altra Pagina @@ -8536,7 +8530,7 @@ usando la spaziatura X/Y specificata <html><head/><body><p>Double click to edit a line. New lines are added at the current location in the list.</p></body></html> - <html><head/><body><p>Double click to edit a line. New lines are added at the current location in the list.</p></body></html> + <html><head/><body><p>Fare doppio clic per modificare una linea. Le nuove linee vengono aggiunte nella posizione corrente dell'elenco.</p></corpo></html> @@ -8584,11 +8578,11 @@ usando la spaziatura X/Y specificata - select second edge to define the direction of the extension lines<br> - optional: select two more vertexes which define the measurement instead of the length<br> of the first selected edge - Create an axonometric length dimension<br> - - select first edge to define direction and length of the dimension line<br> - - select second edge to define the direction of the extension lines<br> - - optional: select two more vertexes which define the measurement instead of the length<br> - of the first selected edge + Crea una quotatura assonometrica di lunghezza<br> + - seleziona il primo bordo per definire la direzione e la lunghezza della linea di quota<br> + - seleziona il secondo bordo per definire la direzione delle linee di estensione<br> + - opzionale: seleziona altri due vertici che definiscono la misura invece della lunghezza<br> + del primo bordo selezionato @@ -8596,7 +8590,7 @@ usando la spaziatura X/Y specificata Add hole or shaft fit - Add hole or shaft fit + Aggiungi accoppiamento foro/albero @@ -8614,12 +8608,12 @@ usando la spaziatura X/Y specificata Add a hole or shaft fit to a dimension - Add a hole or shaft fit to a dimension + Aggiungi un accoppiamento foro/albero a una quota Please select one length dimension or diameter dimension and retry - Please select one length dimension or diameter dimension and retry + Seleziona una quota di lunghezza o una quota diametro e riprova @@ -8639,7 +8633,7 @@ usando la spaziatura X/Y specificata Hole / Shaft Fit ISO 286 - Hole / Shaft Fit ISO 286 + Accoppiamento Foro / Albero secondo ISO 286 @@ -8647,12 +8641,12 @@ usando la spaziatura X/Y specificata Filled Arrow - Filled Arrow + Freccia piena Open Arrow - Open Arrow + Freccia aperta @@ -8667,17 +8661,17 @@ usando la spaziatura X/Y specificata Open Circle - Open Circle + Cerchio aperto Fork - Fork + Biforcazione Filled Triangle - Filled Triangle + Triangolo pieno @@ -8720,7 +8714,7 @@ usando la spaziatura X/Y specificata FrontTopLeft - FrontTopLeft + FronteAltoSinistra @@ -8920,7 +8914,7 @@ c'è una finestra di dialogo per le attività aperte. Treat the center point as a 2d point within the parent View. Z coordinate is ignored. - Treat the center point as a 2d point within the parent View. Z coordinate is ignored. + Tratta il punto centrale come un punto 2d all'interno della vista principale. La coordinata Z viene ignorata. @@ -8930,7 +8924,7 @@ c'è una finestra di dialogo per le attività aperte. Treat the center point as a 3d point and project it onto the parent View. - Treat the center point as a 3d point and project it onto the parent View. + Tratta il punto centrale come un punto 3d e lo proietta sulla vista principale. @@ -8965,22 +8959,22 @@ c'è una finestra di dialogo per le attività aperte. Start Angle: - Start Angle: + Angolo iniziale: End angle (conventional) of arc in degrees. - End angle (conventional) of arc in degrees. + Angolo finale (convenzionale) di arco in gradi. End Angle: - End Angle: + Angolo finale: Start angle (conventional) of arc in degrees. - Start angle (conventional) of arc in degrees. + Angolo iniziale (convenzionale) di arco in gradi. @@ -9011,12 +9005,12 @@ c'è una finestra di dialogo per le attività aperte. Calculate the arc length of selected edges - Calculate the arc length of selected edges + Calcola la lunghezza dell'arco dei bordi selezionati Select several edges<br> - click this tool - Select several edges<br> - click this tool + Seleziona diversi bordi<br> - fai clic su questo strumento @@ -9039,17 +9033,17 @@ c'è una finestra di dialogo per le attività aperte. X-Offset - X-Offset + Scostamento X Y-Offset - Y-Offset + Scostamento Y Enter X offset value - Enter X offset value + Inserisci il valore di scostamento X @@ -9057,7 +9051,7 @@ c'è una finestra di dialogo per le attività aperte. Add an offset vertex - Add an offset vertex + Aggiungi uno scostamento vertice @@ -9065,15 +9059,15 @@ c'è una finestra di dialogo per le attività aperte. - select one vertex<br> - start the tool<br> - enter offset values in panel - Create an offset vertex<br> - - select one vertex<br> - - start the tool<br> - - enter offset values in panel + Crea uno scostamento vertice<br> + - seleziona un vertice<br> + - lancia lo strumento<br> + - inserisci i valori di scostamento nel pannello Add offset vertex - Add offset vertex + Aggiungi scostamento vertice @@ -9081,17 +9075,17 @@ c'è una finestra di dialogo per le attività aperte. Update template fields - Update template fields + Aggiorna campi modello Use document info to populate the template fields - Use document info to populate the template fields + Usa le informazioni del documento per popolare i campi del modello Fill Template Fields in - Fill Template Fields in + Compila i campi del modello @@ -9109,22 +9103,22 @@ c'è una finestra di dialogo per le attività aperte. file does not contain the correct field names therefore exiting - file does not contain the correct field names therefore exiting + il file non contiene i nomi dei campi corretti perciò la procedura viene interrotta file has not been found therefore exiting - file has not been found therefore exiting + il file non è stato trovato perciò la procedura viene interrotta View or Projection Group missing - View or Projection Group missing + Vista o gruppo di proiezione mancante Corresponding template fields missing - Corresponding template fields missing + Campi di modello corrispondenti mancanti @@ -9132,13 +9126,13 @@ c'è una finestra di dialogo per le attività aperte. No vertex selected - No vertex selected + Nessun vertice selezionato Select at least - Select at least + Seleziona almeno @@ -9166,7 +9160,7 @@ c'è una finestra di dialogo per le attività aperte. Continuous - Continuous + Continua @@ -9176,22 +9170,22 @@ c'è una finestra di dialogo per le attività aperte. DashedSpaced - DashedSpaced + Tratteggiata LongDashedDotted - LongDashedDotted + TrattoLungoPunto LongDashedDoubleDotted - LongDashedDoubleDotted + TrattoLungoDoppioPunto LongDashedTripleDotted - LongDashedTripleDotted + TrattoLungoTriploPunto @@ -9201,42 +9195,42 @@ c'è una finestra di dialogo per le attività aperte. LongDashShortDash - LongDashShortDash + TrattoLungoTrattoCorto LongDashDoubleShortDash - LongDashDoubleShortDash + TrattoLungoDoppioTrattoCorto DashedDotted - DashedDotted + TrattoPunto DoubleDashedDotted - DoubleDashedDotted + DoppioTrattoPunteggiata DashedDoubleDotted - DashedDoubleDotted + DoppioTrattoPunto DoubleDashedDoubleDotted - DoubleDashedDoubleDotted + DoppioTrattoDoppiaPunto DashedTripleDotted - DashedTripleDotted + TriploTrattoPunto DoubleDashedTripleDotted - DoubleDashedTripleDotted + DoppioTrattoTriploPunto @@ -9249,7 +9243,7 @@ c'è una finestra di dialogo per le attività aperte. Continuous - Continuous + Continua @@ -9259,12 +9253,12 @@ c'è una finestra di dialogo per le attività aperte. LongDashDashed - LongDashDashed + TrattoLungoPunto LongDashDoubleDashed - LongDashDoubleDashed + TrattoLungoDoppioPunto @@ -9312,37 +9306,37 @@ c'è una finestra di dialogo per le attività aperte. Leader - Leader + Direttrice CuttingPlane - CuttingPlane + Piano di taglio ViewingPlane - ViewingPlane + Piano di vista OtherPlane - OtherPlane + AltroPiano Break1 - Break1 + Interruzione1 Break2 - Break2 + Interruzione2 Phantom - Phantom + Fantasma @@ -9381,4 +9375,24 @@ c'è una finestra di dialogo per le attività aperte. Clicca questo strumento + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Inserisci prefisso 'nx' + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Inserisci il conteggio delle funzionalità ripetute all'inizio del testo della quota:<br>- Seleziona una o più quote<br>- Clicca su questo strumento + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.ts index 9fea9f32df..6b07509fa5 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions カスケード水平寸法 - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 水平寸法を均等間隔に配置します:<br>- カスケード間隔を指定 (オプション)<br>- 2つ以上の水平寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions カスケード水平寸法 - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 水平寸法を均等間隔に配置します:<br>- カスケード間隔を指定 (オプション)<br>- 2つ以上の水平寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions カスケード斜め寸法 - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool 斜め寸法を均等間隔に配置します:<br>- カスケード間隔を指定 (オプション)<br>- 2つ以上の平行な斜め寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions カスケード垂直寸法 - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool 垂直寸法を均等間隔に配置します:<br>- カスケード間隔を指定 (オプション)<br>- 2つ以上の垂直寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension 水平方向の面取り寸法を作成 - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 面取りの水平方向のサイズと角度の寸法を作成:<br>- 2つの頂点を選択<br>- このツールをクリック @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions 水平方向の連鎖寸法を作成 - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool 一列の整列した水平寸法を作成します:<br>- 3つ以上の頂点を選択<br>- このツールをクリック @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions 水平方向の座標寸法を作成 - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 同じ基準線から始まる複数の等間隔水平寸法を作成:<br>- カスケード間隔を指定 (オプション)<br>- 3つ以上の頂点を選択<br>- 最初の2つの頂点の選択順序が基準線の位置を決定します<br>- このツールをクリック @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions 水平方向の連鎖寸法を作成 - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool 一列の整列した水平寸法を作成します:<br>- 3つ以上の頂点を選択<br>- このツールをクリック @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension 水平方向の面取り寸法を作成 - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 面取りの水平方向のサイズと角度の寸法を作成:<br>- 2つの頂点を選択<br>- このツールをクリック @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions 水平方向の座標寸法を作成 - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 同じ基準線から始まる複数の等間隔水平寸法を作成:<br>- カスケード間隔を指定 (オプション)<br>- 3つ以上の頂点を選択<br>- 最初の2つの頂点の選択順序が基準線の位置を決定します<br>- このツールをクリック @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension 円弧の長さ寸法を作成 - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool 円弧の長さの寸法を作成:<br>- 1つの円弧を選択<br>- このツールをクリック @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions 斜め方向の連鎖寸法を作成 - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool 一列の整列した斜め寸法を作成します:<br>- 3つ以上の頂点を選択<br>- 最初の2つの頂点が方向を定義します。<br>- このツールをクリック @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions 斜め方向の座標寸法を作成 - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool 同じ基準線から始まる複数の等間隔斜め寸法を作成:<br>- カスケード間隔を指定 (オプション)<br>- 3つ以上の頂点を選択<br>- 最初の2つの頂点の選択順序が基準線の位置を決定します<br>- 最初の2つの頂点は方向も定義します<br>- このツールをクリック @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions 垂直方向の連鎖寸法を作成 - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool 一列の整列した垂直寸法を作成します:<br>- 3つ以上の頂点を選択<br>- このツールをクリック @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension 垂直方向の面取り寸法を作成 - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 面取りの垂直方向のサイズと角度の寸法を作成:<br>- 2つの頂点を選択<br>- このツールをクリック @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions 垂直方向の座標寸法を作成 - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 同じ基準線から始まる複数の等間隔垂直寸法を作成:<br>- カスケード間隔を指定 (オプション)<br>- 3つ以上の頂点を選択<br>- 最初の2つの頂点の選択順序が基準線の位置を決定します<br>- このツールをクリック @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label フォーマット・ラベルをカスタマイズ - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons 寸法またはバルーンを選択してください<br> - このツールをクリック<br> - キーボードおよび/または特殊ボタンを使用してフォーマットフィールドを編集 @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places 小数点以下の桁数を減らす - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの小数点以下の桁数を減らします:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places 小数点以下の桁数を増やす - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの小数点以下の桁数を増やします:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places 小数点以下の桁数を増やす - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの小数点以下の桁数を増やします:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix '⌀' プレフィックスを挿入 - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの先頭にプレフィックス記号 '⌀' を挿入:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix '⌀' プレフィックスを挿入 - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの先頭にプレフィックス記号 '⌀' を挿入:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix '□' プレフィックスを挿入 - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの先頭にプレフィックス記号 '□' を挿入:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions 水平方向の連鎖寸法を位置調整 - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 連鎖寸法を作成するために水平寸法を揃えます:<br>- 2つ以上の水平寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions 水平方向の連鎖寸法を位置調整 - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 連鎖寸法を作成するために水平寸法を揃えます:<br>- 2つ以上の水平寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions 斜め方向の連鎖寸法を位置調整 - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool 連鎖寸法を作成するために斜め寸法を揃えます:<br>- 2つ以上の平行な斜め寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions 垂直方向の連鎖寸法を位置調整 - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool 連鎖寸法を作成するために垂直寸法を揃えます:<br>- 2つ以上の垂直寸法を選択<br>- 最初の寸法で位置が定義されます。<br>- このツールをクリック @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix プレフィックスを削除 - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの先頭のプレフィックス記号を削除:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -1996,8 +1996,8 @@ スプレッドシートビューを作成 + - Save page to dxf ページをDXFに保存 @@ -2058,7 +2058,7 @@ 寸法をドラッグ - + Create Balloon 吹き出しを作成 @@ -2073,8 +2073,8 @@ 中心線を作成 - + Create Cosmetic Line 表示用の線を作成 @@ -2150,102 +2150,102 @@ 表示用の頂点を追加 - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix プレフィックスを挿入 - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix プレフィックスを削除 - + Increase/Decrease Decimal 小数点以下の桁数を増加/減少 - + Pos Horiz Chain Dim 水平連鎖寸法を配置 - + Pos Vert Chain Dim 垂直連鎖寸法を配置 - + Pos Oblique Chain Dim 斜め連鎖寸法を配置 - + Cascade Horiz Dim カスケード水平寸法 - + Cascade Vert Dim カスケード垂直寸法 - + Cascade Oblique Dim カスケード斜め寸法 - + Create Horiz Chain Dim 水平連鎖寸法を作成 - + Create Vert Chain Dim 垂直連鎖寸法を作成 - + Create Oblique Chain Dim 斜め連鎖寸法を作成 - + Create Horiz Coord Dim 水平座標寸法を作成 - + Create Vert Coord Dim 垂直座標寸法を作成 - + Create Oblique Coord Dim 斜め座標寸法を作成 - + Create Horiz Chamfer Dim 水平面取り寸法を作成 - + Create Vert Chamfer Dim 垂直面取り寸法を作成 - + Create Arc Length Dim 円弧の長さ寸法を作成 @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection 誤った選択 @@ -2744,10 +2744,9 @@ プロファイルオブジェクトが選択されていません。 - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection 誤った選択です。 - + Select an object first 最初にオブジェクトを選択してください - + Too many objects selected 選択されているオブジェクトが多すぎます。 - + Create a page first. 最初にページを作成してください - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. パートのビューが選択されていません。 @@ -2906,6 +2906,8 @@ 選択されたエッジはBスプラインです。半径は概算です。続けますか? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection 誤った選択です。 @@ -3058,9 +3058,6 @@ 2つの点オブジェクトと1つのビューを選択 (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress 実行中のタスク - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. アクテイブなタスクタイアログを閉じて再度実行してください。 @@ -3183,8 +3183,8 @@ - - + + Wrong Selection 間違った選択 @@ -3318,28 +3318,22 @@ 引き出し線または溶接シンボルを一つだけ選択して下さい。 - - + SurfaceFinishSymbols 表面仕上げ記号 - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection パートビューが選択されていません - + No %1 in Selection %1 が選択されていません。 @@ -3417,7 +3411,7 @@ ページをPDFとしてエクスポート - + Document Name: ドキュメント名: @@ -3432,19 +3426,19 @@ ページをSVGとしてエクスポート - - + + Are you sure you want to continue? 本当に続行しますか? - + Show drawing 図面を表示します - + Toggle KeepUpdated 自動更新を切り替え @@ -3469,9 +3463,9 @@ リッチテキストクリエイター - + Rich text editor リッチテキストエディタ @@ -3589,133 +3583,133 @@ 詳細ビューを編集 - + Edit %1 %1を編集 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw 水平連鎖寸法の配置 - - + + No horizontal dimensions selected 水平寸法が選択されていません。 - - + + TechDraw PosVertChainDimension TechDraw 垂直連鎖寸法の配置 - - + + No vertical dimensions selected 垂直寸法が選択されていません。 - - + + TechDraw PosObliqueChainDimension TechDraw 斜め連鎖寸法の配置 - - + + No oblique dimensions selected 斜め寸法が選択されていません。 - - + + TechDraw CascadeHorizDimension TechDraw カスケード水平寸法 - - + + TechDraw CascadeVertDimension TechDraw カスケード垂直寸法 - - + + TechDraw CascadeObliqueDimension TechDraw カスケード斜め寸法 - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected サブ要素が選択されていません。 - + Selection is empty 選択されていません - + No object selected オブジェクトが選択されていません @@ -3861,28 +3855,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. 壊れてしまう溶接記号があるため、この引き出し線を削除することはできません。 - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies オブジェクトの依存関係 @@ -3907,7 +3901,7 @@ it has a weld symbol that would become broken. 壊れてしまう引き出し線があるため、このビューを削除することはできません。 - + The page is not empty, therefore the following referencing objects might be lost: ページが空ではないため、以下の参照オブジェクトが失われる可能性があります: @@ -7400,8 +7394,8 @@ You can pick further points to get line segments. - - + + Top 上面図 @@ -7412,8 +7406,8 @@ You can pick further points to get line segments. - - + + Left 左面図 @@ -7424,14 +7418,14 @@ You can pick further points to get line segments. - - + + Right 右面図 - + Rear 背面図 @@ -7442,8 +7436,8 @@ You can pick further points to get line segments. - - + + Bottom 底面 @@ -7494,31 +7488,31 @@ using the given X/Y Spacing 投影境界間の垂直方向の間隔 - - + + FrontTopLeft 前面 左上 - - + + FrontBottomRight 前面 右下 - - + + FrontTopRight 前面 右上 - - + + FrontBottomLeft 前面 左下 - + Front 正面図 @@ -8158,12 +8152,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix プレフィックスを削除 - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 寸法テキストの先頭のプレフィックス記号を削除:<br>- 1つ以上の寸法を選択<br>- このツールをクリック @@ -9367,4 +9361,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ka.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ka.ts index 06f1689188..c711534e3d 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ka.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ka.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw ტექნიკური ნახაზი - + Cascade Horizontal Dimensions კასკადის ჰორიზონტალური ზომები - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw ტექნიკური ნახაზი - - + + Cascade Horizontal Dimensions კასკადის ჰორიზონტალური ზომები - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw ტექნიკური ნახაზი - - + + Cascade Oblique Dimensions კასკადის ირიბი ზომები - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw ტექნიკური ნახაზი - - + + Cascade Vertical Dimensions კასკადის ვერტიკალური ზომები - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw ტექნიკური ნახაზი - + Create Horizontal Chamfer Dimension კუთხის ჰორიზონტალური ნაზოლის ზომის შექმნა - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool შექმენით ჰორიზონტალური ზომისა და კუთხის განზომილებები კუთხის ნაზოლისთვის:<br>- აირჩიეთ ორი წვერო<br>- ამ ხელსაწყოზე დააწკაპუნეთ @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw ტექნიკური ნახაზი - + Create Horizontal Chain Dimensions ჯაჭვის ჰორიზონტალური ზომის შექმნა - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool შექმენით ჰორიზონტალური განზომილებების გასწორებული მიმდევრობა:<br>- აირჩიეთ სამი ან მეტი წვერო<br>- დააწკაპუნეთ ამ ხელსაწყოზე @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw ტექნიკური ნახაზი - + Create Horizontal Coordinate Dimensions ჰორიზონტალური კოორდინატების ზომის შექმნა - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Horizontal Chain Dimensions ჯაჭვის ჰორიზონტალური ზომის შექმნა - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool შექმენით ჰორიზონტალური განზომილებების გასწორებული მიმდევრობა:<br>- აირჩიეთ სამი ან მეტი წვერო<br>- დააწკაპუნეთ ამ ხელსაწყოზე @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Horizontal Chamfer Dimension კუთხის ჰორიზონტალური ნაზოლის ზომის შექმნა - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool შექმენით ჰორიზონტალური ზომისა და კუთხის განზომილებები კუთხის ნაზოლისთვის:<br>- აირჩიეთ ორი წვერო<br>- ამ ხელსაწყოზე დააწკაპუნეთ @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Horizontal Coordinate Dimensions ჰორიზონტალური კოორდინატების ზომის შექმნა - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw ტექნიკური ნახაზი - + Create Arc Length Dimension რკალის სიგრძის ზომის შექმნა - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool რკალის სიგრძის განზომილების შექმნა:<br>-აირჩიეთ ერთი რკალი<br>- დააწკაპუნეთ ამ ხელსაწყოზე @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Oblique Chain Dimensions ჯაჭვის ირიბი ზომის შექმნა - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Oblique Coordinate Dimensions კოორდინატების ირიბი ზომების შექმნა - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Vertical Chain Dimensions ჯაჭვის ვერტიკალური ზომის შექმნა - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool შექმენით ვერტიკალური განზომილებების გასწორებული მიმდევრობა:<br>- აირჩიეთ სამი ან მეტი წვერო<br>- დააწკაპუნეთ ამ ხელსაწყოზე @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Vertical Chamfer Dimension კუთხის ვერტიკალური ნაზოლის ზომის შექმნა - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool შექმენით შვეული ზომისა და კუთხის განზომილებები კუთხის ნაზოლისთვის:<br>- აირჩიეთ ორი წვერო<br>- ამ ხელსაწყოზე დააწკაპუნეთ @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw ტექნიკური ნახაზი - - + + Create Vertical Coordinate Dimensions ვერტიკალური კოორდინატების ზომის შექმნა - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw ტექნიკური ნახაზი - + Customize Format Label ფორმატის ჭდის მორგება - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw ტექნიკური ნახაზი - - + + Decrease Decimal Places ათწილადი ადგილების შემცირება - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw ტექნიკური ნახაზი - - + + Increase Decimal Places ათწილადი ადგილების გაზრდა - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw ტექნიკური ნახაზი - + Increase Decimal Places ათწილადი ადგილების გაზრდა - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw ტექნიკური ნახაზი - - + + Insert '⌀' Prefix პრეფიქსის '⌀' ჩასმა - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool განზომილების ტექსტის დასაწყისში '⌀' სიმბოლოს დასმა.<br>- აირჩიეთ ერთი ან მეტი განზომილება<br>- დააწკაპუნეთ ამ ხელსაწყოზე @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw ტექნიკური ნახაზი - + Insert '⌀' Prefix პრეფიქსის '⌀' ჩასმა - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool განზომილების ტექსტის დასაწყისში '⌀' სიმბოლოს დასმა.<br>- აირჩიეთ ერთი ან მეტი განზომილება<br>- დააწკაპუნეთ ამ ხელსაწყოზე @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw ტექნიკური ნახაზი - - + + Insert '□' Prefix პრეფიქსის '□' ჩასმა - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool განზომილების ტექსტის დასაწყისში '□' სიმბოლოს დასმა.<br>- აირჩიეთ ერთი ან მეტი განზომილება<br>- დააწკაპუნეთ ამ ხელსაწყოზე @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw ტექნიკური ნახაზი - + Position Horizontal Chain Dimensions ჯაჭვის ჰორიზონტალური ზომის მოთავსება - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw ტექნიკური ნახაზი - - + + Position Horizontal Chain Dimensions ჯაჭვის ჰორიზონტალური ზომის მოთავსება - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw ტექნიკური ნახაზი - - + + Position Oblique Chain Dimensions ჯაჭვის ირიბი ზომის მოთავსება - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw ტექნიკური ნახაზი - - + + Position Vertical Chain Dimensions ჯაჭვის ვერტიკალური ზომის მოთავსება - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw ტექნიკური ნახაზი - + Remove Prefix პრეფიქსის წაშლა - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ ელცხრილის შექმნა + - Save page to dxf გვერდის DXF-ში შენახვა @@ -2058,7 +2058,7 @@ ზომის გადათრევა - + Create Balloon სქოლიოს შექმნა @@ -2073,8 +2073,8 @@ ცენტრალურ ხაზის შექმნა - + Create Cosmetic Line დამხმარე ხაზის შექმნა @@ -2150,102 +2150,102 @@ დამხმარე წვეროს დამატება - + TechDraw Insert Prefix ტექნიკური ნახაზი პრეფიქსის ჩასმა - + Insert Prefix პრეფიქსის ჩასმა - + TechDraw Remove Prefix ტექნიკური ნახაზი პრეფიქსის წაშლა - + Remove Prefix პრეფიქსის წაშლა - + Increase/Decrease Decimal მეათედების გაზრდა/შემცირდება - + Pos Horiz Chain Dim პოზ. ჰორიზ. ჯაჭვის ზომა - + Pos Vert Chain Dim პოზ. ვერტ. ჯაჭვის ზომა - + Pos Oblique Chain Dim პოზ. ირიბი ჯაჭვის ზომა - + Cascade Horiz Dim კასკადის ჰორიზ. ზომა - + Cascade Vert Dim კასკადის ვერტ. ზომა - + Cascade Oblique Dim კასკადის ირიბი ზომა - + Create Horiz Chain Dim ჰორიზ. ჯაჭვის ზომის შექმნა - + Create Vert Chain Dim ვერტ. ჯაჭვის ზომის შექმნა - + Create Oblique Chain Dim ჯაჭვის ირიბი ზომის სექმნა - + Create Horiz Coord Dim ჰორიზ. კოორდ. ზომის შექმნა - + Create Vert Coord Dim ვერტ. კოორდ. ზომის შექმნა - + Create Oblique Coord Dim ირიბი კოორდ. ზომის შექმნა - + Create Horiz Chamfer Dim ჰორიზ. კუთხის ნაზოლის ზომის შექმნა - + Create Vert Chamfer Dim ვერტ. კუთხის ნაზოლის ზომის შექმნა - + Create Arc Length Dim რკალის სიგრძის ზომის შექმნა @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection არასწორი მონიშნული @@ -2744,10 +2744,9 @@ მონიშნულში პროფილის ობექტი ვერ ვიპოვე - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection არასწორი არჩევანი - + Select an object first ჯერ აირჩიეთ ობიექტი - + Too many objects selected მონიშნულია მეტისმეტად ბევრი ობიექტი - + Create a page first. ჯერ შექმენით გვერდი. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. მონიშნულში არ არსებობს ნაწილის ხედი. @@ -2906,6 +2906,8 @@ მონიშნული წიბო B-სპლაინს წარმოადგენს. რადიუსი მხოლოდ დაახლოებითი იქნება. გავაგრძელო? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection არასწორი არჩევანი @@ -3058,9 +3058,6 @@ არჩიეთ 2 წერტილოვანი ობიექტი და 1 ხედი. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress მიმდინარეობს ამოცანის შესრულება - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. დახურეთ აქტიური ამოცანის ფანჯარა და თავიდან სცადეთ. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection არასწორი არჩევანი @@ -3318,28 +3318,22 @@ აირჩიეთ ზუსტად ერთი გატანადი ხაზი ან ერთი შედუღების ნიშანი. - - + SurfaceFinishSymbols ზედაპირისდასრულებისსიმბოლოები - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + მონიშნული ობიექტი ნაწილის ხედი ან გატანადი ხაზი არაა - + No Part View in Selection მონიშნულში ნაწილის ხედი არ არსებობს - + No %1 in Selection მონიშნულში %1 არ არსებობს @@ -3417,7 +3411,7 @@ გვერდის PDF ფაილად გატანა - + Document Name: დოკუმენტის სახელი: @@ -3432,19 +3426,19 @@ გვერდის SVG ფაილად გატანა - - + + Are you sure you want to continue? დარწმუნებული ბრძანდებით, რომ გნებავთ გააგრძელოთ? - + Show drawing ნახაზის ჩვენება - + Toggle KeepUpdated განახლების ჩართ/გამორთ @@ -3469,9 +3463,9 @@ ფორმატირებული ტექსტის შემქმნელი - + Rich text editor ტექსტის ფორმატირების რედაქტორი @@ -3589,133 +3583,133 @@ ნაწილის ხედის შეცვლა - + Edit %1 %1-ის ჩასწორება - + TechDraw Increase/Decrease Decimal ტექნიკური ნახაზი მეათედების გაზრდა/შემცირდება - - + + TechDraw PosHorizChainDimension ტექნიკური ნახაზი PosHorizChainDimension - - + + No horizontal dimensions selected ჰორიზონტალური ზომები მონიშნული არაა - - + + TechDraw PosVertChainDimension ტექნიკური ნახაზი PosVertChainDimension - - + + No vertical dimensions selected ვერტიკალური ზომები მონიშნული არაა - - + + TechDraw PosObliqueChainDimension ტექნიკური ნახაზი PosObliqueChainDimension - - + + No oblique dimensions selected დახრილი ზომები მითითებული არაა - - + + TechDraw CascadeHorizDimension ტექნიკური ნახაზი CascadeHorizDimension - - + + TechDraw CascadeVertDimension ტექნიკური ნახაზი CascadeVertDimension - - + + TechDraw CascadeObliqueDimension ტექნიკური ნახაზი CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension ტექნიკური ნახაზი ჰორიზონტალური ჯაჭვის ზომის შექმნა - + TechDraw Create Vertical Chain Dimension ტექნიკური ნახაზი ვერტიკალური ჯაჭვის ზომის შექმნა - + TechDraw Create Oblique Chain Dimension ტექნიკური ნახაზი ჯაჭვის ირიბი ზომის შექმნა - + TechDraw Create Horizontal Coord Dimension ტექნიკური ნახაზი ჰორიზონტალური კოორდინატული ზომის შექმნა - + TechDraw Create Vertical Coord Dimension ტექნიკური ნახაზი ვერტიკალური კოორდინატული ზომის შექმნა - + TechDraw Create Oblique Coord Dimension ტექნიკური ნახაზი ირიბი კოორდინატული ზომის შექმნა - + TechDraw Create Horizontal Chamfer Dimension ტექნიკური ნახაზი ჰორიზონტალური კუთხის ნაზოლის ზომის შექმნა - + TechDraw Create Vertical Chamfer Dimension ტექნიკური ნახაზი ვერტიკალური კუთხის ნაზოლის ზომის შექმნა - + TechDraw Create Arc Length Dimension ტექნიკური ნახაზი რკალის სიგრძის ზომის შექმნა - + TechDraw Customize Format ტექნიკური ნახაზი ფორმატის მორგება - + No subelements selected ქვეელემენტები არჩეული არაა - + Selection is empty მონიშნული ცარიელია - + No object selected ობიექტი მონიშნული არაა @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. თქვენ არ შეგიძლიათ ამ გატანადი ხაზის წაშლა იმიტომ, რომ მას აქვს შედუღების ნიშანი, რომელიც გაფუჭდება. - + You cannot delete this view because it has one or more dependent views that would become broken. თქვენ არ შეგიძლიათ ამ ხედის წაშლა იმიტომ, რომ მას გააჩნია ერთი ან მეტი დამოკიდებული ხედი, რომელიც გაფუჭდებოდა. - - - - + - - + + + + + Object dependencies ობიექტის დამოკიდებულებები @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. თქვენ არ შეგიძლიათ ამ ხედის წაშლა იმიტომ, რომ მას გააჩნია გატანადი ხაზი, რომელიც გაფუჭდებოდა. - + The page is not empty, therefore the following referencing objects might be lost: გვერდი ცარიელი არ არის, ამიტომ @@ -7410,8 +7404,8 @@ You can pick further points to get line segments. - - + + Top თავზე @@ -7422,8 +7416,8 @@ You can pick further points to get line segments. - - + + Left მარცხენა @@ -7434,14 +7428,14 @@ You can pick further points to get line segments. - - + + Right მარჯვენა - + Rear უკანა @@ -7452,8 +7446,8 @@ You can pick further points to get line segments. - - + + Bottom ქვემოთ @@ -7505,31 +7499,31 @@ using the given X/Y Spacing ვერტიკალური სივრცე პროექციების საზღვრებს შორის - - + + FrontTopLeft წინაზედამარცხენა - - + + FrontBottomRight წინაქვედამარჯვენა - - + + FrontTopRight წინაზედამარჯვენა - - + + FrontBottomLeft წინაქვედამარცხენა - + Front წინ @@ -8169,12 +8163,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix პრეფიქსის წაშლა - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9379,4 +9373,24 @@ there is an open task dialog. დააწკაპუნეთ ამ ხელსაწყოზე + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + ტექნიკური ნახაზი + + + + + Insert 'n×' Prefix + 'n×' პრეფიქსის ჩასმა + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + გამეორებული თვისების რაოდენობის ჩასმა განზომილების ტექსტის დასაწყისში: <br>- არჩიეთ ერთი ან მეტი განზომილება<br>- დააწკაპუნეთ ამ ხელსაწყოზე + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.ts index 6457d74ad6..6e19dffcf5 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 가로 치수를 동일한 간격으로:<br>- 줄 간격 입력 (선택사항)<br>- 둘 이상의 가로 치수 선택<br>- 첫 번째 치수는 위치를 정의<br>- 이 도구를 클릭하세요. @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions 가로 치수 균등배치 - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 가로 치수를 동일한 간격으로 배치:<br>- 줄 간격 입력 (선택사항)<br>- 둘 이상의 가로 치수 선택<br>- 첫 번째 치수는 위치를 정의<br>- 이 도구를 클릭하세요. @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions 사선 치수 균등배치 - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool 사선 치수를 균등하게 간격:<br>- 균등배치 간격 지정(선택 사항)<br>- 둘 이상의 평행한 사선 치수를 선택<br>- 첫 번째 치수는 위치를 정의<br>- 이 도구를 클릭하세요 @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions 세로 치수를 균등배치 - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension 가로 모따기 치수 만들기 - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 모따기의 가로 크기 및 각도 치수 만들기:<br>- 두 점 선택<br>- 이 도구를 클릭하세요 @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions 수평 체인 치수 만들기 - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool 정렬된 가로 치수의 순서 만들기:<br>- 3개 이상의 점 선택<br>- 이 도구를 클릭하세요. @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions 가로 좌표 치수 만들기 - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 동일한 기준선에서 시작하여 균일한 간격으로 여러 개의 가로 치수 만들기:<br>- 균등배치 간격 지정(선택 사항)<br>- 3개 이상의 점 선택<br>- 처음 두 점의 선택 순서에 따라 기준선의 위치 결정<br>- 이 도구를 클릭하세요. @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions 수평 체인 치수 만들기 - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool 정렬된 가로 치수의 순서 만들기:<br>- 3개 이상의 점 선택<br>- 이 도구를 클릭하세요. @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension 가로 모따기 치수 만들기 - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 모따기의 가로 크기 및 각도 치수 만들기:<br>- 두 점 선택<br>- 이 도구를 클릭하세요 @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions 가로 좌표 치수 만들기 - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 동일한 기준선에서 시작하여 균일한 간격으로 여러 개의 가로 치수 만들기:<br>- 균등배치 간격 지정(선택 사항)<br>- 3개 이상의 점 선택<br>- 처음 두 점의 선택 순서에 따라 기준선의 위치 결정<br>- 이 도구를 클릭하세요. @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension 호 길이 치수 만들기 - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool 정렬된 세로 치수의 순서 만들기:<br>- 3개 이상의 점 선택<br>- 이 도구를 클릭하세요. @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension 수직 모따기 치수 생성 - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 모따기의 세로 크기 및 각도 치수 만들기:<br>- 두 점 선택<br>- 이 도구를 클릭하세요 @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions 세로 좌표 치수 만들기 - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 동일한 기준선에서 시작하여 균일한 간격으로 여러 개의 세로 치수 만들기:<br>- 균등배치 간격 지정(선택 사항)<br>- 3개 이상의 점 선택<br>- 처음 두 점의 선택 순서에 따라 기준선의 위치 결정<br>- 이 도구를 클릭하세요. @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label 서식 레이블 사용자 지정 - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons 치수 또는 풍선 선택<br> - 이 도구를 클릭하세요.<br> - 키보드 및/또는 특수 버튼을 사용하여 서식 필드 편집 @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places 소수점 이하 자릿수 감소 - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 치수 텍스트의 소수점 이하 자릿수를 줄입니다.:<br>- 하나 이상의 치수 선택<br>- 이 도구를 클릭하세요. @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Create spreadsheet view + - Save page to dxf Save page to dxf @@ -2058,7 +2058,7 @@ Drag Dimension - + Create Balloon Create Balloon @@ -2073,8 +2073,8 @@ Create CenterLine - + Create Cosmetic Line 장식 선 만들기 @@ -2150,102 +2150,102 @@ 꾸밈 꼭짓점 추가 - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection 잘못 된 선택 @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Incorrect selection - + Select an object first Select an object first - + Too many objects selected Too many objects selected - + Create a page first. 먼저 페이지를 작성합니다. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No View of a Part in selection. @@ -2906,6 +2906,8 @@ Selected edge is a BSpline. Radius will be approximate. Continue? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Incorrect Selection @@ -3058,9 +3058,6 @@ Select 2 point objects and 1 View. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Task In Progress - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Close active task dialog and try again. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Wrong Selection @@ -3318,28 +3318,22 @@ Select exactly one Leader line or one Weld symbol. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Export Page As PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Export page as SVG - - + + Are you sure you want to continue? Are you sure you want to continue? - + Show drawing 드로잉 보기 - + Toggle KeepUpdated Toggle KeepUpdated @@ -3469,9 +3463,9 @@ Rich text creator - + Rich text editor Rich text editor @@ -3589,133 +3583,133 @@ Edit Detail View - + Edit %1 Edit %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies 객체 종속성 @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. You cannot delete this view because it has a leader line that would become broken. - + The page is not empty, therefore the following referencing objects might be lost: The page is not empty, therefore the @@ -7413,8 +7407,8 @@ You can pick further points to get line segments. - - + + Top 평면 @@ -7425,8 +7419,8 @@ You can pick further points to get line segments. - - + + Left 좌측면 @@ -7437,14 +7431,14 @@ You can pick further points to get line segments. - - + + Right 우측면 - + Rear 배면 @@ -7455,8 +7449,8 @@ You can pick further points to get line segments. - - + + Bottom 저면 @@ -7508,31 +7502,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front 정면 @@ -8172,12 +8166,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9382,4 +9376,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.ts index bf3334a844..60a8b1a9bb 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Voorvoegsel verwijderen - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Rekenbladweergave maken + - Save page to dxf Pagina in dxf opslaan @@ -2058,7 +2058,7 @@ Dimensie slepen - + Create Balloon Ballon maken @@ -2073,8 +2073,8 @@ Maak een middenlijn - + Create Cosmetic Line Cosmetische lijn maken @@ -2150,102 +2150,102 @@ Voeg een cosmetisch eindpunt toe - + TechDraw Insert Prefix TechDraw Voorvoegsel invoegen - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Voorvoegsel verwijderen - + Remove Prefix Voorvoegsel verwijderen - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Verkeerde selectie @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Onjuiste selectie - + Select an object first Selecteer eerst een object - + Too many objects selected Te veel objecten geselecteerd - + Create a page first. Maak eerst een pagina. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Geen aanzicht van een onderdeel in de selectie. @@ -2906,6 +2906,8 @@ Geselecteerde rand is een BSpline. Straal zal approximatief zijn. Doorgaan? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Onjuiste Selectie @@ -3058,9 +3058,6 @@ Selecteer 2 punten en 1 aanzicht. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Taak in uitvoering - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Sluit het actieve taakvenster en probeer opnieuw. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Verkeerde selectie @@ -3318,28 +3318,22 @@ Selecteer precies een leiderslijn of een lassymbool. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection Geen %1 in selectie @@ -3417,7 +3411,7 @@ Exporteren als PDF - + Document Name: Documentnaam: @@ -3432,19 +3426,19 @@ Exporteren als SVG - - + + Are you sure you want to continue? Weet u zeker dat u wilt doorgaan? - + Show drawing Toon tekening - + Toggle KeepUpdated Schakel KeepUpdated aan/uit @@ -3469,9 +3463,9 @@ Opgemaakte tekst-maker - + Rich text editor Opgemaakte tekst-editor @@ -3589,133 +3583,133 @@ Bewerk detailweergave - + Edit %1 Bewerken %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected Geen subelementen geselecteerd - + Selection is empty Selectie is leeg - + No object selected Geen object geselecteerd @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. U kunt deze leiderslijn niet verwijderen omdat het een Lassymbool heeft dat kapot zou gaan. - + You cannot delete this view because it has one or more dependent views that would become broken. U kunt deze weergave niet verwijderen omdat deze een of meerdere afhankelijke weergave(s) heeft, die dan beschadigd raken. - - - - + - - + + + + + Object dependencies Object afhankelijkheden @@ -3908,7 +3902,7 @@ een Lassymbool heeft dat kapot zou gaan. U kunt deze weergave niet verwijderen omdat deze een leiderslijn heeft die gebroken zou worden. - + The page is not empty, therefore the following referencing objects might be lost: De pagina is niet leeg, daarom kunnen de @@ -7413,8 +7407,8 @@ Je kan meer punten kiezen om lijnsegmenten te krijgen. - - + + Top Boven @@ -7425,8 +7419,8 @@ Je kan meer punten kiezen om lijnsegmenten te krijgen. - - + + Left Links @@ -7437,14 +7431,14 @@ Je kan meer punten kiezen om lijnsegmenten te krijgen. - - + + Right Rechts - + Rear Achter @@ -7455,8 +7449,8 @@ Je kan meer punten kiezen om lijnsegmenten te krijgen. - - + + Bottom Onder @@ -7508,31 +7502,31 @@ met behulp van de gegeven X/Y afstand Verticale afstand tussen de omtrek van projecties - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Voorkant @@ -8172,12 +8166,12 @@ met behulp van de gegeven X/Y afstand TechDraw_ExtensionremovePrefixChar - + Remove Prefix Voorvoegsel verwijderen - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9382,4 +9376,24 @@ een open taak dialoogvenster is. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts index 78e85fbafb..a8029d0374 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts @@ -426,17 +426,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw Rysunek Techniczny - + Cascade Horizontal Dimensions Wymiar poziomy kaskadowo - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Równomierne rozmieszczenie wymiarów poziomych:<br>- Określ odstęp kaskadowy (opcjonalnie)<br>- Wybierz dwa lub więcej wymiarów poziomych<br>- Pierwszy wymiar definiuje położenie<br>- Kliknij to narzędzie @@ -444,19 +444,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw Rysunek Techniczny - - + + Cascade Horizontal Dimensions Wymiary poziome kaskadowo - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Równomiernie rozłożone wymiary poziome: - Określ odstęp kaskadowy (opcjonalnie), @@ -468,19 +468,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw Rysunek Techniczny - - + + Cascade Oblique Dimensions Wymiar ukośny kaskadowo - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Równomierne rozmieszczenie wymiarów ukośnych:<br>- Określ odstęp kaskadowy (opcjonalnie)<br>- Wybierz dwa lub więcej wymiarów równolegle ukośnych<br>- Pierwszy wymiar definiuje położenie<br>- Kliknij narzędzie @@ -488,19 +488,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw Rysunek Techniczny - - + + Cascade Vertical Dimensions Wymiar pionowy kaskadowo - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Równomierne rozmieszczenie wymiarów pionowych:<br>- Określ odstęp kaskadowy (opcjonalnie)<br>- Wybierz dwa lub więcej wymiarów pionowych<br>- Pierwszy wymiar definiuje położenie<br>- Kliknij narzędzie @@ -508,17 +508,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw Rysunek Techniczny - + Create Horizontal Chamfer Dimension Utwórz poziomy wymiar sfazowania - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Utwórz poziomy wymiar rozmiaru i kąta dla fazy: - Wybierz dwa wierzchołki, @@ -587,17 +587,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw Rysunek Techniczny - + Create Horizontal Chain Dimensions Seria wymiarów poziomo - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Tworzy sekwencję wyrównanych wymiarów poziomych: - Wybierz trzy lub więcej wierzchołków @@ -607,17 +607,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw Rysunek Techniczny - + Create Horizontal Coordinate Dimensions Seria wymiarów kaskadowych poziomo - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Utwórz wiele równomiernie rozłożonych wymiarów poziomych zaczynających się od tej samej linii bazowej:<br>- Podaj rozmieszczenie (opcjonalne)<br>- Wybierz trzy lub więcej wierzchołków<br>- Kolejność wyboru dwóch pierwszych wierzchołków określa położenie linii bazowej<br>- Kliknij to narzędzie @@ -625,19 +625,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw Rysunek Techniczny - - + + Create Horizontal Chain Dimensions Utwórz poziome wymiary łańcuchowe - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Utwórz sekwencję wyrównanych wymiarów poziomych: - Wybierz trzy lub więcej wierzchołków, @@ -647,19 +647,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw Rysunek Techniczny - - + + Create Horizontal Chamfer Dimension Utwórz poziomy wymiar sfazowania - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Utwórz poziomy wymiar rozmiaru i kąta dla sfazowania: - Wybierz dwa wierzchołki, @@ -669,19 +669,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw Rysunek Techniczny - - + + Create Horizontal Coordinate Dimensions Utwórz serię wymiarów kaskadowych poziomo - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Utwórz wiele równomiernie rozłożonych wymiarów poziomych zaczynających się od tej samej linii bazowej:<br>- Podaj rozmieszczenie (opcjonalne)<br>- Wybierz trzy lub więcej wierzchołków<br>- Kolejność wyboru dwóch pierwszych wierzchołków określa położenie linii bazowej<br>- Kliknij to narzędzie @@ -689,17 +689,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw Rysunek Techniczny - + Create Arc Length Dimension Dodaj wymiar długości łuku - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Tworzy wymiar długości łuku: - Wybierz pojedynczy łuk @@ -709,19 +709,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw Rysunek Techniczny - - + + Create Oblique Chain Dimensions Seria wymiarów ukośnie - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Utwórz sekwencję wyrównanych wymiarów skośnych:<br>- Wybierz trzy lub więcej wierzchołków<br>- Pierwsze dwa wierzchołki definiują kierunek<br>- Kliknij to narzędzie @@ -729,19 +729,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw Rysunek Techniczny - - + + Create Oblique Coordinate Dimensions Seria wymiarów kaskadowych ukośnie - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Utwórz wiele równomiernie rozłożonych wymiarów ukośnych zaczynających się od tej samej linii bazowej:<br>- Podaj rozmieszczenie (opcjonalne)<br>- Wybierz trzy lub więcej wierzchołków<br>- Kolejność wyboru pierwszych dwóch wierzchołków określa położenie linii bazowej<br>- Pierwsze dwa wierzchołki definiują też kierunek<br>- Kliknij to narzędzie @@ -749,19 +749,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw Rysunek Techniczny - - + + Create Vertical Chain Dimensions Seria wymiarów pionowo - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Tworzy sekwencję wyrównanych wymiarów pionowych: - Wybierz trzy lub więcej wierzchołków @@ -771,19 +771,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw Rysunek Techniczny - - + + Create Vertical Chamfer Dimension Utwórz pionowy wymiar sfazowania - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Utwórz pionowy wymiar rozmiaru i kąta dla fazy:<br>- Wybierz dwa wierzchołki<br>- Kliknij to narzędzie @@ -791,19 +791,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw Rysunek Techniczny - - + + Create Vertical Coordinate Dimensions Seria wymiarów kaskadowych pionowo - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Utwórz wiele równomiernie rozłożonych wymiarów pionowych zaczynających się od tej samej linii bazowej:<br>- Podaj rozmieszczenie (opcjonalne)<br>- Wybierz trzy lub więcej wierzchołków<br>- Kolejność wyboru dwóch pierwszych wierzchołków określa położenie linii bazowej<br>- Kliknij to narzędzie @@ -811,17 +811,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw Rysunek Techniczny - + Customize Format Label Dostosuj format etykiety - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Wybierz wymiar lub balonik<br> - kliknij to narzędzie<br> - edytuj pole Format, używając klawiatury i/lub przycisków specjalnych @@ -829,19 +829,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw Rysunek Techniczny - - + + Decrease Decimal Places Zmniejsz ilość cyfr po przecinku - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Zmniejsz liczbę cyfr po przecinku tekstu wymiaru:<br>- Wybierz jeden lub więcej wymiarów<br>- Kliknij to narzędzie @@ -976,19 +976,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw Rysunek Techniczny - - + + Increase Decimal Places Zwiększ ilość cyfr po przecinku - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Zwiększ liczbę cyfr po przecinku tekstu wymiaru: - Wybierz jeden lub więcej wymiarów @@ -998,17 +998,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw Rysunek Techniczny - + Increase Decimal Places Zwiększ ilość cyfr po przecinku - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Zwiększ liczbę cyfr po przecinku tekstu wymiaru:<br>- Wybierz jeden lub więcej wymiarów<br>- Kliknij to narzędzie @@ -1016,19 +1016,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw Rysunek Techniczny - - + + Insert '⌀' Prefix Dodaj przedrostek "⌀" - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Wstaw symbol "⌀" na początku tekstu wymiaru: - Wybierz jeden lub więcej wymiarów, @@ -1038,17 +1038,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw Rysunek Techniczny - + Insert '⌀' Prefix Dodaj przedrostek "⌀" - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Wstaw symbol "⌀" na początku tekstu wymiaru:<br>- Wybierz jeden lub więcej wymiarów<br>- Kliknij to narzędzie @@ -1056,19 +1056,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw Rysunek Techniczny - - + + Insert '□' Prefix Dodaj przedrostek "〼" - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Wstaw symbol "〼" na początku tekstu wymiaru:<br>- Wybierz jeden lub więcej wymiarów<br>- Kliknij to narzędzie @@ -1158,17 +1158,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw Rysunek Techniczny - + Position Horizontal Chain Dimensions Ułóż poziomą serię wymiarów - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Wyrównaj wymiary poziome, aby utworzyć szereg wymiarów:<br>- Wybierz dwa lub więcej wymiarów poziomych<br>- Pierwszy wymiar definiuje pozycję<br>- Kliknij to narzędzie @@ -1176,19 +1176,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw Rysunek Techniczny - - + + Position Horizontal Chain Dimensions Ułóż poziomą serię wymiarów - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Wyrównaj wymiary poziome, aby utworzyć szereg wymiarów:<br>- Wybierz dwa lub więcej wymiarów poziomych<br>- Pierwszy wymiar definiuje pozycję<br>- Kliknij to narzędzie @@ -1196,19 +1196,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw Rysunek Techniczny - - + + Position Oblique Chain Dimensions Ułóż ukośną serię wymiarów - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Wyrównaj ukośne wymiary aby utworzyć łańcuch wymiarów:<br>- Wybierz dwa lub więcej równoległych ukośnych wymiarów<br>- Pierwszy wymiar definiuje położenie<br>- Kliknij to narzędzie @@ -1216,19 +1216,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw Rysunek Techniczny - - + + Position Vertical Chain Dimensions Ułóż pionową serię wymiarów - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Wyrównaj wymiary pionowe aby utworzyć łańcuch wymiarów:<br>- Wybierz dwa lub więcej wymiarów pionowych<br>- Pierwszy wymiar definiuje położenie<br>- Kliknij to narzędzie @@ -1236,17 +1236,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw Rysunek Techniczny - + Remove Prefix Usuń przedrostek - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Usuń symbol z początku tekstu wymiaru: - Wybierz jeden lub więcej wymiarów, @@ -2051,8 +2051,8 @@ Utwórz widok arkusza kalkulacyjnego + - Save page to dxf Zapisz stronę do pliku dxf @@ -2113,7 +2113,7 @@ Przeciągnij wymiar - + Create Balloon Utwórz balonik dymka @@ -2128,8 +2128,8 @@ Utwórz linię środkową - + Create Cosmetic Line Utwórz linię kosmetyczną @@ -2205,102 +2205,102 @@ Dodaj wierzchołek kosmetyczny - + TechDraw Insert Prefix Rysunek Techniczny Wstaw prefiks - + Insert Prefix Dodaj przedrostek - + TechDraw Remove Prefix Rysunek Techniczny Usuń prefiks - + Remove Prefix Usuń przedrostek - + Increase/Decrease Decimal Zwiększ / zmniejsz ilość cyfr po przecinku - + Pos Horiz Chain Dim Wyrównaj ciąg wymiarów poziomych - + Pos Vert Chain Dim Wyrównaj ciąg wymiarów pionowych - + Pos Oblique Chain Dim Wyrównaj ciąg wymiarów ukośnych - + Cascade Horiz Dim Wymiar poziomy kaskadowo - + Cascade Vert Dim Wymiar pionowy kaskadowo - + Cascade Oblique Dim Wymiar ukośny kaskadowo - + Create Horiz Chain Dim Utwórz poziomy ciąg wymiarów - + Create Vert Chain Dim Utwórz pionowy ciąg wymiarów - + Create Oblique Chain Dim Utwórz ukośny ciąg wymiarów - + Create Horiz Coord Dim Utwórz poziomy ciąg wymiarów - + Create Vert Coord Dim Utwórz pionowy ciąg wymiarów - + Create Oblique Coord Dim Utwórz ukośny ciąg wymiarów - + Create Horiz Chamfer Dim Utwórz wymiar fazowania poziomego - + Create Vert Chamfer Dim Utwórz wymiar fazowania pionowego - + Create Arc Length Dim Dodaj wymiar długości łuku @@ -2741,6 +2741,16 @@ QObject + + + + + + + + + + @@ -2758,16 +2768,6 @@ - - - - - - - - - - Wrong selection Nieprawidłowy wybór @@ -2799,10 +2799,9 @@ Nie znaleziono obiektu profilu w zaznaczeniu - - - - + + + @@ -2814,34 +2813,34 @@ - - - + + + + Incorrect selection Nieprawidłowy wybór - + Select an object first Najpierw wybierz obiekt - + Too many objects selected Wybrano zbyt wiele obiektów - + Create a page first. Najpierw stwórz stronę. - @@ -2850,6 +2849,7 @@ + No View of a Part in selection. Brak widoku części w wyborze. @@ -2961,6 +2961,8 @@ Wybrana krawędź to krzywa złożona. Promień będzie przybliżony. Kontynuować? + + @@ -2980,12 +2982,10 @@ - - - + Incorrect Selection Niepoprawny wybór @@ -3113,9 +3113,6 @@ Wybierz dwa obiekty punktów i jeden widok. (2) - - - @@ -3142,30 +3139,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Zadanie w toku - - - @@ -3192,23 +3189,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Zamknij okno aktywnego zadania i spróbuj ponownie. @@ -3238,8 +3238,8 @@ - - + + Wrong Selection Nieprawidłowy wybór @@ -3373,28 +3373,22 @@ Wybierz dokładnie jedną linię odniesienia lub jeden symbol spawalniczy. - - + SurfaceFinishSymbols Symbole wykończenia powierzchni - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + Wybrane obiekt nie jest widokiem części ani linią odniesienia. - + No Part View in Selection Brak widoku części w wyborze - + No %1 in Selection Brak %1 w zaznaczeniu @@ -3472,7 +3466,7 @@ Wyeksportuj stronę do formatu PDF - + Document Name: Nazwa dokumentu: @@ -3487,19 +3481,19 @@ Eksportuj stronę do formatu SVG - - + + Are you sure you want to continue? Czy na pewno chcesz kontynuować? - + Show drawing Pokaż rysunek - + Toggle KeepUpdated Włącz / wyłącz automatyczną aktualizację @@ -3524,9 +3518,9 @@ Kreator tekstu sformatowanego - + Rich text editor Edytor tekstu sformatowanego @@ -3644,133 +3638,133 @@ Edytuj widok szczegółu - + Edit %1 Edytuj %1 - + TechDraw Increase/Decrease Decimal Rysunek Techniczny zwiększ / zmniejsz ilość cyfr po przecinku - - + + TechDraw PosHorizChainDimension Rysunek Techniczny Wyrównaj ciąg wymiarów poziomych - - + + No horizontal dimensions selected Nie wybrano wymiarów poziomych - - + + TechDraw PosVertChainDimension Rysunek Techniczny Wyrównaj ciąg wymiarów pionowych - - + + No vertical dimensions selected Nie wybrano wymiarów pionowych - - + + TechDraw PosObliqueChainDimension Rysunek Techniczny Wyrównaj ciąg wymiarów ukośnych - - + + No oblique dimensions selected Nie wybrano wymiarów ukośnych - - + + TechDraw CascadeHorizDimension Rysunek Techniczny Wymiar poziomy kaskadowo - - + + TechDraw CascadeVertDimension Rysunek Techniczny Wymiar pionowy kaskadowo - - + + TechDraw CascadeObliqueDimension Rysunek Techniczny Wymiar ukośny kaskadowo - + TechDraw Create Horizontal Chain Dimension Rysunek Techniczny seria wymiarów poziomo - + TechDraw Create Vertical Chain Dimension Rysunek Techniczny seria wymiarów pionowo - + TechDraw Create Oblique Chain Dimension Rysunek Techniczny seria wymiarów ukośnie - + TechDraw Create Horizontal Coord Dimension Rysunek Techniczny utwórz wymiar poziomy - + TechDraw Create Vertical Coord Dimension Rysunek Techniczny utwórz wymiar pionowy - + TechDraw Create Oblique Coord Dimension Rysunek Techniczny utwórz wymiar ukośny - + TechDraw Create Horizontal Chamfer Dimension Rysunek Techniczny utwórz poziomy wymiar fazki - + TechDraw Create Vertical Chamfer Dimension Rysunek Techniczny utwórz pionowy wymiar fazki - + TechDraw Create Arc Length Dimension Rysunek Techniczny dodaj wymiar długości łuku - + TechDraw Customize Format Rysunek Techniczny dostosuj format - + No subelements selected Nie wybrano elementów podrzędnych - + Selection is empty Obszar zaznaczenia nie zawiera obiektów - + No object selected Nie wybrano obiektu @@ -3916,29 +3910,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Nie możesz usunąć tej linii odniesienia, ponieważ zawiera symbol spoiny który zostałby uszkodzony. - + You cannot delete this view because it has one or more dependent views that would become broken. Nie można usunąć tego widoku, ponieważ ma on co najmniej jeden obiekt zależny, który zostałby uszkodzony. - - - - + - - + + + + + Object dependencies Zależności obiektu @@ -3963,7 +3957,7 @@ zawiera symbol spoiny który zostałby uszkodzony. Nie możesz usunąć tego widoku, ponieważ ma on linię odniesienia, która zostałaby uszkodzona. - + The page is not empty, therefore the following referencing objects might be lost: Strona nie jest pusta, więc @@ -7470,8 +7464,8 @@ Możesz wybrać kolejne punkty, aby uzyskać odcinki linii. - - + + Top Od góry @@ -7482,8 +7476,8 @@ Możesz wybrać kolejne punkty, aby uzyskać odcinki linii. - - + + Left Od lewej @@ -7494,14 +7488,14 @@ Możesz wybrać kolejne punkty, aby uzyskać odcinki linii. - - + + Right Od prawej - + Rear Od tył @@ -7512,8 +7506,8 @@ Możesz wybrać kolejne punkty, aby uzyskać odcinki linii. - - + + Bottom Od dołu @@ -7565,31 +7559,31 @@ przy użyciu podanego odstępu X/Y Odstęp pionowy między ramkami wyświetlanych elementów - - + + FrontTopLeft Przód góra lewo - - + + FrontBottomRight Przód dół prawo - - + + FrontTopRight Przód góra prawo - - + + FrontBottomLeft Przód dół lewo - + Front Od przodu @@ -8229,12 +8223,12 @@ przy użyciu podanego odstępu X/Y TechDraw_ExtensionremovePrefixChar - + Remove Prefix Usuń przedrostek - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Usuń symbol z początku tekstu wymiaru:<br>- Wybierz jeden lub więcej wymiarów<br>- Kliknij to narzędzie @@ -9441,4 +9435,26 @@ jest otwarte okno dialogowe zadania. Kliknij to narzędzie. + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + Rysunek Techniczny + + + + + Insert 'n×' Prefix + Dodaj przedrostek "n×" + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Wstaw powtarzającą się liczbę elementów na początku tekstu wymiaru: +- Wybierz jeden lub więcej wymiarów, +- Kliknij to narzędzie. + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.ts index 1163f0903d..c6e6b41c2f 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - Desenhos Técnicos - + Cascade Horizontal Dimensions Inserir cota horizontal - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Dimensões horizontais do espaço uniformemente:<br>- Especifique o espaçamento em cascata (opcional)<br>- Selecione duas ou mais dimensões horizontais<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Cascade Horizontal Dimensions Inserir cota horizontal - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Dimensões horizontais do espaço uniformemente:<br>- Especifique o espaçamento em cascata (opcional)<br>- Selecione duas ou mais dimensões horizontais<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Cascade Oblique Dimensions Dimensões Transformações em Cascata - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Dimensões horizontais do espaço uniformemente:<br>- Especifique o espaçamento em cascata (opcional)<br>- Selecione duas ou mais dimensões horizontais<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Cascade Vertical Dimensions Inserir cota horizontal - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Dimensões verticais no espaço uniformemente:<br>- Especifique o espaçamento em cascata (opcional)<br>- Selecione duas ou mais dimensões verticais<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - Desenhos Técnicos - + Create Horizontal Chamfer Dimension Criar Dimensão do Chanfro Horizontal - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Criar um tamanho horizontal e dimensão de ângulo para um chanfro:<br>- Selecionar dois vértices<br>- Clique nesta ferramenta @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - Desenhos Técnicos - + Create Horizontal Chain Dimensions Criar dimensão horizontal em sequência - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Criar uma sequência de dimensões horizontais alinhadas:<br>- Selecione três ou mais vértices<br>- Clique nesta ferramenta @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - Desenhos Técnicos - + Create Horizontal Coordinate Dimensions Criar Dimensões de Coordenadas Horizontais - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Criar multiplas Dimensões horizontais epaçadas uniformemente começando da mesma linha de base:<br>- Especifique o espaçamento em cascata (opcional)<br>- Selecione três ou mais vértices<br>- A ordem da seleção dos primeiros dois vértices determina a posição da linha base <br>- Clique nesta ferramenta @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Horizontal Chain Dimensions Criar dimensão horizontal em sequência - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Criar uma sequência de dimensões horizontais alinhadas:<br>- Selecione três ou mais vértices<br>- Clique nesta ferramenta @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Horizontal Chamfer Dimension Criar Dimensão do Chanfro Horizontal - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Criar um tamanho horizontal e dimensão de ângulo para um chanfro:<br>- Selecionar dois vértices<br>- Clique nesta ferramenta @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Horizontal Coordinate Dimensions Criar Dimensões de Coordenadas Horizontais - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Criar multiplas Dimensões horizontais epaçadas uniformemente começando da mesma linha de base:<br>- Especifique o espaçamento em cascata (opcional)<br>- Selecione três ou mais vértices<br>- A ordem da seleção dos primeiros dois vértices determina a posição da linha base <br>- Clique nesta ferramenta @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - Desenhos Técnicos - + Create Arc Length Dimension Criar Dimensão de Comprimento de Arco - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Criar uma dimensão de comprimento de arco:<br>- Selecione um único arco<br>- Clique nesta ferramenta @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Oblique Chain Dimensions Criar Cadeia de Dimensões Inclinadas - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Crie uma sequência de dimensões inclinadas e alinhadas:<br>- Selecione três ou mais vértices<br>- Os dois primeiros vértices definem a direção<br>- Clique nesta ferramenta @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Oblique Coordinate Dimensions Criar Dimensões Coordenadas Inclinadas - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Criar multiplas dimensões inclinadas epaçadas uniformemente começando da mesma linha de base:<br>- Especifique o espaçamento em cascata (opcional) <br>- Selecione três ou mais vértices <br>- A ordem da seleção dos dois primeiros vértices determina a posição da linha base <br>- Clique nesta ferramenta @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Vertical Chain Dimensions Criar Dimensões Verticais em Sequência - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Criar uma sequência de dimensões verticais alinhadas:<br>- Selecione três ou mais vértices<br>- Clique nesta ferramenta @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Vertical Chamfer Dimension Criar Dimensão do Chanfro Vertical - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Criar um formato vertical e dimensão de ângulo para um chanfro:<br>- Selecionar dois vértices<br>- Clique nesta ferramenta @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Create Vertical Coordinate Dimensions Criar Dimensões de Coordenadas Verticais - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Criar multiplas Dimensões verticais epaçadas uniformemente começando da mesma linha base:<br>- Especifique o espaçamento em cascata (opcional)<br>- Selecione três ou mais vértices<br>- A ordem da seleção dos primeiros dois vértices determina a posição da linha base <br>- Clique nesta ferramenta @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - Desenhos Técnicos - + Customize Format Label Personalizar Formato do Rótulo - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Selecione uma dimensão ou um balão<br> — clique nesta ferramenta<br> — editar o campo Formato, usando o teclado e/ou os botões especiais @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - Desenhos Técnicos - - + + Decrease Decimal Places Diminuir Casas Decimais - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Diminuir o número de casas decimais do texto da dimensão:<br>- Selecionar uma ou mais dimensões<br>- Clique nesta ferramenta @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - Desenhos Técnicos - - + + Increase Decimal Places Aumenta Casas Decimais - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumenta o número de casas decimais do texto da dimensão:<br>- Selecionar uma ou mais dimensões<br>- Clique nesta ferramenta @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - Desenhos Técnicos - + Increase Decimal Places Aumenta Casas Decimais - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Aumenta o número de casas decimais do texto da dimensão:<br>- Selecionar uma ou mais dimensões<br>- Clique nesta ferramenta @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - Desenhos Técnicos - - + + Insert '⌀' Prefix Inserir'⌀' Prefixo - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insere um '⌀' símbolo no início do texto da dimensão:<br>- Selecione uma ou mais dimensões<br>- Clique nesta ferramenta @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - Desenhos Técnicos - + Insert '⌀' Prefix Inserir'⌀' Prefixo - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insere um '⌀' símbolo no início do texto da dimensão:<br>- Selecione uma ou mais dimensões<br>- Clique nesta ferramenta @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - Desenhos Técnicos - - + + Insert '□' Prefix Inserir'□' Prefixo - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insere um '□' símbolo no início do texto da dimensão:<br>- Selecione uma ou mais dimensões<br>- Clique nesta ferramenta @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - Desenhos Técnicos - + Position Horizontal Chain Dimensions Criar Dimensão Horizontal em Sequência - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Alinha dimensões horizontais para criar uma sequência uniforme:<br>- Selecione duas ou mais dimensões horizontais<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Position Horizontal Chain Dimensions Criar Dimensão Horizontal em Sequência - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Alinha dimensões horizontais para criar uma sequência uniforme:<br>- Selecione duas ou mais dimensões horizontais<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Position Oblique Chain Dimensions Criar Dimensões Inclinadas em sequência - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Alinha dimensões inclinadas para criar uma sequência uniforme:<br>- Selecione duas ou mais dimensões inclinadas e paralelas<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - Desenhos Técnicos - - + + Position Vertical Chain Dimensions Criar Dimensão Vertical em Sequência - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Alinha dimensões verticais para criar uma sequência uniforme:<br>- Selecione duas ou mais dimensões verticais<br>- A primeira dimensão define a posição<br>- Clique nesta ferramenta @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - Desenhos Técnicos - + Remove Prefix Remover Prefixo - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remova os símbolos de prefixo no início do texto da dimensão:<br>- Selecionar uma ou mais dimensões<br>- Clique nesta ferramenta @@ -1996,8 +1996,8 @@ Criar vista de planilha + - Save page to dxf Salvar página para dxf @@ -2058,7 +2058,7 @@ Arrastar Dimensão - + Create Balloon Criar Balão @@ -2073,8 +2073,8 @@ Criar linha central - + Create Cosmetic Line Criar Linha Cosmética @@ -2150,102 +2150,102 @@ Adicionar Vértice Cosmético - + TechDraw Insert Prefix Remover Prefixo no Desenho Técnico - + Insert Prefix Inserir Prefixo - + TechDraw Remove Prefix Remover Prefixo no Desenho Técnico - + Remove Prefix Remover Prefixo - + Increase/Decrease Decimal Aumentar/Diminuir Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Seleção errada @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Seleção incorreta - + Select an object first Selecione um objeto primeiro - + Too many objects selected Demasiados objetos selecionados - + Create a page first. Primeiro, crie uma página. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Nenhuma vista de uma peça na seleção. @@ -2906,6 +2906,8 @@ A aresta selecionada é uma BSpline. O raio será aproximado. Continuar? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Seleção Incorreta @@ -3058,9 +3058,6 @@ Selecionar 2 pontos e 1 vista. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tarefa em andamento - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Feche a caixa de diálogo ativa e tente novamente. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Seleção errada @@ -3318,28 +3318,22 @@ Selecione exatamente uma linha de anotações ou um símbolo de solda. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Exportar página para PDF - + Document Name: Nome do documento: @@ -3432,19 +3426,19 @@ Exportar página para SVG - - + + Are you sure you want to continue? Tem certeza que deseja continuar? - + Show drawing Mostrar o desenho - + Toggle KeepUpdated Alternar atualização automática @@ -3469,9 +3463,9 @@ Criador de texto - + Rich text editor Editor de texto @@ -3589,133 +3583,133 @@ Editar vista de detalhe - + Edit %1 Editar %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected Nenhuma dimensão vertical selecionada - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected Nenhuma dimensão oblíqua selecionada - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty A seleção está vazia - + No object selected Nenhum objeto selecionado @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Não é possível excluir esta linha de anotação porque ela tem um símbolo de solda que quebraria. - + You cannot delete this view because it has one or more dependent views that would become broken. Você não pode excluir esta visão porque ela tem uma ou mais visualizações dependentes que se tornariam quebradas. - - - - + - - + + + + + Object dependencies Dependências do objeto @@ -3908,7 +3902,7 @@ ela tem um símbolo de solda que quebraria. Não é possível excluir esta vista porque ela possui uma linha de anotações associada que ficaria quebrada. - + The page is not empty, therefore the following referencing objects might be lost: A página não está vazia, portanto os @@ -7413,8 +7407,8 @@ Você pode indicar mais pontos para obter segmentos de linha. - - + + Top Topo @@ -7425,8 +7419,8 @@ Você pode indicar mais pontos para obter segmentos de linha. - - + + Left Esquerda @@ -7437,14 +7431,14 @@ Você pode indicar mais pontos para obter segmentos de linha. - - + + Right Direito - + Rear Traseira @@ -7455,8 +7449,8 @@ Você pode indicar mais pontos para obter segmentos de linha. - - + + Bottom De baixo @@ -7508,31 +7502,31 @@ usando o espaçamento X/Y fornecido Espaço vertical entre a borda das projeções - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Frente @@ -8172,12 +8166,12 @@ usando o espaçamento X/Y fornecido TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remover Prefixo - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remova os símbolos de prefixo no início do texto da dimensão:<br>- Selecionar uma ou mais dimensões<br>- Clique nesta ferramenta @@ -9382,4 +9376,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw - Desenhos Técnicos + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.ts index b80d617d52..c39167ac8b 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw (Desenhos Técnicos) - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw (Desenhos Técnicos) - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw (Desenhos Técnicos) - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw (Desenhos Técnicos) - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw (Desenhos Técnicos) - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw (Desenhos Técnicos) - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw (Desenhos Técnicos) - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw (Desenhos Técnicos) - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw (Desenhos Técnicos) - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw (Desenhos Técnicos) - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw (Desenhos Técnicos) - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw (Desenhos Técnicos) - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw (Desenhos Técnicos) - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw (Desenhos Técnicos) - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw (Desenhos Técnicos) - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Criar vista de folha de cálculo + - Save page to dxf Salvar folha para dxf @@ -2058,7 +2058,7 @@ Arrastar Dimensão - + Create Balloon Criar Balão @@ -2073,8 +2073,8 @@ Criar LinhadeEixo - + Create Cosmetic Line Criar Linha Cosmética @@ -2150,102 +2150,102 @@ Adicionar Vértice Cosmético - + TechDraw Insert Prefix Inserir prefixo TechDraw - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix Remover TechDraw Prefixo - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Seleção errada @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Selecção incorrecta - + Select an object first Selecione um objeto primeiro - + Too many objects selected Demasiados objetos selecionados - + Create a page first. Primeiro, crie uma página. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Nenhuma vista de uma peça na seleção. @@ -2906,6 +2906,8 @@ A aresta selecionada é uma BSpline. O raio será aproximado. Continuar? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Seleção Incorreta @@ -3058,9 +3058,6 @@ Selecione 2 pontos e 1 vista. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tarefa em execução - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Fechar a caixa de diálogo ativa e tentar novamente. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Seleção errada @@ -3318,28 +3318,22 @@ Selecione apenas uma linha de chamada ou um símbolo de soldadura. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Exportar folha como PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Exportar folha como SVG - - + + Are you sure you want to continue? Tem certeza que deseja continuar? - + Show drawing Mostrar folha de desenho - + Toggle KeepUpdated Alternar atualização automática @@ -3469,9 +3463,9 @@ Criador de Rich text - + Rich text editor Editor de Rich text @@ -3589,133 +3583,133 @@ Editar Vista de Detalhe - + Edit %1 Edite %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format Personalizar formato TechDraw - + No subelements selected Nenhum sub-elemento selecionado - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Não é possível excluir esta linha de chamada porque ela tem um símbolo de soldadura que se quebrará. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Dependências do objeto @@ -3908,7 +3902,7 @@ ela tem um símbolo de soldadura que se quebrará. Não é possível apagar esta vista porque ela tem uma linha de chamada que ficaria quebrada. - + The page is not empty, therefore the following referencing objects might be lost: A página não está vazia, portanto os @@ -7412,8 +7406,8 @@ Você pode escolher pontos adicionais para obter segmentos de linha. - - + + Top Topo @@ -7424,8 +7418,8 @@ Você pode escolher pontos adicionais para obter segmentos de linha. - - + + Left Esquerda @@ -7436,14 +7430,14 @@ Você pode escolher pontos adicionais para obter segmentos de linha. - - + + Right Direita - + Rear Traseira @@ -7454,8 +7448,8 @@ Você pode escolher pontos adicionais para obter segmentos de linha. - - + + Bottom De baixo @@ -7507,31 +7501,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Frente @@ -8171,12 +8165,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9381,4 +9375,24 @@ há uma caixa de diálogo aberta. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw (Desenhos Técnicos) + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.ts index 1528dc3e01..55945900dc 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw Desen tehnic - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw Desen tehnic - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw Desen tehnic - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw Desen tehnic - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw Desen tehnic - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw Desen tehnic - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw Desen tehnic - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw Desen tehnic - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw Desen tehnic - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw Desen tehnic - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw Desen tehnic - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw Desen tehnic - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw Desen tehnic - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw Desen tehnic - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw Desen tehnic - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw Desen tehnic - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw Desen tehnic - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw Desen tehnic - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw Desen tehnic - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw Desen tehnic - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw Desen tehnic - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw Desen tehnic - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw Desen tehnic - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw Desen tehnic - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw Desen tehnic - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw Desen tehnic - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw Desen tehnic - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw Desen tehnic - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Create spreadsheet view + - Save page to dxf Save page to dxf @@ -2058,7 +2058,7 @@ Drag Dimension - + Create Balloon Create Balloon @@ -2073,8 +2073,8 @@ Create CenterLine - + Create Cosmetic Line Create Cosmetic Line @@ -2150,102 +2150,102 @@ Add Cosmetic Vertex - + TechDraw Insert Prefix TechDraw Inserare Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Eliminare prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Selecţie greşită @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Selectarea incorectă - + Select an object first Selectaţi un obiect mai întâi - + Too many objects selected Prea multe obiecte selectate - + Create a page first. Creați /selectați o pagină mai întâi. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No View of a Part in selection. @@ -2906,6 +2906,8 @@ Selected edge is a BSpline. Radius will be approximate. Continue? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Selectarea incorectă @@ -3058,9 +3058,6 @@ Select 2 point objects and 1 View. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Task In Progress - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Close active task dialog and try again. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Wrong Selection @@ -3318,28 +3318,22 @@ Select exactly one Leader line or one Weld symbol. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Exportă pagina ca PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Exportă pagina ca SVG - - + + Are you sure you want to continue? Are you sure you want to continue? - + Show drawing Arată desenul - + Toggle KeepUpdated Activează/dezactivează KeepUpdated @@ -3469,9 +3463,9 @@ Rich text creator - + Rich text editor Rich text editor @@ -3589,133 +3583,133 @@ Edit Detail View - + Edit %1 Editare %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Dependențe obiect @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. You cannot delete this view because it has a leader line that would become broken. - + The page is not empty, therefore the following referencing objects might be lost: The page is not empty, therefore the @@ -7412,8 +7406,8 @@ You can pick further points to get line segments. - - + + Top Partea de sus @@ -7424,8 +7418,8 @@ You can pick further points to get line segments. - - + + Left Stanga @@ -7436,14 +7430,14 @@ You can pick further points to get line segments. - - + + Right Dreapta - + Rear Din spate @@ -7454,8 +7448,8 @@ You can pick further points to get line segments. - - + + Bottom Partea de jos @@ -7507,31 +7501,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Din față @@ -8171,12 +8165,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9381,4 +9375,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + Desen tehnic + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.ts index 282d892f63..58bf69a286 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw Технический чертёж - + Cascade Horizontal Dimensions Каскад горизонтальных размеров - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерное размещение горизонтальных размеров:<br>- Укажите шаг каскада (необязательно)<br>- Выберите два или более горизонтальных размера<br>- Первый размер определяет положение<br>- Щёлкните этот инструмент @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw Технический чертёж - - + + Cascade Horizontal Dimensions Горизонтальные размеры каскада - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерное размещение горизонтальных размеров:<br>- Укажите шаг каскада (необязательно)<br>- Выберите два или более горизонтальных размера<br>- Первый размер определяет положение<br>- Щёлкните этот инструмент @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw Технический чертёж - - + + Cascade Oblique Dimensions Каскад наклонных размеров - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерное распределение наклонных размеров:<br>- Укажите шаг каскада (необязательно)<br>- Выберите два или более параллельных наклонных размера<br>- Первый размер определяет положение<br>- Щёлкните этот инструмент @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw Технический чертёж - - + + Cascade Vertical Dimensions Каскад вертикальных размеров - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерное размещение вертикальных размеров:<br>- Укажите шаг каскада (необязательно)<br>- Выберите два или более вертикальных размера<br>- Первый размер определяет положение<br>- Щёлкните этот инструмент @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw Технический чертёж - + Create Horizontal Chamfer Dimension Создать размер горизонтальной фаски - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Создать горизонтальный размер и размер угла для фаски:<br>- Выберите две вершины<br>- Щёлкните этот инструмент @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw Технический чертёж - + Create Horizontal Chain Dimensions Простановка горизонтальной цепочки размеров - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Создать последовательность выравниваемых горизонтальных размеров:<br>- Выберите три или более вершин<br>- нажмите на этот инструмент @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw Технический чертёж - + Create Horizontal Coordinate Dimensions Создать горизонтальные размеры координат - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Создать несколько равномерно расположенных горизонтальных размеров, начиная с одной и той же базовой линии:<br>- Укажите каскадный интервал (опционально)<br>- Выберите три или более вершин<br>- Порядок выбора первых двух вершин определяет позицию базовой линии<br>- Нажмите на этот инструмент @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw Технический чертёж - - + + Create Horizontal Chain Dimensions Создание горизонтальных размеров цепи - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Создать последовательность выравниваемых горизонтальных размеров:<br>- Выберите три или более вершин<br>- нажмите на этот инструмент @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw Технический чертёж - - + + Create Horizontal Chamfer Dimension Создать горизонтальный размер фаски - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Создать горизонтальный размер и размер угла для фаски:<br>- Выберите две вершины<br>- Щёлкните этот инструмент @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw Технический чертёж - - + + Create Horizontal Coordinate Dimensions Создать горизонтальные размеры координат - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Создать несколько равномерно расположенных горизонтальных размеров, начиная с одной и той же базовой линии:<br>- Укажите каскадный интервал (опционально)<br>- Выберите три или более вершин<br>- Порядок выбора первых двух вершин определяет позицию базовой линии<br>- Нажмите на этот инструмент @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw Технический чертёж - + Create Arc Length Dimension Создать размер дуги - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Создать размер длины дуги:<br>- Выберите одну дугу<br>- Нажмите на этот инструмент @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw Технический чертёж - - + + Create Oblique Chain Dimensions Создать размеры наклонной цепи - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Создать последовательность выровненных неровностей:<br>- Выберите три или более вершин<br>- первые две вершины определяют направление<br>- Нажмите на этот инструмент @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw Технический чертёж - - + + Create Oblique Coordinate Dimensions Создание наклонных координатных размеров - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Создайте несколько равномерно расположенных наклонных измерений, начиная с одной и той же базовой линии:<br>- Укажите шаг каскада (необязательно)<br>- Выберите три или более вершин<br>- Порядок выбора первых двух вершин определяет положение базовая линия<br>- Первые две вершины также определяют направление<br>- Щелкните этот инструмент @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw Технический чертёж - - + + Create Vertical Chain Dimensions Простановка вертикальной цепочки размеров - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Создать последовательность выравниваемых горизонтальных размеров:<br>- Выберите три или более вершин<br>- нажмите на этот инструмент @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw Технический чертёж - - + + Create Vertical Chamfer Dimension Создать вертикальный размер фаски - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Создать горизонтальный размер и размер угла для фаски:<br>- Выберите две вершины<br>- Щёлкните этот инструмент @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw Технический чертёж - - + + Create Vertical Coordinate Dimensions Создать вертикальные координаты - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Создать несколько равномерно расположенных горизонтальных размеров, начиная с одной и той же базовой линии:<br>- Укажите каскадный интервал (опционально)<br>- Выберите три или более вершин<br>- Порядок выбора первых двух вершин определяет позицию базовой линии<br>- Нажмите на этот инструмент @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw Технический чертёж - + Customize Format Label Настройка формата метки - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Выберите размер или воздушный шар<br> - нажмите на этот инструмент<br> - отредактируйте поле Формат, используя клавиатуру и/или специальные кнопки @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw Технический чертёж - - + + Decrease Decimal Places Уменьшить десятичные знаки - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Уменьшить количество десятичных знаков текста размера:<br>- Выберите один или более размеров<br>- нажмите на этот инструмент @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw Технический чертёж - - + + Increase Decimal Places Увеличить знаки после запятой - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Увеличить количество знаков после запятой текста размера:<br>- Выберите один или более измерений<br>- нажмите на этот инструмент @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw Технический чертёж - + Increase Decimal Places Увеличить знаки после запятой - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Увеличить количество знаков после запятой текста размера:<br>- Выберите один или более измерений<br>- нажмите на этот инструмент @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw Технический чертёж - - + + Insert '⌀' Prefix Вставьте '<unk>' префикс - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Вставьте '<unk>' символ в начале размерного текста:<br>- Выберите один или несколько размеров<br>- нажмите на этот инструмент @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw Технический чертёж - + Insert '⌀' Prefix Вставьте '<unk>' префикс - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Вставьте '<unk>' символ в начале размерного текста:<br>- Выберите один или несколько размеров<br>- нажмите на этот инструмент @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw Технический чертёж - - + + Insert '□' Prefix Вставьте '<unk>' префикс - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Вставьте '<unk>' символ в начале размерного текста:<br>- Выберите один или несколько размеров<br>- нажмите на этот инструмент @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw Технический чертёж - + Position Horizontal Chain Dimensions Позиция размеров горизонтальной цепи - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Выравнивание размеров по горизонтали для создания размера цепочки:<br>- Выберите два или более горизонтальных размера<br>- первый размер определяет позицию<br>- Нажмите на этот инструмент @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw Технический чертёж - - + + Position Horizontal Chain Dimensions Позиция размеров горизонтальной цепи - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Выравнивание размеров по горизонтали для создания размера цепочки:<br>- Выберите два или более горизонтальных размера<br>- первый размер определяет позицию<br>- Нажмите на этот инструмент @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw Технический чертёж - - + + Position Oblique Chain Dimensions Размеры положения косой цепи - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Выровнять нечеткие размеры для создания размера цепочки:<br>- Выберите два или более параллельных нечетких размеров<br>- первый размер определяет позицию<br>- Нажмите на этот инструмент @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw Технический чертёж - - + + Position Vertical Chain Dimensions Размеры вертикальной цепи - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Выравнивание размеров по горизонтали для создания размера цепочки:<br>- Выберите два или более горизонтальных размера<br>- первый размер определяет позицию<br>- Нажмите на этот инструмент @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw Технический чертёж - + Remove Prefix Удалить префикс - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Удалите символы префикса в начале текста размера:<br>- Выберите один или несколько размеров<br>- Щелкните этот инструмент @@ -1996,8 +1996,8 @@ Создать электронную таблицу + - Save page to dxf Сохранить лист в DXF формате @@ -2058,7 +2058,7 @@ Перетащите размер - + Create Balloon Создать позиционную выноску @@ -2073,8 +2073,8 @@ Создать центральную линию - + Create Cosmetic Line Создать Косметическую Линию @@ -2150,102 +2150,102 @@ Добавить вспомогательную вершину - + TechDraw Insert Prefix TechDraw. Вставить префикс - + Insert Prefix Вставить префикс - + TechDraw Remove Prefix TechDraw. Удалить префикс - + Remove Prefix Удалить префикс - + Increase/Decrease Decimal Увеличить/уменьшить десятичный - + Pos Horiz Chain Dim Позиционный горизонтальный размер цепи - + Pos Vert Chain Dim Позиционный вертикальный размер цепи - + Pos Oblique Chain Dim Позиционный размер наклона цепи - + Cascade Horiz Dim Горизонтальный размер каскада - + Cascade Vert Dim Вертикальный размер каскада - + Cascade Oblique Dim Размер наклона каскада - + Create Horiz Chain Dim Создать горизонтальный размер цепи - + Create Vert Chain Dim Создать вертикальный размер цепи - + Create Oblique Chain Dim Создать размер наклона цепи - + Create Horiz Coord Dim Создать размеры горизонтальных координат - + Create Vert Coord Dim Создать размеры вертикальных координат - + Create Oblique Coord Dim Создать размеры координат наклона - + Create Horiz Chamfer Dim Создать размер фаски по горизонтали - + Create Vert Chamfer Dim Создать вертикальный размер фаски - + Create Arc Length Dim Создать размерную длину дуги @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Неправильное выделение @@ -2744,10 +2744,9 @@ Не найдено объектов профиля в выборке - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Некорректный выбор - + Select an object first Сначала выберите объект - + Too many objects selected Выбрано слишком много объектов - + Create a page first. Сначала создайте страницу. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Нет видов детали в выбранном. @@ -2906,6 +2906,8 @@ Выбранная грань - BSpline. Радиус будет приблизительным. Продолжить? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Некорректный выбор @@ -3058,9 +3058,6 @@ Выберите 2 точечные объекты и 1 Вид. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Задача в процессе - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Закройте окно активной задачи и повторите снова. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Неправильный выбор @@ -3318,28 +3318,22 @@ Выберите только одну линию-выноску или один знак сварки. - - + SurfaceFinishSymbols Символы шероховатости поверхности - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + Выбранный объект не является ни видом детали, ни линией выноски - + No Part View in Selection Нет просмотра части(детали) в выделении - + No %1 in Selection Нет %1 в выборе @@ -3417,7 +3411,7 @@ Экспорт листа в PDF - + Document Name: Название документа: @@ -3432,19 +3426,19 @@ Экспорт листа в SVG - - + + Are you sure you want to continue? Вы уверены, что хотите продолжить? - + Show drawing Показать чертёж - + Toggle KeepUpdated Вкл/Выкл обновление @@ -3469,9 +3463,9 @@ Создатель форматированного текста - + Rich text editor Редактор форматированного текста @@ -3589,133 +3583,133 @@ Править выносной элемент - + Edit %1 Редактировать %1 - + TechDraw Increase/Decrease Decimal TechDraw Увеличение/уменьшение десятичного числа - - + + TechDraw PosHorizChainDimension Чертеж размеров позиций горизонтальной цепи - - + + No horizontal dimensions selected Не выбраны горизонтальные размеры - - + + TechDraw PosVertChainDimension Чертеж размеров вертикальной цепи - - + + No vertical dimensions selected Размеры вертикали не выбраны - - + + TechDraw PosObliqueChainDimension Чертеж размеров наклона (наклонной?) цепи - - + + No oblique dimensions selected Размеры наклона не выбраны - - + + TechDraw CascadeHorizDimension Чертёж, горизонтальные размеры каскада - - + + TechDraw CascadeVertDimension Чертёж, вертикальные размеры каскада - - + + TechDraw CascadeObliqueDimension Чертёж, размер наклона каскада - + TechDraw Create Horizontal Chain Dimension TechDraw Создать размер горизонтальной цепочки - + TechDraw Create Vertical Chain Dimension TechDraw Создать размер вертикальной цепочки - + TechDraw Create Oblique Chain Dimension TechDraw Создать размер косой цепи - + TechDraw Create Horizontal Coord Dimension TechDraw Создать горизонтальное координатное измерение - + TechDraw Create Vertical Coord Dimension TechDraw Создать вертикальное координатное измерение - + TechDraw Create Oblique Coord Dimension TechDraw Создать косой координатный размер - + TechDraw Create Horizontal Chamfer Dimension TechDraw Создать размер горизонтальной фаски - + TechDraw Create Vertical Chamfer Dimension TechDraw Создание вертикального размера фаски - + TechDraw Create Arc Length Dimension TechDraw Создание размера длины дуги - + TechDraw Customize Format TechDraw Настройка формата - + No subelements selected Подэлементы не выбраны - + Selection is empty Пустое выделение - + No object selected Объект не выбран @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Вы не можете удалить эту размерную линию, потому что она содержит символ сварки, который может быть повреждён. - + You cannot delete this view because it has one or more dependent views that would become broken. Вы не можете удалить этот вид, потомучто это повредит один или более других зависимых от него видов. - - - - + - - + + + + + Object dependencies Зависимости объекта @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. Невозможно удалить этот вид, так как он имеет линию выноски, которая может быть разорвана. - + The page is not empty, therefore the following referencing objects might be lost: Страница не пуста, поэтому @@ -7409,8 +7403,8 @@ You can pick further points to get line segments. - - + + Top Сверху @@ -7421,8 +7415,8 @@ You can pick further points to get line segments. - - + + Left Слева @@ -7433,14 +7427,14 @@ You can pick further points to get line segments. - - + + Right Справа - + Rear Сзади @@ -7451,8 +7445,8 @@ You can pick further points to get line segments. - - + + Bottom Снизу @@ -7504,31 +7498,31 @@ using the given X/Y Spacing Вертикальное пространство между границами проекций - - + + FrontTopLeft Спереди сверху слева - - + + FrontBottomRight Спереди снизу справа - - + + FrontTopRight Спереди сверху справа - - + + FrontBottomLeft Спереди снизу слева - + Front Спереди @@ -8168,12 +8162,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Удалить префикс - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Удалите символы префикса в начале текста размера:<br>- Выберите один или несколько размеров<br>- Щелкните этот инструмент @@ -9378,4 +9372,24 @@ there is an open task dialog. Нажмите на этот инструмент + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + Технический чертёж + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts index ec9d77910e..bc348ab2d6 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TehRisanje - + Cascade Horizontal Dimensions Stopniči vodoravne kote - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Enakomerno razmakni vodoravne kote:<br>– Določite stopničasti zamik (po želji)<br>– Izberite dve ali več vodoravnih kot<br>– Prva kota določa položaj<br>– Kliknite to orodje @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TehRisanje - - + + Cascade Horizontal Dimensions Stopničasto vodoravno kotiranje - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Enakomerno razmakni vodoravne kote:<br>– Določite stopničasti zamik (po želji)<br>– Izberite dve ali več vodoravnih kot<br>– Prva kota določa položaj<br>– Kliknite to orodje @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TehRisanje - - + + Cascade Oblique Dimensions Stopniči poševne kote - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Enakomerno razmakni ležeče kote:<br>– Določite stopničasti zamik (po želji)<br>– Izberite dve ali več vzporednih ležečih kot<br>– Prva kota določa položaj<br>– Kliknite to orodje @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TehRisanje - - + + Cascade Vertical Dimensions Stopniči navpične kote - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Enakomerno razmakni navpične kote:<br>– Določite stopničasti zamik (po želji)<br>– Izberite dve ali več navpičnih kot<br>– Prva kota določa položaj<br>– Kliknite to orodje @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TehDraw - + Create Horizontal Chamfer Dimension Ustvari vodoravno koto posnetega roba - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Ustvari vodoravno koto z velikostjo in kotom za posneti rob:<br>- Izberite dve oglišči<br>- Kliknite na to orodje @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TehRisanje - + Create Horizontal Chain Dimensions Ustvari vodoravne zaporedne kote - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Ustvarite zaporedje poravnanih vodoravnih kot:<br>- Izberite tri ali več oglišč<br>- Kliknite to orodje @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TehRisanje - + Create Horizontal Coordinate Dimensions Ustvari vodoravne vzporedne kote - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Ustvari v enakomernem razmiku več vodoravnih kot, ki se začenjajo na isti izhodiščnici:<br>- Določite korak (neobvezno)<br>- Izberite tri oglišča ali več<br>- Prvi dve oglišči določita položaj izhodiščnice<br>- Kliknite to orodje @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TehRisanje - - + + Create Horizontal Chain Dimensions Ustvari vodoravne zaporedne kote - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Ustvarite zaporedje poravnanih vodoravnih kot:<br>- Izberite tri ali več oglišč<br>- Kliknite to orodje @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TehDraw - - + + Create Horizontal Chamfer Dimension Ustvari vodoravno koto posnetega roba - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Ustvari vodoravno koto velikosti in kota prisekanja:<br>- Izberite dve oglišči<br>- Kliknite to orodje @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TehRisanje - - + + Create Horizontal Coordinate Dimensions Ustvari vodoravne vzporedne kote - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Ustvari v enakomernem razmiku več vodoravnih kot, ki se začenjajo na isti izhodiščnici:<br>- Določite korak (neobvezno)<br>- Izberite tri oglišča ali več<br>- Prvi dve oglišči določita položaj izhodiščnice<br>- Kliknite to orodje @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TehRisbe (TechDraw) - + Create Arc Length Dimension Ustvari koto ločne dolžine - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Ustvari koto dolžine krožnega loka:<br>- Izberi en sam lok<br>- Kliknite to orodje @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TehRisbe (TechDraw) - - + + Create Oblique Chain Dimensions Ustvari poševne zaporedne kote - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Ustvari zaporedje poravnanih poševnih kot:<br>- Izberite tri oglišča ali več<br>- Prvi dve oglišči določata smer<br>- Kliknite to orodje @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TehRisbe (TechDraw) - - + + Create Oblique Coordinate Dimensions Ustvari poševne vzporedne kote - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Ustvari v enakomernem razmiku več pođevnih kot, ki se začenjajo na isti izhodiščnici:<br>- Določite korak (neobvezno)<br>- Izberite tri oglišča ali več<br>- Prvi dve oglišči določita položaj izhodiščnice<br>- Prvi dve oglišči določata tudi smer<br>- Kliknite to orodje @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TehRisbe (TechDraw) - - + + Create Vertical Chain Dimensions Ustvari navpične zaporedne kote - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Ustvarite zaporedje poravnanih navpičnih kot:<br>- Izberite tri ali več oglišč<br>- Kliknite to orodje @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Ustvari navpično koto priseka - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Ustvari navpično koto z velikostjo in kotom za posneti rob:<br>- Izberite dve oglišči<br>- Kliknite na to orodje @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TehRisbe (TechDraw) - - + + Create Vertical Coordinate Dimensions Ustvari navpične vzporedne kote - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Ustvari v enakomernem razmiku več navpičnih kot, ki se začenjajo na isti izhodiščnici:<br>- Določite korak (neobvezno)<br>- Izberite tri oglišča ali več<br>- Prvi dve oglišči določita položaj izhodiščnice<br>- Kliknite to orodje @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TehRisbe (TechDraw) - + Customize Format Label Prilagodi obliko oznake - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Izberite koto ali opisnico<br> - kliknite to orodje<br> - uredite oblikovno polje s tipkovnico in/ali posebnimi gumbi @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TehRisbe (TechDraw) - - + + Decrease Decimal Places Manj decimalnih mest - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Zmanjšajte število decimalnih mest vrednosti kote:<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TehRisbe (TechDraw) - - + + Increase Decimal Places Več decimalnih mest - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Povečaj število decimalnih mest vrednosti kote:<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TehRisbe (TechDraw) - + Increase Decimal Places Več decimalnih mest - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Povečaj število decimalnih mest vrednosti kote:<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TehRisbe (TechDraw) - - + + Insert '⌀' Prefix Vstavi predpono '⌀' - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Vstavi pred besedilo kote znak '⌀':<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TehRisbe (TechDraw) - + Insert '⌀' Prefix Vstavi predpono '⌀' - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Vstavi pred besedilo kote znak '⌀':<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TehRisbe (TechDraw) - - + + Insert '□' Prefix Vstavi predpono '□' - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Vstavi pred besedilo kote znak '□':<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TehRisbe (TechDraw) - + Position Horizontal Chain Dimensions Položaj vodoravnih zaporednih kot - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnaj vodoravne kote, da postanejo zaporedne<br>:– Izberite dve vodoravni koti ali več<br>– Prva kota določa položaj<br>- Kliknite to orodje @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TehRisbe (TechDraw) - - + + Position Horizontal Chain Dimensions Položaj vodoravnih zaporednih kot - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnaj vodoravne kote, da postanejo zaporedne<br>:– Izberite dve vodoravni koti ali več<br>– Prva kota določa položaj<br>- Kliknite to orodje @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TehRisbe (TechDraw) - - + + Position Oblique Chain Dimensions Položaj poševnih zaporednih kot - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnaj poševne kote, da postanejo zaporedne:<br>- Izberite dve ali več vzporednih poševnih kot<br>- Prva kota določa položaj<br>- Kliknite to orodje @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TehRisbe (TechDraw) - - + + Position Vertical Chain Dimensions Položaj navpičnih zaporednih kot - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Poravnaj navpične kote, da postanejo zaporedne<br>:– Izberite dve navpični koti ali več<br>– Prva kota določa položaj<br>- Kliknite to orodje @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TehRisbe (TechDraw) - + Remove Prefix Odstrani predpono - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Odstrani predponske znake pred besedilom kote:<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -1996,8 +1996,8 @@ Ustvari preglednični pogled + - Save page to dxf Shrani stran kot DXF @@ -2058,7 +2058,7 @@ Vleci koto - + Create Balloon Ustvari opisnico @@ -2073,8 +2073,8 @@ Ustvari Središčnico - + Create Cosmetic Line Ustvari dopolnilno črto @@ -2150,102 +2150,102 @@ Dodaj dopolnilno oglišče - + TechDraw Insert Prefix TehRisbe (TechDraw) Vstavi predpono - + Insert Prefix Vstavi predpono - + TechDraw Remove Prefix TehRisbe (TechDraw) Odstrani predpono - + Remove Prefix Odstrani predpono - + Increase/Decrease Decimal Povečaj/zmanjšaj število decimalk - + Pos Horiz Chain Dim Postavitev vodoravnih zaporednih kot - + Pos Vert Chain Dim Postavitev navpičnih zaporednih kot - + Pos Oblique Chain Dim Postavitev poševnih zaporednih kot - + Cascade Horiz Dim Stopniči vodoravne kote - + Cascade Vert Dim Stopniči navpične kote - + Cascade Oblique Dim Stopniči poševne kote - + Create Horiz Chain Dim Ustvari vodoravne zaporedne kote - + Create Vert Chain Dim Ustvarinavpične zaporedne kote - + Create Oblique Chain Dim Ustvari poševne zaporedne kote - + Create Horiz Coord Dim Ustvari vodoravne vzporedne kote - + Create Vert Coord Dim Ustvari navpične vzporedne kote - + Create Oblique Coord Dim Ustvari poševne vzporedne kote - + Create Horiz Chamfer Dim Ustvari vodoravno koto posnetega roba - + Create Vert Chamfer Dim Ustvari navpično koto posnetega roba - + Create Arc Length Dim Ustvari koto ločne dolžine @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Napačna izbira @@ -2744,10 +2744,9 @@ V izboru ni nobenega prereznega predmeta - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Nepravilen izbor - + Select an object first Izberite najprej predmet - + Too many objects selected Izbranih je preveč predmetov - + Create a page first. Najprej ustvarite stran. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. V izboru ni pogleda na del. @@ -2906,6 +2906,8 @@ Izbrani rob je B-zlepek. Polmer bo približen. Nadaljevanje? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Nepravilna Izbira @@ -3058,9 +3058,6 @@ Izberite dva točkovna predmeta in en pogled. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Opravilo je v teku - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Zapri dejavno pogovorno okno z opravili in poskusi ponovno. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Napačen izbor @@ -3318,28 +3318,22 @@ Izberite natanko eno opisnično črto ali eno oznako za zvar. - - + SurfaceFinishSymbols Znaki površinske obdelave - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection Nobenega pogleda dela ni v izboru - + No %1 in Selection V izboru ni: %1 @@ -3417,7 +3411,7 @@ Izvozi stran v PDF - + Document Name: Ime dokumenta: @@ -3432,19 +3426,19 @@ Izvozi stran kot SVG - - + + Are you sure you want to continue? Ali ste prepričani da želite nadaljevati? - + Show drawing Prikaži risbo - + Toggle KeepUpdated Preklopi Ohrani posodobljeno @@ -3469,9 +3463,9 @@ Ustvarjalnik obogatenega besedila - + Rich text editor Urejevalnik obogatenega besedila @@ -3589,133 +3583,133 @@ Uredi podrobni pogled - + Edit %1 Uredi %1 - + TechDraw Increase/Decrease Decimal TehRisbe (TechDraw) povečaj/zmanjšaj število decimalk - - + + TechDraw PosHorizChainDimension TehRisbe (TechDraw) položaj vodoravnih zaporednih kot - - + + No horizontal dimensions selected Izbrane ni nobene vodoravne kote - - + + TechDraw PosVertChainDimension TehRisbe (TechDraw) položaj navpični zaporednih kot - - + + No vertical dimensions selected Izbrane ni nobene navpične kote - - + + TechDraw PosObliqueChainDimension TehRisbe (TechDraw) položaj poševnih zaporednih kot - - + + No oblique dimensions selected Izbrane ni nobene poševne kote - - + + TechDraw CascadeHorizDimension TehRisbe (TechDraw) stopniči vodoravne kote - - + + TechDraw CascadeVertDimension TehRisbe (TechDraw) stopniči navpične kote - - + + TechDraw CascadeObliqueDimension TehRisbe (TechDraw) stopniči poševne kote - + TechDraw Create Horizontal Chain Dimension TehRisbe (TechDraw) ustvari vodoravno zaporedno koto - + TechDraw Create Vertical Chain Dimension TehRisbe (TechDraw) ustvari navpične zaporedno koto - + TechDraw Create Oblique Chain Dimension TehRisbe (TechDraw) ustvari poševno zaporedno koto - + TechDraw Create Horizontal Coord Dimension TehRisbe (TechDraw) ustvari vodoravno vzporedno koto - + TechDraw Create Vertical Coord Dimension TehRisbe (TechDraw) ustvari navpične vzporedne kote - + TechDraw Create Oblique Coord Dimension TehRisbe (TechDraw) ustvari poševno vzporedno koto - + TechDraw Create Horizontal Chamfer Dimension TechDraw ustvari vodoravno koto posnetega roba - + TechDraw Create Vertical Chamfer Dimension TechDraw ustvari navpično koto posnetega roba - + TechDraw Create Arc Length Dimension TehRisbe (TechDraw) ustvari koto dolžine loka - + TechDraw Customize Format TehRisbe (TechDraw) prilagodi obliko - + No subelements selected Nobene izbrane podprvine - + Selection is empty Nič ni izbrano - + No object selected Izbran ni noben predmet @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Te opisnične črte ne morete izbrisati, ker vsebuje oznako za varjenje, ki bi postala okvarjena. - + You cannot delete this view because it has one or more dependent views that would become broken. Tega pogleda ne morete izbrisati, ker vsebuje enega ali več odvisnih pogledov, ki bi se tako pokvarili. - - - - + - - + + + + + Object dependencies Odvisnosti predmetov @@ -3908,7 +3902,7 @@ oznako za varjenje, ki bi postala okvarjena. Tega pogleda ne morete izbrisati, ker vsebuje opisnično črto, ki bi postala okvarjena. - + The page is not empty, therefore the following referencing objects might be lost: Ta stran ni prazna, zaradi česa lahko izgubite @@ -7413,8 +7407,8 @@ Izberete lahko še druge točke, da dobite črtne odseke. - - + + Top Zgoraj @@ -7425,8 +7419,8 @@ Izberete lahko še druge točke, da dobite črtne odseke. - - + + Left Levo @@ -7437,14 +7431,14 @@ Izberete lahko še druge točke, da dobite črtne odseke. - - + + Right Desno - + Rear Zadaj @@ -7455,8 +7449,8 @@ Izberete lahko še druge točke, da dobite črtne odseke. - - + + Bottom Spodaj @@ -7508,31 +7502,31 @@ s pomočjo podanih X/Y odmikov Navpični odmik med mejami preslikav - - + + FrontTopLeft Spredaj-levo-zgoraj - - + + FrontBottomRight Spredaj-desno-spodaj - - + + FrontTopRight Spredaj-desno-zgoraj - - + + FrontBottomLeft Spredaj-levo-spodaj - + Front Spredaj @@ -8172,12 +8166,12 @@ s pomočjo podanih X/Y odmikov TechDraw_ExtensionremovePrefixChar - + Remove Prefix Odstrani predpono - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Odstrani predponske znake pred besedilom kote:<br>- Izberite eno ali več kot<br>- Kliknite to orodje @@ -9381,4 +9375,24 @@ ker je odprto pogovorno okno. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TehRisbe (TechDraw) + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr-CS.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr-CS.ts index 4541051b30..c2f87cc514 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr-CS.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr-CS.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Rasporedi paralelno horizontalne kote - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno paralelno rasporedi horizontalne kote:<br>- Navedi paralelno rastojanje u alatki 'Izaberi svojstva linije, paralelno rastojanje i delta rastojanje' (neobavezno)<br>- Izaberi dve ili više horizontalnih kota<br>- Prva kota određuje položaj<br>- Klikni na ovu alatku @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Rasporedi paralelno horizontalne kote - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno paralelno rasporedi horizontalne kote:<br>- Navedi paralelno rastojanje u alatki 'Izaberi svojstva linije, paralelno rastojanje i delta rastojanje' (neobavezno)<br>- Izaberi dve ili više horizontalnih kota<br>- Prva kota određuje položaj<br>- Klikni na ovu alatku @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Rasporedi paralelno kose kote - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno paralelno rasporedi kose kote:<br>- Navedi paralelno rastojanje (neobavezno)<br>- Izaberi dve ili više kosih kota<br>- Prva kota određuje položaj<br>- Klikni na ovu alatku @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Rasporedi paralelno vertikalne kote - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno paralelno rasporedi vertikalne kote:<br>- Navedi paralelno rastojanje (neobavezno)<br>- Izaberi dve ili više vertikalnih kota<br>- Prva kota određuje položaj<br>- Klikni na ovu alatku @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Horizontalna kota oborene ivice - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Kotiraj horizontalno veličinu i ugao oborene ivice:<br>- Izaberi dva temena<br>- Klikni na ovu alatku @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Horizontalno redno kotiranje - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Napravi niz redno poravnatih horizontalnih kota:<br>- Izaberi tri ili više temena<br>- Klikni na ovu alatku @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Horizontalno paralelno kotiranje - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Napravi više ravnomerno raspoređenih horizontalnih paralelnih kota koje počinju od iste osnovne linije:<br>- Navedi razmak između kota (neobavezno)<br>- Izaberi tri ili više temena<br>- Redosled izbora prva dva temena određuje položaj osnovne linije<br>- Klikni na ovu alatku @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Horizontalno redno kotiranje - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Napravi niz redno poravnatih horizontalnih kota:<br>- Izaberi tri ili više temena<br>- Klikni na ovu alatku @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Horizontalna kota oborene ivice - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Kotiraj horizontalno veličinu i ugao oborene ivice:<br>- Izaberi dva temena<br>- Klikni na ovu alatku @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Horizontalno paralelno kotiranje - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Napravi više ravnomerno raspoređenih horizontalnih paralelnih kota koje počinju od iste osnovne linije:<br>- Navedi razmak između kota (neobavezno)<br>- Izaberi tri ili više temena<br>- Redosled izbora prva dva temena određuje položaj osnovne linije<br>- Klikni na ovu alatku @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Kotiraj dužinu luka - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Kotiraj dužinu kružnog luka:<br>- Izaberi jedan kružni luk<br>- Klikni na ovu alatku @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Koso redno kotiranje - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Napravi niz redno poravnatih kosih kota:<br>- Izaberi tri ili više temena<br>- Prva dva temena definišu pravac<br>- Klikni na ovu alatku @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Koso paralelno kotiranje - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Napravi više ravnomerno raspoređenih kosih paralelnih kota koje počinju od iste osnovne linije:<br>- Navedi razmak između kota (neobavezno)<br>- Izaberi tri ili više temena<br>- Redosled izbora prva dva temena određuje položaj osnovne linije<br>- Prva dva temena takođe definišu i pravac<br>- Klikni na ovu alatku @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Vertikalno redno kotiranje - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Napravi niz redno poravnatih vertikalnih kota:<br>- Izaberi tri ili više temena<br>- Klikni na ovu alatku @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Vertikalna kota oborene ivice - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Kotiraj vertikalnu veličinu i ugao oborene ivice:<br>- Izaberi dva temena<br>- Klikni na ovu alatku @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Vertikalno paralelno kotiranje - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Napravi više ravnomerno raspoređenih vertikalnih paralelnih kota koje počinju od iste osnovne linije:<br>- Navedi razmak između kota (neobavezno)<br>- Izaberi tri ili više temena<br>- Redosled izbora prva dva temena određuje položaj osnovne linije<br>- Klikni na ovu alatku @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Prilagodi format oznake - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Izaberi kotu ili pokaznu oznaku<br> - Klikni na ovu alatku<br> - uredi polje Format, koristeći tastaturu i/ili posebna dugmad @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Smanji broj decimala - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Smanji broj decimalnih mesta kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Povećaj broj decimala - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Povećaj broj decimalnih mesta kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Povećaj broj decimala - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Povećaj broj decimalnih mesta kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Upiši prefiks '⌀' - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Upiši '⌀' simbol ispred kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Upiši prefiks '⌀' - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Upiši '⌀' simbol ispred kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Upiši prefiks '□' - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Upiši '□' simbol ispred kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Rasporedi redno horizontalne kote - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno redno rasporedi horizontalne kote:<br>- Izaberi dve ili više horizontalnih kota<br>- Prva kota definiše položaj<br>- Klikni na ovu alatku @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Rasporedi redno horizontalne kote - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno redno rasporedi horizontalne kote:<br>- Izaberi dve ili više horizontalnih kota<br>- Prva kota definiše položaj<br>- Klikni na ovu alatku @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Rasporedi redno kose kote - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno redno rasporedi kose kote:<br>- Izaberi dve ili više kosih kota<br>- Prva kota definiše položaj<br>- Klikni na ovu alatku @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Rasporedi redno vertikalne kote - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Ravnomerno redno rasporedi vertikalne kote:<br>- Izaberi dve ili više vertikalnih kota<br>- Prva kota definiše položaj<br>- Klikni na ovu alatku @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Ukloni prefiks - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ukloni prefiks simbol koji se nalazi ispred kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -1996,8 +1996,8 @@ Napravi pogled of tabele + - Save page to dxf Sačuvaj crtež kao dxf @@ -2058,7 +2058,7 @@ Prevuci kotu - + Create Balloon Napravi pozicionu oznaku @@ -2073,8 +2073,8 @@ Napravi osnu liniju - + Create Cosmetic Line Napravi pomoćnu duž @@ -2150,102 +2150,102 @@ Dodaj pomoćnu tačku - + TechDraw Insert Prefix TechDraw Upiši prefiks - + Insert Prefix Upiši prefiks - + TechDraw Remove Prefix TechDraw Ukloni prefiks - + Remove Prefix Ukloni prefiks - + Increase/Decrease Decimal Povećaj/Smanji decimalu - + Pos Horiz Chain Dim Rasporedi horizontalne redne kote - + Pos Vert Chain Dim Rasporedi vertikalne redne kote - + Pos Oblique Chain Dim Rasporedi kose redne kote - + Cascade Horiz Dim Rasporedi paralelno horizontalne kote - + Cascade Vert Dim Rasporedi paralelno vertikalne kote - + Cascade Oblique Dim Rasporedi paralelno kose kote - + Create Horiz Chain Dim Horizontalno redno kotiranje - + Create Vert Chain Dim Vertikalno redno kotiranje - + Create Oblique Chain Dim Koso redno kotiranje - + Create Horiz Coord Dim Napravi horizontalne paralelne kote - + Create Vert Coord Dim Napravi vertikalne paralelne kote - + Create Oblique Coord Dim Napravi kose paralelne kote - + Create Horiz Chamfer Dim Horizontalna kota oborene ivice - + Create Vert Chamfer Dim Vertikalna kota oborene ivice - + Create Arc Length Dim Kotiraj dužinu luka @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Pogrešan izbor @@ -2744,10 +2744,9 @@ Nije izabran objekat sa profilom - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Pogrešan izbor - + Select an object first Prvo izaberi objekat - + Too many objects selected Previše objekata je izabrano - + Create a page first. Prvo napravi stranicu. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Nije izabran pogled dela. @@ -2906,6 +2906,8 @@ Izabrana ivica je B-Splajn. Radijus će biti približan. Nastavi? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Pogrešan izbor @@ -3058,9 +3058,6 @@ Izaberi 2 tačkasta objekta i 1 pogled. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Zadatak u toku - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Zatvori dijalog aktivnog zadatka i pokušaj ponovo. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Pogrešan izbor @@ -3318,28 +3318,22 @@ Izaberi tačno jednu pokaznu liniju ili simbol zavarivanja. - - + SurfaceFinishSymbols Oznaka kvaliteta površine - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection Nije izabran pogled dela - + No %1 in Selection Nije izabran %1 @@ -3417,7 +3411,7 @@ Izvezi crtež kao PDF - + Document Name: Ime dokumenta: @@ -3432,19 +3426,19 @@ Izvezi crtež kao SVG - - + + Are you sure you want to continue? Da li si siguran da želiš da nastaviš? - + Show drawing Prikaži crtež - + Toggle KeepUpdated Uklj/Isklj KeepUpdated (Održavaj ažurnim) @@ -3469,9 +3463,9 @@ Tvorac formatiranog teksta - + Rich text editor Urednik za formatiranje teksta @@ -3589,133 +3583,133 @@ Uredi detaljni pogled - + Edit %1 Uredi %1 - + TechDraw Increase/Decrease Decimal TechDraw Povećaj/Smanji decimalu - - + + TechDraw PosHorizChainDimension TechDraw Rasporedi redno horizontalne kote - - + + No horizontal dimensions selected Nije izabrana nijedna horizontalna kota - - + + TechDraw PosVertChainDimension TechDraw Rasporedi redno vertikalne kote - - + + No vertical dimensions selected Nije izabrana nijedna vertikalna kota - - + + TechDraw PosObliqueChainDimension TechDraw Rasporedi redno kose kote - - + + No oblique dimensions selected Nije izabrana nijedna kosa kota - - + + TechDraw CascadeHorizDimension TechDraw Rasporedi paralelno horizontalne kote - - + + TechDraw CascadeVertDimension TechDraw Rasporedi paralelno vertikalne kote - - + + TechDraw CascadeObliqueDimension TechDraw Rasporedi paralelno kose kote - + TechDraw Create Horizontal Chain Dimension TechDraw Napravi redne horizontalne kote - + TechDraw Create Vertical Chain Dimension TechDraw Napravi redne vertikalne kote - + TechDraw Create Oblique Chain Dimension TechDraw Napravi redne kose kote - + TechDraw Create Horizontal Coord Dimension TechDraw Napravi paralelne horizontalne kote - + TechDraw Create Vertical Coord Dimension TechDraw Napravi paralelne vertikalne kote - + TechDraw Create Oblique Coord Dimension TechDraw Napravi paralelne kose kote - + TechDraw Create Horizontal Chamfer Dimension TechDraw Napravi horizontalnu kotu oborene ivice - + TechDraw Create Vertical Chamfer Dimension TechDraw Napravi vertikalnu kotu oborene ivice - + TechDraw Create Arc Length Dimension TechDraw Napravi kotu dužine luka - + TechDraw Customize Format TechDraw Prilagodi format - + No subelements selected Nema izabranih podelemenata - + Selection is empty Nisi ništa izabrao - + No object selected Nije izabran nijedan objekat @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Ne možeš da obrišeš ovu pokaznu liniju jer ima simbol zavarivanja koji bi se pokvario. - + You cannot delete this view because it has one or more dependent views that would become broken. Ne možeš obrisati ovaj pogled jer ima jedan ili više zavisnih objekata koji će postati neispravni. - - - - + - - + + + + + Object dependencies Međuzavisnosti objekata @@ -3908,7 +3902,7 @@ ima simbol zavarivanja koji bi se pokvario. Ne možeš da obrišeš ovaj pogled jer ima pokaznu liniju koja bi bila oštećena. - + The page is not empty, therefore the following referencing objects might be lost: Crtež nije prazan, zbog toga @@ -7115,7 +7109,7 @@ Možeš odabrati dodatne tačke da bi dobio segmente linija. Continuous - Continuous + Puna @@ -7409,8 +7403,8 @@ Možeš odabrati dodatne tačke da bi dobio segmente linija. - - + + Top Odozgo @@ -7421,8 +7415,8 @@ Možeš odabrati dodatne tačke da bi dobio segmente linija. - - + + Left Sleva @@ -7433,14 +7427,14 @@ Možeš odabrati dodatne tačke da bi dobio segmente linija. - - + + Right Sdesna - + Rear Straga @@ -7451,8 +7445,8 @@ Možeš odabrati dodatne tačke da bi dobio segmente linija. - - + + Bottom Odozdo @@ -7503,31 +7497,31 @@ using the given X/Y Spacing Vertikalni razmak između osnovnih pogleda - - + + FrontTopLeft SpredaOdozgoSleva - - + + FrontBottomRight SpredaOdozdoSdesna - - + + FrontTopRight SpredaOdozgoSdesna - - + + FrontBottomLeft SpredaOdozdoSleva - + Front Spreda @@ -7708,7 +7702,7 @@ using the given X/Y Spacing Continuous - Continuous + Puna @@ -8167,12 +8161,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Ukloni prefiks - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ukloni prefiks simbol koji se nalazi ispred kotnog broja:<br>- Izaberi jednu ili više kota<br>- Klikni na ovu alatku @@ -9030,22 +9024,22 @@ postoji otvoren panel zadataka. Position - Position + Položaj X-Offset - X-Offset + Odmak po X Y-Offset - Y-Offset + Odmak po Y Enter X offset value - Enter X offset value + Unesi vrednost odmak po X @@ -9053,7 +9047,7 @@ postoji otvoren panel zadataka. Add an offset vertex - Add an offset vertex + Dodaj odmaknuto teme @@ -9069,7 +9063,7 @@ postoji otvoren panel zadataka. Add offset vertex - Add offset vertex + Dodaj odmaknuto teme @@ -9097,7 +9091,7 @@ postoji otvoren panel zadataka. Update All - Update All + Ažuriraj sve @@ -9128,7 +9122,7 @@ postoji otvoren panel zadataka. No vertex selected - No vertex selected + Nije izabrano teme @@ -9139,7 +9133,7 @@ postoji otvoren panel zadataka. vertexes - vertexes + temena @@ -9149,7 +9143,7 @@ postoji otvoren panel zadataka. edges - edges + ivice @@ -9377,4 +9371,24 @@ postoji otvoren panel zadataka. Aktiviraj ovu alatku + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.ts index b6d4f5a4aa..f4c15d635e 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Распореди паралелно хоризонталне коте - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно паралелно распореди хоризонталне коте:<br>- Наведи паралелно растојање у алатки 'Изабери својства линије, паралелно растојање и Делта растојање' (необавезно)<br>- Изабери две или више хоризонталних кота<br>-Прва кота одређује положај<br>- Кликни на ову алатку @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Распореди паралелно хоризонталне коте - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно паралелно распореди хоризонталне коте:<br>- Наведи паралелно растојање у алатки 'Изабери својства линије, паралелно растојање и Делта растојање' (необавезно)<br>- Изабери две или више хоризонталних кота<br>-Прва кота одређује положај<br>- Кликни на ову алатку @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Распореди паралелно косе коте - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно паралелно распореди косе коте:<br>- Наведи паралелно растојање (необавезно)<br>- Изабери две или више косих кота<br>-Прва кота одређује положај<br>- Кликни на ову алатку @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Распореди паралелно вертикалне коте - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно паралелно распореди вертикалне коте:<br>- Наведи паралелно растојање (необавезно)<br>- Изабери две или више хоризонталних кота<br>-Прва кота одређује положај<br>- Кликни на ову алатку @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Хоризонтална кота оборене ивице - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Котирај хоризонтално величину и угао оборене ивице:<br>- Изабери два темена<br>- Кликни на ову алатку @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Хоризонтално редно котирање - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Направи низ редно поравнатих хоризонталних кота:<br>- Изабери три или више темена<br>- Кликни на ову алатку @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Хоризонтално паралелно котирање - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Направи више равномерно распоређених хоризонталних паралелних кота које почињу од исте основне линије:<br>- Наведи размак између кота (необавезно)<br>- Изабери три или више темена<br>- Редослед избора прва два темена одређује положај основне линије<br>- Кликни на ову алатку @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Хоризонтално редно котирање - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Направи низ редно поравнатих хоризонталних кота:<br>- Изабери три или више темена<br>- Кликни на ову алатку @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Хоризонтална кота оборене ивице - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Котирај хоризонтално величину и угао оборене ивице:<br>- Изабери два темена<br>- Кликни на ову алатку @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Хоризонтално паралелно котирање - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Направи више равномерно распоређених хоризонталних паралелних кота које почињу од исте основне линије:<br>- Наведи размак између кота (необавезно)<br>- Изабери три или више темена<br>- Редослед избора прва два темена одређује положај основне линије<br>- Кликни на ову алатку @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Котирај дужину лука - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Котирај дужину кружног лука:<br>- Изабери један кружни лук<br>- Кликни на ову алатку @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Косо редно котирање - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Направи низ редно поравнатих косих кота:<br>- Изабери три или више темена<br>- Прва два темена дефинишу правац<br>- Кликни на ову алатку @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Косо паралелно котирање - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Направи више равномерно распоређених косих паралелних кота које почињу од исте основне линије:<br>- Наведи размак између кота (необавезно)<br>- Изабери три или више темена<br>- Редослед избора прва два темена одређује положај основне линије<br>- Прва два врха такође дефинишу и правац<br>- Кликни на ову алатку @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Вертикално редно котирање - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Направи низ редно поравнатих вертикалних кота:<br>- Изабери три или више темена<br>- Кликни на ову алатку @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Вертикална кота оборене ивице - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Котирај вертикално величину и угао оборене ивице:<br>- Изабери два темена<br>- Кликни на ову алатку @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Вертикално паралелно котирање - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Направи више равномерно распоређених вертикалних паралелних кота које почињу од исте основне линије:<br>- Наведи размак између кота (необавезно)<br>- Изабери три или више темена<br>- Редослед избора прва два темена одређује положај основне линије<br>- Кликни на ову алатку @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Прилагоди формат ознаке - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Изабери коту или показну ознаку<br> - Кликни на ову алатку<br> - уреди поље Формат, користећи тастатуру и/или посебна дугмад @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Смањи број децимала - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Смањи број децималних места котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Повећај број децимала - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Повећај број децималних места котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Повећај број децимала - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Повећај број децималних места котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Упиши префикс '⌀' - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Упиши '⌀' симбол испред котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Упиши префикс '⌀' - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Упиши '⌀' симбол испред котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Упиши префикс '□' - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Упиши '□' симбол испред котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Распореди редно хоризонталне коте - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно редно распореди хоризонталне коте:<br>- Изабери две или више хоризонталних кота<br>- Прва кота одређује положај<br>- Кликни на ову алатку @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Распореди редно хоризонталне коте - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно редно распореди хоризонталне коте:<br>- Изабери две или више хоризонталних кота<br>- Прва кота одређује положај<br>- Кликни на ову алатку @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Распореди редно косе коте - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно редно распореди косе коте:<br>- Изабери две или више косих кота<br>- Прва кота одређује положај<br>- Кликни на ову алатку @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Распореди редно вертикалне коте - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Равномерно редно распореди вертикалне коте:<br>- Изабери две или више вертикалних кота<br>- Прва кота одређује положај<br>- Кликни на ову алатку @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Уклони префикс - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Уклони префикс симбол који се налази испред котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -1996,8 +1996,8 @@ Направи поглед од табеле + - Save page to dxf Сачувај цртеж као dxf @@ -2058,7 +2058,7 @@ Превуци коту - + Create Balloon Направи позициону ознаку @@ -2073,8 +2073,8 @@ Направи Осну линију - + Create Cosmetic Line Направи помоћну дуж @@ -2150,102 +2150,102 @@ Додај помоћну тачку - + TechDraw Insert Prefix TechDraw Упиши префикс - + Insert Prefix Упиши префикс - + TechDraw Remove Prefix TechDraw Уклони префикс - + Remove Prefix Уклони префикс - + Increase/Decrease Decimal Повећај/Смањи децималу - + Pos Horiz Chain Dim Распореди хоризонталне редне коте - + Pos Vert Chain Dim Распореди вертикалне редне коте - + Pos Oblique Chain Dim Распореди косе редне коте - + Cascade Horiz Dim Распореди паралелно хоризонталне коте - + Cascade Vert Dim Распореди паралелно вертикалне коте - + Cascade Oblique Dim Распореди паралелно косе коте - + Create Horiz Chain Dim Хоризонтално редно котирање - + Create Vert Chain Dim Вертикално редно котирање - + Create Oblique Chain Dim Косо редно котирање - + Create Horiz Coord Dim Направи хоризонталне паралелне коте - + Create Vert Coord Dim Направи вертикалне паралелне коте - + Create Oblique Coord Dim Направи косе паралелне коте - + Create Horiz Chamfer Dim Хоризонтална кота оборене ивице - + Create Vert Chamfer Dim Вертикална кота оборене ивице - + Create Arc Length Dim Котирај дужину лука @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Погрешан избор @@ -2744,10 +2744,9 @@ Није изабран објекат са профилом - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Погрешан избор - + Select an object first Прво изабери објекат - + Too many objects selected Превише објеката је изабрано - + Create a page first. Прво направи страницу. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Није изабран поглед дела. @@ -2906,6 +2906,8 @@ Изабрана ивица је Б-Сплајн. Полупречник ће бити приближан. Настави? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Погрешан избор @@ -3058,9 +3058,6 @@ Изабери 2 тачкаста објекта и 1 поглед. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Задатак у току - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Затвори дијалог активног задатка и покушај поново. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Погрешан избор @@ -3318,28 +3318,22 @@ Изабери тачно једну показну линију или симбол заваривања. - - + SurfaceFinishSymbols Ознаку квалитета површине - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line - Selected object is not a part view, nor a leader line + Сакриј додатке без лиценце - + No Part View in Selection Није изабран поглед дела - + No %1 in Selection Није изабран %1 @@ -3417,7 +3411,7 @@ Извези цртеж као PDF - + Document Name: Име документа: @@ -3432,19 +3426,19 @@ Извези цртеж као SVG - - + + Are you sure you want to continue? Да ли си сигуран да желиш да наставиш? - + Show drawing Прикажи цртеж - + Toggle KeepUpdated Укљ/Искљ KeepUpdated (Одржавај ажурним) @@ -3469,9 +3463,9 @@ Творац форматираног текста - + Rich text editor Уредник форматираног текста @@ -3589,133 +3583,133 @@ Уреди детаљни поглед - + Edit %1 Уреди %1 - + TechDraw Increase/Decrease Decimal TechDraw Повећај/Смањи децималу - - + + TechDraw PosHorizChainDimension TechDraw Распореди редно хоризонталне коте - - + + No horizontal dimensions selected Није изабрана ниједна хоризонтална кота - - + + TechDraw PosVertChainDimension TechDraw Распореди редно вертикалне коте - - + + No vertical dimensions selected Није изабрана ниједна вертикална кота - - + + TechDraw PosObliqueChainDimension TechDraw Распореди редно косе коте - - + + No oblique dimensions selected Није изабрана ниједна коса кота - - + + TechDraw CascadeHorizDimension TechDraw Распореди паралелно хоризонталне коте - - + + TechDraw CascadeVertDimension TechDraw Распореди паралелно вертикалне коте - - + + TechDraw CascadeObliqueDimension TechDraw Распореди паралелно косе коте - + TechDraw Create Horizontal Chain Dimension TechDraw Направи редне хоризонталне коте - + TechDraw Create Vertical Chain Dimension TechDraw Направи редне вертикалне коте - + TechDraw Create Oblique Chain Dimension TechDraw Направи редне косе коте - + TechDraw Create Horizontal Coord Dimension TechDraw Направи паралелне хоризонталне коте - + TechDraw Create Vertical Coord Dimension TechDraw Направи паралелне вертикалне коте - + TechDraw Create Oblique Coord Dimension TechDraw Направи паралелне косе коте - + TechDraw Create Horizontal Chamfer Dimension TechDraw Направи хоризонталну коту оборене ивице - + TechDraw Create Vertical Chamfer Dimension TechDraw Направи вертикалну коту оборене ивице - + TechDraw Create Arc Length Dimension TechDraw Направи коту дужине лука - + TechDraw Customize Format TechDraw Прилагоди формат - + No subelements selected Нема изабраних поделемената - + Selection is empty Ниси ништа изабрао - + No object selected Није изабран ниједан објекат @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Не можеш да обришеш ову показну линију јер има симбол заваривања који би се покварио. - + You cannot delete this view because it has one or more dependent views that would become broken. Не можеш обрисати овај поглед јер има један или више зависних објеката који ће постати неисправни. - - - - + - - + + + + + Object dependencies Међузависности објеката @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. Не можеш да обришеш овај поглед јер има показну линију која би била оштећена. - + The page is not empty, therefore the following referencing objects might be lost: Цртеж није празан, због тога @@ -7115,7 +7109,7 @@ You can pick further points to get line segments. Continuous - Continuous + Пуна @@ -7409,8 +7403,8 @@ You can pick further points to get line segments. - - + + Top Одозго @@ -7421,8 +7415,8 @@ You can pick further points to get line segments. - - + + Left Слева @@ -7433,14 +7427,14 @@ You can pick further points to get line segments. - - + + Right Сдесна - + Rear Страга @@ -7451,8 +7445,8 @@ You can pick further points to get line segments. - - + + Bottom Одоздо @@ -7503,31 +7497,31 @@ using the given X/Y Spacing Вертикални размак између основних погледа - - + + FrontTopLeft СпредаОдозгоСлева - - + + FrontBottomRight СпредаОдоздоСдесна - - + + FrontTopRight СпредаОдозгоСдесна - - + + FrontBottomLeft СпредаОдоздоСлева - + Front Спреда @@ -7708,7 +7702,7 @@ using the given X/Y Spacing Continuous - Continuous + Пуна @@ -8167,12 +8161,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Уклони префикс - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Уклони префикс симбол који се налази испред котног броја:<br>- Изабери једну или више кота<br>- Кликни на ову алатку @@ -9030,22 +9024,22 @@ there is an open task dialog. Position - Position + Положај X-Offset - X-Offset + Одмак по X Y-Offset - Y-Offset + Одмак по Y Enter X offset value - Enter X offset value + Унеси вредност одмака по X @@ -9053,7 +9047,7 @@ there is an open task dialog. Add an offset vertex - Add an offset vertex + Додај одмакнуто теме @@ -9069,7 +9063,7 @@ there is an open task dialog. Add offset vertex - Add offset vertex + Додај одмакнуто теме @@ -9097,7 +9091,7 @@ there is an open task dialog. Update All - Update All + Ажурирај све @@ -9128,7 +9122,7 @@ there is an open task dialog. No vertex selected - No vertex selected + Није изабрано теме @@ -9139,7 +9133,7 @@ there is an open task dialog. vertexes - vertexes + темена @@ -9149,7 +9143,7 @@ there is an open task dialog. edges - edges + ивице @@ -9377,4 +9371,24 @@ there is an open task dialog. Активирај ову алатку + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.ts index b0109143aa..a968c12306 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Ta bort prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Skapa kalkylbladsvy + - Save page to dxf Spara sida på dxf @@ -2058,7 +2058,7 @@ Dra dimension - + Create Balloon Skapa ballong @@ -2073,8 +2073,8 @@ Skapa CenterLine - + Create Cosmetic Line Skapa kosmetisk linje @@ -2150,102 +2150,102 @@ Lägg till Kosmetiska Vertex - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Ta bort prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Fel val @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Felaktig markering - + Select an object first Markera ett objekt först - + Too many objects selected För många objekt markerade - + Create a page first. Skapa en sida först. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Ingen delvy i markeringen. @@ -2906,6 +2906,8 @@ Markerad kant är en B-spline, radie kommer att vara uppskattad. Fortsätt? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Felaktig markering @@ -3058,9 +3058,6 @@ Markera 2 punktobjekt och 1 Visa. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Uppgift pågår - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Stäng aktiv uppgiftsdialog och försök igen. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Fel val @@ -3318,28 +3318,22 @@ Välj exakt en Ledare fodrar eller en Svetsa symbol. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Exportera sida som PDF - + Document Name: Dokumentnamn: @@ -3432,19 +3426,19 @@ Exportera sida som SVG - - + + Are you sure you want to continue? Är du säker på att du vill fortsätta? - + Show drawing Visa ritning - + Toggle KeepUpdated Växla "Håll uppdaterad" @@ -3469,9 +3463,9 @@ Rich Text-skapare - + Rich text editor Rich Text-redigerare @@ -3589,133 +3583,133 @@ Redigera detaljvy - + Edit %1 Redigera %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Du kan inte ta bort den här ledarlinjen eftersom den har en svetssymbol som skulle bli trasig. - + You cannot delete this view because it has one or more dependent views that would become broken. Du kan inte ta bort denna vy eftersom den har en eller flera beroende vyer som skulle brytas. - - - - + - - + + + + + Object dependencies Objektberoenden @@ -3908,7 +3902,7 @@ den har en svetssymbol som skulle bli trasig. Du kan inte ta bort den här vyn eftersom den har en uttrÃ¥ttlinje som skulle bli bruten. - + The page is not empty, therefore the following referencing objects might be lost: Sidan är inte tom, därför är @@ -7413,8 +7407,8 @@ Du kan plocka ytterligare poäng för att få linjesegment. - - + + Top Topp @@ -7425,8 +7419,8 @@ Du kan plocka ytterligare poäng för att få linjesegment. - - + + Left Vänster @@ -7437,14 +7431,14 @@ Du kan plocka ytterligare poäng för att få linjesegment. - - + + Right Höger - + Rear Bak @@ -7455,8 +7449,8 @@ Du kan plocka ytterligare poäng för att få linjesegment. - - + + Bottom Botten @@ -7508,31 +7502,31 @@ med hjälp av det givna X/Y-avstånden Vertikalt utrymme mellan gränsen för prognoser - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Front @@ -8172,12 +8166,12 @@ med hjälp av det givna X/Y-avstånden TechDraw_ExtensionremovePrefixChar - + Remove Prefix Ta bort prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9382,4 +9376,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts index 9b757add4f..8fdfa2f4d8 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TeknikÇizim - + Cascade Horizontal Dimensions Yatay Ölçüleri Sırala - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Yatay ölçüleri ara mesafelerini eşit olarak ayarla:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- İki veya daha fazla yatay ölçü seçin<br>- İlk ölçü konumu tanımlar<br>- Bu aracı tıklayın @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TeknikÇizim - - + + Cascade Horizontal Dimensions Yatay Ölçüleri Sırala - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Yatay ölçüleri ara mesafelerini eşit olarak ayarla:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- İki veya daha fazla yatay ölçü seçin<br>- İlk ölçü konumu tanımlar<br>- Bu aracı tıklayın @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TeknikÇizim - - + + Cascade Oblique Dimensions Eğik Ölçüleri Sırala - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Eğik ölçüleri ara mesafelerini eşit olarak ayarla:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- İki veya daha fazla paralel eğik ölçü seçin<br>- İlk ölçü konumu tanımlar<br>- Bu aracı tıklayın @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TeknikÇizim - - + + Cascade Vertical Dimensions Dikey Ölçüleri Sırala - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Dikey ölçüleri ara mesafelerini eşit olarak ayarla:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- İki veya daha fazla dikey ölçü seçin<br>- İlk ölçü konumu tanımlar<br>- Bu aracı tıklayın @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TeknikÇizim - + Create Horizontal Chamfer Dimension Yatay Pah Ölçüsü Oluştur - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Bir pah için yatay bir ölçü ve açı boyutu oluşturun:<br>- İki tepe noktası seçin<br>- Bu araca tıklayın @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TeknikÇizim - + Create Horizontal Chain Dimensions Yatay Ölçü Zinciri Oluştur - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Bir dizi hizalanmış yatay ölçü oluşturun:<br>- Üç veya daha fazla köşe seçin<br>- Bu aracı tıklayın @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TeknikÇizim - + Create Horizontal Coordinate Dimensions Yatay Koordinat Ölçüleri Oluşturun - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Aynı taban çizgisinden başlayarak birden çok eşit aralıklı yatay ölçü oluşturun:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- Üç veya daha fazla nokta seçin<br>- İlk iki noktanın seçim sırası taban çizgisinin konumunu belirler <br>- Bu aracı tıklayın @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TeknikÇizim - - + + Create Horizontal Chain Dimensions Yatay Ölçü Zinciri Oluştur - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Bir dizi hizalanmış yatay ölçü oluşturun:<br>- Üç veya daha fazla köşe seçin<br>- Bu aracı tıklayın @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TeknikÇizim - - + + Create Horizontal Chamfer Dimension Yatay Pah Ölçüsü Oluştur - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Bir pah için yatay bir ölçü ve açı boyutu oluşturun:<br>- İki tepe noktası seçin<br>- Bu araca tıklayın @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TeknikÇizim - - + + Create Horizontal Coordinate Dimensions Yatay Koordinat Ölçüleri Oluşturun - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Aynı taban çizgisinden başlayarak birden çok eşit aralıklı yatay ölçü oluşturun:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- Üç veya daha fazla nokta seçin<br>- İlk iki noktanın seçim sırası taban çizgisinin konumunu belirler <br>- Bu aracı tıklayın @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TeknikÇizim - + Create Arc Length Dimension Yay Uzunluğu Ölçüsü Oluştur - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Bir yay uzunluğu boyutu oluşturun:<br>- Tek bir yay seçin<br>- Bu araca tıklayın @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TeknikÇizim - - + + Create Oblique Chain Dimensions Eğik Ölçü Zincirleri Oluşturun - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Hizalanmış eğik ölçüler dizisi oluşturun:<br>- Üç veya daha fazla nokta seçin<br>- İlk iki nokta yönü tanımlar<br>- Bu aracı tıklayın @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TeknikÇizim - - + + Create Oblique Coordinate Dimensions Eğik Koordinat Ölçüleri Oluşturun - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Aynı taban çizgisinden başlayarak birden çok eşit aralıklı eğik ölçü oluşturun:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- Üç veya daha fazla nokta seçin<br>- İlk iki noktanın seçim sırası taban çizgisinin konumunu belirler <br>- İlk iki nokta aynı zamanda yönü de tanımlar<br>- Bu araca tıklayın @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TeknikÇizim - - + + Create Vertical Chain Dimensions Dikey Ölçü Zinciri Oluştur - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Hizalanmış dikey ölçü dizisi oluşturun:<br>- Üç veya daha fazla nokta seçin<br>- Bu aracı tıklayın @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TeknikÇizim - - + + Create Vertical Chamfer Dimension Dikey Pah Ölçüsü Oluştur - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Bir pah için dikey ölçü ve açı ölçüsü oluşturun:<br>- İki nokta seçin<br>- Bu aracı tıklayın @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TeknikÇizim - - + + Create Vertical Coordinate Dimensions Dikey Koordinat Ölçüleri Oluşturun - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Aynı taban çizgisinden başlayarak birden çok eşit aralıklı dikey ölçü oluşturun:<br>- Sıralı aralığı belirtin (isteğe bağlı)<br>- Üç veya daha fazla nokta seçin<br>- İlk iki noktanın seçim sırası taban çizgisinin konumunu belirler <br>- Bu aracı tıklayın @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TeknikÇizim - + Customize Format Label Biçim Etiketini Özelleştir - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Bir Ölçü veya balon seçin<br> - bu aracı tıklayın<br> - klavyeyi ve/veya özel düğmeleri kullanarak Biçim alanını düzenleyin @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TeknikÇizim - - + + Decrease Decimal Places Ondalık Basamakları Azalt - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ölçü metninin ondalık basamak sayısını azaltın:<br>- Bir veya daha fazla ölçü seçin<br>- Bu araca tıklayın @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TeknikÇizim - - + + Increase Decimal Places Ondalık Basamakları Artır - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ölçü metninin ondalık basamak sayısını artırın:<br>- Bir veya daha fazla ölçü seçin<br>- Bu aracı tıklayın @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TeknikÇizim - + Increase Decimal Places Ondalık Basamakları Artır - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ölçü metninin ondalık basamak sayısını artırın:<br>- Bir veya daha fazla ölçü seçin<br>- Bu aracı tıklayın @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TeknikÇizim - - + + Insert '⌀' Prefix '⌀' Öneki ekle - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ölçü metninin başına bir '⌀' sembolü ekleyin:<br>- Bir veya daha fazla ölçü seçin<br>- Bu araca tıklayın @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TeknikÇizim - + Insert '⌀' Prefix '⌀' Öneki ekle - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ölçü metninin başına bir '⌀' sembolü ekleyin:<br>- Bir veya daha fazla ölçü seçin<br>- Bu araca tıklayın @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TeknikÇizim - - + + Insert '□' Prefix '□' Öneki ekle - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Ölçü metninin başına bir '□' sembolü ekleyin:<br>- Bir veya daha fazla ölçü seçin<br>- Bu araca tıklayın @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TeknikÇizim - + Position Horizontal Chain Dimensions Yatay Ölçü Zinciri Konumu - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TeknikÇizim - - + + Position Horizontal Chain Dimensions Yatay Ölçü Zinciri Konumu - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TeknikÇizim - - + + Position Oblique Chain Dimensions Eğik Ölçü Zincirleri Konumu - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TeknikÇizim - - + + Position Vertical Chain Dimensions Dikey Ölçü Zincirleri Konumu - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TeknikÇizim - + Remove Prefix Öneki Kaldır - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Elektronik tablo görünümü oluştur + - Save page to dxf Sayfayı dxf olarak kaydedin @@ -2058,7 +2058,7 @@ Ölçüyü Sürükle - + Create Balloon Balon Oluştur @@ -2073,8 +2073,8 @@ MerkezÇizgisi Oluştur - + Create Cosmetic Line Yardımcı çizgi oluştur @@ -2150,102 +2150,102 @@ Yardımcı Nokta Ekle - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Önek Ekle - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Öneki Kaldır - + Increase/Decrease Decimal Ondalık Artırma/Azaltma - + Pos Horiz Chain Dim Yty Ölçü Zinciri Knm - + Pos Vert Chain Dim Dky Ölçü Zinciri Knm - + Pos Oblique Chain Dim Eğik Ölçü Zinciri Knm - + Cascade Horiz Dim Yty Ölçü Sırala - + Cascade Vert Dim Dky Ölçü Sırala - + Cascade Oblique Dim Eğik Ölçü Sırala - + Create Horiz Chain Dim Yty Ölçü Zinciri Oluştur - + Create Vert Chain Dim Dky Ölçü Zinciri Oluştur - + Create Oblique Chain Dim Eğik Ölçü Zinciri Oluşturun - + Create Horiz Coord Dim Yty Ölçü Koord Oluştur - + Create Vert Coord Dim Dky Ölçü Koord Oluştur - + Create Oblique Coord Dim Eğik Ölçü Koord Oluşturun - + Create Horiz Chamfer Dim Yty Pah Ölçüsü Oluştur - + Create Vert Chamfer Dim Dky Pah Ölçüsü Oluştur - + Create Arc Length Dim Yay Uzunluğu Ölçüsü Oluştur @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Yanlış seçim @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Yanlış seçim - + Select an object first Önce bir nesne seçin - + Too many objects selected Çok fazla nesne seçili - + Create a page first. Önce bir sayfa oluşturun. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. Seçimde Parça Görünümü Yok. @@ -2906,6 +2906,8 @@ Seçili kenar bir BSpline'dır. Yarıçap yaklaşık olacaktır. Devam? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Hatalı seçim @@ -3058,9 +3058,6 @@ 2 nokta nesnesi ve 1 görünüm seçin(2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Devam eden görevler - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Etkin görev iletişim kutusunu kapatın ve yeniden deneyin. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Yanlış seçim @@ -3318,28 +3318,22 @@ Tam olarak bir lider hattı(Leader line) yada bir kaynak(Weld) sembolü seçiniz. - - + SurfaceFinishSymbols YüzeyPürüzlülüğüSembolleri - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection Seçimde Parça Görünümü Yok - + No %1 in Selection Seçimde %1 Yok @@ -3417,7 +3411,7 @@ Sayfayı PDF olarak dışa aktar - + Document Name: Belge Adı: @@ -3432,19 +3426,19 @@ Sayfayı SVG olarak dışa aktar - - + + Are you sure you want to continue? Devam etmek istediğinizden emin misiniz? - + Show drawing Çizimi göster - + Toggle KeepUpdated GüncelTutma Ayarı @@ -3469,9 +3463,9 @@ Zengin metin oluşturucusu - + Rich text editor Zengin metin düzenleyicisi @@ -3589,133 +3583,133 @@ Detaylı Görünümü düzenle - + Edit %1 %1'i düzenle - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw YtyÖlçüZincirKnm - - + + No horizontal dimensions selected Yatay ölçü seçilmedi - - + + TechDraw PosVertChainDimension TechDraw DkyÖlçüZincirKnm - - + + No vertical dimensions selected Dikey ölçü seçilmedi - - + + TechDraw PosObliqueChainDimension TechDraw EğikÖlçüZincirKnm - - + + No oblique dimensions selected Eğik ölçü seçilmedi - - + + TechDraw CascadeHorizDimension TechDraw SıralıYatayÖlçü - - + + TechDraw CascadeVertDimension TechDraw SıralıDikeyÖlçü - - + + TechDraw CascadeObliqueDimension TechDraw SıralıEğikÖlçü - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Seçim boş - + No object selected Seçili nesne yok @@ -3861,28 +3855,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. Bu ölçü çizgisini silemezsiniz çünkü bozulabilecek bir kaynak sembolü içeriyor. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Nesne bağımlılıkları @@ -3907,7 +3901,7 @@ it has a weld symbol that would become broken. Bu görünüşü silemezsiniz çünkü bozulabilecek bir ölçü çizgisi içeriyor. - + The page is not empty, therefore the following referencing objects might be lost: Sayfa boş değil, bu yüzden aşağıdaki referans nesneleri kaybolabilecek: @@ -7409,8 +7403,8 @@ sonra en az ikinci bir noktayı seçin. - - + + Top üst @@ -7421,8 +7415,8 @@ sonra en az ikinci bir noktayı seçin. - - + + Left Sol @@ -7433,14 +7427,14 @@ sonra en az ikinci bir noktayı seçin. - - + + Right Sağ - + Rear Arka @@ -7451,8 +7445,8 @@ sonra en az ikinci bir noktayı seçin. - - + + Bottom Alt @@ -7504,31 +7498,31 @@ gösterimleri otomatik dağıtır Çıkıntıların sınırları arasındaki dikey boşluk - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Ön @@ -8168,12 +8162,12 @@ gösterimleri otomatik dağıtır TechDraw_ExtensionremovePrefixChar - + Remove Prefix Öneki Kaldır - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9378,4 +9372,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TeknikÇizim + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.ts index 2f14380e1d..83688a5915 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw ТехМалюнок - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw ТехМалюнок - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw ТехМалюнок - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw ТехМалюнок - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw ТехМалюнок - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw ТехМалюнок - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw ТехМалюнок - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw ТехМалюнок - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw ТехМалюнок - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw ТехМалюнок - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw ТехМалюнок - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw ТехМалюнок - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw ТехМалюнок - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw ТехМалюнок - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw ТехМалюнок - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw ТехМалюнок - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw ТехМалюнок - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw ТехМалюнок - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw ТехМалюнок - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw ТехМалюнок - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw ТехМалюнок - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw ТехМалюнок - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw ТехМалюнок - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw ТехМалюнок - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw ТехМалюнок - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw ТехМалюнок - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw ТехМалюнок - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw ТехМалюнок - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Create spreadsheet view + - Save page to dxf Зберегти сторінку в dxf файл @@ -2058,7 +2058,7 @@ Drag Dimension - + Create Balloon Create Balloon @@ -2073,8 +2073,8 @@ Create CenterLine - + Create Cosmetic Line Create Cosmetic Line @@ -2150,102 +2150,102 @@ Add Cosmetic Vertex - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Невірний вибір @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Некоректний вибір - + Select an object first Оберіть об'єкт для початку - + Too many objects selected Обрано забагато об'єктів - + Create a page first. Спочатку створіть сторінку. - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No View of a Part in selection. @@ -2906,6 +2906,8 @@ Selected edge is a BSpline. Radius will be approximate. Continue? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Некоректний вибір @@ -3058,9 +3058,6 @@ Select 2 point objects and 1 View. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Task In Progress - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Close active task dialog and try again. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Wrong Selection @@ -3318,28 +3318,22 @@ Select exactly one Leader line or one Weld symbol. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Експорт в PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Експорт в SVG - - + + Are you sure you want to continue? Ви впевнені, що бажаєте продовжити? - + Show drawing Показати креслення - + Toggle KeepUpdated Toggle KeepUpdated @@ -3469,9 +3463,9 @@ Rich text creator - + Rich text editor Rich text editor @@ -3589,133 +3583,133 @@ Edit Detail View - + Edit %1 Редагувати %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. Не можна видалити цей вид, оскільки він має один або більше залежних видів, що будуть зламані. - - - - + - - + + + + + Object dependencies Залежності обʼєктів @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. You cannot delete this view because it has a leader line that would become broken. - + The page is not empty, therefore the following referencing objects might be lost: Сторінка не порожня, тому @@ -7412,8 +7406,8 @@ You can pick further points to get line segments. - - + + Top Згори @@ -7424,8 +7418,8 @@ You can pick further points to get line segments. - - + + Left Ліворуч @@ -7436,14 +7430,14 @@ You can pick further points to get line segments. - - + + Right Направо - + Rear Ззаду @@ -7454,8 +7448,8 @@ You can pick further points to get line segments. - - + + Bottom Знизу @@ -7507,31 +7501,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Фронтальний @@ -8171,12 +8165,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9381,4 +9375,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + ТехМалюнок + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.ts index e8ec05b31d..b43637e661 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw TechDraw - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw TechDraw - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw TechDraw - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw TechDraw - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw TechDraw - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw TechDraw - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw TechDraw - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw TechDraw - - + + Create Horizontal Chamfer Dimension Create Horizontal Chamfer Dimension - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw TechDraw - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw TechDraw - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw TechDraw - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw TechDraw - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw TechDraw - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw TechDraw - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw TechDraw - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw TechDraw - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw TechDraw - - + + Decrease Decimal Places Decrease Decimal Places - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw TechDraw - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw TechDraw - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw TechDraw - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw TechDraw - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw TechDraw - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw TechDraw - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ Create spreadsheet view + - Save page to dxf Save page to dxf @@ -2058,7 +2058,7 @@ Drag Dimension - + Create Balloon Create Balloon @@ -2073,8 +2073,8 @@ Create CenterLine - + Create Cosmetic Line Create Cosmetic Line @@ -2150,102 +2150,102 @@ Afig un vèrtex cosmètic - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim Create Oblique Chain Dim - + Create Horiz Coord Dim Create Horiz Coord Dim - + Create Vert Coord Dim Create Vert Coord Dim - + Create Oblique Coord Dim Create Oblique Coord Dim - + Create Horiz Chamfer Dim Create Horiz Chamfer Dim - + Create Vert Chamfer Dim Create Vert Chamfer Dim - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection Selecció incorrecta @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection Selecció incorrecta - + Select an object first Seleccioneu primer un objecte - + Too many objects selected Massa objectes seleccionats - + Create a page first. Creeu una pàgina primer - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. No hi ha cap vista d'una peça en la selecció. @@ -2906,6 +2906,8 @@ L'aresta seleccionada és una BSpline. El radi serà aproximat. Voleu continuar? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection Selecció incorrecta @@ -3058,9 +3058,6 @@ Seleccioneu 2 objectes punt i una vista. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress Tasca en procés - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. Tanca el quadre de diàleg de tasques actiu i intenta-ho altra vegada. @@ -3183,8 +3183,8 @@ - - + + Wrong Selection Selecció incorrecta @@ -3318,28 +3318,22 @@ Seleccioneu exactament una única línia guia o un únic símbol de soldadura. - - + SurfaceFinishSymbols SurfaceFinishSymbols - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ Exporta una pàgina com a PDF - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ Exportar una pàgina com a SVG - - + + Are you sure you want to continue? Are you sure you want to continue? - + Show drawing Mostra el dibuix - + Toggle KeepUpdated Activa/desactiva l'actualització automàtica @@ -3469,9 +3463,9 @@ Creador de text enriquit - + Rich text editor Editor de text enriquit @@ -3589,133 +3583,133 @@ Edit Detail View - + Edit %1 Edita %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected No subelements selected - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. You cannot delete this leader line because it has a weld symbol that would become broken. - + You cannot delete this view because it has one or more dependent views that would become broken. You cannot delete this view because it has one or more dependent views that would become broken. - - - - + - - + + + + + Object dependencies Dependències de l'objecte @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. No podeu suprimir aquesta vista perquè conté una línia guia que es trencaria. - + The page is not empty, therefore the following referencing objects might be lost: The page is not empty, therefore the @@ -7403,8 +7397,8 @@ You can pick further points to get line segments. - - + + Top Planta @@ -7415,8 +7409,8 @@ You can pick further points to get line segments. - - + + Left Esquerra @@ -7427,14 +7421,14 @@ You can pick further points to get line segments. - - + + Right Dreta - + Rear Posterior @@ -7445,8 +7439,8 @@ You can pick further points to get line segments. - - + + Bottom Inferior @@ -7498,31 +7492,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front Alçat @@ -8162,12 +8156,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9372,4 +9366,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.ts index 7a99fcea58..4e8d10b6c8 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw 工程图 - + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw 工程图 - - + + Cascade Horizontal Dimensions Cascade Horizontal Dimensions - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw 工程图 - - + + Cascade Oblique Dimensions Cascade Oblique Dimensions - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw 工程图 - - + + Cascade Vertical Dimensions Cascade Vertical Dimensions - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw 工程图 - + Create Horizontal Chamfer Dimension 水平标注倒角尺寸 - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 用一个水平尺寸和角度尺寸标注倒角。第一步,选择两个顶点;第二步,选择这个工具按钮 @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw 工程图 - + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw 工程图 - + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw 工程图 - - + + Create Horizontal Chain Dimensions Create Horizontal Chain Dimensions - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw 工程图 - - + + Create Horizontal Chamfer Dimension 水平标注倒角尺寸 - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 用一个水平尺寸和角度尺寸标注倒角。第一步,选择两个顶点;第二步,选择这个工具按钮 @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw 工程图 - - + + Create Horizontal Coordinate Dimensions Create Horizontal Coordinate Dimensions - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw 工程图 - + Create Arc Length Dimension Create Arc Length Dimension - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool Create an arc length dimension:<br>- Select a single arc<br>- Click this tool @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw 工程图 - - + + Create Oblique Chain Dimensions Create Oblique Chain Dimensions - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw 工程图 - - + + Create Oblique Coordinate Dimensions Create Oblique Coordinate Dimensions - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw 工程图 - - + + Create Vertical Chain Dimensions Create Vertical Chain Dimensions - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw 工程图 - - + + Create Vertical Chamfer Dimension Create Vertical Chamfer Dimension - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw 工程图 - - + + Create Vertical Coordinate Dimensions Create Vertical Coordinate Dimensions - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw 工程图 - + Customize Format Label Customize Format Label - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw 工程图 - - + + Decrease Decimal Places 减少小数位 - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw 工程图 - - + + Increase Decimal Places Increase Decimal Places - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw 工程图 - + Increase Decimal Places Increase Decimal Places - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw 工程图 - - + + Insert '⌀' Prefix Insert '⌀' Prefix - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw 工程图 - + Insert '⌀' Prefix Insert '⌀' Prefix - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw 工程图 - - + + Insert '□' Prefix Insert '□' Prefix - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw 工程图 - + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw 工程图 - - + + Position Horizontal Chain Dimensions Position Horizontal Chain Dimensions - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw 工程图 - - + + Position Oblique Chain Dimensions Position Oblique Chain Dimensions - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw 工程图 - - + + Position Vertical Chain Dimensions Position Vertical Chain Dimensions - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw 工程图 - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -1996,8 +1996,8 @@ 创建电子表格视图 + - Save page to dxf 保存页面到 dxf @@ -2058,7 +2058,7 @@ 拖动尺寸 - + Create Balloon 创建气球 @@ -2073,8 +2073,8 @@ 创建中心线 - + Create Cosmetic Line Create Cosmetic Line @@ -2150,102 +2150,102 @@ 添加饰品顶点 - + TechDraw Insert Prefix TechDraw Insert Prefix - + Insert Prefix Insert Prefix - + TechDraw Remove Prefix TechDraw Remove Prefix - + Remove Prefix Remove Prefix - + Increase/Decrease Decimal Increase/Decrease Decimal - + Pos Horiz Chain Dim Pos Horiz Chain Dim - + Pos Vert Chain Dim Pos Vert Chain Dim - + Pos Oblique Chain Dim Pos Oblique Chain Dim - + Cascade Horiz Dim Cascade Horiz Dim - + Cascade Vert Dim Cascade Vert Dim - + Cascade Oblique Dim Cascade Oblique Dim - + Create Horiz Chain Dim Create Horiz Chain Dim - + Create Vert Chain Dim Create Vert Chain Dim - + Create Oblique Chain Dim 创建斜尺寸链 - + Create Horiz Coord Dim 创建水平坐标尺寸 - + Create Vert Coord Dim 创建竖直坐标尺寸 - + Create Oblique Coord Dim 创建斜坐标尺寸 - + Create Horiz Chamfer Dim 创建水平倒角尺寸 - + Create Vert Chamfer Dim 创建竖直倒角尺寸 - + Create Arc Length Dim Create Arc Length Dim @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection 选择错误 @@ -2744,10 +2744,9 @@ No profile object found in selection - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection 选择错误 - + Select an object first 首先选择对象 - + Too many objects selected 选择的对象过多 - + Create a page first. 首先创建一个页面。 - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. 没有选择中零件的视图。 @@ -2906,6 +2906,8 @@ 所选边是贝赛尔曲线。 半径将是近似值。继续? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection 选择错误 @@ -3058,9 +3058,6 @@ Select 2 point objects and 1 View. (2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress 任务正在进行 - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. 关闭活动任务对话框并重试。 @@ -3183,8 +3183,8 @@ - - + + Wrong Selection 错误选择。 @@ -3318,28 +3318,22 @@ Select exactly one Leader line or one Weld symbol. - - + SurfaceFinishSymbols 表面粗糙度符号 - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection No Part View in Selection - + No %1 in Selection No %1 in Selection @@ -3417,7 +3411,7 @@ 以 PDF 格式导出页面 - + Document Name: Document Name: @@ -3432,19 +3426,19 @@ 以 SVG格式导出页面 - - + + Are you sure you want to continue? 您确定要继续吗? - + Show drawing 显示绘图 - + Toggle KeepUpdated 切换保持更新 @@ -3469,9 +3463,9 @@ 富文本生成器 - + Rich text editor 富文本编辑器 @@ -3589,133 +3583,133 @@ 编辑局部视图 - + Edit %1 编辑 %1 - + TechDraw Increase/Decrease Decimal TechDraw Increase/Decrease Decimal - - + + TechDraw PosHorizChainDimension TechDraw PosHorizChainDimension - - + + No horizontal dimensions selected No horizontal dimensions selected - - + + TechDraw PosVertChainDimension TechDraw PosVertChainDimension - - + + No vertical dimensions selected No vertical dimensions selected - - + + TechDraw PosObliqueChainDimension TechDraw PosObliqueChainDimension - - + + No oblique dimensions selected No oblique dimensions selected - - + + TechDraw CascadeHorizDimension TechDraw CascadeHorizDimension - - + + TechDraw CascadeVertDimension TechDraw CascadeVertDimension - - + + TechDraw CascadeObliqueDimension TechDraw CascadeObliqueDimension - + TechDraw Create Horizontal Chain Dimension TechDraw Create Horizontal Chain Dimension - + TechDraw Create Vertical Chain Dimension TechDraw Create Vertical Chain Dimension - + TechDraw Create Oblique Chain Dimension TechDraw Create Oblique Chain Dimension - + TechDraw Create Horizontal Coord Dimension TechDraw Create Horizontal Coord Dimension - + TechDraw Create Vertical Coord Dimension TechDraw Create Vertical Coord Dimension - + TechDraw Create Oblique Coord Dimension TechDraw Create Oblique Coord Dimension - + TechDraw Create Horizontal Chamfer Dimension TechDraw Create Horizontal Chamfer Dimension - + TechDraw Create Vertical Chamfer Dimension TechDraw Create Vertical Chamfer Dimension - + TechDraw Create Arc Length Dimension TechDraw Create Arc Length Dimension - + TechDraw Customize Format TechDraw Customize Format - + No subelements selected 未选择子元素 - + Selection is empty Selection is empty - + No object selected No object selected @@ -3861,28 +3855,28 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. 指引线 - + You cannot delete this view because it has one or more dependent views that would become broken. 您不能删除此视图,因为它有一个或多个依赖的视图会被损坏。 - - - - + - - + + + + + Object dependencies 对象依赖关系 @@ -3907,7 +3901,7 @@ it has a weld symbol that would become broken. 您不能删除此视图,因为它有一个指引线会被损坏。 - + The page is not empty, therefore the following referencing objects might be lost: The page is not empty, therefore the @@ -7411,8 +7405,8 @@ You can pick further points to get line segments. - - + + Top 俯视 @@ -7423,8 +7417,8 @@ You can pick further points to get line segments. - - + + Left 左视 @@ -7435,14 +7429,14 @@ You can pick further points to get line segments. - - + + Right 右视 - + Rear 后视 @@ -7453,8 +7447,8 @@ You can pick further points to get line segments. - - + + Bottom 底视 @@ -7506,31 +7500,31 @@ using the given X/Y Spacing Vertical space between border of projections - - + + FrontTopLeft FrontTopLeft - - + + FrontBottomRight FrontBottomRight - - + + FrontTopRight FrontTopRight - - + + FrontBottomLeft FrontBottomLeft - + Front 前视 @@ -8170,12 +8164,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix Remove Prefix - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool @@ -9380,4 +9374,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + 工程图 + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.ts index 1ce1620696..5d3ddab7c5 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.ts @@ -424,17 +424,17 @@ CmdTechDrawExtensionCascadeDimensionGroup - + TechDraw 工程製圖 - + Cascade Horizontal Dimensions 串聯水平標註 - + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 平均水平標註間距:<br>- 指定串級間距 (可選)<br>- 選擇二個或更多個水平尺寸<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -442,19 +442,19 @@ CmdTechDrawExtensionCascadeHorizDimension - + TechDraw 工程製圖 - - + + Cascade Horizontal Dimensions 串聯水平標註 - - + + Evenly space horizontal dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 平均水平標註間距:<br>- 指定串級間距 (可選)<br>- 選擇二個或更多個水平尺寸<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -462,19 +462,19 @@ CmdTechDrawExtensionCascadeObliqueDimension - + TechDraw 工程製圖 - - + + Cascade Oblique Dimensions 串聯傾斜標註 - - + + Evenly space oblique dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool 平均傾斜標註間距:<br>- 指定串級間距 (可選)<br>- 選擇二個或更多個平行傾斜尺寸<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -482,19 +482,19 @@ CmdTechDrawExtensionCascadeVertDimension - + TechDraw 工程製圖 - - + + Cascade Vertical Dimensions 串聯垂直標註 - - + + Evenly space vertical dimensions:<br>- Specify the cascade spacing (optional)<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool 平均垂直標註間距:<br>- 指定串級間距 (可選)<br>- 選擇二個或更多個垂直尺寸<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -502,17 +502,17 @@ CmdTechDrawExtensionChamferDimensionGroup - + TechDraw 工程製圖 - + Create Horizontal Chamfer Dimension 建立水平倒角標註 - + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 建立一個倒角的水平尺寸與角度標註:<br>- 選擇兩個頂點<br>- 點擊此工具 @@ -576,17 +576,17 @@ CmdTechDrawExtensionCreateChainDimensionGroup - + TechDraw 工程製圖 - + Create Horizontal Chain Dimensions 建立水平連續標註 - + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool 建立一系列的對齊水平標註:<br>- 選擇三個或更多的點<br>- 點選此工具 @@ -594,17 +594,17 @@ CmdTechDrawExtensionCreateCoordDimensionGroup - + TechDraw 工程製圖 - + Create Horizontal Coordinate Dimensions 建立水平座標標註 - + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 從同一基線開始創建多個均勻間距的水平標註:<br>- 指定串級間距 (可選)<br>- 選擇三個或更多頂點<br>- 選擇順序中的前兩個頂點決定了基線的位置<br>- 點選此工具 @@ -612,19 +612,19 @@ CmdTechDrawExtensionCreateHorizChainDimension - + TechDraw 工程製圖 - - + + Create Horizontal Chain Dimensions 建立水平連續標註 - - + + Create a sequence of aligned horizontal dimensions:<br>- Select three or more vertexes<br>- Click this tool 建立一系列的對齊水平標註:<br>- 選擇三個或更多的點<br>- 點選此工具 @@ -632,19 +632,19 @@ CmdTechDrawExtensionCreateHorizChamferDimension - + TechDraw 工程製圖 - - + + Create Horizontal Chamfer Dimension 建立水平倒角標註 - - + + Create a horizontal size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 建立一個倒角的水平尺寸與角度標註:<br>- 選擇兩個頂點<br>- 點擊此工具 @@ -652,19 +652,19 @@ CmdTechDrawExtensionCreateHorizCoordDimension - + TechDraw 工程製圖 - - + + Create Horizontal Coordinate Dimensions 建立水平座標標註 - - + + Create multiple evenly spaced horizontal dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 從同一基線開始創建多個均勻間距的水平標註:<br>- 指定串級間距 (可選)<br>- 選擇三個或更多頂點<br>- 選擇順序中的前兩個頂點決定了基線的位置<br>- 點選此工具 @@ -672,17 +672,17 @@ CmdTechDrawExtensionCreateLengthArc - + TechDraw 工程製圖 - + Create Arc Length Dimension 建立弧長標註 - + Create an arc length dimension:<br>- Select a single arc<br>- Click this tool 建立弧長尺寸:<br>- 選擇一弧<br>- 點選此工具 @@ -690,19 +690,19 @@ CmdTechDrawExtensionCreateObliqueChainDimension - + TechDraw 工程製圖 - - + + Create Oblique Chain Dimensions 建立傾斜連續標註 - - + + Create a sequence of aligned oblique dimensions:<br>- Select three or more vertexes<br>- The first two vertexes define the direction<br>- Click this tool 建立一系列的對齊斜標註:<br>- 選擇三個或更多的點<br>前二個點定義其方向<br>- 點選此工具 @@ -710,19 +710,19 @@ CmdTechDrawExtensionCreateObliqueCoordDimension - + TechDraw 工程製圖 - - + + Create Oblique Coordinate Dimensions 建立斜座標標註 - - + + Create multiple evenly spaced oblique dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- The first two vertexes also define the direction<br>- Click this tool 從同一基線開始創建多個均勻間距的傾斜尺寸:<br>- 指定串級間距 (可選)<br>- 選擇三個或更多頂點<br>- 選擇順序中的前兩個頂點決定了基線的位置<br>- 前兩個頂點也同時定義了方向<br>- 點選此工具 @@ -730,19 +730,19 @@ CmdTechDrawExtensionCreateVertChainDimension - + TechDraw 工程製圖 - - + + Create Vertical Chain Dimensions 建立垂直連續標註 - - + + Create a sequence of aligned vertical dimensions:<br>- Select three or more vertexes<br>- Click this tool 建立一系列的對齊垂直標註:<br>- 選擇三個或更多的點<br>- 點選此工具 @@ -750,19 +750,19 @@ CmdTechDrawExtensionCreateVertChamferDimension - + TechDraw 工程製圖 - - + + Create Vertical Chamfer Dimension 建立垂直倒角標註 - - + + Create a vertical size and angle dimension for a chamfer:<br>- Select two vertexes<br>- Click this tool 建立一個倒角的垂直尺寸與角度標註:<br>- 選擇兩個頂點<br>- 點擊此工具 @@ -770,19 +770,19 @@ CmdTechDrawExtensionCreateVertCoordDimension - + TechDraw 工程製圖 - - + + Create Vertical Coordinate Dimensions 建立垂直座標標註 - - + + Create multiple evenly spaced vertical dimensions starting from the same baseline:<br>- Specify the cascade spacing (optional)<br>- Select three or more vertexes<br>- The selection order of the first two vertexes determines the position of the baseline<br>- Click this tool 從同一基線開始創建多個均勻間距的垂直標註:<br>- 指定串級間距 (可選)<br>- 選擇三個或更多頂點<br>- 選擇順序中的前兩個頂點決定了基線的位置<br>- 點選此工具 @@ -790,17 +790,17 @@ CmdTechDrawExtensionCustomizeFormat - + TechDraw 工程製圖 - + Customize Format Label 自訂格式標籤 - + Select a dimension or a balloon<br> - click this tool<br> - edit the Format field, using the keyboard and/or the special buttons 選擇一個標註或一個件號圓圈<br> - 點選此工具<br> - 編輯格式欄位,使用鍵盤與/或特別按鍵 @@ -808,19 +808,19 @@ CmdTechDrawExtensionDecreaseDecimal - + TechDraw 工程製圖 - - + + Decrease Decimal Places 減少小數位數 - - + + Decrease the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 減少標註文字的小數位數:<br>- 選擇一個以上的標註<br>- 點選此工具 @@ -950,19 +950,19 @@ CmdTechDrawExtensionIncreaseDecimal - + TechDraw TechDraw - - + + Increase Decimal Places 增加小數位數 - - + + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 增加標註文字的小數位數:<br>- 選擇一個以上的標註<br>- 點選此工具 @@ -970,17 +970,17 @@ CmdTechDrawExtensionIncreaseDecreaseGroup - + TechDraw TechDraw - + Increase Decimal Places 增加小數位數 - + Increase the number of decimal places of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 增加標註文字的小數位數:<br>- 選擇一個以上的標註<br>- 點選此工具 @@ -988,19 +988,19 @@ CmdTechDrawExtensionInsertDiameter - + TechDraw TechDraw - - + + Insert '⌀' Prefix 插入 '⌀' 前綴 - - + + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 插入一個 '⌀' 符號在標註文字開頭:<br>- 選擇一個以上標註<br>- 點選此工具 @@ -1008,17 +1008,17 @@ CmdTechDrawExtensionInsertPrefixGroup - + TechDraw 技術繪圖 - + Insert '⌀' Prefix 插入 '⌀' 前綴 - + Insert a '⌀' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 插入一個 '⌀' 符號在標註文字開頭:<br>- 選擇一個以上標註<br>- 點選此工具 @@ -1026,19 +1026,19 @@ CmdTechDrawExtensionInsertSquare - + TechDraw TechDraw - - + + Insert '□' Prefix 插入 '□' 前綴 - - + + Insert a '□' symbol at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 插入一個 '□' 符號在標註文字開頭:<br>- 選擇一個以上標註<br>- 點選此工具 @@ -1122,17 +1122,17 @@ CmdTechDrawExtensionPosChainDimensionGroup - + TechDraw 工程製圖 - + Position Horizontal Chain Dimensions 水平連續標註位置 - + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 對齊水平標註以建立鏈標註:<br>- 選擇二個或更多的水平標註<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -1140,19 +1140,19 @@ CmdTechDrawExtensionPosHorizChainDimension - + TechDraw 工程製圖 - - + + Position Horizontal Chain Dimensions 水平連續標註位置 - - + + Align horizontal dimensions to create a chain dimension:<br>- Select two or more horizontal dimensions<br>- The first dimension defines the position<br>- Click this tool 對齊水平標註以建立連續標註:<br>- 選擇二個或更多的水平標註<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -1160,19 +1160,19 @@ CmdTechDrawExtensionPosObliqueChainDimension - + TechDraw 工程製圖 - - + + Position Oblique Chain Dimensions 斜連續標註位置 - - + + Align oblique dimensions to create a chain dimension:<br>- Select two or more parallel oblique dimensions<br>- The first dimension defines the position<br>- Click this tool 對齊傾斜標註以建立連續標註:<br>- 選擇二個或更多的平行傾斜標註<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -1180,19 +1180,19 @@ CmdTechDrawExtensionPosVertChainDimension - + TechDraw 工程製圖 - - + + Position Vertical Chain Dimensions 垂直連續標註位置 - - + + Align vertical dimensions to create a chain dimension:<br>- Select two or more vertical dimensions<br>- The first dimension defines the position<br>- Click this tool 對齊垂直標註以建立連續標註:<br>- 選擇二個或更多的垂直標註<br>- 第一個標註定義其位置<br>- 點選此工具 @@ -1200,17 +1200,17 @@ CmdTechDrawExtensionRemovePrefixChar - + TechDraw 技術繪圖 - + Remove Prefix 移除前綴 - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 移除標註文字的前綴符號:<br>- 選擇一個以上的標註<br>- 點選此工具 @@ -1996,8 +1996,8 @@ 建立試算表視圖 + - Save page to dxf 儲存頁面為 DXF 格式 @@ -2058,7 +2058,7 @@ 拖曳標註 - + Create Balloon 建立件號圓圈 @@ -2073,8 +2073,8 @@ 建立中心線 - + Create Cosmetic Line 建立裝飾線 @@ -2150,102 +2150,102 @@ 添加裝飾頂點 - + TechDraw Insert Prefix 技術繪圖插入前綴 - + Insert Prefix 插入前綴 - + TechDraw Remove Prefix 技術繪圖移除前綴 - + Remove Prefix 移除前綴 - + Increase/Decrease Decimal 增加/減少小數位數 - + Pos Horiz Chain Dim 水平鏈標註位置 - + Pos Vert Chain Dim 垂直鏈標註位置 - + Pos Oblique Chain Dim 傾斜鏈標註位置 - + Cascade Horiz Dim 串聯水平尺寸 - + Cascade Vert Dim 串聯垂直尺寸 - + Cascade Oblique Dim 串聯傾斜尺寸 - + Create Horiz Chain Dim 建立水平鏈標註 - + Create Vert Chain Dim 建立垂直鏈標註 - + Create Oblique Chain Dim 建立傾斜鏈標註 - + Create Horiz Coord Dim 建立水平座標標註 - + Create Vert Coord Dim 建立垂直座標標註 - + Create Oblique Coord Dim 建立傾斜座標標註 - + Create Horiz Chamfer Dim 建立水平倒角標註 - + Create Vert Chamfer Dim 建立垂直倒角標註 - + Create Arc Length Dim 建立弧長標註 @@ -2686,6 +2686,16 @@ QObject + + + + + + + + + + @@ -2703,16 +2713,6 @@ - - - - - - - - - - Wrong selection 錯誤的選取 @@ -2744,10 +2744,9 @@ 在選擇中找不到輪廓物件 - - - - + + + @@ -2759,34 +2758,34 @@ - - - + + + + Incorrect selection 不正確的選取 - + Select an object first 請先選一個物件 - + Too many objects selected 太多物件被選擇 - + Create a page first. 請先建立一個頁面 - @@ -2795,6 +2794,7 @@ + No View of a Part in selection. 選擇中的零件沒有視圖。 @@ -2906,6 +2906,8 @@ 選取邊為 B 雲形線。半徑將會是近似值。是否繼續 ? + + @@ -2925,12 +2927,10 @@ - - - + Incorrect Selection 不正確的選取 @@ -3058,9 +3058,6 @@ 選擇 2 點物件以及 1 個視圖。(2) - - - @@ -3087,30 +3084,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Task In Progress 任務進行中 - - - @@ -3137,23 +3134,26 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + Close active task dialog and try again. 關閉活動任務對話框並重試。 @@ -3183,8 +3183,8 @@ - - + + Wrong Selection 錯誤的選擇 @@ -3318,28 +3318,22 @@ 選擇正好一個指線或一個銲接符號。 - - + SurfaceFinishSymbols 表面紋理符號 - - No page to insert the symbol! - No page to insert the symbol! - - - + Selected object is not a part view, nor a leader line Selected object is not a part view, nor a leader line - + No Part View in Selection 選擇中沒有零件視圖 - + No %1 in Selection 選擇中沒有 %1 @@ -3417,7 +3411,7 @@ 匯出頁面為 PDF 檔 - + Document Name: 文件名稱: @@ -3432,19 +3426,19 @@ 匯出頁面為 SVG 檔 - - + + Are you sure you want to continue? 您確定要繼續嗎? - + Show drawing 顯示圖面 - + Toggle KeepUpdated 切換保持更新 @@ -3469,9 +3463,9 @@ 富文字產生器 - + Rich text editor 富文字編輯器 @@ -3589,133 +3583,133 @@ 編輯詳細視圖 - + Edit %1 編輯 %1 - + TechDraw Increase/Decrease Decimal 工程製圖增加/減少小數位數 - - + + TechDraw PosHorizChainDimension 工程製圖水平連續標註位置 - - + + No horizontal dimensions selected 未選擇水平標註 - - + + TechDraw PosVertChainDimension 工程製圖垂直連續標註位置 - - + + No vertical dimensions selected 未選擇垂直標註 - - + + TechDraw PosObliqueChainDimension 工程製圖傾斜連續標註位置 - - + + No oblique dimensions selected 未選擇傾斜標註 - - + + TechDraw CascadeHorizDimension TechDraw 串聯水平尺寸(CascadeHorizDimension) - - + + TechDraw CascadeVertDimension TechDraw 串聯垂直尺寸(CascadeVertDimension) - - + + TechDraw CascadeObliqueDimension TechDraw 串聯傾斜尺寸(CascadeObliqueDimension) - + TechDraw Create Horizontal Chain Dimension 工程製圖建立水平連續標註 - + TechDraw Create Vertical Chain Dimension 工程製圖建立垂直連續標註 - + TechDraw Create Oblique Chain Dimension 工程製圖建立斜連續標註 - + TechDraw Create Horizontal Coord Dimension 工程製圖建立水平座標標註 - + TechDraw Create Vertical Coord Dimension 工程製圖建立垂直座標標註 - + TechDraw Create Oblique Coord Dimension 工程製圖建立斜座標標註 - + TechDraw Create Horizontal Chamfer Dimension 工程製圖建立水平倒角標註 - + TechDraw Create Vertical Chamfer Dimension 工程製圖建立垂直倒角標註 - + TechDraw Create Arc Length Dimension 工程製圖建立弧長度標註 - + TechDraw Customize Format 工程製圖客製化格式 - + No subelements selected 沒有子元件集被選擇 - + Selection is empty 選擇為空。 - + No object selected 沒有選擇物件 @@ -3861,29 +3855,29 @@ thick: %4 Std_Delete - + You cannot delete this leader line because it has a weld symbol that would become broken. 您不能刪除此指線因為 它有銲接符號會損壞。 - + You cannot delete this view because it has one or more dependent views that would become broken. 您無法刪除此視圖,因為它具有一個或多個相依視圖,刪除將導致這些相依視圖損壞。 - - - - + - - + + + + + Object dependencies 物件相依 @@ -3908,7 +3902,7 @@ it has a weld symbol that would become broken. 您不能刪除此視圖因為它有指線會損壞。 - + The page is not empty, therefore the following referencing objects might be lost: 此頁面非空白,因此接下來的參考物件可能遺失: @@ -7403,8 +7397,8 @@ You can pick further points to get line segments. - - + + Top 上視圖 @@ -7415,8 +7409,8 @@ You can pick further points to get line segments. - - + + Left 左視圖 @@ -7427,14 +7421,14 @@ You can pick further points to get line segments. - - + + Right 右視圖 - + Rear 後視圖 @@ -7445,8 +7439,8 @@ You can pick further points to get line segments. - - + + Bottom 底視圖 @@ -7497,31 +7491,31 @@ using the given X/Y Spacing 投影邊界之間的垂直空間 - - + + FrontTopLeft 前上左 - - + + FrontBottomRight 前底右 - - + + FrontTopRight 前上右 - - + + FrontBottomLeft 前底左 - + Front 前視圖 @@ -8161,12 +8155,12 @@ using the given X/Y Spacing TechDraw_ExtensionremovePrefixChar - + Remove Prefix 移除前綴 - + Remove prefix symbols at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool 移除標註文字的前綴符號:<br>- 選擇一個以上的標註<br>- 點選此工具 @@ -9371,4 +9365,24 @@ there is an open task dialog. Click this tool + + CmdTechDrawExtensionInsertRepetition + + + TechDraw + TechDraw + + + + + Insert 'n×' Prefix + Insert 'n×' Prefix + + + + + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + Insert repeated feature count at the beginning of the dimension text:<br>- Select one or more dimensions<br>- Click this tool + + diff --git a/src/Mod/TechDraw/Gui/TaskCosmeticCircle.ui b/src/Mod/TechDraw/Gui/TaskCosmeticCircle.ui index 12bde53ed7..b170fc5d3f 100644 --- a/src/Mod/TechDraw/Gui/TaskCosmeticCircle.ui +++ b/src/Mod/TechDraw/Gui/TaskCosmeticCircle.ui @@ -204,7 +204,7 @@ - Start angle (conventional) of arc in degrees. + Start angle (conventional) of arc in degrees. Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter diff --git a/src/Mod/TechDraw/Gui/TaskDimension.cpp b/src/Mod/TechDraw/Gui/TaskDimension.cpp index 7dcde0f5fd..fc8e65ff8c 100644 --- a/src/Mod/TechDraw/Gui/TaskDimension.cpp +++ b/src/Mod/TechDraw/Gui/TaskDimension.cpp @@ -47,11 +47,10 @@ using namespace TechDraw; using namespace TechDrawGui; TaskDimension::TaskDimension(QGIViewDimension *parent, ViewProviderDimension *dimensionVP) : - ui(new Ui_TaskDimension) + ui(new Ui_TaskDimension), + m_parent(parent), + m_dimensionVP(dimensionVP) { - m_parent = parent; - m_dimensionVP = dimensionVP; - ui->setupUi(this); // Tolerancing @@ -143,6 +142,11 @@ TaskDimension::~TaskDimension() bool TaskDimension::accept() { + if (m_dimensionVP.expired()) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Missing Dimension"), + QObject::tr("Dimension not found. Was it deleted? Can not continue.")); + return true; + } Gui::Document* doc = m_dimensionVP->getDocument(); m_dimensionVP->getObject()->purgeTouched(); doc->commitCommand(); @@ -153,6 +157,11 @@ bool TaskDimension::accept() bool TaskDimension::reject() { + if (m_dimensionVP.expired()) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Missing Dimension"), + QObject::tr("Dimension not found. Was it deleted? Can not continue.")); + return true; + } Gui::Document* doc = m_dimensionVP->getDocument(); doc->abortCommand(); recomputeFeature(); @@ -165,6 +174,10 @@ bool TaskDimension::reject() void TaskDimension::recomputeFeature() { + if (m_dimensionVP.expired()) { + // guard against deletion while this dialog is running + return; + } App::DocumentObject* objVP = m_dimensionVP->getObject(); assert(objVP); objVP->getDocument()->recomputeFeature(objVP); @@ -297,12 +310,18 @@ void TaskDimension::onArbitraryTolerancesChanged() void TaskDimension::onFlipArrowheadsChanged() { + if (m_dimensionVP.expired()) { + return; + } m_dimensionVP->FlipArrowheads.setValue(ui->cbArrowheads->isChecked()); recomputeFeature(); } void TaskDimension::onColorChanged() { + if (m_dimensionVP.expired()) { + return; + } App::Color ac; ac.setValue(ui->dimensionColor->color()); m_dimensionVP->Color.setValue(ac); @@ -311,12 +330,18 @@ void TaskDimension::onColorChanged() void TaskDimension::onFontsizeChanged() { + if (m_dimensionVP.expired()) { + return; + } m_dimensionVP->Fontsize.setValue(ui->qsbFontSize->value().getValue()); recomputeFeature(); } void TaskDimension::onDrawingStyleChanged() { + if (m_dimensionVP.expired()) { + return; + } m_dimensionVP->StandardAndStyle.setValue(ui->comboDrawingStyle->currentIndex()); recomputeFeature(); } diff --git a/src/Mod/TechDraw/Gui/TaskDimension.h b/src/Mod/TechDraw/Gui/TaskDimension.h index 401cf82c9d..f883a13901 100644 --- a/src/Mod/TechDraw/Gui/TaskDimension.h +++ b/src/Mod/TechDraw/Gui/TaskDimension.h @@ -23,6 +23,7 @@ #ifndef GUI_TASKVIEW_TASKDIMENSION_H #define GUI_TASKVIEW_TASKDIMENSION_H +#include #include #include #include @@ -72,7 +73,7 @@ private Q_SLOTS: private: std::unique_ptr ui; QGIViewDimension *m_parent; - ViewProviderDimension *m_dimensionVP; + Gui::WeakPtrT m_dimensionVP; std::pair getAngleFromSelection(); }; diff --git a/src/Mod/TechDraw/Gui/TaskLinkDim.ui b/src/Mod/TechDraw/Gui/TaskLinkDim.ui index 889f1a7872..98e1f7ad21 100644 --- a/src/Mod/TechDraw/Gui/TaskLinkDim.ui +++ b/src/Mod/TechDraw/Gui/TaskLinkDim.ui @@ -124,7 +124,7 @@ - Geometry2: + Geometry2: diff --git a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp index fd53bf7a48..d2cc2638bb 100644 --- a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include "TaskProjGroup.h" #include "ui_TaskProjGroup.h" @@ -181,7 +182,7 @@ void TaskProjGroup::viewToggled(bool toggle) // Obtain name of checkbox QString viewName = sender()->objectName(); int index = viewName.mid(7).toInt(); - const char *viewNameCStr = viewChkIndexToCStr(index).c_str(); + const char *viewNameCStr = viewChkIndexToCStr(index); if ( toggle && !multiView->hasProjection( viewNameCStr ) ) { Gui::Command::doCommand(Gui::Command::Doc, "App.activeDocument().%s.addProjection('%s')", @@ -198,6 +199,7 @@ void TaskProjGroup::viewToggled(bool toggle) double scale = multiView->getScale(); setFractionalScale(scale); } + multiView->recomputeFeature(); } wc.restoreCursor(); } @@ -247,6 +249,8 @@ void TaskProjGroup::projectionTypeChanged(QString qText) ui->chkView7->setToolTip(getToolTipForBox(7)); ui->chkView8->setToolTip(getToolTipForBox(8)); ui->chkView9->setToolTip(getToolTipForBox(9)); + + multiView->recomputeFeature(); } void TaskProjGroup::scaleTypeChanged(int index) @@ -303,81 +307,6 @@ void TaskProjGroup::spacingChanged() multiView->recomputeFeature(); } -std::pair TaskProjGroup::nearestFraction(const double val, const long int maxDenom) const -{ -/* -** find rational approximation to given real number -** David Eppstein / UC Irvine / 8 Aug 1993 -** -** With corrections from Arno Formella, May 2008 -** and additional fiddles by WF 2017 -** usage: a.out r d -** r is real number to approx -** d is the maximum denominator allowed -** -** based on the theory of continued fractions -** if x = a1 + 1/(a2 + 1/(a3 + 1/(a4 + ...))) -** then best approximation is found by truncating this series -** (with some adjustments in the last term). -** -** Note the fraction can be recovered as the first column of the matrix -** ( a1 1 ) ( a2 1 ) ( a3 1 ) ... -** ( 1 0 ) ( 1 0 ) ( 1 0 ) -** Instead of keeping the sequence of continued fraction terms, -** we just keep the last partial product of these matrices. -*/ - std::pair result; - long m[2][2]; - long maxden = maxDenom; - long ai; - double x = val; - double startx = x; - - /* initialize matrix */ - m[0][0] = m[1][1] = 1; - m[0][1] = m[1][0] = 0; - - /* loop finding terms until denom gets too big */ - while (m[1][0] * ( ai = (long)x ) + m[1][1] <= maxden) { - long t; - t = m[0][0] * ai + m[0][1]; - m[0][1] = m[0][0]; - m[0][0] = t; - t = m[1][0] * ai + m[1][1]; - m[1][1] = m[1][0]; - m[1][0] = t; - if(x == (double) ai) - break; // AF: division by zero - x = 1/(x - (double) ai); - if(x > (double) std::numeric_limits::max()) - break; // AF: representation failure - } - - /* now remaining x is between 0 and 1/ai */ - /* approx as either 0 or 1/m where m is max that will fit in maxden */ - /* first try zero */ - double error1 = startx - ((double) m[0][0] / (double) m[1][0]); - int n1 = m[0][0]; - int d1 = m[1][0]; - - /* now try other possibility */ - ai = (maxden - m[1][1]) / m[1][0]; - m[0][0] = m[0][0] * ai + m[0][1]; - m[1][0] = m[1][0] * ai + m[1][1]; - double error2 = startx - ((double) m[0][0] / (double) m[1][0]); - int n2 = m[0][0]; - int d2 = m[1][0]; - - if (std::fabs(error1) <= std::fabs(error2)) { - result.first = n1; - result.second = d1; - } else { - result.first = n2; - result.second = d2; - } - return result; -} - void TaskProjGroup::updateTask() { // Update the scale type @@ -395,7 +324,7 @@ void TaskProjGroup::setFractionalScale(double newScale) { blockUpdate = true; - std::pair fraction = nearestFraction(newScale); + std::pair fraction = DrawUtil::nearestFraction(newScale); ui->sbScaleNum->setValue(fraction.first); ui->sbScaleDen->setValue(fraction.second); @@ -428,7 +357,7 @@ void TaskProjGroup::changeEvent(QEvent *event) } } -std::string TaskProjGroup::viewChkIndexToCStr(int index) +const char * TaskProjGroup::viewChkIndexToCStr(int index) { // Third Angle: FTL T FTRight // L F Right Rear @@ -439,20 +368,20 @@ std::string TaskProjGroup::viewChkIndexToCStr(int index) // FTRight T FTL assert (multiView); - std::string boxName; + bool thirdAngle = multiView->usedProjectionType().isValue("Third Angle"); switch(index) { - case 0: {boxName = Base::Tools::toStdString(getToolTipForBox(0)); break;} - case 1: {boxName = Base::Tools::toStdString(getToolTipForBox(1)); break;} - case 2: {boxName = Base::Tools::toStdString(getToolTipForBox(2)); break;} - case 4: {boxName = Base::Tools::toStdString(getToolTipForBox(3)); break;} - case 5: {boxName = Base::Tools::toStdString(getToolTipForBox(4)); break;} - case 6: {boxName = Base::Tools::toStdString(getToolTipForBox(5)); break;} - case 7: {boxName = Base::Tools::toStdString(getToolTipForBox(6)); break;} - case 8: {boxName = Base::Tools::toStdString(getToolTipForBox(7)); break;} - case 9: {boxName = Base::Tools::toStdString(getToolTipForBox(8)); break;} - default: boxName = ""; + case 0: return (thirdAngle ? "FrontTopLeft" : "FrontBottomRight"); + case 1: return (thirdAngle ? "Top" : "Bottom"); + case 2: return (thirdAngle ? "FrontTopRight" : "FrontBottomLeft"); + case 3: return (thirdAngle ? "Left" : "Right"); + case 4: return (thirdAngle ? "Front" : "Front"); + case 5: return (thirdAngle ? "Right" : "Left"); + case 6: return (thirdAngle ? "Rear" : "Rear"); + case 7: return (thirdAngle ? "FrontBottomLeft" : "FrontTopRight"); + case 8: return (thirdAngle ? "Bottom" : "Top"); + case 9: return (thirdAngle ? "FrontBottomRight" : "FrontTopLeft"); + default: return nullptr; } - return boxName; } QString TaskProjGroup::getToolTipForBox(int boxNumber) @@ -477,6 +406,7 @@ void TaskProjGroup::setupViewCheckboxes(bool addConnections) { if (!multiView) return; + // There must be a better way to construct this list... QCheckBox * viewCheckboxes[] = { ui->chkView0, ui->chkView1, @@ -496,7 +426,7 @@ void TaskProjGroup::setupViewCheckboxes(bool addConnections) connect(box, &QCheckBox::toggled, this, &TaskProjGroup::viewToggled); } - const char *viewStr = viewChkIndexToCStr(i).c_str(); + const char *viewStr = viewChkIndexToCStr(i); if (viewStr && multiView->hasProjection(viewStr)) { box->setCheckState(Qt::Checked); if (!multiView->canDelete(viewStr)) { diff --git a/src/Mod/TechDraw/Gui/TaskProjGroup.h b/src/Mod/TechDraw/Gui/TaskProjGroup.h index 32e526841c..7a3062443c 100644 --- a/src/Mod/TechDraw/Gui/TaskProjGroup.h +++ b/src/Mod/TechDraw/Gui/TaskProjGroup.h @@ -60,7 +60,6 @@ public: QPushButton* btnApply); void updateTask(); - std::pair nearestFraction(double val, long int maxDenom = 999) const; // Sets the numerator and denominator widgets to match newScale void setFractionalScale(double newScale); void setCreateMode(bool mode) { m_createMode = mode;} @@ -104,7 +103,7 @@ private: bool blockUpdate; /// Translate a view checkbox index into represented view string, depending on projection type - std::string viewChkIndexToCStr(int index); + const char * viewChkIndexToCStr(int index); QString getToolTipForBox(int boxNumber); QPushButton* m_btnOK; diff --git a/src/Mod/TechDraw/Gui/TaskSectionView.cpp b/src/Mod/TechDraw/Gui/TaskSectionView.cpp index 3eaa4a937d..40b2d880b6 100644 --- a/src/Mod/TechDraw/Gui/TaskSectionView.cpp +++ b/src/Mod/TechDraw/Gui/TaskSectionView.cpp @@ -432,10 +432,7 @@ bool TaskSectionView::apply(bool forceUpdate) if (!ui->cbLiveUpdate->isChecked() && !forceUpdate) { //nothing to do m_applyDeferred++; - QString msgLiteral = - QString::fromUtf8(QT_TRANSLATE_NOOP("TaskPojGroup", " updates pending")); - QString msgNumber = QString::number(m_applyDeferred); - ui->lPendingUpdates->setText(msgNumber + msgLiteral); + ui->lPendingUpdates->setText(tr("%n update(s) pending", "", m_applyDeferred)); return false; } diff --git a/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp b/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp index 8e99d56215..4cf17056aa 100644 --- a/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp +++ b/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp @@ -456,78 +456,32 @@ void TaskWeldingSymbol::getTileFeats() TechDraw::DrawWeldSymbol* TaskWeldingSymbol::createWeldingSymbol() { // Base::Console().Message("TWS::createWeldingSymbol()\n"); - - const std::string objectName{QT_TR_NOOP("SectionView")}; - std::string symbolName = m_leadFeat->getDocument()->getUniqueObjectName(objectName.c_str()); - std::string generatedSuffix {symbolName.substr(objectName.length())}; - - std::string symbolType = "TechDraw::DrawWeldSymbol"; - - TechDraw::DrawPage* page = m_leadFeat->findParentPage(); - std::string pageName = page->getNameInDocument(); - - Command::doCommand(Command::Doc, "App.activeDocument().addObject('%s', '%s')", - symbolType.c_str(), symbolName.c_str()); - Command::doCommand(Command::Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", - pageName.c_str(), symbolName.c_str()); - Command::doCommand(Command::Doc, "App.activeDocument().%s.Leader = App.activeDocument().%s", - symbolName.c_str(), m_leadFeat->getNameInDocument()); - - bool allAround = ui->cbAllAround->isChecked(); - std::string allAroundText = allAround ? "True" : "False"; - Command::doCommand(Command::Doc, "App.activeDocument().%s.AllAround = %s", - symbolName.c_str(), allAroundText.c_str()); - - bool fieldWeld = ui->cbFieldWeld->isChecked(); - std::string fieldWeldText = fieldWeld ? "True" : "False"; - Command::doCommand(Command::Doc, "App.activeDocument().%s.FieldWeld = %s", - symbolName.c_str(), fieldWeldText.c_str()); - - bool altWeld = ui->cbAltWeld->isChecked(); - std::string altWeldText = altWeld ? "True" : "False"; - Command::doCommand(Command::Doc, "App.activeDocument().%s.AlternatingWeld = %s", - symbolName.c_str(), altWeldText.c_str()); - - std::string tailText = ui->leTailText->text().toStdString(); - tailText = Base::Tools::escapeEncodeString(tailText); - Command::doCommand(Command::Doc, "App.activeDocument().%s.TailText = '%s'", - symbolName.c_str(), tailText.c_str()); - - App::DocumentObject* newObj = m_leadFeat->getDocument()->getObject(symbolName.c_str()); - TechDraw::DrawWeldSymbol* newSym = dynamic_cast(newObj); - if (!newObj || !newSym) + App::Document *doc = Application::Instance->activeDocument()->getDocument(); + auto weldSymbol = dynamic_cast(doc->addObject("TechDraw::DrawWeldSymbol", "WeldSymbol")); + if (!weldSymbol) { throw Base::RuntimeError("TaskWeldingSymbol - new symbol object not found"); + } - std::string translatedObjectName{tr(objectName.c_str()).toStdString()}; - newObj->Label.setValue(translatedObjectName + generatedSuffix); + weldSymbol->AllAround.setValue(ui->cbAllAround->isChecked()); + weldSymbol->FieldWeld.setValue(ui->cbFieldWeld->isChecked()); + weldSymbol->AlternatingWeld.setValue(ui->cbAltWeld->isChecked()); + weldSymbol->TailText.setValue(ui->leTailText->text().toStdString()); + weldSymbol->Leader.setValue(m_leadFeat); - return newSym; + TechDraw::DrawPage *page = m_leadFeat->findParentPage(); + if (page) { + page->addView(weldSymbol); + } + + return weldSymbol; } void TaskWeldingSymbol::updateWeldingSymbol() { -// Base::Console().Message("TWS::updateWeldingSymbol()\n"); - std::string symbolName = m_weldFeat->getNameInDocument(); - - bool allAround = ui->cbAllAround->isChecked(); - std::string allAroundText = allAround ? "True" : "False"; - Command::doCommand(Command::Doc, "App.activeDocument().%s.AllAround = %s", - symbolName.c_str(), allAroundText.c_str()); - - bool fieldWeld = ui->cbFieldWeld->isChecked(); - std::string fieldWeldText = fieldWeld ? "True" : "False"; - Command::doCommand(Command::Doc, "App.activeDocument().%s.FieldWeld = %s", - symbolName.c_str(), fieldWeldText.c_str()); - - bool altWeld = ui->cbAltWeld->isChecked(); - std::string altWeldText = altWeld ? "True" : "False"; - Command::doCommand(Command::Doc, "App.activeDocument().%s.AlternatingWeld = %s", - symbolName.c_str(), altWeldText.c_str()); - - std::string tailText = ui->leTailText->text().toStdString(); - tailText = Base::Tools::escapeEncodeString(tailText); - Command::doCommand(Command::Doc, "App.activeDocument().%s.TailText = '%s'", - symbolName.c_str(), tailText.c_str()); + m_weldFeat->AllAround.setValue(ui->cbAllAround->isChecked()); + m_weldFeat->FieldWeld.setValue(ui->cbFieldWeld->isChecked()); + m_weldFeat->AlternatingWeld.setValue(ui->cbAltWeld->isChecked()); + m_weldFeat->TailText.setValue(ui->leTailText->text().toStdString()); } void TaskWeldingSymbol::updateTiles() diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index 4fb5f660a6..a08b4fccf3 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -30,11 +30,14 @@ # include #endif +#include + #include #include #include #include #include +#include #include #include @@ -283,3 +286,23 @@ bool ViewProviderDimension::canDelete(App::DocumentObject *obj) const Q_UNUSED(obj) return true; } + +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) { + QString bodyMessage; + QTextStream bodyMessageStream(&bodyMessage); + bodyMessageStream << qApp->translate("TaskDimension", + "You cannot delete this dimension now because\nthere is an open task dialog."); + QMessageBox::warning(Gui::getMainWindow(), + qApp->translate("TaskDimension", "Can Not Delete"), bodyMessage, + QMessageBox::Ok); + return false; + } + return true; +} + diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.h b/src/Mod/TechDraw/Gui/ViewProviderDimension.h index 9756101fc4..d385d66b79 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.h @@ -76,6 +76,8 @@ public: void setupContextMenu(QMenu*, QObject*, const char*) override; bool setEdit(int ModNum) override; bool doubleClicked() override; + bool onDelete(const std::vector & parms) override; + TechDraw::DrawViewDimension* getViewObject() const override; diff --git a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp index 5adefb65f9..e67ea9693d 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp @@ -102,23 +102,6 @@ bool ViewProviderLeader::doubleClicked() return true; } -void ViewProviderLeader::updateData(const App::Property* p) -{ - if (!getFeature()->isRestoring()) { - if (p == &getFeature()->LeaderParent) { - App::DocumentObject* docObj = getFeature()->LeaderParent.getValue(); - TechDraw::DrawView* dv = dynamic_cast(docObj); - if (dv) { - QGIView* qgiv = getQView(); - if (qgiv) { - qgiv->onSourceChange(dv); - } - } - } - } - ViewProviderDrawingView::updateData(p); -} - void ViewProviderLeader::onChanged(const App::Property* p) { if ((p == &Color) || diff --git a/src/Mod/TechDraw/Gui/ViewProviderLeader.h b/src/Mod/TechDraw/Gui/ViewProviderLeader.h index 31d78ce504..32b9199347 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderLeader.h +++ b/src/Mod/TechDraw/Gui/ViewProviderLeader.h @@ -55,7 +55,6 @@ public: App::PropertyColor Color; bool useNewSelectionModel() const override {return false;} - void updateData(const App::Property*) override; void onChanged(const App::Property* p) override; bool setEdit(int ModNum) override; bool doubleClicked() override; diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp index 5c69e056ee..eeb751330c 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -389,13 +388,10 @@ std::vector ViewProviderPage::claimChildren(void) const } // Collect any child views - // for Page, valid children are any View except: DrawProjGroupItem - // DrawViewDimension + // for Page, valid children are any View except: DrawViewDimension // DrawViewBalloon - // DrawLeaderLine // any FeatuerView in a DrawViewClip // DrawHatch - // DrawWeldSymbol const std::vector& views = getDrawPage()->Views.getValues(); @@ -410,13 +406,10 @@ std::vector ViewProviderPage::claimChildren(void) const } App::DocumentObject* docObj = *it; - // Don't collect if dimension, projection group item, hatch or member of ClipGroup as these should be grouped elsewhere - if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId()) - || docObj->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId()) + // Don't collect if dimension, balloon, hatch or member of ClipGroup as these should be grouped elsewhere + if (docObj->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId()) || docObj->isDerivedFrom(TechDraw::DrawHatch::getClassTypeId()) || docObj->isDerivedFrom(TechDraw::DrawViewBalloon::getClassTypeId()) - || docObj->isDerivedFrom(TechDraw::DrawLeaderLine::getClassTypeId()) - || docObj->isDerivedFrom(TechDraw::DrawWeldSymbol::getClassTypeId()) || (featView && featView->isInClip())) continue; else diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index f5caa68494..9575d0ca97 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -439,7 +439,12 @@ int ViewProviderViewPart::prefHighlightStyle() // TODO: does this need to be implemented for Leaderlines and ???? others? void ViewProviderViewPart::fixSceneDependencies() { - auto scene = getViewProviderPage()->getQGSPage(); + auto page = getViewProviderPage(); + if (!page) { + return; + } + + auto scene = page->getQGSPage(); auto partQView = getQView(); auto dimensions = getViewPart()->getDimensions(); diff --git a/src/Mod/TechDraw/Gui/Workbench.cpp b/src/Mod/TechDraw/Gui/Workbench.cpp index b65f014c64..9cc7c249c2 100644 --- a/src/Mod/TechDraw/Gui/Workbench.cpp +++ b/src/Mod/TechDraw/Gui/Workbench.cpp @@ -43,6 +43,7 @@ using namespace TechDrawGui; qApp->translate("Workbench", "Stacking"); qApp->translate("Workbench", "Add Lines"); qApp->translate("Workbench", "Add Vertices"); + qApp->translate("Workbench", "Page"); qApp->translate("Workbench", "TechDraw"); // Translations for View > Toolbars qApp->translate("Workbench", "TechDraw Annotation"); @@ -57,8 +58,11 @@ using namespace TechDrawGui; qApp->translate("Workbench", "TechDraw Stacking"); qApp->translate("Workbench", "TechDraw Tool Attributes"); qApp->translate("Workbench", "TechDraw Views"); + qApp->translate("Workbench", "Views From Other Workbenches"); + qApp->translate("Workbench", "Clipped Views"); + qApp->translate("Workbench", "Hatching"); + qApp->translate("Workbench", "Symbols"); qApp->translate("Workbench", "Views"); - qApp->translate("Workbench", "Extensions: Centerlines/Threading"); #endif TYPESYSTEM_SOURCE(TechDrawGui::Workbench, Gui::StdWorkbench) @@ -88,6 +92,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const *dimensions << "TechDraw_3PtAngleDimension"; *dimensions << "TechDraw_HorizontalExtentDimension"; *dimensions << "TechDraw_VerticalExtentDimension"; + // TechDraw_LinkDimension is DEPRECATED. Use TechDraw_DimensionRepair instead. *dimensions << "TechDraw_LinkDimension"; *dimensions << "TechDraw_LandmarkDimension"; *dimensions << "TechDraw_DimensionRepair"; @@ -327,7 +332,8 @@ Gui::ToolBarItem* Workbench::setupToolBars() const *dims << "TechDraw_AngleDimension"; *dims << "TechDraw_3PtAngleDimension"; *dims << "TechDraw_ExtentGroup"; - *dims << "TechDraw_LinkDimension"; + // TechDraw_LinkDimension is DEPRECATED. Use TechDraw_DimensionRepair instead. + // *dims << "TechDraw_LinkDimension"; *dims << "TechDraw_Balloon"; *dims << "TechDraw_AxoLengthDimension"; *dims << "TechDraw_LandmarkDimension"; @@ -440,6 +446,7 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const *dims << "TechDraw_AngleDimension"; *dims << "TechDraw_3PtAngleDimension"; *dims << "TechDraw_ExtentGroup"; + // TechDraw_LinkDimension is DEPRECATED. Use TechDraw_DimensionRepair instead. *dims << "TechDraw_LinkDimension"; *dims << "TechDraw_Balloon"; *dims << "TechDraw_AxoLengthDimension"; diff --git a/src/Mod/TechDraw/TechDrawTools/CommandAxoLengthDimension.py b/src/Mod/TechDraw/TechDrawTools/CommandAxoLengthDimension.py index c9345d2eb6..c1fd9a34c8 100644 --- a/src/Mod/TechDraw/TechDrawTools/CommandAxoLengthDimension.py +++ b/src/Mod/TechDraw/TechDrawTools/CommandAxoLengthDimension.py @@ -1,5 +1,5 @@ # *************************************************************************** -# * Copyright (c) 2023 edi * +# * Copyright (c) 2023 edi * # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU Lesser General Public License (LGPL) * @@ -71,6 +71,7 @@ class CommandAxoLengthDimension: vertexes.append(edges[0].Vertexes[1]) view = Utils.getSelView() + scale = view.getScale() StartPt, EndPt = edges[1].Vertexes[0].Point, edges[1].Vertexes[1].Point extLineVec = EndPt.sub(StartPt) @@ -85,7 +86,7 @@ class CommandAxoLengthDimension: if dimLineVec.y < 0.0: lineAngle = 180-lineAngle if abs(extAngle-lineAngle)>0.1: - distanceDim=TechDraw.makeDistanceDim(view,'Distance',vertexes[0].Point,vertexes[1].Point) + distanceDim=TechDraw.makeDistanceDim(view,'Distance',vertexes[0].Point*scale,vertexes[1].Point*scale) distanceDim.AngleOverride = True distanceDim.LineAngle = lineAngle distanceDim.ExtensionAngle = extAngle @@ -97,11 +98,11 @@ class CommandAxoLengthDimension: arrowTips = distanceDim.getArrowPositions() value2D = (arrowTips[1].sub(arrowTips[0])).Length value3D = 1.0 - if self._checkParallel(px,dimLineVec): + if px.isParallel(dimLineVec,0.1): value3D = value2D/px.Length - elif self._checkParallel(py,dimLineVec): + elif py.isParallel(dimLineVec,0.1): value3D = value2D/py.Length - elif self._checkParallel(pz,dimLineVec): + elif pz.isParallel(dimLineVec,0.1): value3D = value2D/pz.Length if value3D != 1.0: fomatted3DValue = self._formatValueToSpec(value3D,distanceDim.FormatSpec) @@ -120,12 +121,6 @@ class CommandAxoLengthDimension: else: return False - def _checkParallel(self,v1,v2): - '''Check if two vectors are parallel''' - dot = abs(v1.dot(v2)) - mag = v1.Length*v2.Length - return (abs(dot-mag)<0.1) - def _formatValueToSpec(self, value, formatSpec): '''Calculate value using "%.nf" or "%.nw" formatSpec''' formatSpec = '{'+formatSpec+'}' diff --git a/src/Mod/TechDraw/TechDrawTools/CommandHoleShaftFit.py b/src/Mod/TechDraw/TechDrawTools/CommandHoleShaftFit.py index 9705778e7d..0362de79cb 100644 --- a/src/Mod/TechDraw/TechDrawTools/CommandHoleShaftFit.py +++ b/src/Mod/TechDraw/TechDrawTools/CommandHoleShaftFit.py @@ -35,6 +35,9 @@ import FreeCADGui as Gui import TechDrawTools +translate = App.Qt.translate + + class CommandHoleShaftFit: """Adds a hole or shaft fit to a selected dimension.""" @@ -48,11 +51,11 @@ class CommandHoleShaftFit: ), "ToolTip": QT_TRANSLATE_NOOP( "TechDraw_HoleShaftFit", - "Add a hole or shaft fit to a dimension
\ - - select one length dimension or diameter dimension
\ - - click the tool button, a panel opens
\ - - select shaft fit / hole fit
\ - - select the desired ISO 286 fit field using the combo box", + "Add a hole or shaft fit to a dimension\n" + "- select one length dimension or diameter dimension\n" + "- click the tool button, a panel opens\n" + "- select shaft fit / hole fit\n" + "- select the desired ISO 286 fit field using the combo box", ), } @@ -65,10 +68,10 @@ class CommandHoleShaftFit: Gui.Control.showDialog(self.ui) else: msgBox = QtGui.QMessageBox() - msgTitle = QT_TRANSLATE_NOOP( + msgTitle = translate( "TechDraw_HoleShaftFit", "Add a hole or shaft fit to a dimension" ) - msg = QT_TRANSLATE_NOOP( + msg = translate( "TechDraw_HoleShaftFit", "Please select one length dimension or diameter dimension and retry", ) diff --git a/src/Mod/TechDraw/TechDrawTools/CommandPositionSectionView.py b/src/Mod/TechDraw/TechDrawTools/CommandPositionSectionView.py index dea569c631..11b109ed3a 100644 --- a/src/Mod/TechDraw/TechDrawTools/CommandPositionSectionView.py +++ b/src/Mod/TechDraw/TechDrawTools/CommandPositionSectionView.py @@ -1,5 +1,5 @@ # *************************************************************************** -# * Copyright (c) 2023 edi * +# * Copyright (c) 2023 edi * # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU Lesser General Public License (LGPL) * diff --git a/src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py b/src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py index 87e17dab86..b6f113e922 100644 --- a/src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py +++ b/src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py @@ -1,5 +1,5 @@ # *************************************************************************** -# * Copyright (c) 2023 edi * +# * Copyright (c) 2023 edi * # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU Lesser General Public License (LGPL) * diff --git a/src/Mod/TechDraw/TechDrawTools/TaskFillTemplateFields.py b/src/Mod/TechDraw/TechDrawTools/TaskFillTemplateFields.py index fe11ac1680..9982b5ee74 100644 --- a/src/Mod/TechDraw/TechDrawTools/TaskFillTemplateFields.py +++ b/src/Mod/TechDraw/TechDrawTools/TaskFillTemplateFields.py @@ -115,6 +115,7 @@ class TaskFillTemplateFields: msgBox.exec_() break + projgrp_view = None for pageObj in obj.Views: if pageObj.isDerivedFrom("TechDraw::DrawViewPart"): projgrp_view = self.page.Views[0] diff --git a/src/Mod/TechDraw/TechDrawTools/TaskHoleShaftFit.py b/src/Mod/TechDraw/TechDrawTools/TaskHoleShaftFit.py index 74b4af08bf..96605f69e1 100644 --- a/src/Mod/TechDraw/TechDrawTools/TaskHoleShaftFit.py +++ b/src/Mod/TechDraw/TechDrawTools/TaskHoleShaftFit.py @@ -35,53 +35,86 @@ import os translate = App.Qt.translate + class TaskHoleShaftFit: - def __init__(self,sel): + def __init__(self, sel): loose = translate("TechDraw_HoleShaftFit", "loose fit") snug = translate("TechDraw_HoleShaftFit", "snug fit") press = translate("TechDraw_HoleShaftFit", "press fit") self.isHole = True self.sel = sel - self.holeValues = [["h9","D10",loose],["h9","E9",loose],["h9","F8",loose],["h6","G7",loose], - ["c11","H11",loose],["f7","H8",loose],["h6","H7",loose],["h7","H8",loose], - ["k6","H7",snug],["n6","H7",snug],["r6","H7",press],["s6","H7",press], - ["h6","K7",snug],["h6","N7",snug],["h6","R7",press],["h6","S7",press]] - self.shaftValues = [["H11","c11",loose],["H8","f7",loose],["H7","h6",loose],["H8","h7",loose], - ["D10","h9",loose],["E9","h9",loose],["F8","h9",loose],["G7","h6",loose], - ["K7","h6",snug],["N7","h6",snug],["R7","h6",press],["S7","h6",press], - ["H7","k6",snug],["H7","n6",snug],["H7","r6",press],["H7","s6",press]] + self.holeValues = [ + ["h9", "D10", loose], + ["h9", "E9", loose], + ["h9", "F8", loose], + ["h6", "G7", loose], + ["c11", "H11", loose], + ["f7", "H8", loose], + ["h6", "H7", loose], + ["h7", "H8", loose], + ["k6", "H7", snug], + ["n6", "H7", snug], + ["r6", "H7", press], + ["s6", "H7", press], + ["h6", "K7", snug], + ["h6", "N7", snug], + ["h6", "R7", press], + ["h6", "S7", press], + ] + self.shaftValues = [ + ["H11", "c11", loose], + ["H8", "f7", loose], + ["H7", "h6", loose], + ["H8", "h7", loose], + ["D10", "h9", loose], + ["E9", "h9", loose], + ["F8", "h9", loose], + ["G7", "h6", loose], + ["K7", "h6", snug], + ["N7", "h6", snug], + ["R7", "h6", press], + ["S7", "h6", press], + ["H7", "k6", snug], + ["H7", "n6", snug], + ["H7", "r6", press], + ["H7", "s6", press], + ] self._uiPath = App.getHomePath() - self._uiPath = os.path.join(self._uiPath, "Mod/TechDraw/TechDrawTools/Gui/TaskHoleShaftFit.ui") + self._uiPath = os.path.join( + self._uiPath, "Mod/TechDraw/TechDrawTools/Gui/TaskHoleShaftFit.ui" + ) self.form = Gui.PySideUic.loadUi(self._uiPath) - self.form.setWindowTitle(translate("TechDraw_HoleShaftFit", "Hole / Shaft Fit ISO 286")) + self.form.setWindowTitle( + translate("TechDraw_HoleShaftFit", "Hole / Shaft Fit ISO 286") + ) - self.form.rbHoleBase.clicked.connect(partial(self.on_HoleShaftChanged,True)) - self.form.rbShaftBase.clicked.connect(partial(self.on_HoleShaftChanged,False)) + self.form.rbHoleBase.clicked.connect(partial(self.on_HoleShaftChanged, True)) + self.form.rbShaftBase.clicked.connect(partial(self.on_HoleShaftChanged, False)) self.form.cbField.currentIndexChanged.connect(self.on_FieldChanged) def setHoleFields(self): - '''set hole fields in the combo box''' + """set hole fields in the combo box""" for i in range(self.form.cbField.count()): self.form.cbField.removeItem(0) for value in self.holeValues: self.form.cbField.addItem(value[1]) - self.form.lbBaseField.setText(' '+self.holeValues[0][0]+" /") + self.form.lbBaseField.setText(" " + self.holeValues[0][0] + " /") self.form.lbFitType.setText(self.holeValues[0][2]) def setShaftFields(self): - '''set shaft fields in the combo box''' + """set shaft fields in the combo box""" for i in range(self.form.cbField.count()): self.form.cbField.removeItem(0) for value in self.shaftValues: self.form.cbField.addItem(value[1]) - self.form.lbBaseField.setText(' '+self.shaftValues[0][0]+" /") + self.form.lbBaseField.setText(" " + self.shaftValues[0][0] + " /") self.form.lbFitType.setText(self.shaftValues[0][2]) - def on_HoleShaftChanged(self,isHole): - '''slot: change the used base fit hole/shaft''' + def on_HoleShaftChanged(self, isHole): + """slot: change the used base fit hole/shaft""" if isHole: self.isHole = isHole self.setShaftFields() @@ -90,17 +123,21 @@ class TaskHoleShaftFit: self.setHoleFields() def on_FieldChanged(self): - '''slot: change of the desired field''' + """slot: change of the desired field""" currentIndex = self.form.cbField.currentIndex() if self.isHole: - self.form.lbBaseField.setText(' '+self.shaftValues[currentIndex][0]+" /") + self.form.lbBaseField.setText( + " " + self.shaftValues[currentIndex][0] + " /" + ) self.form.lbFitType.setText(self.shaftValues[currentIndex][2]) else: - self.form.lbBaseField.setText(' '+self.holeValues[currentIndex][0]+" /") + self.form.lbBaseField.setText( + " " + self.holeValues[currentIndex][0] + " /" + ) self.form.lbFitType.setText(self.holeValues[currentIndex][2]) def accept(self): - '''slot: OK pressed''' + """slot: OK pressed""" currentIndex = self.form.cbField.currentIndex() if self.isHole: selectedField = self.shaftValues[currentIndex][1] @@ -111,79 +148,726 @@ class TaskHoleShaftFit: dim = self.sel[0].Object value = dim.getRawValue() iso = ISO286() - iso.calculate(value,fieldChar,quality) + iso.calculate(value, fieldChar, quality) rangeValues = iso.getValues() mainFormat = dim.FormatSpec - dim.FormatSpec = mainFormat+selectedField + dim.FormatSpec = mainFormat + " " + selectedField dim.EqualTolerance = False - dim.FormatSpecOverTolerance = '(%+.3f)' dim.OverTolerance = rangeValues[0] dim.UnderTolerance = rangeValues[1] + if dim.OverTolerance < 0: + dim.FormatSpecOverTolerance = "(%-0.6w)" + elif dim.OverTolerance > 0: + dim.FormatSpecOverTolerance = "(+%-0.6w)" + else: + dim.FormatSpecOverTolerance = "( %-0.6w)" + if dim.UnderTolerance < 0: + dim.FormatSpecUnderTolerance = "(%-0.6w)" + elif dim.UnderTolerance > 0: + dim.FormatSpecUnderTolerance = "(+%-0.6w)" + else: + dim.FormatSpecUnderTolerance = "( %-0.6w)" Gui.Control.closeDialog() def reject(self): return True -class ISO286: - '''This class represents a subset of the ISO 286 standard''' - def getNominalRange(self,measureValue): - '''return index of selected nominal range field, 0 < measureValue < 500 mm''' - measureRanges = [0,3,6,10,14,18,24,30,40,50,65,80,100,120,140,160,180,200,225,250,280,315,355,400,450,500] +class ISO286: + """This class represents a subset of the ISO 286 standard""" + + def getNominalRange(self, measureValue): + """return index of selected nominal range field, 0 < measureValue < 500 mm""" + measureRanges = [ + 0, + 3, + 6, + 10, + 14, + 18, + 24, + 30, + 40, + 50, + 65, + 80, + 100, + 120, + 140, + 160, + 180, + 200, + 225, + 250, + 280, + 315, + 355, + 400, + 450, + 500, + ] index = 1 while measureValue > measureRanges[index]: - index = index+1 - return index-1 + index = index + 1 + return index - 1 - def getITValue(self,valueQuality,valueNominalRange): - '''return IT-value (value of quality in micrometers)''' - '''tables IT6 to IT11 from 0 to 500 mm''' - IT6 = [6,8,9,11,11,13,13,16,16,19,19,22,22,25,25,25,29,29,29,32,32,36,36,40,40] - IT7 = [10,12,15,18,18,21,21,25,25,30,30,35,35,40,40,40,46,46,46,52,52,57,57,63,63] - IT8 = [14,18,22,27,27,33,33,39,39,46,46,54,54,63,63,63,72,72,72,81,81,89,89,97,97] - IT9 = [25,30,36,43,43,52,52,62,62,74,74,87,87,100,100,100,115,115,115,130,130,140,140,155,155] - IT10 = [40,48,58,70,70,84,84,100,100,120,120,140,140,160,160,160,185,185,185,210,210,230,230,250,250] - IT11 = [60,75,90,110,110,130,130,160,160,190,190,220,220,250,250,250,290,290,290,320,320,360,360,400,400] - qualityTable = [IT6,IT7,IT8,IT9,IT10,IT11] - return qualityTable[valueQuality-6][valueNominalRange] + def getITValue(self, valueQuality, valueNominalRange): + """return IT-value (value of quality in micrometers)""" + """tables IT6 to IT11 from 0 to 500 mm""" + IT6 = [ + 6, + 8, + 9, + 11, + 11, + 13, + 13, + 16, + 16, + 19, + 19, + 22, + 22, + 25, + 25, + 25, + 29, + 29, + 29, + 32, + 32, + 36, + 36, + 40, + 40, + ] + IT7 = [ + 10, + 12, + 15, + 18, + 18, + 21, + 21, + 25, + 25, + 30, + 30, + 35, + 35, + 40, + 40, + 40, + 46, + 46, + 46, + 52, + 52, + 57, + 57, + 63, + 63, + ] + IT8 = [ + 14, + 18, + 22, + 27, + 27, + 33, + 33, + 39, + 39, + 46, + 46, + 54, + 54, + 63, + 63, + 63, + 72, + 72, + 72, + 81, + 81, + 89, + 89, + 97, + 97, + ] + IT9 = [ + 25, + 30, + 36, + 43, + 43, + 52, + 52, + 62, + 62, + 74, + 74, + 87, + 87, + 100, + 100, + 100, + 115, + 115, + 115, + 130, + 130, + 140, + 140, + 155, + 155, + ] + IT10 = [ + 40, + 48, + 58, + 70, + 70, + 84, + 84, + 100, + 100, + 120, + 120, + 140, + 140, + 160, + 160, + 160, + 185, + 185, + 185, + 210, + 210, + 230, + 230, + 250, + 250, + ] + IT11 = [ + 60, + 75, + 90, + 110, + 110, + 130, + 130, + 160, + 160, + 190, + 190, + 220, + 220, + 250, + 250, + 250, + 290, + 290, + 290, + 320, + 320, + 360, + 360, + 400, + 400, + ] + qualityTable = [IT6, IT7, IT8, IT9, IT10, IT11] + return qualityTable[valueQuality - 6][valueNominalRange] - def getFieldValue(self,fieldCharacter,valueNominalRange): - '''return es or ES value of the field in micrometers''' - cField = [-60,-70,-80,-95,-95,-110,-110,-120,-130,-140,-150,-170,-180,-200,-210,-230,-240,-260,-280,-300,-330,-360,-400,-440,-480] - fField = [-6,-10,-13,-16,-16,-20,-20,-25,-25,-30,-30,-36,-36,-43,-43,-43,-50,-50,-50,-56,-56,-62,-62,-68,-68] - gField = [-2,-4,-5,-6,-6,-7,-7,-9,-9,-10,-10,-12,-12,-14,-14,-14,-15,-15,-15,-17,-17,-18,-18,-20,-20] - hField = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - kField = [6,9,10,12,12,15,15,18,18,21,21,25,25,28,28,28,33,33,33,36,36,40,40,45,45] - nField = [10,16,19,23,23,28,28,33,33,39,39,45,45,52,52,60,60,66,66,73,73,80,80] - rField = [16,23,28,34,34,41,41,50,50,60,62,73,76,88,90,93,106,109,113,126,130,144,150,166,172] - sField = [20,27,32,39,39,48,48,59,59,72,78,93,101,117,125,133,151,159,169,190,202,226,244,272,292] - DField = [60,78,98,120,120,149,149,180,180,220,220,260,260,305,305,305,355,355,355,400,400,440,440,480,480] - EField = [39,50,61,75,75,92,92,112,112,134,134,159,159,185,185,185,215,215,215,240,240,265,265,290,290] - FField = [20,28,35,43,43,53,53,64,64,76,76,90,90,106,106,106,122,122,122,137,137,151,151,165,165] - GField = [12,16,20,24,24,28,28,34,34,40,40,47,47,54,54,54,61,61,61,69,69,75,75,83,83] - HField = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - KField = [0,3,5,6,6,6,6,7,7,9,9,10,10,12,12,12,13,13,13,16,16,17,17,18,18] - NField = [-4,-4,-4,-5,-5,-7,-7,-8,-8,-9,-9,-10,-10,-12,-12,-12,-14,-14,-14,-14,-14,-16,-16,-17,-17] - RField = [-10,-11,-13,-16,-16,-20,-20,-25,-25,-30,-32,-38,-41,-48,-50,-53,-60,-63,-67,-74,-78,-87,-93,-103,-109] - SField = [-14,-15,-17,-21,-21,-27,-27,-34,-34,-42,-48,-58,-66,-77,-85,-93,-105,-113,-123,-138,-150,-169,-187,-209,-229] - fieldDict = {'c':cField,'f':fField,'g':gField,'h':hField,'k':kField,'n':nField,'r':rField,'s':sField, - 'D':DField,'E':EField,'F':FField,'G':GField,'H':HField,'K':KField,'N':NField,'R':RField,'S':SField} + def getFieldValue(self, fieldCharacter, valueNominalRange): + """return es or ES value of the field in micrometers""" + cField = [ + -60, + -70, + -80, + -95, + -95, + -110, + -110, + -120, + -130, + -140, + -150, + -170, + -180, + -200, + -210, + -230, + -240, + -260, + -280, + -300, + -330, + -360, + -400, + -440, + -480, + ] + fField = [ + -6, + -10, + -13, + -16, + -16, + -20, + -20, + -25, + -25, + -30, + -30, + -36, + -36, + -43, + -43, + -43, + -50, + -50, + -50, + -56, + -56, + -62, + -62, + -68, + -68, + ] + gField = [ + -2, + -4, + -5, + -6, + -6, + -7, + -7, + -9, + -9, + -10, + -10, + -12, + -12, + -14, + -14, + -14, + -15, + -15, + -15, + -17, + -17, + -18, + -18, + -20, + -20, + ] + hField = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ] + kField = [ + 6, + 9, + 10, + 12, + 12, + 15, + 15, + 18, + 18, + 21, + 21, + 25, + 25, + 28, + 28, + 28, + 33, + 33, + 33, + 36, + 36, + 40, + 40, + 45, + 45, + ] + nField = [ + 10, + 16, + 19, + 23, + 23, + 28, + 28, + 33, + 33, + 39, + 39, + 45, + 45, + 52, + 52, + 60, + 60, + 66, + 66, + 73, + 73, + 80, + 80, + ] + rField = [ + 16, + 23, + 28, + 34, + 34, + 41, + 41, + 50, + 50, + 60, + 62, + 73, + 76, + 88, + 90, + 93, + 106, + 109, + 113, + 126, + 130, + 144, + 150, + 166, + 172, + ] + sField = [ + 20, + 27, + 32, + 39, + 39, + 48, + 48, + 59, + 59, + 72, + 78, + 93, + 101, + 117, + 125, + 133, + 151, + 159, + 169, + 190, + 202, + 226, + 244, + 272, + 292, + ] + DField = [ + 60, + 78, + 98, + 120, + 120, + 149, + 149, + 180, + 180, + 220, + 220, + 260, + 260, + 305, + 305, + 305, + 355, + 355, + 355, + 400, + 400, + 440, + 440, + 480, + 480, + ] + EField = [ + 39, + 50, + 61, + 75, + 75, + 92, + 92, + 112, + 112, + 134, + 134, + 159, + 159, + 185, + 185, + 185, + 215, + 215, + 215, + 240, + 240, + 265, + 265, + 290, + 290, + ] + FField = [ + 20, + 28, + 35, + 43, + 43, + 53, + 53, + 64, + 64, + 76, + 76, + 90, + 90, + 106, + 106, + 106, + 122, + 122, + 122, + 137, + 137, + 151, + 151, + 165, + 165, + ] + GField = [ + 12, + 16, + 20, + 24, + 24, + 28, + 28, + 34, + 34, + 40, + 40, + 47, + 47, + 54, + 54, + 54, + 61, + 61, + 61, + 69, + 69, + 75, + 75, + 83, + 83, + ] + HField = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ] + KField = [ + 0, + 3, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 9, + 9, + 10, + 10, + 12, + 12, + 12, + 13, + 13, + 13, + 16, + 16, + 17, + 17, + 18, + 18, + ] + NField = [ + -4, + -4, + -4, + -5, + -5, + -7, + -7, + -8, + -8, + -9, + -9, + -10, + -10, + -12, + -12, + -12, + -14, + -14, + -14, + -14, + -14, + -16, + -16, + -17, + -17, + ] + RField = [ + -10, + -11, + -13, + -16, + -16, + -20, + -20, + -25, + -25, + -30, + -32, + -38, + -41, + -48, + -50, + -53, + -60, + -63, + -67, + -74, + -78, + -87, + -93, + -103, + -109, + ] + SField = [ + -14, + -15, + -17, + -21, + -21, + -27, + -27, + -34, + -34, + -42, + -48, + -58, + -66, + -77, + -85, + -93, + -105, + -113, + -123, + -138, + -150, + -169, + -187, + -209, + -229, + ] + fieldDict = { + "c": cField, + "f": fField, + "g": gField, + "h": hField, + "k": kField, + "n": nField, + "r": rField, + "s": sField, + "D": DField, + "E": EField, + "F": FField, + "G": GField, + "H": HField, + "K": KField, + "N": NField, + "R": RField, + "S": SField, + } return fieldDict[fieldCharacter][valueNominalRange] - def calculate(self,value,fieldChar,quality): - '''calculate upper and lower field values''' - self.nominalRange = self. getNominalRange(value) - self.upperValue = self.getFieldValue(fieldChar,self.nominalRange) - self.lowerValue = self.upperValue-self.getITValue(quality,self.nominalRange) - if fieldChar == 'H': + def calculate(self, value, fieldChar, quality): + """calculate upper and lower field values""" + self.nominalRange = self.getNominalRange(value) + self.upperValue = self.getFieldValue(fieldChar, self.nominalRange) + self.lowerValue = self.upperValue - self.getITValue(quality, self.nominalRange) + if fieldChar == "H": self.upperValue = -self.lowerValue self.lowerValue = 0 - # hack to print zero tolerance value as (+0.000) - if self.upperValue == 0: - self.upperValue = 0.1 - if self.lowerValue == 0: - self.lowerValue = 0.1 def getValues(self): - '''return range values in mm''' - return (self.upperValue/1000,self.lowerValue/1000) \ No newline at end of file + """return range values in mm""" + return (self.upperValue / 1000, self.lowerValue / 1000) diff --git a/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_advanced.svg b/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_advanced.svg new file mode 100644 index 0000000000..bca7530e0d --- /dev/null +++ b/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_advanced.svg @@ -0,0 +1,262 @@ + + + + Drawing sheet ISO 5457 - A0T + + + + + Drawing sheet ISO 5457 - A0T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title, supplementary title: + Responsible department: + Approved by: + Document type: + Created by: + Document status: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + Assembly Drawing + A. Nemesis + In preparation + A0 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_minimal.svg new file mode 100644 index 0000000000..21fd90506c --- /dev/null +++ b/src/Mod/TechDraw/Templates/A0_Landscape_ISO5457_minimal.svg @@ -0,0 +1,253 @@ + + + + Drawing sheet ISO 5457 - A0T + + + + + Drawing sheet ISO 5457 - A0T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Approved by: + Created by: + Document type: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + B. Hecate + A. Nemesis + Assembly Drawing + A0 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A0_Landscape_ISO7200TD.svg b/src/Mod/TechDraw/Templates/A0_Landscape_ISO7200TD.svg deleted file mode 100644 index 83fd664f33..0000000000 --- a/src/Mod/TechDraw/Templates/A0_Landscape_ISO7200TD.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - Created by: - Title: - Supplementary information: - Size: - Sheet: - Scale: - Part number: - Drawing number: - Date: - Revision: - - - - - - - AUTHOR NAME - DRAWING TITLE - - - FreeCAD DRAWING - - - - A0 - X / Y - SCALE - PN - DN - DD/MM/YYYY - REV A - - - diff --git a/src/Mod/TechDraw/Templates/A0_Landscape_ISO7200_Pep.svg b/src/Mod/TechDraw/Templates/A0_Landscape_ISO7200_Pep.svg deleted file mode 100644 index 71500e19d9..0000000000 --- a/src/Mod/TechDraw/Templates/A0_Landscape_ISO7200_Pep.svg +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - - A - B - C - D - E - F - G - H - I - K - L - M - N - O - - A - B - C - D - E - F - G - H - I - K - L - M - N - O - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - - - - - - - - - - - - - - - - - - - - - - - - - - - Author: - Appr.: - Legal owner: - TITLE: - Document type: - Sheet: - Size: - Scale: - Toler.: - Part material: - Part number: - Drawing no.: - Date: - Revision: - - - AUTHOR NAME - APPROVER NAME - OWNER NAME - FreeCAD - - - Mechanical assembly drawing - 99 of 99 - M x:x - +/- ? - PM - PN - DN - YYYY-MM-DD - REV A - A1 - (R) DO NOT DUPLICATE THIS DRAWING TO THIRD PARTIES WITHOUT OWNER'S PERMISSION ! - - - - diff --git a/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_advanced.svg b/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_advanced.svg new file mode 100644 index 0000000000..e943c8c1c8 --- /dev/null +++ b/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_advanced.svg @@ -0,0 +1,214 @@ + + + + Drawing sheet ISO 5457 - A1T + + + + Drawing sheet ISO 5457 - A1T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title, supplementary title: + Responsible department: + Approved by: + Document type: + Created by: + Document status: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + Assembly Drawing + A. Nemesis + In preparation + A1 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_minimal.svg new file mode 100644 index 0000000000..07a35974ed --- /dev/null +++ b/src/Mod/TechDraw/Templates/A1_Landscape_ISO5457_minimal.svg @@ -0,0 +1,205 @@ + + + + Drawing sheet ISO 5457 - A1T + + + + Drawing sheet ISO 5457 - A1T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Approved by: + Created by: + Document type: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + B. Hecate + A. Nemesis + Assembly Drawing + A1 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A1_Landscape_ISO7200TD.svg b/src/Mod/TechDraw/Templates/A1_Landscape_ISO7200TD.svg deleted file mode 100644 index 29bb9fd241..0000000000 --- a/src/Mod/TechDraw/Templates/A1_Landscape_ISO7200TD.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - Created by: - Title: - Supplementary information: - Size: - Sheet: - Scale: - Part number: - Drawing number: - Date: - Revision: - - - - - - - AUTHOR NAME - DRAWING TITLE - - - FreeCAD DRAWING - - - - A1 - X / Y - SCALE - PN - DN - DD/MM/YYYY - REV A - - - diff --git a/src/Mod/TechDraw/Templates/A1_Landscape_ISO7200_Pep.svg b/src/Mod/TechDraw/Templates/A1_Landscape_ISO7200_Pep.svg deleted file mode 100644 index b2bfcd8b43..0000000000 --- a/src/Mod/TechDraw/Templates/A1_Landscape_ISO7200_Pep.svg +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - A - B - C - D - E - F - G - H - I - K - - A - B - C - D - E - F - G - H - I - K - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - - - - - - - - - - - - - - - - - - - - - - - - - - Author: - Appr.: - Legal owner: - TITLE: - Document type: - Sheet: - Size: - Scale: - Toler.: - Part material: - Part number: - Drawing no.: - Date: - Revision: - - - AUTHOR NAME - APPROVER NAME - OWNER NAME - FreeCAD - - - Mechanical assembly drawing - 99 of 99 - M x:x - +/- ? - PM - PN - DN - YYYY-MM-DD - REV A - A1 - (R) DO NOT DUPLICATE THIS DRAWING TO THIRD PARTIES WITHOUT OWNER'S PERMISSION ! - - - - diff --git a/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_advanced.svg b/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_advanced.svg new file mode 100644 index 0000000000..dd3720c36f --- /dev/null +++ b/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_advanced.svg @@ -0,0 +1,181 @@ + + + + Drawing sheet ISO 5457 - A2T + + + Drawing sheet ISO 5457 - A2T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title, supplementary title: + Responsible department: + Approved by: + Document type: + Created by: + Document status: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + Assembly Drawing + A. Nemesis + In preparation + A2 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_minimal.svg new file mode 100644 index 0000000000..a0bfb31bae --- /dev/null +++ b/src/Mod/TechDraw/Templates/A2_Landscape_ISO5457_minimal.svg @@ -0,0 +1,174 @@ + + + + Drawing sheet ISO 5457 - A2T + + + Drawing sheet ISO 5457 - A2T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Approved by: + Created by: + Document type: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + B. Hecate + A. Nemesis + Assembly Drawing + A2 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A2_Landscape_ISO7200TD.svg b/src/Mod/TechDraw/Templates/A2_Landscape_ISO7200TD.svg deleted file mode 100644 index 5a9e46faa9..0000000000 --- a/src/Mod/TechDraw/Templates/A2_Landscape_ISO7200TD.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - Created by: - Title: - Supplementary information: - Size: - Sheet: - Scale: - Part number: - Drawing number: - Date: - Revision: - - - - - transform="translate(384,123)"> - - AUTHOR NAME - DRAWING TITLE - - - FreeCAD DRAWING - - - - A2 - X / Y - SCALE - PN - DN - DD/MM/YYYY - REV A - - - diff --git a/src/Mod/TechDraw/Templates/A2_Landscape_ISO7200_Pep.svg b/src/Mod/TechDraw/Templates/A2_Landscape_ISO7200_Pep.svg deleted file mode 100644 index b78c891c7f..0000000000 --- a/src/Mod/TechDraw/Templates/A2_Landscape_ISO7200_Pep.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - - A - B - C - D - E - F - G - - A - B - C - D - E - F - G - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - - - - - - - - - - - - - - - - - - - - - - - - - - - Author: - Appr.: - Legal owner: - TITLE: - Document type: - Sheet: - Size: - Scale: - Toler.: - Part material: - Part number: - Drawing no.: - Date: - Revision: - - - AUTHOR NAME - APPROVER NAME - OWNER NAME - FreeCAD - - - Mechanical assembly drawing - 99 of 99 - M x:x - +/- ? - PM - PN - DN - YYYY-MM-DD - REV A - A2 - (R) DO NOT DUPLICATE THIS DRAWING TO THIRD PARTIES WITHOUT OWNER'S PERMISSION ! - - - - diff --git a/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_advanced.svg b/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_advanced.svg new file mode 100644 index 0000000000..31562c5726 --- /dev/null +++ b/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_advanced.svg @@ -0,0 +1,158 @@ + + + + Drawing sheet ISO 5457 - A3T + + + + Drawing sheet ISO 5457 - A3T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title, supplementary title: + Responsible department: + Approved by: + Document type: + Created by: + Document status: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + Assembly Drawing + A. Nemesis + In preparation + A3 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_minimal.svg new file mode 100644 index 0000000000..1a82198256 --- /dev/null +++ b/src/Mod/TechDraw/Templates/A3_Landscape_ISO5457_minimal.svg @@ -0,0 +1,150 @@ + + + + Drawing sheet ISO 5457 - A3T + + + + Drawing sheet ISO 5457 - A3T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Approved by: + Created by: + Document type: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + B. Hecate + A. Nemesis + Assembly Drawing + A3 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A3_Landscape_ISO7200TD.svg b/src/Mod/TechDraw/Templates/A3_Landscape_ISO7200TD.svg deleted file mode 100644 index 5edb0c5e4d..0000000000 --- a/src/Mod/TechDraw/Templates/A3_Landscape_ISO7200TD.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - Created by: - Title: - Supplementary information: - Size: - Sheet: - Scale: - Part number: - Drawing number: - Date: - Revision: - - - - - - - - AUTHOR NAME - DRAWING TITLE - - - FreeCAD DRAWING - - - - A3 - X / Y - SCALE - PN - DN - DD/MM/YYYY - REV A - - - diff --git a/src/Mod/TechDraw/Templates/A3_Landscape_ISO7200_Pep.svg b/src/Mod/TechDraw/Templates/A3_Landscape_ISO7200_Pep.svg deleted file mode 100644 index 964124106f..0000000000 --- a/src/Mod/TechDraw/Templates/A3_Landscape_ISO7200_Pep.svg +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - A - B - C - D - E - - A - B - C - D - E - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - Author: - Appr.: - Legal owner: - TITLE: - Document type: - Sheet: - Size: - Scale: - Toler.: - Part material: - Part number: - Drawing no.: - Date: - Revision: - - - AUTHOR NAME - APPROVER NAME - OWNER NAME - FreeCAD - - - Mechanical assembly drawing - 99 of 99 - M x:x - +/- ? - PM - PN - DN - YYYY-MM-DD - REV A - A3 - (R) DO NOT DUPLICATE THIS DRAWING TO THIRD PARTIES WITHOUT OWNER'S PERMISSION! - - - - diff --git a/src/Mod/TechDraw/Templates/A4_LandscapeTD.svg b/src/Mod/TechDraw/Templates/A4_LandscapeTD.svg index 1ea6c239bc..c3b68cf97a 100644 --- a/src/Mod/TechDraw/Templates/A4_LandscapeTD.svg +++ b/src/Mod/TechDraw/Templates/A4_LandscapeTD.svg @@ -192,13 +192,13 @@ - Designed by Name - Date - Scale + Designed by Name + Date + Scale Weight - Title + Title Subtitle Drawing number - Sheet + Sheet diff --git a/src/Mod/TechDraw/Templates/A4_Landscape_ISO5457_advanced.svg b/src/Mod/TechDraw/Templates/A4_Landscape_ISO5457_advanced.svg new file mode 100644 index 0000000000..50fe66d2ea --- /dev/null +++ b/src/Mod/TechDraw/Templates/A4_Landscape_ISO5457_advanced.svg @@ -0,0 +1,132 @@ + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title, supplementary title: + Responsible department: + Approved by: + Document type: + Created by: + Document status: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + Assembly Drawing + A. Nemesis + In preparation + A4 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A4_Landscape_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A4_Landscape_ISO5457_minimal.svg new file mode 100644 index 0000000000..b8ef4593ed --- /dev/null +++ b/src/Mod/TechDraw/Templates/A4_Landscape_ISO5457_minimal.svg @@ -0,0 +1,127 @@ + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Approved by: + Created by: + Document type: + Paper size: + Scale: + General tolerances: + Part Material: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + B. Hecate + A. Nemesis + Assembly Drawing + A4 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A4_Landscape_ISO7200TD.svg b/src/Mod/TechDraw/Templates/A4_Landscape_ISO7200TD.svg deleted file mode 100644 index ab77ba9a1a..0000000000 --- a/src/Mod/TechDraw/Templates/A4_Landscape_ISO7200TD.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - Created by: - Title: - Supplementary information: - Size: - Sheet: - Scale: - Part number: - Drawing no.: - Date: - Revision: - - - - - - - AUTHOR NAME - DRAWING TITLE - - FreeCAD DRAWING - - A4 - X / Y - SCALE - PN - DN - DD/MM/YYYY - REV A - - - diff --git a/src/Mod/TechDraw/Templates/A4_Landscape_ISO7200_Pep.svg b/src/Mod/TechDraw/Templates/A4_Landscape_ISO7200_Pep.svg deleted file mode 100644 index 3af2ab93d9..0000000000 --- a/src/Mod/TechDraw/Templates/A4_Landscape_ISO7200_Pep.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Author: - Appr.: - Legal owner: - TITLE: - Document type: - Sheet: - Size: - Scale: - Toler.: - Part material: - Part number: - Drawing no.: - Date: - Revision: - - - AUTHOR NAME - APPROVER NAME - OWNER NAME - FreeCAD - - - Mechanical assembly drawing - 99 of 99 - M x:x - +/- ? - PM - PN - DN - YYYY-MM-DD - REV A - A4 - (R) DO NOT DUPLICATE THIS DRAWING TO THIRD PARTIES WITHOUT OWNER'S PERMISSION ! - - - - diff --git a/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_advanced.svg b/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_advanced.svg new file mode 100644 index 0000000000..6f0f23de07 --- /dev/null +++ b/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_advanced.svg @@ -0,0 +1,132 @@ + + + + Drawing sheet ISO 5457 - A4T + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title, supplementary title: + Responsible department: + Approved by: + Document type: + Created by: + Document status: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + Assembly Drawing + A. Nemesis + In preparation + A4 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_minimal.svg b/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_minimal.svg new file mode 100644 index 0000000000..4e821c731c --- /dev/null +++ b/src/Mod/TechDraw/Templates/A4_Portrait_ISO5457_minimal.svg @@ -0,0 +1,124 @@ + + + + Drawing sheet ISO 5457 - A4T + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Approved by: + Created by: + Document type: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + B. Hecate + A. Nemesis + Assembly Drawing + A4 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/A4_Portrait_ISO7200Pep.svg b/src/Mod/TechDraw/Templates/A4_Portrait_ISO7200Pep.svg deleted file mode 100644 index e128fb8105..0000000000 --- a/src/Mod/TechDraw/Templates/A4_Portrait_ISO7200Pep.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Author: - Appr.: - Legal owner: - TITLE: - Document type: - Sheet: - Size: - Scale: - Toler.: - Part material: - Part number: - Drawing no.: - Date: - Revision: - - - AUTHOR NAME - APPROVER NAME - OWNER NAME - FreeCAD - - - Mechanical assembly drawing - 99 of 99 - M x:x - +/- ? - PM - PN - DN - YYYY-MM-DD - REV A - A4 - (R) DO NOT DUPLICATE THIS DRAWING TO THIRD PARTIES WITHOUT OWNER'S PERMISSION ! - - - - diff --git a/src/Mod/TechDraw/Templates/A4_Portrait_ISO7200TD.svg b/src/Mod/TechDraw/Templates/A4_Portrait_ISO7200TD.svg deleted file mode 100644 index c71e88e86c..0000000000 --- a/src/Mod/TechDraw/Templates/A4_Portrait_ISO7200TD.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - Created by: - Title: - Supplementary information: - Size: - Sheet: - Scale: - Part number: - Drawing number: - Date: - Revision: - - - AUTHOR NAME - DRAWING TITLE - - - FreeCAD DRAWING - - - - A4 - X / Y - SCALE - PN - DN - DD/MM/YYYY - REV A - - - - - - - diff --git a/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg b/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg index 04981c38a7..50357387ce 100644 --- a/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg +++ b/src/Mod/TechDraw/Templates/ANSIC_Landscape.svg @@ -314,18 +314,18 @@ - AUTHOR NAME - CREATION DATE + AUTHOR NAME + CREATION DATE SUPERVISOR NAME CHECK DATE ANSI C - SCALE + SCALE WEIGHT NUMBER - SHEET - TITLE + SHEET + TITLE SUBTITLE - COMPANY NAME + COMPANY NAME COPYRIGHT _________ _________ diff --git a/src/Mod/TechDraw/Templates/ISO 5457/A0_Landscape_ISO5457_notitleblock.svg b/src/Mod/TechDraw/Templates/ISO 5457/A0_Landscape_ISO5457_notitleblock.svg new file mode 100644 index 0000000000..255c18c993 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/A0_Landscape_ISO5457_notitleblock.svg @@ -0,0 +1,201 @@ + + + + Drawing sheet ISO 5457 - A0T + + + + + Drawing sheet ISO 5457 - A0T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/A1_Landscape_ISO5457_notitleblock.svg b/src/Mod/TechDraw/Templates/ISO 5457/A1_Landscape_ISO5457_notitleblock.svg new file mode 100644 index 0000000000..1f343e0d8e --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/A1_Landscape_ISO5457_notitleblock.svg @@ -0,0 +1,153 @@ + + + + Drawing sheet ISO 5457 - A1T + + + + Drawing sheet ISO 5457 - A1T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/A2_Landscape_ISO5457_notitleblock.svg b/src/Mod/TechDraw/Templates/ISO 5457/A2_Landscape_ISO5457_notitleblock.svg new file mode 100644 index 0000000000..9be9d85c56 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/A2_Landscape_ISO5457_notitleblock.svg @@ -0,0 +1,120 @@ + + + + Drawing sheet ISO 5457 - A2T + + + Drawing sheet ISO 5457 - A2T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/A3_Landscape_ISO5457_notitleblock.svg b/src/Mod/TechDraw/Templates/ISO 5457/A3_Landscape_ISO5457_notitleblock.svg new file mode 100644 index 0000000000..94115d03a8 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/A3_Landscape_ISO5457_notitleblock.svg @@ -0,0 +1,97 @@ + + + + Drawing sheet ISO 5457 - A3T + + + + Drawing sheet ISO 5457 - A3T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/A4_Landscape_ISO5457_notitleblock.svg b/src/Mod/TechDraw/Templates/ISO 5457/A4_Landscape_ISO5457_notitleblock.svg new file mode 100644 index 0000000000..408967838c --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/A4_Landscape_ISO5457_notitleblock.svg @@ -0,0 +1,71 @@ + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/A4_Portrait_ISO5457_notitleblock.svg b/src/Mod/TechDraw/Templates/ISO 5457/A4_Portrait_ISO5457_notitleblock.svg new file mode 100644 index 0000000000..b808a2ab26 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/A4_Portrait_ISO5457_notitleblock.svg @@ -0,0 +1,71 @@ + + + + Drawing sheet ISO 5457 - A4T + + + + Drawing sheet ISO 5457 - A4T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_1_minimal.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_1_minimal.svg new file mode 100644 index 0000000000..20732adda0 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_1_minimal.svg @@ -0,0 +1,85 @@ + + + + Titleblock ISO 7200 + + + + Titleblock ISO 7200 + + + + Benjamin May + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Approved by: + Created by: + Document type: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + B. Hecate + A. Nemesis + Assembly Drawing + A3 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_2.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_2.svg new file mode 100644 index 0000000000..ff34e6485d --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_2.svg @@ -0,0 +1,70 @@ + + + + Titleblock ISO 7200 + + + + Titleblock ISO 7200 + + + + Benjamin May + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title: + Responsible department: + Approved by: + Created by: + Document type: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 5457 template + RD + B. Hecate + A. Nemesis + Assembly Drawing + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_3.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_3.svg new file mode 100644 index 0000000000..c3c4727253 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_3.svg @@ -0,0 +1,93 @@ + + + + Titleblock ISO 7200 + + + + Titleblock ISO 7200 + + + + Benjamin May + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Title, supplementary title: + Responsible department: + Approved by: + Document type: + Created by: + Document status: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + Assembly Drawing + A. Nemesis + In preparation + A3 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_4.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_4.svg new file mode 100644 index 0000000000..7f75a444b9 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_4.svg @@ -0,0 +1,81 @@ + + + + Titleblock ISO 7200 + + + + Titleblock ISO 7200 + + + + Benjamin May + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Language: + Title, supplementary title: + Responsible department: + Approved by: + Created by: + Document type: + Document status: + Paper size: + + + DN + AAA + YYYY-MM-DD + X / Y + EN + ISO 7200 titleblock + ST1 + ST2 + RD + B. Hecate + A. Nemesis + Assembly Drawing + In preparation + A3 + + diff --git a/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_5_maximal.svg b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_5_maximal.svg new file mode 100644 index 0000000000..a37986e146 --- /dev/null +++ b/src/Mod/TechDraw/Templates/ISO 5457/ISO7200_titleblock_5_maximal.svg @@ -0,0 +1,107 @@ + + + + Titleblock ISO 7200 + + + + Titleblock ISO 7200 + + + + Benjamin May + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Owner: + Drawing number: + Revision: + Issue date: + Sheet: + Language: + Title, supplementary title: + Responsible department: + Technical reference: + Approved by: + Created by: + Document type: + Key words: + Document status: + Page: + Paper size: + Scale: + General tolerances: + Part Material: + + + DN + AAA + YYYY-MM-DD + X / Y + EN + ISO 7200 titleblock + ST1 + ST2 + RD + C. Kali + B. Hecate + A. Nemesis + Assembly Drawing + KW + In preparation + X / Y + A3 + 1 : 1 + ISO 2768-m + Stainless steel Mat.No. 1.4301 + + + + + + + + + + + diff --git a/src/Mod/Test/Gui/Resources/translations/Test_fr.ts b/src/Mod/Test/Gui/Resources/translations/Test_fr.ts index 1f5b24a707..66f4018fe1 100644 --- a/src/Mod/Test/Gui/Resources/translations/Test_fr.ts +++ b/src/Mod/Test/Gui/Resources/translations/Test_fr.ts @@ -6,7 +6,7 @@ FreeCAD UnitTest - Test unitaire FreeCAD + FreeCAD UnitTest @@ -46,7 +46,7 @@ Alt+A - Alt+p + Alt+A @@ -56,7 +56,7 @@ Alt+C - Alt+F + Alt+C @@ -120,7 +120,7 @@ Double-cliquer sur une erreur dans la vue en arborescence pour voir plus d'infor About FreeCAD UnitTest - À propos des tests unitaires FreeCAD + À propos de FreeCAD UnitTest diff --git a/src/Mod/Tux/Resources/translations/Tux_es-ES.qm b/src/Mod/Tux/Resources/translations/Tux_es-ES.qm index 772ff6f38a..dff461ad47 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_es-ES.qm and b/src/Mod/Tux/Resources/translations/Tux_es-ES.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_es-ES.ts b/src/Mod/Tux/Resources/translations/Tux_es-ES.ts index 25f2896eb0..43d56714d4 100644 --- a/src/Mod/Tux/Resources/translations/Tux_es-ES.ts +++ b/src/Mod/Tux/Resources/translations/Tux_es-ES.ts @@ -61,12 +61,12 @@ Settings - Opciones + Ajustes Orbit style - Estilo órbita + Estilo de órbita diff --git a/src/Mod/Tux/Resources/translations/Tux_fr.qm b/src/Mod/Tux/Resources/translations/Tux_fr.qm index b55f5583eb..ff1eb78153 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_fr.qm and b/src/Mod/Tux/Resources/translations/Tux_fr.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_fr.ts b/src/Mod/Tux/Resources/translations/Tux_fr.ts index 159cfe7e91..019fe1c9cc 100644 --- a/src/Mod/Tux/Resources/translations/Tux_fr.ts +++ b/src/Mod/Tux/Resources/translations/Tux_fr.ts @@ -6,7 +6,7 @@ Select - Sélectionnez + Sélectionner diff --git a/src/Mod/Web/Gui/Resources/translations/Web.ts b/src/Mod/Web/Gui/Resources/translations/Web.ts index 5db28c6d77..58b1f1f1ad 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web.ts @@ -128,8 +128,8 @@ QObject - + Browser diff --git a/src/Mod/Web/Gui/Resources/translations/Web_be.ts b/src/Mod/Web/Gui/Resources/translations/Web_be.ts index 3924b77d62..82ab11d044 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_be.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_be.ts @@ -128,8 +128,8 @@ QObject - + Browser Інтэрнэт-аглядальнік diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ca.ts b/src/Mod/Web/Gui/Resources/translations/Web_ca.ts index e1c3d109d6..b5b86d0d05 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_ca.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_ca.ts @@ -128,8 +128,8 @@ QObject - + Browser Navegador diff --git a/src/Mod/Web/Gui/Resources/translations/Web_cs.ts b/src/Mod/Web/Gui/Resources/translations/Web_cs.ts index daa7e61647..d78b3ebbe3 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_cs.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_cs.ts @@ -128,8 +128,8 @@ QObject - + Browser Prohlížeč diff --git a/src/Mod/Web/Gui/Resources/translations/Web_de.ts b/src/Mod/Web/Gui/Resources/translations/Web_de.ts index aee06d6c6d..0529ab541c 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_de.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_de.ts @@ -128,8 +128,8 @@ QObject - + Browser Browser diff --git a/src/Mod/Web/Gui/Resources/translations/Web_el.ts b/src/Mod/Web/Gui/Resources/translations/Web_el.ts index 9f4a94968b..e200ca0f28 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_el.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_el.ts @@ -128,8 +128,8 @@ QObject - + Browser Περιηγητής diff --git a/src/Mod/Web/Gui/Resources/translations/Web_es-AR.ts b/src/Mod/Web/Gui/Resources/translations/Web_es-AR.ts index 1c3433fab5..c6a32d09fe 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_es-AR.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_es-AR.ts @@ -128,8 +128,8 @@ QObject - + Browser Navegador diff --git a/src/Mod/Web/Gui/Resources/translations/Web_es-ES.ts b/src/Mod/Web/Gui/Resources/translations/Web_es-ES.ts index d4cc495b79..e5dec37cf1 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_es-ES.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_es-ES.ts @@ -128,8 +128,8 @@ QObject - + Browser Navegador diff --git a/src/Mod/Web/Gui/Resources/translations/Web_eu.ts b/src/Mod/Web/Gui/Resources/translations/Web_eu.ts index 48a1833ddf..28ce388b31 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_eu.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_eu.ts @@ -128,8 +128,8 @@ QObject - + Browser Nabigatzailea diff --git a/src/Mod/Web/Gui/Resources/translations/Web_fi.ts b/src/Mod/Web/Gui/Resources/translations/Web_fi.ts index 8b42ec2adf..34c6b2ce77 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_fi.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_fi.ts @@ -128,8 +128,8 @@ QObject - + Browser Selain diff --git a/src/Mod/Web/Gui/Resources/translations/Web_fr.ts b/src/Mod/Web/Gui/Resources/translations/Web_fr.ts index 945fe808f0..8157e70761 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_fr.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_fr.ts @@ -128,8 +128,8 @@ QObject - + Browser Navigateur diff --git a/src/Mod/Web/Gui/Resources/translations/Web_gl.ts b/src/Mod/Web/Gui/Resources/translations/Web_gl.ts index ceb637f3fe..777ce292e2 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_gl.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_gl.ts @@ -128,8 +128,8 @@ QObject - + Browser Navegador diff --git a/src/Mod/Web/Gui/Resources/translations/Web_hr.ts b/src/Mod/Web/Gui/Resources/translations/Web_hr.ts index 7bcba60604..f245e7ef5f 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_hr.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_hr.ts @@ -128,8 +128,8 @@ QObject - + Browser Preglednik diff --git a/src/Mod/Web/Gui/Resources/translations/Web_hu.ts b/src/Mod/Web/Gui/Resources/translations/Web_hu.ts index d2c3be118c..44869f2374 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_hu.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_hu.ts @@ -128,8 +128,8 @@ QObject - + Browser Böngésző diff --git a/src/Mod/Web/Gui/Resources/translations/Web_id.ts b/src/Mod/Web/Gui/Resources/translations/Web_id.ts index 64f2b5d860..fcfc97270c 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_id.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_id.ts @@ -128,8 +128,8 @@ QObject - + Browser Browser diff --git a/src/Mod/Web/Gui/Resources/translations/Web_it.ts b/src/Mod/Web/Gui/Resources/translations/Web_it.ts index 016831e757..0072f540cf 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_it.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_it.ts @@ -128,8 +128,8 @@ QObject - + Browser Browser diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ja.ts b/src/Mod/Web/Gui/Resources/translations/Web_ja.ts index 10f51214d0..650761a319 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_ja.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_ja.ts @@ -128,8 +128,8 @@ QObject - + Browser ブラウザー diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ka.ts b/src/Mod/Web/Gui/Resources/translations/Web_ka.ts index a5df995454..be594d8e88 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_ka.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_ka.ts @@ -128,8 +128,8 @@ QObject - + Browser ბრაუზერი diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ko.ts b/src/Mod/Web/Gui/Resources/translations/Web_ko.ts index 2f094bc378..bc2ad682af 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_ko.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_ko.ts @@ -128,8 +128,8 @@ QObject - + Browser 브라우저 diff --git a/src/Mod/Web/Gui/Resources/translations/Web_nl.ts b/src/Mod/Web/Gui/Resources/translations/Web_nl.ts index 8941b96383..cfd3895aab 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_nl.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_nl.ts @@ -128,8 +128,8 @@ QObject - + Browser Browser diff --git a/src/Mod/Web/Gui/Resources/translations/Web_pl.ts b/src/Mod/Web/Gui/Resources/translations/Web_pl.ts index 436291e431..6fcfecff40 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_pl.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_pl.ts @@ -128,8 +128,8 @@ QObject - + Browser Przeglądarka diff --git a/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.ts b/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.ts index 86b4f4ec0e..c45a49f3e8 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.ts @@ -128,8 +128,8 @@ QObject - + Browser Navegador diff --git a/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.ts b/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.ts index a445cf27e2..e6af894b77 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.ts @@ -128,8 +128,8 @@ QObject - + Browser Navegador diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ro.ts b/src/Mod/Web/Gui/Resources/translations/Web_ro.ts index dd42f7b8f2..46d6d439e2 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_ro.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_ro.ts @@ -128,8 +128,8 @@ QObject - + Browser Navigator diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ru.ts b/src/Mod/Web/Gui/Resources/translations/Web_ru.ts index 9c3dffbd0f..d9d1f5ceea 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_ru.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_ru.ts @@ -128,8 +128,8 @@ QObject - + Browser Браузер diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sl.ts b/src/Mod/Web/Gui/Resources/translations/Web_sl.ts index c8f5d8bccc..be637cd3ce 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_sl.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_sl.ts @@ -128,8 +128,8 @@ QObject - + Browser Brskalnik diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sr-CS.ts b/src/Mod/Web/Gui/Resources/translations/Web_sr-CS.ts index 8fe97e203b..be3c924b9f 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_sr-CS.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_sr-CS.ts @@ -128,8 +128,8 @@ QObject - + Browser Pregledač diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sr.ts b/src/Mod/Web/Gui/Resources/translations/Web_sr.ts index 1885148b84..a0fb839a65 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_sr.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_sr.ts @@ -128,8 +128,8 @@ QObject - + Browser Прегледач diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.ts b/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.ts index 2b8fe0faef..e8874a91b9 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.ts @@ -128,8 +128,8 @@ QObject - + Browser Webbläsare diff --git a/src/Mod/Web/Gui/Resources/translations/Web_tr.ts b/src/Mod/Web/Gui/Resources/translations/Web_tr.ts index 0af13a276a..26bb2c8eca 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_tr.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_tr.ts @@ -128,8 +128,8 @@ QObject - + Browser Tarayıcı diff --git a/src/Mod/Web/Gui/Resources/translations/Web_uk.ts b/src/Mod/Web/Gui/Resources/translations/Web_uk.ts index 59bafb03c8..a66a8e463b 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_uk.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_uk.ts @@ -128,8 +128,8 @@ QObject - + Browser Браузер diff --git a/src/Mod/Web/Gui/Resources/translations/Web_val-ES.ts b/src/Mod/Web/Gui/Resources/translations/Web_val-ES.ts index f70c453ce9..e942bdc1a6 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_val-ES.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_val-ES.ts @@ -128,8 +128,8 @@ QObject - + Browser Navegador diff --git a/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.ts b/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.ts index bdbc7ab1d5..9d16107582 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.ts @@ -128,8 +128,8 @@ QObject - + Browser 浏览器 diff --git a/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.ts b/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.ts index aa526b9d01..809b761be3 100644 --- a/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.ts +++ b/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.ts @@ -128,8 +128,8 @@ QObject - + Browser 瀏覽器 diff --git a/src/Tools/plugins/widget/FreeCAD_widgets.sln b/src/Tools/plugins/widget/FreeCAD_widgets.sln deleted file mode 100644 index 59eb9f9632..0000000000 --- a/src/Tools/plugins/widget/FreeCAD_widgets.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.1062 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeCAD_widgets", "FreeCAD_widgets.vcxproj", "{0FFD6565-C54C-3BE4-96B6-AAFB7DA921A1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0FFD6565-C54C-3BE4-96B6-AAFB7DA921A1}.Debug|x64.ActiveCfg = Debug|x64 - {0FFD6565-C54C-3BE4-96B6-AAFB7DA921A1}.Debug|x64.Build.0 = Debug|x64 - {0FFD6565-C54C-3BE4-96B6-AAFB7DA921A1}.Release|x64.ActiveCfg = Release|x64 - {0FFD6565-C54C-3BE4-96B6-AAFB7DA921A1}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {EC696D06-B20E-41F8-94A6-AFEB0D9F3D25} - EndGlobalSection -EndGlobal diff --git a/src/Tools/plugins/widget/FreeCAD_widgets.vcxproj b/src/Tools/plugins/widget/FreeCAD_widgets.vcxproj deleted file mode 100644 index b67c4e52aa..0000000000 --- a/src/Tools/plugins/widget/FreeCAD_widgets.vcxproj +++ /dev/null @@ -1,196 +0,0 @@ - - - - - Debug - x64 - - - Release - x64 - - - - {0FFD6565-C54C-3BE4-96B6-AAFB7DA921A1} - FreeCAD_widgets - Qt4VSv1.0 - 10.0.19041.0 - 10.0.19041.0 - - - - v142 - debug\ - false - NotSet - DynamicLibrary - debug\ - FreeCAD_widgetsd - - - v142 - release\ - false - NotSet - DynamicLibrary - release\ - FreeCAD_widgets - - - - - - - - - - - - debug\ - debug\ - FreeCAD_widgetsd - true - release\ - release\ - FreeCAD_widgets - true - false - - - - .;.;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtDesigner;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtUiPlugin;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtWidgets;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtGui;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtANGLE;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtXml;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtCore;debug;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\mkspecs\win32-msvc;%(AdditionalIncludeDirectories) - -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) - debug\ - false - ProgramDatabase - 4577;4467;%(DisableSpecificWarnings) - Sync - debug\ - Disabled - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_PLUGIN;QT_DESIGNER_LIB;QT_UIPLUGIN_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_XML_LIB;QT_CORE_LIB;QDESIGNER_EXPORT_WIDGETS;%(PreprocessorDefinitions) - false - MultiThreadedDebugDLL - true - true - Level3 - - - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Designerd.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Widgetsd.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Guid.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Xmld.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Cored.lib;%(AdditionalDependencies) - true - true - true - true - $(OutDir)\FreeCAD_widgetsd.dll - true - Windows - true - - - Unsigned - None - 0 - - - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_PLUGIN;QT_DESIGNER_LIB;QT_UIPLUGIN_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_XML_LIB;QT_CORE_LIB;QDESIGNER_EXPORT_WIDGETS;_DEBUG;%(PreprocessorDefinitions) - - - - - .;.;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtDesigner;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtUiPlugin;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtWidgets;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtGui;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtANGLE;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtXml;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\include\QtCore;release;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\mkspecs\win32-msvc;%(AdditionalIncludeDirectories) - -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) - release\ - false - None - 4577;4467;%(DisableSpecificWarnings) - Sync - release\ - MaxSpeed - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_PLUGIN;QT_DESIGNER_LIB;QT_UIPLUGIN_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_XML_LIB;QT_CORE_LIB;QDESIGNER_EXPORT_WIDGETS;%(PreprocessorDefinitions) - false - - MultiThreadedDLL - true - true - Level3 - - - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Designer.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Widgets.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Gui.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Xml.lib;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\lib\Qt5Core.lib;%(AdditionalDependencies) - true - false - true - true - false - true - $(OutDir)\FreeCAD_widgets.dll - true - Windows - true - - - Unsigned - None - 0 - - - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_PLUGIN;QT_DESIGNER_LIB;QT_UIPLUGIN_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_XML_LIB;QT_CORE_LIB;QDESIGNER_EXPORT_WIDGETS;%(PreprocessorDefinitions) - - - - - - - - - customwidgets.h;debug\moc_predefs.h;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe;%(AdditionalInputs) - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_PLUGIN -DQT_DESIGNER_LIB -DQT_UIPLUGIN_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -DQDESIGNER_EXPORT_WIDGETS --compiler-flavor=msvc --include D:/FreeCADGit/src/Tools/plugins/widget/debug/moc_predefs.h -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/mkspecs/win32-msvc -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtDesigner -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtUiPlugin -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtWidgets -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtGui -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtANGLE -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtXml -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtCore -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" customwidgets.h -o debug\moc_customwidgets.cpp - MOC customwidgets.h - debug\moc_customwidgets.cpp;%(Outputs) - customwidgets.h;release\moc_predefs.h;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe;%(AdditionalInputs) - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DNDEBUG -DQT_NO_DEBUG -DQT_PLUGIN -DQT_DESIGNER_LIB -DQT_UIPLUGIN_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -DQDESIGNER_EXPORT_WIDGETS --compiler-flavor=msvc --include D:/FreeCADGit/src/Tools/plugins/widget/release/moc_predefs.h -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/mkspecs/win32-msvc -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtDesigner -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtUiPlugin -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtWidgets -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtGui -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtANGLE -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtXml -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtCore -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" customwidgets.h -o release\moc_customwidgets.cpp - MOC customwidgets.h - release\moc_customwidgets.cpp;%(Outputs) - - - plugin.h;debug\moc_predefs.h;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe;%(AdditionalInputs) - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_PLUGIN -DQT_DESIGNER_LIB -DQT_UIPLUGIN_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -DQDESIGNER_EXPORT_WIDGETS --compiler-flavor=msvc --include D:/FreeCADGit/src/Tools/plugins/widget/debug/moc_predefs.h -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/mkspecs/win32-msvc -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtDesigner -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtUiPlugin -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtWidgets -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtGui -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtANGLE -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtXml -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtCore -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" plugin.h -o debug\moc_plugin.cpp - MOC plugin.h - debug\moc_plugin.cpp;%(Outputs) - plugin.h;release\moc_predefs.h;D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe;%(AdditionalInputs) - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DNDEBUG -DQT_NO_DEBUG -DQT_PLUGIN -DQT_DESIGNER_LIB -DQT_UIPLUGIN_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -DQDESIGNER_EXPORT_WIDGETS --compiler-flavor=msvc --include D:/FreeCADGit/src/Tools/plugins/widget/release/moc_predefs.h -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/mkspecs/win32-msvc -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCADGit/src/Tools/plugins/widget -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtDesigner -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtUiPlugin -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtWidgets -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtGui -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtANGLE -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtXml -ID:/FreeCAD-build/FreeCADLibs_1.1_x64_VC2019/include/QtCore -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" plugin.h -o release\moc_plugin.cpp - MOC plugin.h - release\moc_plugin.cpp;%(Outputs) - - - - - true - - - true - - - true - - - true - - - Document - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) - cl -BxD:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\qmake.exe -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\mkspecs\features\data\dummy.cpp 2>NUL >debug\moc_predefs.h - Generate moc_predefs.h - debug\moc_predefs.h;%(Outputs) - true - - - Document - true - D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) - cl -BxD:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\bin\qmake.exe -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E D:\FreeCAD-build\FreeCADLibs_1.1_x64_VC2019\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h - Generate moc_predefs.h - release\moc_predefs.h;%(Outputs) - - - - - \ No newline at end of file diff --git a/src/Tools/plugins/widget/customwidgets.cpp b/src/Tools/plugins/widget/customwidgets.cpp index 99a0af7a7f..36c829add3 100644 --- a/src/Tools/plugins/widget/customwidgets.cpp +++ b/src/Tools/plugins/widget/customwidgets.cpp @@ -269,72 +269,98 @@ void PrefFileChooser::setParamGrpPath(const QByteArray& name) AccelLineEdit::AccelLineEdit(QWidget* parent) : QLineEdit(parent) { - setText(tr("none")); + setPlaceholderText(tr("Press a keyboard shortcut")); + setClearButtonEnabled(true); + keyPressedCount = 0; +} + +bool AccelLineEdit::isNone() const +{ + return text().isEmpty(); } void AccelLineEdit::keyPressEvent(QKeyEvent* e) { - QString txt; - setText(tr("none")); + if (isReadOnly()) { + QLineEdit::keyPressEvent(e); + return; + } + + QString txtLine = text(); int key = e->key(); Qt::KeyboardModifiers state = e->modifiers(); - if (key == Qt::Key_Control) { - return; - } - else if (key == Qt::Key_Shift) { - return; - } - else if (key == Qt::Key_Alt) { - return; - } - else if (state == Qt::NoModifier && key == Qt::Key_Backspace) { - return; // clears the edit field + // Backspace clears the shortcut if text is present, else sets Backspace as shortcut. + // If a modifier is pressed without any other key, return. + // AltGr is not a modifier but doesn't have a QString representation. + switch (key) { + case Qt::Key_Backspace: + case Qt::Key_Delete: + if (state == Qt::NoModifier) { + keyPressedCount = 0; + if (isNone()) { + QKeySequence ks(key); + setText(ks.toString(QKeySequence::NativeText)); + } + else { + clear(); + } + } + case Qt::Key_Control: + case Qt::Key_Shift: + case Qt::Key_Alt: + case Qt::Key_Meta: + case Qt::Key_AltGr: + return; + default: + break; } - switch (state) { - case Qt::ControlModifier: { - QKeySequence keyseq(Qt::CTRL + key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; - case Qt::AltModifier: { - QKeySequence keyseq(Qt::ALT + key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; - case Qt::ShiftModifier: { - QKeySequence keyseq(Qt::SHIFT + key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; - case Qt::ControlModifier + Qt::AltModifier: { - QKeySequence keyseq(Qt::CTRL + Qt::ALT + key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; - case Qt::ControlModifier + Qt::ShiftModifier: { - QKeySequence keyseq(Qt::CTRL + Qt::SHIFT + key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; - case Qt::ShiftModifier + Qt::AltModifier: { - QKeySequence keyseq(Qt::SHIFT + Qt::ALT + key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; - case Qt::ControlModifier + Qt::AltModifier + Qt::ShiftModifier: { - QKeySequence keyseq(Qt::CTRL + Qt::ALT + Qt::SHIFT + key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; - default: { - QKeySequence keyseq(key); - txt += keyseq.toString(QKeySequence::NativeText); - setText(txt); - } break; + if (txtLine.isEmpty()) { + // Text maybe cleared by QLineEdit's built in clear button + keyPressedCount = 0; } + else { + // 4 keys are allowed for QShortcut + switch (keyPressedCount) { + case 4: + keyPressedCount = 0; + txtLine.clear(); + break; + case 0: + txtLine.clear(); + break; + default: + txtLine += QString::fromLatin1(","); + break; + } + } + + // Handles modifiers applying a mask. + if ((state & Qt::ControlModifier) == Qt::ControlModifier) { + QKeySequence ks(Qt::CTRL); + txtLine += ks.toString(QKeySequence::NativeText); + } + if ((state & Qt::AltModifier) == Qt::AltModifier) { + QKeySequence ks(Qt::ALT); + txtLine += ks.toString(QKeySequence::NativeText); + } + if ((state & Qt::ShiftModifier) == Qt::ShiftModifier) { + QKeySequence ks(Qt::SHIFT); + txtLine += ks.toString(QKeySequence::NativeText); + } + if ((state & Qt::MetaModifier) == Qt::MetaModifier) { + QKeySequence ks(Qt::META); + txtLine += ks.toString(QKeySequence::NativeText); + } + + // Handles normal keys + QKeySequence ks(key); + txtLine += ks.toString(QKeySequence::NativeText); + + setText(txtLine); + keyPressedCount++; } // ------------------------------------------------------------------------------ @@ -782,11 +808,13 @@ public: bool ok = false; double value = min; - if (locale.negativeSign() != QLatin1Char('-')) { - copy.replace(locale.negativeSign(), QLatin1Char('-')); + QChar plus = QLatin1Char('+'), minus = QLatin1Char('-'); + + if (locale.negativeSign() != minus) { + copy.replace(locale.negativeSign(), minus); } - if (locale.positiveSign() != QLatin1Char('+')) { - copy.replace(locale.positiveSign(), QLatin1Char('+')); + if (locale.positiveSign() != plus) { + copy.replace(locale.positiveSign(), plus); } try { @@ -1833,7 +1861,7 @@ void ColorButton::paintEvent(QPaintEvent* e) // overpaint the rectangle to paint icon and text QStyleOptionButton opt; - opt.init(this); + opt.initFrom(this); opt.text = text(); opt.icon = icon(); opt.iconSize = iconSize(); diff --git a/src/Tools/plugins/widget/customwidgets.h b/src/Tools/plugins/widget/customwidgets.h index 8bf371904e..ed636e0383 100644 --- a/src/Tools/plugins/widget/customwidgets.h +++ b/src/Tools/plugins/widget/customwidgets.h @@ -301,9 +301,13 @@ class AccelLineEdit: public QLineEdit public: AccelLineEdit(QWidget* parent = 0); + bool isNone() const; protected: void keyPressEvent(QKeyEvent* e); + +private: + int keyPressedCount; }; // ------------------------------------------------------------------------------ diff --git a/src/Tools/updatecrowdin.py b/src/Tools/updatecrowdin.py index e83e0fe3e8..f5061f6318 100755 --- a/src/Tools/updatecrowdin.py +++ b/src/Tools/updatecrowdin.py @@ -170,9 +170,9 @@ locations = [ "../Mod/PartDesign/Gui/Resources/PartDesign.qrc", ], [ - "Path", - "../Mod/Path/Gui/Resources/translations", - "../Mod/Path/Gui/Resources/Path.qrc", + "CAM", + "../Mod/CAM/Gui/Resources/translations", + "../Mod/CAM/Gui/Resources/CAM.qrc", ], [ "Points", diff --git a/src/Tools/updatets.py b/src/Tools/updatets.py index d528ed8801..9c9c311b11 100755 --- a/src/Tools/updatets.py +++ b/src/Tools/updatets.py @@ -123,8 +123,8 @@ directories = [ "tsdir": "Gui/Resources/translations", }, { - "tsname": "Path", - "workingdir": "./src/Mod/Path/", + "tsname": "CAM", + "workingdir": "./src/Mod/CAM/", "tsdir": "Gui/Resources/translations", }, { @@ -186,12 +186,12 @@ directories = [ # Exclude these files from consideration excluded_files = [ - ("Path", "UtilsArguments.py"), # Causes lupdate to hang - ("Path", "refactored_centroid_post.py"), # lupdate bug causes failure on line 245 - ("Path", "refactored_grbl_post.py"), # lupdate bug causes failure on line 212 - ("Path", "refactored_linuxcnc_post.py"), # lupdate bug causes failure on line 178 - ("Path", "refactored_mach3_mach4_post.py"), # lupdate bug causes failure on line 186 - ("Path", "refactored_test_post.py"), # lupdate bug causes failure on lines 42 and 179 + ("CAM", "UtilsArguments.py"), # Causes lupdate to hang + ("CAM", "refactored_centroid_post.py"), # lupdate bug causes failure on line 245 + ("CAM", "refactored_grbl_post.py"), # lupdate bug causes failure on line 212 + ("CAM", "refactored_linuxcnc_post.py"), # lupdate bug causes failure on line 178 + ("CAM", "refactored_mach3_mach4_post.py"), # lupdate bug causes failure on line 186 + ("CAM", "refactored_test_post.py"), # lupdate bug causes failure on lines 42 and 179 ] QMAKE = "" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 95758fd826..355013a25b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -90,6 +90,9 @@ endif(BUILD_MESH) if(BUILD_PART) list (APPEND TestExecutables Part_tests_run) endif(BUILD_PART) +if(BUILD_PART_DESIGN) + list (APPEND TestExecutables PartDesign_tests_run) +endif(BUILD_PART_DESIGN) if(BUILD_POINTS) list (APPEND TestExecutables Points_tests_run) endif(BUILD_POINTS) diff --git a/tests/lib b/tests/lib new file mode 160000 index 0000000000..f8d7d77c06 --- /dev/null +++ b/tests/lib @@ -0,0 +1 @@ +Subproject commit f8d7d77c06936315286eb55f8de22cd23c188571 diff --git a/tests/lib/BUILD.bazel b/tests/lib/BUILD.bazel deleted file mode 100644 index ac62251e10..0000000000 --- a/tests/lib/BUILD.bazel +++ /dev/null @@ -1,218 +0,0 @@ -# Copyright 2017 Google Inc. -# All Rights Reserved. -# -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Bazel Build for Google C++ Testing Framework(Google Test) - -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) - -exports_files(["LICENSE"]) - -config_setting( - name = "qnx", - constraint_values = ["@platforms//os:qnx"], -) - -config_setting( - name = "windows", - constraint_values = ["@platforms//os:windows"], -) - -config_setting( - name = "freebsd", - constraint_values = ["@platforms//os:freebsd"], -) - -config_setting( - name = "openbsd", - constraint_values = ["@platforms//os:openbsd"], -) - -config_setting( - name = "msvc_compiler", - flag_values = { - "@bazel_tools//tools/cpp:compiler": "msvc-cl", - }, - visibility = [":__subpackages__"], -) - -config_setting( - name = "has_absl", - values = {"define": "absl=1"}, -) - -# Library that defines the FRIEND_TEST macro. -cc_library( - name = "gtest_prod", - hdrs = ["googletest/include/gtest/gtest_prod.h"], - includes = ["googletest/include"], -) - -# Google Test including Google Mock -cc_library( - name = "gtest", - srcs = glob( - include = [ - "googletest/src/*.cc", - "googletest/src/*.h", - "googletest/include/gtest/**/*.h", - "googlemock/src/*.cc", - "googlemock/include/gmock/**/*.h", - ], - exclude = [ - "googletest/src/gtest-all.cc", - "googletest/src/gtest_main.cc", - "googlemock/src/gmock-all.cc", - "googlemock/src/gmock_main.cc", - ], - ), - hdrs = glob([ - "googletest/include/gtest/*.h", - "googlemock/include/gmock/*.h", - ]), - copts = select({ - ":qnx": [], - ":windows": [], - "//conditions:default": ["-pthread"], - }), - defines = select({ - ":has_absl": ["GTEST_HAS_ABSL=1"], - "//conditions:default": [], - }), - features = select({ - ":windows": ["windows_export_all_symbols"], - "//conditions:default": [], - }), - includes = [ - "googlemock", - "googlemock/include", - "googletest", - "googletest/include", - ], - linkopts = select({ - ":qnx": ["-lregex"], - ":windows": [], - ":freebsd": [ - "-lm", - "-pthread", - ], - ":openbsd": [ - "-lm", - "-pthread", - ], - "//conditions:default": ["-pthread"], - }), - deps = select({ - ":has_absl": [ - "@com_google_absl//absl/debugging:failure_signal_handler", - "@com_google_absl//absl/debugging:stacktrace", - "@com_google_absl//absl/debugging:symbolize", - "@com_google_absl//absl/flags:flag", - "@com_google_absl//absl/flags:parse", - "@com_google_absl//absl/flags:reflection", - "@com_google_absl//absl/flags:usage", - "@com_google_absl//absl/strings", - "@com_google_absl//absl/types:any", - "@com_google_absl//absl/types:optional", - "@com_google_absl//absl/types:variant", - "@com_googlesource_code_re2//:re2", - ], - "//conditions:default": [], - }), -) - -cc_library( - name = "gtest_main", - srcs = ["googlemock/src/gmock_main.cc"], - features = select({ - ":windows": ["windows_export_all_symbols"], - "//conditions:default": [], - }), - deps = [":gtest"], -) - -# The following rules build samples of how to use gTest. -cc_library( - name = "gtest_sample_lib", - srcs = [ - "googletest/samples/sample1.cc", - "googletest/samples/sample2.cc", - "googletest/samples/sample4.cc", - ], - hdrs = [ - "googletest/samples/prime_tables.h", - "googletest/samples/sample1.h", - "googletest/samples/sample2.h", - "googletest/samples/sample3-inl.h", - "googletest/samples/sample4.h", - ], - features = select({ - ":windows": ["windows_export_all_symbols"], - "//conditions:default": [], - }), -) - -cc_test( - name = "gtest_samples", - size = "small", - # All Samples except: - # sample9 (main) - # sample10 (main and takes a command line option and needs to be separate) - srcs = [ - "googletest/samples/sample1_unittest.cc", - "googletest/samples/sample2_unittest.cc", - "googletest/samples/sample3_unittest.cc", - "googletest/samples/sample4_unittest.cc", - "googletest/samples/sample5_unittest.cc", - "googletest/samples/sample6_unittest.cc", - "googletest/samples/sample7_unittest.cc", - "googletest/samples/sample8_unittest.cc", - ], - linkstatic = 0, - deps = [ - "gtest_sample_lib", - ":gtest_main", - ], -) - -cc_test( - name = "sample9_unittest", - size = "small", - srcs = ["googletest/samples/sample9_unittest.cc"], - deps = [":gtest"], -) - -cc_test( - name = "sample10_unittest", - size = "small", - srcs = ["googletest/samples/sample10_unittest.cc"], - deps = [":gtest"], -) diff --git a/tests/lib/CMakeLists.txt b/tests/lib/CMakeLists.txt deleted file mode 100644 index 102e28cd49..0000000000 --- a/tests/lib/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -# Note: CMake support is community-based. The maintainers do not use CMake -# internally. - -cmake_minimum_required(VERSION 3.5) - -if (POLICY CMP0048) - cmake_policy(SET CMP0048 NEW) -endif (POLICY CMP0048) - -if (POLICY CMP0077) - cmake_policy(SET CMP0077 NEW) -endif (POLICY CMP0077) - -project(googletest-distribution) -set(GOOGLETEST_VERSION 1.12.1) - -if(NOT CYGWIN AND NOT MSYS AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL QNX) - set(CMAKE_CXX_EXTENSIONS OFF) -endif() - -enable_testing() - -include(CMakeDependentOption) -include(GNUInstallDirs) - -#Note that googlemock target already builds googletest -option(BUILD_GMOCK "Builds the googlemock subproject" ON) -option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" ON) - -if(BUILD_GMOCK) - add_subdirectory( googlemock ) -else() - add_subdirectory( googletest ) -endif() diff --git a/tests/lib/CONTRIBUTING.md b/tests/lib/CONTRIBUTING.md deleted file mode 100644 index b3f50436e5..0000000000 --- a/tests/lib/CONTRIBUTING.md +++ /dev/null @@ -1,131 +0,0 @@ -# How to become a contributor and submit your own code - -## Contributor License Agreements - -We'd love to accept your patches! Before we can take them, we have to jump a -couple of legal hurdles. - -Please fill out either the individual or corporate Contributor License Agreement -(CLA). - -* If you are an individual writing original source code and you're sure you - own the intellectual property, then you'll need to sign an - [individual CLA](https://developers.google.com/open-source/cla/individual). -* If you work for a company that wants to allow you to contribute your work, - then you'll need to sign a - [corporate CLA](https://developers.google.com/open-source/cla/corporate). - -Follow either of the two links above to access the appropriate CLA and -instructions for how to sign and return it. Once we receive it, we'll be able to -accept your pull requests. - -## Are you a Googler? - -If you are a Googler, please make an attempt to submit an internal contribution -rather than a GitHub Pull Request. If you are not able to submit internally, a -PR is acceptable as an alternative. - -## Contributing A Patch - -1. Submit an issue describing your proposed change to the - [issue tracker](https://github.com/google/googletest/issues). -2. Please don't mix more than one logical change per submittal, because it - makes the history hard to follow. If you want to make a change that doesn't - have a corresponding issue in the issue tracker, please create one. -3. Also, coordinate with team members that are listed on the issue in question. - This ensures that work isn't being duplicated and communicating your plan - early also generally leads to better patches. -4. If your proposed change is accepted, and you haven't already done so, sign a - Contributor License Agreement - ([see details above](#contributor-license-agreements)). -5. Fork the desired repo, develop and test your code changes. -6. Ensure that your code adheres to the existing style in the sample to which - you are contributing. -7. Ensure that your code has an appropriate set of unit tests which all pass. -8. Submit a pull request. - -## The Google Test and Google Mock Communities - -The Google Test community exists primarily through the -[discussion group](http://groups.google.com/group/googletestframework) and the -GitHub repository. Likewise, the Google Mock community exists primarily through -their own [discussion group](http://groups.google.com/group/googlemock). You are -definitely encouraged to contribute to the discussion and you can also help us -to keep the effectiveness of the group high by following and promoting the -guidelines listed here. - -### Please Be Friendly - -Showing courtesy and respect to others is a vital part of the Google culture, -and we strongly encourage everyone participating in Google Test development to -join us in accepting nothing less. Of course, being courteous is not the same as -failing to constructively disagree with each other, but it does mean that we -should be respectful of each other when enumerating the 42 technical reasons -that a particular proposal may not be the best choice. There's never a reason to -be antagonistic or dismissive toward anyone who is sincerely trying to -contribute to a discussion. - -Sure, C++ testing is serious business and all that, but it's also a lot of fun. -Let's keep it that way. Let's strive to be one of the friendliest communities in -all of open source. - -As always, discuss Google Test in the official GoogleTest discussion group. You -don't have to actually submit code in order to sign up. Your participation -itself is a valuable contribution. - -## Style - -To keep the source consistent, readable, diffable and easy to merge, we use a -fairly rigid coding style, as defined by the -[google-styleguide](https://github.com/google/styleguide) project. All patches -will be expected to conform to the style outlined -[here](https://google.github.io/styleguide/cppguide.html). Use -[.clang-format](https://github.com/google/googletest/blob/master/.clang-format) -to check your formatting. - -## Requirements for Contributors - -If you plan to contribute a patch, you need to build Google Test, Google Mock, -and their own tests from a git checkout, which has further requirements: - -* [Python](https://www.python.org/) v2.3 or newer (for running some of the - tests and re-generating certain source files from templates) -* [CMake](https://cmake.org/) v2.8.12 or newer - -## Developing Google Test and Google Mock - -This section discusses how to make your own changes to the Google Test project. - -### Testing Google Test and Google Mock Themselves - -To make sure your changes work as intended and don't break existing -functionality, you'll want to compile and run Google Test and GoogleMock's own -tests. For that you can use CMake: - - mkdir mybuild - cd mybuild - cmake -Dgtest_build_tests=ON -Dgmock_build_tests=ON ${GTEST_REPO_DIR} - -To choose between building only Google Test or Google Mock, you may modify your -cmake command to be one of each - - cmake -Dgtest_build_tests=ON ${GTEST_DIR} # sets up Google Test tests - cmake -Dgmock_build_tests=ON ${GMOCK_DIR} # sets up Google Mock tests - -Make sure you have Python installed, as some of Google Test's tests are written -in Python. If the cmake command complains about not being able to find Python -(`Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE)`), try telling it -explicitly where your Python executable can be found: - - cmake -DPYTHON_EXECUTABLE=path/to/python ... - -Next, you can build Google Test and / or Google Mock and all desired tests. On -\*nix, this is usually done by - - make - -To run the tests, do - - make test - -All tests should pass. diff --git a/tests/lib/CONTRIBUTORS b/tests/lib/CONTRIBUTORS deleted file mode 100644 index 77397a5b53..0000000000 --- a/tests/lib/CONTRIBUTORS +++ /dev/null @@ -1,65 +0,0 @@ -# This file contains a list of people who've made non-trivial -# contribution to the Google C++ Testing Framework project. People -# who commit code to the project are encouraged to add their names -# here. Please keep the list sorted by first names. - -Ajay Joshi -Balázs Dán -Benoit Sigoure -Bharat Mediratta -Bogdan Piloca -Chandler Carruth -Chris Prince -Chris Taylor -Dan Egnor -Dave MacLachlan -David Anderson -Dean Sturtevant -Eric Roman -Gene Volovich -Hady Zalek -Hal Burch -Jeffrey Yasskin -Jim Keller -Joe Walnes -Jon Wray -Jói Sigurðsson -Keir Mierle -Keith Ray -Kenton Varda -Kostya Serebryany -Krystian Kuzniarek -Lev Makhlis -Manuel Klimek -Mario Tanev -Mark Paskin -Markus Heule -Martijn Vels -Matthew Simmons -Mika Raento -Mike Bland -Miklós Fazekas -Neal Norwitz -Nermin Ozkiranartli -Owen Carlsen -Paneendra Ba -Pasi Valminen -Patrick Hanna -Patrick Riley -Paul Menage -Peter Kaminski -Piotr Kaminski -Preston Jackson -Rainer Klaffenboeck -Russ Cox -Russ Rufer -Sean Mcafee -Sigurður Ásgeirsson -Sverre Sundsdal -Szymon Sobik -Takeshi Yoshino -Tracy Bialik -Vadim Berman -Vlad Losev -Wolfgang Klier -Zhanyong Wan diff --git a/tests/lib/LICENSE b/tests/lib/LICENSE deleted file mode 100644 index 1941a11f8c..0000000000 --- a/tests/lib/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright 2008, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/lib/README.md b/tests/lib/README.md deleted file mode 100644 index 30edaecf31..0000000000 --- a/tests/lib/README.md +++ /dev/null @@ -1,141 +0,0 @@ -# GoogleTest - -### Announcements - -#### Live at Head - -GoogleTest now follows the -[Abseil Live at Head philosophy](https://abseil.io/about/philosophy#upgrade-support). -We recommend -[updating to the latest commit in the `main` branch as often as possible](https://github.com/abseil/abseil-cpp/blob/master/FAQ.md#what-is-live-at-head-and-how-do-i-do-it). - -#### Documentation Updates - -Our documentation is now live on GitHub Pages at -https://google.github.io/googletest/. We recommend browsing the documentation on -GitHub Pages rather than directly in the repository. - -#### Release 1.11.0 - -[Release 1.11.0](https://github.com/google/googletest/releases/tag/release-1.11.0) -is now available. - -#### Coming Soon - -* We are planning to take a dependency on - [Abseil](https://github.com/abseil/abseil-cpp). -* More documentation improvements are planned. - -## Welcome to **GoogleTest**, Google's C++ test framework! - -This repository is a merger of the formerly separate GoogleTest and GoogleMock -projects. These were so closely related that it makes sense to maintain and -release them together. - -### Getting Started - -See the [GoogleTest User's Guide](https://google.github.io/googletest/) for -documentation. We recommend starting with the -[GoogleTest Primer](https://google.github.io/googletest/primer.html). - -More information about building GoogleTest can be found at -[googletest/README.md](googletest/README.md). - -## Features - -* An [xUnit](https://en.wikipedia.org/wiki/XUnit) test framework. -* Test discovery. -* A rich set of assertions. -* User-defined assertions. -* Death tests. -* Fatal and non-fatal failures. -* Value-parameterized tests. -* Type-parameterized tests. -* Various options for running the tests. -* XML test report generation. - -## Supported Platforms - -GoogleTest requires a codebase and compiler compliant with the C++11 standard or -newer. - -The GoogleTest code is officially supported on the following platforms. -Operating systems or tools not listed below are community-supported. For -community-supported platforms, patches that do not complicate the code may be -considered. - -If you notice any problems on your platform, please file an issue on the -[GoogleTest GitHub Issue Tracker](https://github.com/google/googletest/issues). -Pull requests containing fixes are welcome! - -### Operating Systems - -* Linux -* macOS -* Windows - -### Compilers - -* gcc 5.0+ -* clang 5.0+ -* MSVC 2015+ - -**macOS users:** Xcode 9.3+ provides clang 5.0+. - -### Build Systems - -* [Bazel](https://bazel.build/) -* [CMake](https://cmake.org/) - -**Note:** Bazel is the build system used by the team internally and in tests. -CMake is supported on a best-effort basis and by the community. - -## Who Is Using GoogleTest? - -In addition to many internal projects at Google, GoogleTest is also used by the -following notable projects: - -* The [Chromium projects](http://www.chromium.org/) (behind the Chrome browser - and Chrome OS). -* The [LLVM](http://llvm.org/) compiler. -* [Protocol Buffers](https://github.com/google/protobuf), Google's data - interchange format. -* The [OpenCV](http://opencv.org/) computer vision library. - -## Related Open Source Projects - -[GTest Runner](https://github.com/nholthaus/gtest-runner) is a Qt5 based -automated test-runner and Graphical User Interface with powerful features for -Windows and Linux platforms. - -[GoogleTest UI](https://github.com/ospector/gtest-gbar) is a test runner that -runs your test binary, allows you to track its progress via a progress bar, and -displays a list of test failures. Clicking on one shows failure text. GoogleTest -UI is written in C#. - -[GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) is an event -listener for GoogleTest that implements the -[TAP protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for test -result output. If your test runner understands TAP, you may find it useful. - -[gtest-parallel](https://github.com/google/gtest-parallel) is a test runner that -runs tests from your binary in parallel to provide significant speed-up. - -[GoogleTest Adapter](https://marketplace.visualstudio.com/items?itemName=DavidSchuldenfrei.gtest-adapter) -is a VS Code extension allowing to view GoogleTest in a tree view and run/debug -your tests. - -[C++ TestMate](https://github.com/matepek/vscode-catch2-test-adapter) is a VS -Code extension allowing to view GoogleTest in a tree view and run/debug your -tests. - -[Cornichon](https://pypi.org/project/cornichon/) is a small Gherkin DSL parser -that generates stub code for GoogleTest. - -## Contributing Changes - -Please read -[`CONTRIBUTING.md`](https://github.com/google/googletest/blob/master/CONTRIBUTING.md) -for details on how to contribute to this project. - -Happy testing! diff --git a/tests/lib/WORKSPACE b/tests/lib/WORKSPACE deleted file mode 100644 index 4d7b3988a2..0000000000 --- a/tests/lib/WORKSPACE +++ /dev/null @@ -1,39 +0,0 @@ -workspace(name = "com_google_googletest") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "com_google_absl", - sha256 = "1a1745b5ee81392f5ea4371a4ca41e55d446eeaee122903b2eaffbd8a3b67a2b", - strip_prefix = "abseil-cpp-01cc6567cff77738e416a7ddc17de2d435a780ce", - urls = ["https://github.com/abseil/abseil-cpp/archive/01cc6567cff77738e416a7ddc17de2d435a780ce.zip"], # 2022-06-21T19:28:27Z -) - -# Note this must use a commit from the `abseil` branch of the RE2 project. -# https://github.com/google/re2/tree/abseil -http_archive( - name = "com_googlesource_code_re2", - sha256 = "0a890c2aa0bb05b2ce906a15efb520d0f5ad4c7d37b8db959c43772802991887", - strip_prefix = "re2-a427f10b9fb4622dd6d8643032600aa1b50fbd12", - urls = ["https://github.com/google/re2/archive/a427f10b9fb4622dd6d8643032600aa1b50fbd12.zip"], # 2022-06-09 -) - -http_archive( - name = "rules_python", - sha256 = "0b460f17771258341528753b1679335b629d1d25e3af28eda47d009c103a6e15", - strip_prefix = "rules_python-aef17ad72919d184e5edb7abf61509eb78e57eda", - urls = ["https://github.com/bazelbuild/rules_python/archive/aef17ad72919d184e5edb7abf61509eb78e57eda.zip"], # 2022-06-21T23:44:47Z -) - -http_archive( - name = "bazel_skylib", - urls = ["https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz"], - sha256 = "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728", -) - -http_archive( - name = "platforms", - sha256 = "a879ea428c6d56ab0ec18224f976515948822451473a80d06c2e50af0bbe5121", - strip_prefix = "platforms-da5541f26b7de1dc8e04c075c99df5351742a4a2", - urls = ["https://github.com/bazelbuild/platforms/archive/da5541f26b7de1dc8e04c075c99df5351742a4a2.zip"], # 2022-05-27 -) diff --git a/tests/lib/ci/linux-presubmit.sh b/tests/lib/ci/linux-presubmit.sh deleted file mode 100644 index 0ee5670417..0000000000 --- a/tests/lib/ci/linux-presubmit.sh +++ /dev/null @@ -1,130 +0,0 @@ -#!/bin/bash -# -# Copyright 2020, Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -set -euox pipefail - -readonly LINUX_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20220217" -readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20220621" - -if [[ -z ${GTEST_ROOT:-} ]]; then - GTEST_ROOT="$(realpath $(dirname ${0})/..)" -fi - -if [[ -z ${STD:-} ]]; then - STD="c++11 c++14 c++17 c++20" -fi - -# Test the CMake build -for cc in /usr/local/bin/gcc /opt/llvm/clang/bin/clang; do - for cmake_off_on in OFF ON; do - time docker run \ - --volume="${GTEST_ROOT}:/src:ro" \ - --tmpfs="/build:exec" \ - --workdir="/build" \ - --rm \ - --env="CC=${cc}" \ - --env="CXX_FLAGS=\"-Werror -Wdeprecated\"" \ - ${LINUX_LATEST_CONTAINER} \ - /bin/bash -c " - cmake /src \ - -DCMAKE_CXX_STANDARD=11 \ - -Dgtest_build_samples=ON \ - -Dgtest_build_tests=ON \ - -Dgmock_build_tests=ON \ - -Dcxx_no_exception=${cmake_off_on} \ - -Dcxx_no_rtti=${cmake_off_on} && \ - make -j$(nproc) && \ - ctest -j$(nproc) --output-on-failure" - done -done - -# Do one test with an older version of GCC -time docker run \ - --volume="${GTEST_ROOT}:/src:ro" \ - --workdir="/src" \ - --rm \ - --env="CC=/usr/local/bin/gcc" \ - ${LINUX_GCC_FLOOR_CONTAINER} \ - /usr/local/bin/bazel test ... \ - --copt="-Wall" \ - --copt="-Werror" \ - --copt="-Wuninitialized" \ - --copt="-Wno-error=pragmas" \ - --distdir="/bazel-distdir" \ - --keep_going \ - --show_timestamps \ - --test_output=errors - -# Test GCC -for std in ${STD}; do - for absl in 0 1; do - time docker run \ - --volume="${GTEST_ROOT}:/src:ro" \ - --workdir="/src" \ - --rm \ - --env="CC=/usr/local/bin/gcc" \ - --env="BAZEL_CXXOPTS=-std=${std}" \ - ${LINUX_LATEST_CONTAINER} \ - /usr/local/bin/bazel test ... \ - --copt="-Wall" \ - --copt="-Werror" \ - --copt="-Wuninitialized" \ - --define="absl=${absl}" \ - --distdir="/bazel-distdir" \ - --keep_going \ - --show_timestamps \ - --test_output=errors - done -done - -# Test Clang -for std in ${STD}; do - for absl in 0 1; do - time docker run \ - --volume="${GTEST_ROOT}:/src:ro" \ - --workdir="/src" \ - --rm \ - --env="CC=/opt/llvm/clang/bin/clang" \ - --env="BAZEL_CXXOPTS=-std=${std}" \ - ${LINUX_LATEST_CONTAINER} \ - /usr/local/bin/bazel test ... \ - --copt="--gcc-toolchain=/usr/local" \ - --copt="-Wall" \ - --copt="-Werror" \ - --copt="-Wuninitialized" \ - --define="absl=${absl}" \ - --distdir="/bazel-distdir" \ - --keep_going \ - --linkopt="--gcc-toolchain=/usr/local" \ - --show_timestamps \ - --test_output=errors - done -done diff --git a/tests/lib/ci/macos-presubmit.sh b/tests/lib/ci/macos-presubmit.sh deleted file mode 100644 index d6423faacc..0000000000 --- a/tests/lib/ci/macos-presubmit.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -# -# Copyright 2020, Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -set -euox pipefail - -if [[ -z ${GTEST_ROOT:-} ]]; then - GTEST_ROOT="$(realpath $(dirname ${0})/..)" -fi - -# Test the CMake build -for cmake_off_on in OFF ON; do - BUILD_DIR=$(mktemp -d build_dir.XXXXXXXX) - cd ${BUILD_DIR} - time cmake ${GTEST_ROOT} \ - -DCMAKE_CXX_STANDARD=11 \ - -Dgtest_build_samples=ON \ - -Dgtest_build_tests=ON \ - -Dgmock_build_tests=ON \ - -Dcxx_no_exception=${cmake_off_on} \ - -Dcxx_no_rtti=${cmake_off_on} - time make - time ctest -j$(nproc) --output-on-failure -done - -# Test the Bazel build - -# If we are running on Kokoro, check for a versioned Bazel binary. -KOKORO_GFILE_BAZEL_BIN="bazel-3.7.0-darwin-x86_64" -if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -f ${KOKORO_GFILE_DIR}/${KOKORO_GFILE_BAZEL_BIN} ]]; then - BAZEL_BIN="${KOKORO_GFILE_DIR}/${KOKORO_GFILE_BAZEL_BIN}" - chmod +x ${BAZEL_BIN} -else - BAZEL_BIN="bazel" -fi - -cd ${GTEST_ROOT} -for absl in 0 1; do - ${BAZEL_BIN} test ... \ - --copt="-Wall" \ - --copt="-Werror" \ - --define="absl=${absl}" \ - --keep_going \ - --show_timestamps \ - --test_output=errors -done diff --git a/tests/lib/docs/_config.yml b/tests/lib/docs/_config.yml deleted file mode 100644 index d12867eab6..0000000000 --- a/tests/lib/docs/_config.yml +++ /dev/null @@ -1 +0,0 @@ -title: GoogleTest diff --git a/tests/lib/docs/_data/navigation.yml b/tests/lib/docs/_data/navigation.yml deleted file mode 100644 index 9f3332708e..0000000000 --- a/tests/lib/docs/_data/navigation.yml +++ /dev/null @@ -1,43 +0,0 @@ -nav: -- section: "Get Started" - items: - - title: "Supported Platforms" - url: "/platforms.html" - - title: "Quickstart: Bazel" - url: "/quickstart-bazel.html" - - title: "Quickstart: CMake" - url: "/quickstart-cmake.html" -- section: "Guides" - items: - - title: "GoogleTest Primer" - url: "/primer.html" - - title: "Advanced Topics" - url: "/advanced.html" - - title: "Mocking for Dummies" - url: "/gmock_for_dummies.html" - - title: "Mocking Cookbook" - url: "/gmock_cook_book.html" - - title: "Mocking Cheat Sheet" - url: "/gmock_cheat_sheet.html" -- section: "References" - items: - - title: "Testing Reference" - url: "/reference/testing.html" - - title: "Mocking Reference" - url: "/reference/mocking.html" - - title: "Assertions" - url: "/reference/assertions.html" - - title: "Matchers" - url: "/reference/matchers.html" - - title: "Actions" - url: "/reference/actions.html" - - title: "Testing FAQ" - url: "/faq.html" - - title: "Mocking FAQ" - url: "/gmock_faq.html" - - title: "Code Samples" - url: "/samples.html" - - title: "Using pkg-config" - url: "/pkgconfig.html" - - title: "Community Documentation" - url: "/community_created_documentation.html" diff --git a/tests/lib/docs/_layouts/default.html b/tests/lib/docs/_layouts/default.html deleted file mode 100644 index dcb42d9191..0000000000 --- a/tests/lib/docs/_layouts/default.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - -{% seo %} - - - - - - -
-
- {{ content }} -
- -
- - - - diff --git a/tests/lib/docs/_sass/main.scss b/tests/lib/docs/_sass/main.scss deleted file mode 100644 index 92edc877a5..0000000000 --- a/tests/lib/docs/_sass/main.scss +++ /dev/null @@ -1,200 +0,0 @@ -// Styles for GoogleTest docs website on GitHub Pages. -// Color variables are defined in -// https://github.com/pages-themes/primer/tree/master/_sass/primer-support/lib/variables - -$sidebar-width: 260px; - -body { - display: flex; - margin: 0; -} - -.sidebar { - background: $black; - color: $text-white; - flex-shrink: 0; - height: 100vh; - overflow: auto; - position: sticky; - top: 0; - width: $sidebar-width; -} - -.sidebar h1 { - font-size: 1.5em; -} - -.sidebar h2 { - color: $gray-light; - font-size: 0.8em; - font-weight: normal; - margin-bottom: 0.8em; - padding-left: 2.5em; - text-transform: uppercase; -} - -.sidebar .header { - background: $black; - padding: 2em; - position: sticky; - top: 0; - width: 100%; -} - -.sidebar .header a { - color: $text-white; - text-decoration: none; -} - -.sidebar .nav-toggle { - display: none; -} - -.sidebar .expander { - cursor: pointer; - display: none; - height: 3em; - position: absolute; - right: 1em; - top: 1.5em; - width: 3em; -} - -.sidebar .expander .arrow { - border: solid $white; - border-width: 0 3px 3px 0; - display: block; - height: 0.7em; - margin: 1em auto; - transform: rotate(45deg); - transition: transform 0.5s; - width: 0.7em; -} - -.sidebar nav { - width: 100%; -} - -.sidebar nav ul { - list-style-type: none; - margin-bottom: 1em; - padding: 0; - - &:last-child { - margin-bottom: 2em; - } - - a { - text-decoration: none; - } - - li { - color: $text-white; - padding-left: 2em; - text-decoration: none; - } - - li.active { - background: $border-gray-darker; - font-weight: bold; - } - - li:hover { - background: $border-gray-darker; - } -} - -.main { - background-color: $bg-gray; - width: calc(100% - #{$sidebar-width}); -} - -.main .main-inner { - background-color: $white; - padding: 2em; -} - -.main .footer { - margin: 0; - padding: 2em; -} - -.main table th { - text-align: left; -} - -.main .callout { - border-left: 0.25em solid $white; - padding: 1em; - - a { - text-decoration: underline; - } - - &.important { - background-color: $bg-yellow-light; - border-color: $bg-yellow; - color: $black; - } - - &.note { - background-color: $bg-blue-light; - border-color: $text-blue; - color: $text-blue; - } - - &.tip { - background-color: $green-000; - border-color: $green-700; - color: $green-700; - } - - &.warning { - background-color: $red-000; - border-color: $text-red; - color: $text-red; - } -} - -.main .good pre { - background-color: $bg-green-light; -} - -.main .bad pre { - background-color: $red-000; -} - -@media all and (max-width: 768px) { - body { - flex-direction: column; - } - - .sidebar { - height: auto; - position: relative; - width: 100%; - } - - .sidebar .expander { - display: block; - } - - .sidebar nav { - height: 0; - overflow: hidden; - } - - .sidebar .nav-toggle:checked { - & ~ nav { - height: auto; - } - - & + .expander .arrow { - transform: rotate(-135deg); - } - } - - .main { - width: 100%; - } -} diff --git a/tests/lib/docs/advanced.md b/tests/lib/docs/advanced.md deleted file mode 100644 index 9a752b922a..0000000000 --- a/tests/lib/docs/advanced.md +++ /dev/null @@ -1,2398 +0,0 @@ -# Advanced googletest Topics - -## Introduction - -Now that you have read the [googletest Primer](primer.md) and learned how to -write tests using googletest, it's time to learn some new tricks. This document -will show you more assertions as well as how to construct complex failure -messages, propagate fatal failures, reuse and speed up your test fixtures, and -use various flags with your tests. - -## More Assertions - -This section covers some less frequently used, but still significant, -assertions. - -### Explicit Success and Failure - -See [Explicit Success and Failure](reference/assertions.md#success-failure) in -the Assertions Reference. - -### Exception Assertions - -See [Exception Assertions](reference/assertions.md#exceptions) in the Assertions -Reference. - -### Predicate Assertions for Better Error Messages - -Even though googletest has a rich set of assertions, they can never be complete, -as it's impossible (nor a good idea) to anticipate all scenarios a user might -run into. Therefore, sometimes a user has to use `EXPECT_TRUE()` to check a -complex expression, for lack of a better macro. This has the problem of not -showing you the values of the parts of the expression, making it hard to -understand what went wrong. As a workaround, some users choose to construct the -failure message by themselves, streaming it into `EXPECT_TRUE()`. However, this -is awkward especially when the expression has side-effects or is expensive to -evaluate. - -googletest gives you three different options to solve this problem: - -#### Using an Existing Boolean Function - -If you already have a function or functor that returns `bool` (or a type that -can be implicitly converted to `bool`), you can use it in a *predicate -assertion* to get the function arguments printed for free. See -[`EXPECT_PRED*`](reference/assertions.md#EXPECT_PRED) in the Assertions -Reference for details. - -#### Using a Function That Returns an AssertionResult - -While `EXPECT_PRED*()` and friends are handy for a quick job, the syntax is not -satisfactory: you have to use different macros for different arities, and it -feels more like Lisp than C++. The `::testing::AssertionResult` class solves -this problem. - -An `AssertionResult` object represents the result of an assertion (whether it's -a success or a failure, and an associated message). You can create an -`AssertionResult` using one of these factory functions: - -```c++ -namespace testing { - -// Returns an AssertionResult object to indicate that an assertion has -// succeeded. -AssertionResult AssertionSuccess(); - -// Returns an AssertionResult object to indicate that an assertion has -// failed. -AssertionResult AssertionFailure(); - -} -``` - -You can then use the `<<` operator to stream messages to the `AssertionResult` -object. - -To provide more readable messages in Boolean assertions (e.g. `EXPECT_TRUE()`), -write a predicate function that returns `AssertionResult` instead of `bool`. For -example, if you define `IsEven()` as: - -```c++ -testing::AssertionResult IsEven(int n) { - if ((n % 2) == 0) - return testing::AssertionSuccess(); - else - return testing::AssertionFailure() << n << " is odd"; -} -``` - -instead of: - -```c++ -bool IsEven(int n) { - return (n % 2) == 0; -} -``` - -the failed assertion `EXPECT_TRUE(IsEven(Fib(4)))` will print: - -```none -Value of: IsEven(Fib(4)) - Actual: false (3 is odd) -Expected: true -``` - -instead of a more opaque - -```none -Value of: IsEven(Fib(4)) - Actual: false -Expected: true -``` - -If you want informative messages in `EXPECT_FALSE` and `ASSERT_FALSE` as well -(one third of Boolean assertions in the Google code base are negative ones), and -are fine with making the predicate slower in the success case, you can supply a -success message: - -```c++ -testing::AssertionResult IsEven(int n) { - if ((n % 2) == 0) - return testing::AssertionSuccess() << n << " is even"; - else - return testing::AssertionFailure() << n << " is odd"; -} -``` - -Then the statement `EXPECT_FALSE(IsEven(Fib(6)))` will print - -```none - Value of: IsEven(Fib(6)) - Actual: true (8 is even) - Expected: false -``` - -#### Using a Predicate-Formatter - -If you find the default message generated by -[`EXPECT_PRED*`](reference/assertions.md#EXPECT_PRED) and -[`EXPECT_TRUE`](reference/assertions.md#EXPECT_TRUE) unsatisfactory, or some -arguments to your predicate do not support streaming to `ostream`, you can -instead use *predicate-formatter assertions* to *fully* customize how the -message is formatted. See -[`EXPECT_PRED_FORMAT*`](reference/assertions.md#EXPECT_PRED_FORMAT) in the -Assertions Reference for details. - -### Floating-Point Comparison - -See [Floating-Point Comparison](reference/assertions.md#floating-point) in the -Assertions Reference. - -#### Floating-Point Predicate-Format Functions - -Some floating-point operations are useful, but not that often used. In order to -avoid an explosion of new macros, we provide them as predicate-format functions -that can be used in the predicate assertion macro -[`EXPECT_PRED_FORMAT2`](reference/assertions.md#EXPECT_PRED_FORMAT), for -example: - -```c++ -using ::testing::FloatLE; -using ::testing::DoubleLE; -... -EXPECT_PRED_FORMAT2(FloatLE, val1, val2); -EXPECT_PRED_FORMAT2(DoubleLE, val1, val2); -``` - -The above code verifies that `val1` is less than, or approximately equal to, -`val2`. - -### Asserting Using gMock Matchers - -See [`EXPECT_THAT`](reference/assertions.md#EXPECT_THAT) in the Assertions -Reference. - -### More String Assertions - -(Please read the [previous](#asserting-using-gmock-matchers) section first if -you haven't.) - -You can use the gMock [string matchers](reference/matchers.md#string-matchers) -with [`EXPECT_THAT`](reference/assertions.md#EXPECT_THAT) to do more string -comparison tricks (sub-string, prefix, suffix, regular expression, and etc). For -example, - -```c++ -using ::testing::HasSubstr; -using ::testing::MatchesRegex; -... - ASSERT_THAT(foo_string, HasSubstr("needle")); - EXPECT_THAT(bar_string, MatchesRegex("\\w*\\d+")); -``` - -### Windows HRESULT assertions - -See [Windows HRESULT Assertions](reference/assertions.md#HRESULT) in the -Assertions Reference. - -### Type Assertions - -You can call the function - -```c++ -::testing::StaticAssertTypeEq(); -``` - -to assert that types `T1` and `T2` are the same. The function does nothing if -the assertion is satisfied. If the types are different, the function call will -fail to compile, the compiler error message will say that `T1 and T2 are not the -same type` and most likely (depending on the compiler) show you the actual -values of `T1` and `T2`. This is mainly useful inside template code. - -**Caveat**: When used inside a member function of a class template or a function -template, `StaticAssertTypeEq()` is effective only if the function is -instantiated. For example, given: - -```c++ -template class Foo { - public: - void Bar() { testing::StaticAssertTypeEq(); } -}; -``` - -the code: - -```c++ -void Test1() { Foo foo; } -``` - -will not generate a compiler error, as `Foo::Bar()` is never actually -instantiated. Instead, you need: - -```c++ -void Test2() { Foo foo; foo.Bar(); } -``` - -to cause a compiler error. - -### Assertion Placement - -You can use assertions in any C++ function. In particular, it doesn't have to be -a method of the test fixture class. The one constraint is that assertions that -generate a fatal failure (`FAIL*` and `ASSERT_*`) can only be used in -void-returning functions. This is a consequence of Google's not using -exceptions. By placing it in a non-void function you'll get a confusing compile -error like `"error: void value not ignored as it ought to be"` or `"cannot -initialize return object of type 'bool' with an rvalue of type 'void'"` or -`"error: no viable conversion from 'void' to 'string'"`. - -If you need to use fatal assertions in a function that returns non-void, one -option is to make the function return the value in an out parameter instead. For -example, you can rewrite `T2 Foo(T1 x)` to `void Foo(T1 x, T2* result)`. You -need to make sure that `*result` contains some sensible value even when the -function returns prematurely. As the function now returns `void`, you can use -any assertion inside of it. - -If changing the function's type is not an option, you should just use assertions -that generate non-fatal failures, such as `ADD_FAILURE*` and `EXPECT_*`. - -{: .callout .note} -NOTE: Constructors and destructors are not considered void-returning functions, -according to the C++ language specification, and so you may not use fatal -assertions in them; you'll get a compilation error if you try. Instead, either -call `abort` and crash the entire test executable, or put the fatal assertion in -a `SetUp`/`TearDown` function; see -[constructor/destructor vs. `SetUp`/`TearDown`](faq.md#CtorVsSetUp) - -{: .callout .warning} -WARNING: A fatal assertion in a helper function (private void-returning method) -called from a constructor or destructor does not terminate the current test, as -your intuition might suggest: it merely returns from the constructor or -destructor early, possibly leaving your object in a partially-constructed or -partially-destructed state! You almost certainly want to `abort` or use -`SetUp`/`TearDown` instead. - -## Skipping test execution - -Related to the assertions `SUCCEED()` and `FAIL()`, you can prevent further test -execution at runtime with the `GTEST_SKIP()` macro. This is useful when you need -to check for preconditions of the system under test during runtime and skip -tests in a meaningful way. - -`GTEST_SKIP()` can be used in individual test cases or in the `SetUp()` methods -of classes derived from either `::testing::Environment` or `::testing::Test`. -For example: - -```c++ -TEST(SkipTest, DoesSkip) { - GTEST_SKIP() << "Skipping single test"; - EXPECT_EQ(0, 1); // Won't fail; it won't be executed -} - -class SkipFixture : public ::testing::Test { - protected: - void SetUp() override { - GTEST_SKIP() << "Skipping all tests for this fixture"; - } -}; - -// Tests for SkipFixture won't be executed. -TEST_F(SkipFixture, SkipsOneTest) { - EXPECT_EQ(5, 7); // Won't fail -} -``` - -As with assertion macros, you can stream a custom message into `GTEST_SKIP()`. - -## Teaching googletest How to Print Your Values - -When a test assertion such as `EXPECT_EQ` fails, googletest prints the argument -values to help you debug. It does this using a user-extensible value printer. - -This printer knows how to print built-in C++ types, native arrays, STL -containers, and any type that supports the `<<` operator. For other types, it -prints the raw bytes in the value and hopes that you the user can figure it out. - -As mentioned earlier, the printer is *extensible*. That means you can teach it -to do a better job at printing your particular type than to dump the bytes. To -do that, define `<<` for your type: - -```c++ -#include - -namespace foo { - -class Bar { // We want googletest to be able to print instances of this. -... - // Create a free inline friend function. - friend std::ostream& operator<<(std::ostream& os, const Bar& bar) { - return os << bar.DebugString(); // whatever needed to print bar to os - } -}; - -// If you can't declare the function in the class it's important that the -// << operator is defined in the SAME namespace that defines Bar. C++'s look-up -// rules rely on that. -std::ostream& operator<<(std::ostream& os, const Bar& bar) { - return os << bar.DebugString(); // whatever needed to print bar to os -} - -} // namespace foo -``` - -Sometimes, this might not be an option: your team may consider it bad style to -have a `<<` operator for `Bar`, or `Bar` may already have a `<<` operator that -doesn't do what you want (and you cannot change it). If so, you can instead -define a `PrintTo()` function like this: - -```c++ -#include - -namespace foo { - -class Bar { - ... - friend void PrintTo(const Bar& bar, std::ostream* os) { - *os << bar.DebugString(); // whatever needed to print bar to os - } -}; - -// If you can't declare the function in the class it's important that PrintTo() -// is defined in the SAME namespace that defines Bar. C++'s look-up rules rely -// on that. -void PrintTo(const Bar& bar, std::ostream* os) { - *os << bar.DebugString(); // whatever needed to print bar to os -} - -} // namespace foo -``` - -If you have defined both `<<` and `PrintTo()`, the latter will be used when -googletest is concerned. This allows you to customize how the value appears in -googletest's output without affecting code that relies on the behavior of its -`<<` operator. - -If you want to print a value `x` using googletest's value printer yourself, just -call `::testing::PrintToString(x)`, which returns an `std::string`: - -```c++ -vector > bar_ints = GetBarIntVector(); - -EXPECT_TRUE(IsCorrectBarIntVector(bar_ints)) - << "bar_ints = " << testing::PrintToString(bar_ints); -``` - -## Death Tests - -In many applications, there are assertions that can cause application failure if -a condition is not met. These consistency checks, which ensure that the program -is in a known good state, are there to fail at the earliest possible time after -some program state is corrupted. If the assertion checks the wrong condition, -then the program may proceed in an erroneous state, which could lead to memory -corruption, security holes, or worse. Hence it is vitally important to test that -such assertion statements work as expected. - -Since these precondition checks cause the processes to die, we call such tests -_death tests_. More generally, any test that checks that a program terminates -(except by throwing an exception) in an expected fashion is also a death test. - -Note that if a piece of code throws an exception, we don't consider it "death" -for the purpose of death tests, as the caller of the code could catch the -exception and avoid the crash. If you want to verify exceptions thrown by your -code, see [Exception Assertions](#ExceptionAssertions). - -If you want to test `EXPECT_*()/ASSERT_*()` failures in your test code, see -["Catching" Failures](#catching-failures). - -### How to Write a Death Test - -GoogleTest provides assertion macros to support death tests. See -[Death Assertions](reference/assertions.md#death) in the Assertions Reference -for details. - -To write a death test, simply use one of the macros inside your test function. -For example, - -```c++ -TEST(MyDeathTest, Foo) { - // This death test uses a compound statement. - ASSERT_DEATH({ - int n = 5; - Foo(&n); - }, "Error on line .* of Foo()"); -} - -TEST(MyDeathTest, NormalExit) { - EXPECT_EXIT(NormalExit(), testing::ExitedWithCode(0), "Success"); -} - -TEST(MyDeathTest, KillProcess) { - EXPECT_EXIT(KillProcess(), testing::KilledBySignal(SIGKILL), - "Sending myself unblockable signal"); -} -``` - -verifies that: - -* calling `Foo(5)` causes the process to die with the given error message, -* calling `NormalExit()` causes the process to print `"Success"` to stderr and - exit with exit code 0, and -* calling `KillProcess()` kills the process with signal `SIGKILL`. - -The test function body may contain other assertions and statements as well, if -necessary. - -Note that a death test only cares about three things: - -1. does `statement` abort or exit the process? -2. (in the case of `ASSERT_EXIT` and `EXPECT_EXIT`) does the exit status - satisfy `predicate`? Or (in the case of `ASSERT_DEATH` and `EXPECT_DEATH`) - is the exit status non-zero? And -3. does the stderr output match `matcher`? - -In particular, if `statement` generates an `ASSERT_*` or `EXPECT_*` failure, it -will **not** cause the death test to fail, as googletest assertions don't abort -the process. - -### Death Test Naming - -{: .callout .important} -IMPORTANT: We strongly recommend you to follow the convention of naming your -**test suite** (not test) `*DeathTest` when it contains a death test, as -demonstrated in the above example. The -[Death Tests And Threads](#death-tests-and-threads) section below explains why. - -If a test fixture class is shared by normal tests and death tests, you can use -`using` or `typedef` to introduce an alias for the fixture class and avoid -duplicating its code: - -```c++ -class FooTest : public testing::Test { ... }; - -using FooDeathTest = FooTest; - -TEST_F(FooTest, DoesThis) { - // normal test -} - -TEST_F(FooDeathTest, DoesThat) { - // death test -} -``` - -### Regular Expression Syntax - -When built with Bazel and using Abseil, googletest uses the -[RE2](https://github.com/google/re2/wiki/Syntax) syntax. Otherwise, for POSIX -systems (Linux, Cygwin, Mac), googletest uses the -[POSIX extended regular expression](http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_04) -syntax. To learn about POSIX syntax, you may want to read this -[Wikipedia entry](http://en.wikipedia.org/wiki/Regular_expression#POSIX_Extended_Regular_Expressions). - -On Windows, googletest uses its own simple regular expression implementation. It -lacks many features. For example, we don't support union (`"x|y"`), grouping -(`"(xy)"`), brackets (`"[xy]"`), and repetition count (`"x{5,7}"`), among -others. Below is what we do support (`A` denotes a literal character, period -(`.`), or a single `\\ ` escape sequence; `x` and `y` denote regular -expressions.): - -Expression | Meaning ----------- | -------------------------------------------------------------- -`c` | matches any literal character `c` -`\\d` | matches any decimal digit -`\\D` | matches any character that's not a decimal digit -`\\f` | matches `\f` -`\\n` | matches `\n` -`\\r` | matches `\r` -`\\s` | matches any ASCII whitespace, including `\n` -`\\S` | matches any character that's not a whitespace -`\\t` | matches `\t` -`\\v` | matches `\v` -`\\w` | matches any letter, `_`, or decimal digit -`\\W` | matches any character that `\\w` doesn't match -`\\c` | matches any literal character `c`, which must be a punctuation -`.` | matches any single character except `\n` -`A?` | matches 0 or 1 occurrences of `A` -`A*` | matches 0 or many occurrences of `A` -`A+` | matches 1 or many occurrences of `A` -`^` | matches the beginning of a string (not that of each line) -`$` | matches the end of a string (not that of each line) -`xy` | matches `x` followed by `y` - -To help you determine which capability is available on your system, googletest -defines macros to govern which regular expression it is using. The macros are: -`GTEST_USES_SIMPLE_RE=1` or `GTEST_USES_POSIX_RE=1`. If you want your death -tests to work in all cases, you can either `#if` on these macros or use the more -limited syntax only. - -### How It Works - -See [Death Assertions](reference/assertions.md#death) in the Assertions -Reference. - -### Death Tests And Threads - -The reason for the two death test styles has to do with thread safety. Due to -well-known problems with forking in the presence of threads, death tests should -be run in a single-threaded context. Sometimes, however, it isn't feasible to -arrange that kind of environment. For example, statically-initialized modules -may start threads before main is ever reached. Once threads have been created, -it may be difficult or impossible to clean them up. - -googletest has three features intended to raise awareness of threading issues. - -1. A warning is emitted if multiple threads are running when a death test is - encountered. -2. Test suites with a name ending in "DeathTest" are run before all other - tests. -3. It uses `clone()` instead of `fork()` to spawn the child process on Linux - (`clone()` is not available on Cygwin and Mac), as `fork()` is more likely - to cause the child to hang when the parent process has multiple threads. - -It's perfectly fine to create threads inside a death test statement; they are -executed in a separate process and cannot affect the parent. - -### Death Test Styles - -The "threadsafe" death test style was introduced in order to help mitigate the -risks of testing in a possibly multithreaded environment. It trades increased -test execution time (potentially dramatically so) for improved thread safety. - -The automated testing framework does not set the style flag. You can choose a -particular style of death tests by setting the flag programmatically: - -```c++ -GTEST_FLAG_SET(death_test_style, "threadsafe") -``` - -You can do this in `main()` to set the style for all death tests in the binary, -or in individual tests. Recall that flags are saved before running each test and -restored afterwards, so you need not do that yourself. For example: - -```c++ -int main(int argc, char** argv) { - testing::InitGoogleTest(&argc, argv); - GTEST_FLAG_SET(death_test_style, "fast"); - return RUN_ALL_TESTS(); -} - -TEST(MyDeathTest, TestOne) { - GTEST_FLAG_SET(death_test_style, "threadsafe"); - // This test is run in the "threadsafe" style: - ASSERT_DEATH(ThisShouldDie(), ""); -} - -TEST(MyDeathTest, TestTwo) { - // This test is run in the "fast" style: - ASSERT_DEATH(ThisShouldDie(), ""); -} -``` - -### Caveats - -The `statement` argument of `ASSERT_EXIT()` can be any valid C++ statement. If -it leaves the current function via a `return` statement or by throwing an -exception, the death test is considered to have failed. Some googletest macros -may return from the current function (e.g. `ASSERT_TRUE()`), so be sure to avoid -them in `statement`. - -Since `statement` runs in the child process, any in-memory side effect (e.g. -modifying a variable, releasing memory, etc) it causes will *not* be observable -in the parent process. In particular, if you release memory in a death test, -your program will fail the heap check as the parent process will never see the -memory reclaimed. To solve this problem, you can - -1. try not to free memory in a death test; -2. free the memory again in the parent process; or -3. do not use the heap checker in your program. - -Due to an implementation detail, you cannot place multiple death test assertions -on the same line; otherwise, compilation will fail with an unobvious error -message. - -Despite the improved thread safety afforded by the "threadsafe" style of death -test, thread problems such as deadlock are still possible in the presence of -handlers registered with `pthread_atfork(3)`. - -## Using Assertions in Sub-routines - -{: .callout .note} -Note: If you want to put a series of test assertions in a subroutine to check -for a complex condition, consider using -[a custom GMock matcher](gmock_cook_book.md#NewMatchers) instead. This lets you -provide a more readable error message in case of failure and avoid all of the -issues described below. - -### Adding Traces to Assertions - -If a test sub-routine is called from several places, when an assertion inside it -fails, it can be hard to tell which invocation of the sub-routine the failure is -from. You can alleviate this problem using extra logging or custom failure -messages, but that usually clutters up your tests. A better solution is to use -the `SCOPED_TRACE` macro or the `ScopedTrace` utility: - -```c++ -SCOPED_TRACE(message); -``` - -```c++ -ScopedTrace trace("file_path", line_number, message); -``` - -where `message` can be anything streamable to `std::ostream`. `SCOPED_TRACE` -macro will cause the current file name, line number, and the given message to be -added in every failure message. `ScopedTrace` accepts explicit file name and -line number in arguments, which is useful for writing test helpers. The effect -will be undone when the control leaves the current lexical scope. - -For example, - -```c++ -10: void Sub1(int n) { -11: EXPECT_EQ(Bar(n), 1); -12: EXPECT_EQ(Bar(n + 1), 2); -13: } -14: -15: TEST(FooTest, Bar) { -16: { -17: SCOPED_TRACE("A"); // This trace point will be included in -18: // every failure in this scope. -19: Sub1(1); -20: } -21: // Now it won't. -22: Sub1(9); -23: } -``` - -could result in messages like these: - -```none -path/to/foo_test.cc:11: Failure -Value of: Bar(n) -Expected: 1 - Actual: 2 -Google Test trace: -path/to/foo_test.cc:17: A - -path/to/foo_test.cc:12: Failure -Value of: Bar(n + 1) -Expected: 2 - Actual: 3 -``` - -Without the trace, it would've been difficult to know which invocation of -`Sub1()` the two failures come from respectively. (You could add an extra -message to each assertion in `Sub1()` to indicate the value of `n`, but that's -tedious.) - -Some tips on using `SCOPED_TRACE`: - -1. With a suitable message, it's often enough to use `SCOPED_TRACE` at the - beginning of a sub-routine, instead of at each call site. -2. When calling sub-routines inside a loop, make the loop iterator part of the - message in `SCOPED_TRACE` such that you can know which iteration the failure - is from. -3. Sometimes the line number of the trace point is enough for identifying the - particular invocation of a sub-routine. In this case, you don't have to - choose a unique message for `SCOPED_TRACE`. You can simply use `""`. -4. You can use `SCOPED_TRACE` in an inner scope when there is one in the outer - scope. In this case, all active trace points will be included in the failure - messages, in reverse order they are encountered. -5. The trace dump is clickable in Emacs - hit `return` on a line number and - you'll be taken to that line in the source file! - -### Propagating Fatal Failures - -A common pitfall when using `ASSERT_*` and `FAIL*` is not understanding that -when they fail they only abort the _current function_, not the entire test. For -example, the following test will segfault: - -```c++ -void Subroutine() { - // Generates a fatal failure and aborts the current function. - ASSERT_EQ(1, 2); - - // The following won't be executed. - ... -} - -TEST(FooTest, Bar) { - Subroutine(); // The intended behavior is for the fatal failure - // in Subroutine() to abort the entire test. - - // The actual behavior: the function goes on after Subroutine() returns. - int* p = nullptr; - *p = 3; // Segfault! -} -``` - -To alleviate this, googletest provides three different solutions. You could use -either exceptions, the `(ASSERT|EXPECT)_NO_FATAL_FAILURE` assertions or the -`HasFatalFailure()` function. They are described in the following two -subsections. - -#### Asserting on Subroutines with an exception - -The following code can turn ASSERT-failure into an exception: - -```c++ -class ThrowListener : public testing::EmptyTestEventListener { - void OnTestPartResult(const testing::TestPartResult& result) override { - if (result.type() == testing::TestPartResult::kFatalFailure) { - throw testing::AssertionException(result); - } - } -}; -int main(int argc, char** argv) { - ... - testing::UnitTest::GetInstance()->listeners().Append(new ThrowListener); - return RUN_ALL_TESTS(); -} -``` - -This listener should be added after other listeners if you have any, otherwise -they won't see failed `OnTestPartResult`. - -#### Asserting on Subroutines - -As shown above, if your test calls a subroutine that has an `ASSERT_*` failure -in it, the test will continue after the subroutine returns. This may not be what -you want. - -Often people want fatal failures to propagate like exceptions. For that -googletest offers the following macros: - -Fatal assertion | Nonfatal assertion | Verifies -------------------------------------- | ------------------------------------- | -------- -`ASSERT_NO_FATAL_FAILURE(statement);` | `EXPECT_NO_FATAL_FAILURE(statement);` | `statement` doesn't generate any new fatal failures in the current thread. - -Only failures in the thread that executes the assertion are checked to determine -the result of this type of assertions. If `statement` creates new threads, -failures in these threads are ignored. - -Examples: - -```c++ -ASSERT_NO_FATAL_FAILURE(Foo()); - -int i; -EXPECT_NO_FATAL_FAILURE({ - i = Bar(); -}); -``` - -Assertions from multiple threads are currently not supported on Windows. - -#### Checking for Failures in the Current Test - -`HasFatalFailure()` in the `::testing::Test` class returns `true` if an -assertion in the current test has suffered a fatal failure. This allows -functions to catch fatal failures in a sub-routine and return early. - -```c++ -class Test { - public: - ... - static bool HasFatalFailure(); -}; -``` - -The typical usage, which basically simulates the behavior of a thrown exception, -is: - -```c++ -TEST(FooTest, Bar) { - Subroutine(); - // Aborts if Subroutine() had a fatal failure. - if (HasFatalFailure()) return; - - // The following won't be executed. - ... -} -``` - -If `HasFatalFailure()` is used outside of `TEST()` , `TEST_F()` , or a test -fixture, you must add the `::testing::Test::` prefix, as in: - -```c++ -if (testing::Test::HasFatalFailure()) return; -``` - -Similarly, `HasNonfatalFailure()` returns `true` if the current test has at -least one non-fatal failure, and `HasFailure()` returns `true` if the current -test has at least one failure of either kind. - -## Logging Additional Information - -In your test code, you can call `RecordProperty("key", value)` to log additional -information, where `value` can be either a string or an `int`. The *last* value -recorded for a key will be emitted to the -[XML output](#generating-an-xml-report) if you specify one. For example, the -test - -```c++ -TEST_F(WidgetUsageTest, MinAndMaxWidgets) { - RecordProperty("MaximumWidgets", ComputeMaxUsage()); - RecordProperty("MinimumWidgets", ComputeMinUsage()); -} -``` - -will output XML like this: - -```xml - ... - - ... -``` - -{: .callout .note} -> NOTE: -> -> * `RecordProperty()` is a static member of the `Test` class. Therefore it -> needs to be prefixed with `::testing::Test::` if used outside of the -> `TEST` body and the test fixture class. -> * *`key`* must be a valid XML attribute name, and cannot conflict with the -> ones already used by googletest (`name`, `status`, `time`, `classname`, -> `type_param`, and `value_param`). -> * Calling `RecordProperty()` outside of the lifespan of a test is allowed. -> If it's called outside of a test but between a test suite's -> `SetUpTestSuite()` and `TearDownTestSuite()` methods, it will be -> attributed to the XML element for the test suite. If it's called outside -> of all test suites (e.g. in a test environment), it will be attributed to -> the top-level XML element. - -## Sharing Resources Between Tests in the Same Test Suite - -googletest creates a new test fixture object for each test in order to make -tests independent and easier to debug. However, sometimes tests use resources -that are expensive to set up, making the one-copy-per-test model prohibitively -expensive. - -If the tests don't change the resource, there's no harm in their sharing a -single resource copy. So, in addition to per-test set-up/tear-down, googletest -also supports per-test-suite set-up/tear-down. To use it: - -1. In your test fixture class (say `FooTest` ), declare as `static` some member - variables to hold the shared resources. -2. Outside your test fixture class (typically just below it), define those - member variables, optionally giving them initial values. -3. In the same test fixture class, define a `static void SetUpTestSuite()` - function (remember not to spell it as **`SetupTestSuite`** with a small - `u`!) to set up the shared resources and a `static void TearDownTestSuite()` - function to tear them down. - -That's it! googletest automatically calls `SetUpTestSuite()` before running the -*first test* in the `FooTest` test suite (i.e. before creating the first -`FooTest` object), and calls `TearDownTestSuite()` after running the *last test* -in it (i.e. after deleting the last `FooTest` object). In between, the tests can -use the shared resources. - -Remember that the test order is undefined, so your code can't depend on a test -preceding or following another. Also, the tests must either not modify the state -of any shared resource, or, if they do modify the state, they must restore the -state to its original value before passing control to the next test. - -Note that `SetUpTestSuite()` may be called multiple times for a test fixture -class that has derived classes, so you should not expect code in the function -body to be run only once. Also, derived classes still have access to shared -resources defined as static members, so careful consideration is needed when -managing shared resources to avoid memory leaks. - -Here's an example of per-test-suite set-up and tear-down: - -```c++ -class FooTest : public testing::Test { - protected: - // Per-test-suite set-up. - // Called before the first test in this test suite. - // Can be omitted if not needed. - static void SetUpTestSuite() { - // Avoid reallocating static objects if called in subclasses of FooTest. - if (shared_resource_ == nullptr) { - shared_resource_ = new ...; - } - } - - // Per-test-suite tear-down. - // Called after the last test in this test suite. - // Can be omitted if not needed. - static void TearDownTestSuite() { - delete shared_resource_; - shared_resource_ = nullptr; - } - - // You can define per-test set-up logic as usual. - void SetUp() override { ... } - - // You can define per-test tear-down logic as usual. - void TearDown() override { ... } - - // Some expensive resource shared by all tests. - static T* shared_resource_; -}; - -T* FooTest::shared_resource_ = nullptr; - -TEST_F(FooTest, Test1) { - ... you can refer to shared_resource_ here ... -} - -TEST_F(FooTest, Test2) { - ... you can refer to shared_resource_ here ... -} -``` - -{: .callout .note} -NOTE: Though the above code declares `SetUpTestSuite()` protected, it may -sometimes be necessary to declare it public, such as when using it with -`TEST_P`. - -## Global Set-Up and Tear-Down - -Just as you can do set-up and tear-down at the test level and the test suite -level, you can also do it at the test program level. Here's how. - -First, you subclass the `::testing::Environment` class to define a test -environment, which knows how to set-up and tear-down: - -```c++ -class Environment : public ::testing::Environment { - public: - ~Environment() override {} - - // Override this to define how to set up the environment. - void SetUp() override {} - - // Override this to define how to tear down the environment. - void TearDown() override {} -}; -``` - -Then, you register an instance of your environment class with googletest by -calling the `::testing::AddGlobalTestEnvironment()` function: - -```c++ -Environment* AddGlobalTestEnvironment(Environment* env); -``` - -Now, when `RUN_ALL_TESTS()` is called, it first calls the `SetUp()` method of -each environment object, then runs the tests if none of the environments -reported fatal failures and `GTEST_SKIP()` was not called. `RUN_ALL_TESTS()` -always calls `TearDown()` with each environment object, regardless of whether or -not the tests were run. - -It's OK to register multiple environment objects. In this suite, their `SetUp()` -will be called in the order they are registered, and their `TearDown()` will be -called in the reverse order. - -Note that googletest takes ownership of the registered environment objects. -Therefore **do not delete them** by yourself. - -You should call `AddGlobalTestEnvironment()` before `RUN_ALL_TESTS()` is called, -probably in `main()`. If you use `gtest_main`, you need to call this before -`main()` starts for it to take effect. One way to do this is to define a global -variable like this: - -```c++ -testing::Environment* const foo_env = - testing::AddGlobalTestEnvironment(new FooEnvironment); -``` - -However, we strongly recommend you to write your own `main()` and call -`AddGlobalTestEnvironment()` there, as relying on initialization of global -variables makes the code harder to read and may cause problems when you register -multiple environments from different translation units and the environments have -dependencies among them (remember that the compiler doesn't guarantee the order -in which global variables from different translation units are initialized). - -## Value-Parameterized Tests - -*Value-parameterized tests* allow you to test your code with different -parameters without writing multiple copies of the same test. This is useful in a -number of situations, for example: - -* You have a piece of code whose behavior is affected by one or more - command-line flags. You want to make sure your code performs correctly for - various values of those flags. -* You want to test different implementations of an OO interface. -* You want to test your code over various inputs (a.k.a. data-driven testing). - This feature is easy to abuse, so please exercise your good sense when doing - it! - -### How to Write Value-Parameterized Tests - -To write value-parameterized tests, first you should define a fixture class. It -must be derived from both `testing::Test` and `testing::WithParamInterface` -(the latter is a pure interface), where `T` is the type of your parameter -values. For convenience, you can just derive the fixture class from -`testing::TestWithParam`, which itself is derived from both `testing::Test` -and `testing::WithParamInterface`. `T` can be any copyable type. If it's a -raw pointer, you are responsible for managing the lifespan of the pointed -values. - -{: .callout .note} -NOTE: If your test fixture defines `SetUpTestSuite()` or `TearDownTestSuite()` -they must be declared **public** rather than **protected** in order to use -`TEST_P`. - -```c++ -class FooTest : - public testing::TestWithParam { - // You can implement all the usual fixture class members here. - // To access the test parameter, call GetParam() from class - // TestWithParam. -}; - -// Or, when you want to add parameters to a pre-existing fixture class: -class BaseTest : public testing::Test { - ... -}; -class BarTest : public BaseTest, - public testing::WithParamInterface { - ... -}; -``` - -Then, use the `TEST_P` macro to define as many test patterns using this fixture -as you want. The `_P` suffix is for "parameterized" or "pattern", whichever you -prefer to think. - -```c++ -TEST_P(FooTest, DoesBlah) { - // Inside a test, access the test parameter with the GetParam() method - // of the TestWithParam class: - EXPECT_TRUE(foo.Blah(GetParam())); - ... -} - -TEST_P(FooTest, HasBlahBlah) { - ... -} -``` - -Finally, you can use the `INSTANTIATE_TEST_SUITE_P` macro to instantiate the -test suite with any set of parameters you want. GoogleTest defines a number of -functions for generating test parameters—see details at -[`INSTANTIATE_TEST_SUITE_P`](reference/testing.md#INSTANTIATE_TEST_SUITE_P) in -the Testing Reference. - -For example, the following statement will instantiate tests from the `FooTest` -test suite each with parameter values `"meeny"`, `"miny"`, and `"moe"` using the -[`Values`](reference/testing.md#param-generators) parameter generator: - -```c++ -INSTANTIATE_TEST_SUITE_P(MeenyMinyMoe, - FooTest, - testing::Values("meeny", "miny", "moe")); -``` - -{: .callout .note} -NOTE: The code above must be placed at global or namespace scope, not at -function scope. - -The first argument to `INSTANTIATE_TEST_SUITE_P` is a unique name for the -instantiation of the test suite. The next argument is the name of the test -pattern, and the last is the -[parameter generator](reference/testing.md#param-generators). - -You can instantiate a test pattern more than once, so to distinguish different -instances of the pattern, the instantiation name is added as a prefix to the -actual test suite name. Remember to pick unique prefixes for different -instantiations. The tests from the instantiation above will have these names: - -* `MeenyMinyMoe/FooTest.DoesBlah/0` for `"meeny"` -* `MeenyMinyMoe/FooTest.DoesBlah/1` for `"miny"` -* `MeenyMinyMoe/FooTest.DoesBlah/2` for `"moe"` -* `MeenyMinyMoe/FooTest.HasBlahBlah/0` for `"meeny"` -* `MeenyMinyMoe/FooTest.HasBlahBlah/1` for `"miny"` -* `MeenyMinyMoe/FooTest.HasBlahBlah/2` for `"moe"` - -You can use these names in [`--gtest_filter`](#running-a-subset-of-the-tests). - -The following statement will instantiate all tests from `FooTest` again, each -with parameter values `"cat"` and `"dog"` using the -[`ValuesIn`](reference/testing.md#param-generators) parameter generator: - -```c++ -const char* pets[] = {"cat", "dog"}; -INSTANTIATE_TEST_SUITE_P(Pets, FooTest, testing::ValuesIn(pets)); -``` - -The tests from the instantiation above will have these names: - -* `Pets/FooTest.DoesBlah/0` for `"cat"` -* `Pets/FooTest.DoesBlah/1` for `"dog"` -* `Pets/FooTest.HasBlahBlah/0` for `"cat"` -* `Pets/FooTest.HasBlahBlah/1` for `"dog"` - -Please note that `INSTANTIATE_TEST_SUITE_P` will instantiate *all* tests in the -given test suite, whether their definitions come before or *after* the -`INSTANTIATE_TEST_SUITE_P` statement. - -Additionally, by default, every `TEST_P` without a corresponding -`INSTANTIATE_TEST_SUITE_P` causes a failing test in test suite -`GoogleTestVerification`. If you have a test suite where that omission is not an -error, for example it is in a library that may be linked in for other reasons or -where the list of test cases is dynamic and may be empty, then this check can be -suppressed by tagging the test suite: - -```c++ -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(FooTest); -``` - -You can see [sample7_unittest.cc] and [sample8_unittest.cc] for more examples. - -[sample7_unittest.cc]: https://github.com/google/googletest/blob/master/googletest/samples/sample7_unittest.cc "Parameterized Test example" -[sample8_unittest.cc]: https://github.com/google/googletest/blob/master/googletest/samples/sample8_unittest.cc "Parameterized Test example with multiple parameters" - -### Creating Value-Parameterized Abstract Tests - -In the above, we define and instantiate `FooTest` in the *same* source file. -Sometimes you may want to define value-parameterized tests in a library and let -other people instantiate them later. This pattern is known as *abstract tests*. -As an example of its application, when you are designing an interface you can -write a standard suite of abstract tests (perhaps using a factory function as -the test parameter) that all implementations of the interface are expected to -pass. When someone implements the interface, they can instantiate your suite to -get all the interface-conformance tests for free. - -To define abstract tests, you should organize your code like this: - -1. Put the definition of the parameterized test fixture class (e.g. `FooTest`) - in a header file, say `foo_param_test.h`. Think of this as *declaring* your - abstract tests. -2. Put the `TEST_P` definitions in `foo_param_test.cc`, which includes - `foo_param_test.h`. Think of this as *implementing* your abstract tests. - -Once they are defined, you can instantiate them by including `foo_param_test.h`, -invoking `INSTANTIATE_TEST_SUITE_P()`, and depending on the library target that -contains `foo_param_test.cc`. You can instantiate the same abstract test suite -multiple times, possibly in different source files. - -### Specifying Names for Value-Parameterized Test Parameters - -The optional last argument to `INSTANTIATE_TEST_SUITE_P()` allows the user to -specify a function or functor that generates custom test name suffixes based on -the test parameters. The function should accept one argument of type -`testing::TestParamInfo`, and return `std::string`. - -`testing::PrintToStringParamName` is a builtin test suffix generator that -returns the value of `testing::PrintToString(GetParam())`. It does not work for -`std::string` or C strings. - -{: .callout .note} -NOTE: test names must be non-empty, unique, and may only contain ASCII -alphanumeric characters. In particular, they -[should not contain underscores](faq.md#why-should-test-suite-names-and-test-names-not-contain-underscore) - -```c++ -class MyTestSuite : public testing::TestWithParam {}; - -TEST_P(MyTestSuite, MyTest) -{ - std::cout << "Example Test Param: " << GetParam() << std::endl; -} - -INSTANTIATE_TEST_SUITE_P(MyGroup, MyTestSuite, testing::Range(0, 10), - testing::PrintToStringParamName()); -``` - -Providing a custom functor allows for more control over test parameter name -generation, especially for types where the automatic conversion does not -generate helpful parameter names (e.g. strings as demonstrated above). The -following example illustrates this for multiple parameters, an enumeration type -and a string, and also demonstrates how to combine generators. It uses a lambda -for conciseness: - -```c++ -enum class MyType { MY_FOO = 0, MY_BAR = 1 }; - -class MyTestSuite : public testing::TestWithParam> { -}; - -INSTANTIATE_TEST_SUITE_P( - MyGroup, MyTestSuite, - testing::Combine( - testing::Values(MyType::MY_FOO, MyType::MY_BAR), - testing::Values("A", "B")), - [](const testing::TestParamInfo& info) { - std::string name = absl::StrCat( - std::get<0>(info.param) == MyType::MY_FOO ? "Foo" : "Bar", - std::get<1>(info.param)); - absl::c_replace_if(name, [](char c) { return !std::isalnum(c); }, '_'); - return name; - }); -``` - -## Typed Tests - -Suppose you have multiple implementations of the same interface and want to make -sure that all of them satisfy some common requirements. Or, you may have defined -several types that are supposed to conform to the same "concept" and you want to -verify it. In both cases, you want the same test logic repeated for different -types. - -While you can write one `TEST` or `TEST_F` for each type you want to test (and -you may even factor the test logic into a function template that you invoke from -the `TEST`), it's tedious and doesn't scale: if you want `m` tests over `n` -types, you'll end up writing `m*n` `TEST`s. - -*Typed tests* allow you to repeat the same test logic over a list of types. You -only need to write the test logic once, although you must know the type list -when writing typed tests. Here's how you do it: - -First, define a fixture class template. It should be parameterized by a type. -Remember to derive it from `::testing::Test`: - -```c++ -template -class FooTest : public testing::Test { - public: - ... - using List = std::list; - static T shared_; - T value_; -}; -``` - -Next, associate a list of types with the test suite, which will be repeated for -each type in the list: - -```c++ -using MyTypes = ::testing::Types; -TYPED_TEST_SUITE(FooTest, MyTypes); -``` - -The type alias (`using` or `typedef`) is necessary for the `TYPED_TEST_SUITE` -macro to parse correctly. Otherwise the compiler will think that each comma in -the type list introduces a new macro argument. - -Then, use `TYPED_TEST()` instead of `TEST_F()` to define a typed test for this -test suite. You can repeat this as many times as you want: - -```c++ -TYPED_TEST(FooTest, DoesBlah) { - // Inside a test, refer to the special name TypeParam to get the type - // parameter. Since we are inside a derived class template, C++ requires - // us to visit the members of FooTest via 'this'. - TypeParam n = this->value_; - - // To visit static members of the fixture, add the 'TestFixture::' - // prefix. - n += TestFixture::shared_; - - // To refer to typedefs in the fixture, add the 'typename TestFixture::' - // prefix. The 'typename' is required to satisfy the compiler. - typename TestFixture::List values; - - values.push_back(n); - ... -} - -TYPED_TEST(FooTest, HasPropertyA) { ... } -``` - -You can see [sample6_unittest.cc] for a complete example. - -[sample6_unittest.cc]: https://github.com/google/googletest/blob/master/googletest/samples/sample6_unittest.cc "Typed Test example" - -## Type-Parameterized Tests - -*Type-parameterized tests* are like typed tests, except that they don't require -you to know the list of types ahead of time. Instead, you can define the test -logic first and instantiate it with different type lists later. You can even -instantiate it more than once in the same program. - -If you are designing an interface or concept, you can define a suite of -type-parameterized tests to verify properties that any valid implementation of -the interface/concept should have. Then, the author of each implementation can -just instantiate the test suite with their type to verify that it conforms to -the requirements, without having to write similar tests repeatedly. Here's an -example: - -First, define a fixture class template, as we did with typed tests: - -```c++ -template -class FooTest : public testing::Test { - void DoSomethingInteresting(); - ... -}; -``` - -Next, declare that you will define a type-parameterized test suite: - -```c++ -TYPED_TEST_SUITE_P(FooTest); -``` - -Then, use `TYPED_TEST_P()` to define a type-parameterized test. You can repeat -this as many times as you want: - -```c++ -TYPED_TEST_P(FooTest, DoesBlah) { - // Inside a test, refer to TypeParam to get the type parameter. - TypeParam n = 0; - - // You will need to use `this` explicitly to refer to fixture members. - this->DoSomethingInteresting() - ... -} - -TYPED_TEST_P(FooTest, HasPropertyA) { ... } -``` - -Now the tricky part: you need to register all test patterns using the -`REGISTER_TYPED_TEST_SUITE_P` macro before you can instantiate them. The first -argument of the macro is the test suite name; the rest are the names of the -tests in this test suite: - -```c++ -REGISTER_TYPED_TEST_SUITE_P(FooTest, - DoesBlah, HasPropertyA); -``` - -Finally, you are free to instantiate the pattern with the types you want. If you -put the above code in a header file, you can `#include` it in multiple C++ -source files and instantiate it multiple times. - -```c++ -using MyTypes = ::testing::Types; -INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes); -``` - -To distinguish different instances of the pattern, the first argument to the -`INSTANTIATE_TYPED_TEST_SUITE_P` macro is a prefix that will be added to the -actual test suite name. Remember to pick unique prefixes for different -instances. - -In the special case where the type list contains only one type, you can write -that type directly without `::testing::Types<...>`, like this: - -```c++ -INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, int); -``` - -You can see [sample6_unittest.cc] for a complete example. - -## Testing Private Code - -If you change your software's internal implementation, your tests should not -break as long as the change is not observable by users. Therefore, **per the -black-box testing principle, most of the time you should test your code through -its public interfaces.** - -**If you still find yourself needing to test internal implementation code, -consider if there's a better design.** The desire to test internal -implementation is often a sign that the class is doing too much. Consider -extracting an implementation class, and testing it. Then use that implementation -class in the original class. - -If you absolutely have to test non-public interface code though, you can. There -are two cases to consider: - -* Static functions ( *not* the same as static member functions!) or unnamed - namespaces, and -* Private or protected class members - -To test them, we use the following special techniques: - -* Both static functions and definitions/declarations in an unnamed namespace - are only visible within the same translation unit. To test them, you can - `#include` the entire `.cc` file being tested in your `*_test.cc` file. - (#including `.cc` files is not a good way to reuse code - you should not do - this in production code!) - - However, a better approach is to move the private code into the - `foo::internal` namespace, where `foo` is the namespace your project - normally uses, and put the private declarations in a `*-internal.h` file. - Your production `.cc` files and your tests are allowed to include this - internal header, but your clients are not. This way, you can fully test your - internal implementation without leaking it to your clients. - -* Private class members are only accessible from within the class or by - friends. To access a class' private members, you can declare your test - fixture as a friend to the class and define accessors in your fixture. Tests - using the fixture can then access the private members of your production - class via the accessors in the fixture. Note that even though your fixture - is a friend to your production class, your tests are not automatically - friends to it, as they are technically defined in sub-classes of the - fixture. - - Another way to test private members is to refactor them into an - implementation class, which is then declared in a `*-internal.h` file. Your - clients aren't allowed to include this header but your tests can. Such is - called the - [Pimpl](https://www.gamedev.net/articles/programming/general-and-gameplay-programming/the-c-pimpl-r1794/) - (Private Implementation) idiom. - - Or, you can declare an individual test as a friend of your class by adding - this line in the class body: - - ```c++ - FRIEND_TEST(TestSuiteName, TestName); - ``` - - For example, - - ```c++ - // foo.h - class Foo { - ... - private: - FRIEND_TEST(FooTest, BarReturnsZeroOnNull); - - int Bar(void* x); - }; - - // foo_test.cc - ... - TEST(FooTest, BarReturnsZeroOnNull) { - Foo foo; - EXPECT_EQ(foo.Bar(NULL), 0); // Uses Foo's private member Bar(). - } - ``` - - Pay special attention when your class is defined in a namespace. If you want - your test fixtures and tests to be friends of your class, then they must be - defined in the exact same namespace (no anonymous or inline namespaces). - - For example, if the code to be tested looks like: - - ```c++ - namespace my_namespace { - - class Foo { - friend class FooTest; - FRIEND_TEST(FooTest, Bar); - FRIEND_TEST(FooTest, Baz); - ... definition of the class Foo ... - }; - - } // namespace my_namespace - ``` - - Your test code should be something like: - - ```c++ - namespace my_namespace { - - class FooTest : public testing::Test { - protected: - ... - }; - - TEST_F(FooTest, Bar) { ... } - TEST_F(FooTest, Baz) { ... } - - } // namespace my_namespace - ``` - -## "Catching" Failures - -If you are building a testing utility on top of googletest, you'll want to test -your utility. What framework would you use to test it? googletest, of course. - -The challenge is to verify that your testing utility reports failures correctly. -In frameworks that report a failure by throwing an exception, you could catch -the exception and assert on it. But googletest doesn't use exceptions, so how do -we test that a piece of code generates an expected failure? - -`"gtest/gtest-spi.h"` contains some constructs to do this. -After #including this header, you can use - -```c++ - EXPECT_FATAL_FAILURE(statement, substring); -``` - -to assert that `statement` generates a fatal (e.g. `ASSERT_*`) failure in the -current thread whose message contains the given `substring`, or use - -```c++ - EXPECT_NONFATAL_FAILURE(statement, substring); -``` - -if you are expecting a non-fatal (e.g. `EXPECT_*`) failure. - -Only failures in the current thread are checked to determine the result of this -type of expectations. If `statement` creates new threads, failures in these -threads are also ignored. If you want to catch failures in other threads as -well, use one of the following macros instead: - -```c++ - EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substring); - EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substring); -``` - -{: .callout .note} -NOTE: Assertions from multiple threads are currently not supported on Windows. - -For technical reasons, there are some caveats: - -1. You cannot stream a failure message to either macro. - -2. `statement` in `EXPECT_FATAL_FAILURE{_ON_ALL_THREADS}()` cannot reference - local non-static variables or non-static members of `this` object. - -3. `statement` in `EXPECT_FATAL_FAILURE{_ON_ALL_THREADS}()` cannot return a - value. - -## Registering tests programmatically - -The `TEST` macros handle the vast majority of all use cases, but there are few -where runtime registration logic is required. For those cases, the framework -provides the `::testing::RegisterTest` that allows callers to register arbitrary -tests dynamically. - -This is an advanced API only to be used when the `TEST` macros are insufficient. -The macros should be preferred when possible, as they avoid most of the -complexity of calling this function. - -It provides the following signature: - -```c++ -template -TestInfo* RegisterTest(const char* test_suite_name, const char* test_name, - const char* type_param, const char* value_param, - const char* file, int line, Factory factory); -``` - -The `factory` argument is a factory callable (move-constructible) object or -function pointer that creates a new instance of the Test object. It handles -ownership to the caller. The signature of the callable is `Fixture*()`, where -`Fixture` is the test fixture class for the test. All tests registered with the -same `test_suite_name` must return the same fixture type. This is checked at -runtime. - -The framework will infer the fixture class from the factory and will call the -`SetUpTestSuite` and `TearDownTestSuite` for it. - -Must be called before `RUN_ALL_TESTS()` is invoked, otherwise behavior is -undefined. - -Use case example: - -```c++ -class MyFixture : public testing::Test { - public: - // All of these optional, just like in regular macro usage. - static void SetUpTestSuite() { ... } - static void TearDownTestSuite() { ... } - void SetUp() override { ... } - void TearDown() override { ... } -}; - -class MyTest : public MyFixture { - public: - explicit MyTest(int data) : data_(data) {} - void TestBody() override { ... } - - private: - int data_; -}; - -void RegisterMyTests(const std::vector& values) { - for (int v : values) { - testing::RegisterTest( - "MyFixture", ("Test" + std::to_string(v)).c_str(), nullptr, - std::to_string(v).c_str(), - __FILE__, __LINE__, - // Important to use the fixture type as the return type here. - [=]() -> MyFixture* { return new MyTest(v); }); - } -} -... -int main(int argc, char** argv) { - testing::InitGoogleTest(&argc, argv); - std::vector values_to_test = LoadValuesFromConfig(); - RegisterMyTests(values_to_test); - ... - return RUN_ALL_TESTS(); -} -``` - -## Getting the Current Test's Name - -Sometimes a function may need to know the name of the currently running test. -For example, you may be using the `SetUp()` method of your test fixture to set -the golden file name based on which test is running. The -[`TestInfo`](reference/testing.md#TestInfo) class has this information. - -To obtain a `TestInfo` object for the currently running test, call -`current_test_info()` on the [`UnitTest`](reference/testing.md#UnitTest) -singleton object: - -```c++ - // Gets information about the currently running test. - // Do NOT delete the returned object - it's managed by the UnitTest class. - const testing::TestInfo* const test_info = - testing::UnitTest::GetInstance()->current_test_info(); - - printf("We are in test %s of test suite %s.\n", - test_info->name(), - test_info->test_suite_name()); -``` - -`current_test_info()` returns a null pointer if no test is running. In -particular, you cannot find the test suite name in `SetUpTestSuite()`, -`TearDownTestSuite()` (where you know the test suite name implicitly), or -functions called from them. - -## Extending googletest by Handling Test Events - -googletest provides an **event listener API** to let you receive notifications -about the progress of a test program and test failures. The events you can -listen to include the start and end of the test program, a test suite, or a test -method, among others. You may use this API to augment or replace the standard -console output, replace the XML output, or provide a completely different form -of output, such as a GUI or a database. You can also use test events as -checkpoints to implement a resource leak checker, for example. - -### Defining Event Listeners - -To define a event listener, you subclass either -[`testing::TestEventListener`](reference/testing.md#TestEventListener) or -[`testing::EmptyTestEventListener`](reference/testing.md#EmptyTestEventListener) -The former is an (abstract) interface, where *each pure virtual method can be -overridden to handle a test event* (For example, when a test starts, the -`OnTestStart()` method will be called.). The latter provides an empty -implementation of all methods in the interface, such that a subclass only needs -to override the methods it cares about. - -When an event is fired, its context is passed to the handler function as an -argument. The following argument types are used: - -* UnitTest reflects the state of the entire test program, -* TestSuite has information about a test suite, which can contain one or more - tests, -* TestInfo contains the state of a test, and -* TestPartResult represents the result of a test assertion. - -An event handler function can examine the argument it receives to find out -interesting information about the event and the test program's state. - -Here's an example: - -```c++ - class MinimalistPrinter : public testing::EmptyTestEventListener { - // Called before a test starts. - void OnTestStart(const testing::TestInfo& test_info) override { - printf("*** Test %s.%s starting.\n", - test_info.test_suite_name(), test_info.name()); - } - - // Called after a failed assertion or a SUCCESS(). - void OnTestPartResult(const testing::TestPartResult& test_part_result) override { - printf("%s in %s:%d\n%s\n", - test_part_result.failed() ? "*** Failure" : "Success", - test_part_result.file_name(), - test_part_result.line_number(), - test_part_result.summary()); - } - - // Called after a test ends. - void OnTestEnd(const testing::TestInfo& test_info) override { - printf("*** Test %s.%s ending.\n", - test_info.test_suite_name(), test_info.name()); - } - }; -``` - -### Using Event Listeners - -To use the event listener you have defined, add an instance of it to the -googletest event listener list (represented by class -[`TestEventListeners`](reference/testing.md#TestEventListeners) - note the "s" -at the end of the name) in your `main()` function, before calling -`RUN_ALL_TESTS()`: - -```c++ -int main(int argc, char** argv) { - testing::InitGoogleTest(&argc, argv); - // Gets hold of the event listener list. - testing::TestEventListeners& listeners = - testing::UnitTest::GetInstance()->listeners(); - // Adds a listener to the end. googletest takes the ownership. - listeners.Append(new MinimalistPrinter); - return RUN_ALL_TESTS(); -} -``` - -There's only one problem: the default test result printer is still in effect, so -its output will mingle with the output from your minimalist printer. To suppress -the default printer, just release it from the event listener list and delete it. -You can do so by adding one line: - -```c++ - ... - delete listeners.Release(listeners.default_result_printer()); - listeners.Append(new MinimalistPrinter); - return RUN_ALL_TESTS(); -``` - -Now, sit back and enjoy a completely different output from your tests. For more -details, see [sample9_unittest.cc]. - -[sample9_unittest.cc]: https://github.com/google/googletest/blob/master/googletest/samples/sample9_unittest.cc "Event listener example" - -You may append more than one listener to the list. When an `On*Start()` or -`OnTestPartResult()` event is fired, the listeners will receive it in the order -they appear in the list (since new listeners are added to the end of the list, -the default text printer and the default XML generator will receive the event -first). An `On*End()` event will be received by the listeners in the *reverse* -order. This allows output by listeners added later to be framed by output from -listeners added earlier. - -### Generating Failures in Listeners - -You may use failure-raising macros (`EXPECT_*()`, `ASSERT_*()`, `FAIL()`, etc) -when processing an event. There are some restrictions: - -1. You cannot generate any failure in `OnTestPartResult()` (otherwise it will - cause `OnTestPartResult()` to be called recursively). -2. A listener that handles `OnTestPartResult()` is not allowed to generate any - failure. - -When you add listeners to the listener list, you should put listeners that -handle `OnTestPartResult()` *before* listeners that can generate failures. This -ensures that failures generated by the latter are attributed to the right test -by the former. - -See [sample10_unittest.cc] for an example of a failure-raising listener. - -[sample10_unittest.cc]: https://github.com/google/googletest/blob/master/googletest/samples/sample10_unittest.cc "Failure-raising listener example" - -## Running Test Programs: Advanced Options - -googletest test programs are ordinary executables. Once built, you can run them -directly and affect their behavior via the following environment variables -and/or command line flags. For the flags to work, your programs must call -`::testing::InitGoogleTest()` before calling `RUN_ALL_TESTS()`. - -To see a list of supported flags and their usage, please run your test program -with the `--help` flag. You can also use `-h`, `-?`, or `/?` for short. - -If an option is specified both by an environment variable and by a flag, the -latter takes precedence. - -### Selecting Tests - -#### Listing Test Names - -Sometimes it is necessary to list the available tests in a program before -running them so that a filter may be applied if needed. Including the flag -`--gtest_list_tests` overrides all other flags and lists tests in the following -format: - -```none -TestSuite1. - TestName1 - TestName2 -TestSuite2. - TestName -``` - -None of the tests listed are actually run if the flag is provided. There is no -corresponding environment variable for this flag. - -#### Running a Subset of the Tests - -By default, a googletest program runs all tests the user has defined. Sometimes, -you want to run only a subset of the tests (e.g. for debugging or quickly -verifying a change). If you set the `GTEST_FILTER` environment variable or the -`--gtest_filter` flag to a filter string, googletest will only run the tests -whose full names (in the form of `TestSuiteName.TestName`) match the filter. - -The format of a filter is a '`:`'-separated list of wildcard patterns (called -the *positive patterns*) optionally followed by a '`-`' and another -'`:`'-separated pattern list (called the *negative patterns*). A test matches -the filter if and only if it matches any of the positive patterns but does not -match any of the negative patterns. - -A pattern may contain `'*'` (matches any string) or `'?'` (matches any single -character). For convenience, the filter `'*-NegativePatterns'` can be also -written as `'-NegativePatterns'`. - -For example: - -* `./foo_test` Has no flag, and thus runs all its tests. -* `./foo_test --gtest_filter=*` Also runs everything, due to the single - match-everything `*` value. -* `./foo_test --gtest_filter=FooTest.*` Runs everything in test suite - `FooTest` . -* `./foo_test --gtest_filter=*Null*:*Constructor*` Runs any test whose full - name contains either `"Null"` or `"Constructor"` . -* `./foo_test --gtest_filter=-*DeathTest.*` Runs all non-death tests. -* `./foo_test --gtest_filter=FooTest.*-FooTest.Bar` Runs everything in test - suite `FooTest` except `FooTest.Bar`. -* `./foo_test --gtest_filter=FooTest.*:BarTest.*-FooTest.Bar:BarTest.Foo` Runs - everything in test suite `FooTest` except `FooTest.Bar` and everything in - test suite `BarTest` except `BarTest.Foo`. - -#### Stop test execution upon first failure - -By default, a googletest program runs all tests the user has defined. In some -cases (e.g. iterative test development & execution) it may be desirable stop -test execution upon first failure (trading improved latency for completeness). -If `GTEST_FAIL_FAST` environment variable or `--gtest_fail_fast` flag is set, -the test runner will stop execution as soon as the first test failure is found. - -#### Temporarily Disabling Tests - -If you have a broken test that you cannot fix right away, you can add the -`DISABLED_` prefix to its name. This will exclude it from execution. This is -better than commenting out the code or using `#if 0`, as disabled tests are -still compiled (and thus won't rot). - -If you need to disable all tests in a test suite, you can either add `DISABLED_` -to the front of the name of each test, or alternatively add it to the front of -the test suite name. - -For example, the following tests won't be run by googletest, even though they -will still be compiled: - -```c++ -// Tests that Foo does Abc. -TEST(FooTest, DISABLED_DoesAbc) { ... } - -class DISABLED_BarTest : public testing::Test { ... }; - -// Tests that Bar does Xyz. -TEST_F(DISABLED_BarTest, DoesXyz) { ... } -``` - -{: .callout .note} -NOTE: This feature should only be used for temporary pain-relief. You still have -to fix the disabled tests at a later date. As a reminder, googletest will print -a banner warning you if a test program contains any disabled tests. - -{: .callout .tip} -TIP: You can easily count the number of disabled tests you have using -`grep`. This number can be used as a metric for -improving your test quality. - -#### Temporarily Enabling Disabled Tests - -To include disabled tests in test execution, just invoke the test program with -the `--gtest_also_run_disabled_tests` flag or set the -`GTEST_ALSO_RUN_DISABLED_TESTS` environment variable to a value other than `0`. -You can combine this with the `--gtest_filter` flag to further select which -disabled tests to run. - -### Repeating the Tests - -Once in a while you'll run into a test whose result is hit-or-miss. Perhaps it -will fail only 1% of the time, making it rather hard to reproduce the bug under -a debugger. This can be a major source of frustration. - -The `--gtest_repeat` flag allows you to repeat all (or selected) test methods in -a program many times. Hopefully, a flaky test will eventually fail and give you -a chance to debug. Here's how to use it: - -```none -$ foo_test --gtest_repeat=1000 -Repeat foo_test 1000 times and don't stop at failures. - -$ foo_test --gtest_repeat=-1 -A negative count means repeating forever. - -$ foo_test --gtest_repeat=1000 --gtest_break_on_failure -Repeat foo_test 1000 times, stopping at the first failure. This -is especially useful when running under a debugger: when the test -fails, it will drop into the debugger and you can then inspect -variables and stacks. - -$ foo_test --gtest_repeat=1000 --gtest_filter=FooBar.* -Repeat the tests whose name matches the filter 1000 times. -``` - -If your test program contains -[global set-up/tear-down](#global-set-up-and-tear-down) code, it will be -repeated in each iteration as well, as the flakiness may be in it. You can also -specify the repeat count by setting the `GTEST_REPEAT` environment variable. - -### Shuffling the Tests - -You can specify the `--gtest_shuffle` flag (or set the `GTEST_SHUFFLE` -environment variable to `1`) to run the tests in a program in a random order. -This helps to reveal bad dependencies between tests. - -By default, googletest uses a random seed calculated from the current time. -Therefore you'll get a different order every time. The console output includes -the random seed value, such that you can reproduce an order-related test failure -later. To specify the random seed explicitly, use the `--gtest_random_seed=SEED` -flag (or set the `GTEST_RANDOM_SEED` environment variable), where `SEED` is an -integer in the range [0, 99999]. The seed value 0 is special: it tells -googletest to do the default behavior of calculating the seed from the current -time. - -If you combine this with `--gtest_repeat=N`, googletest will pick a different -random seed and re-shuffle the tests in each iteration. - -### Distributing Test Functions to Multiple Machines - -If you have more than one machine you can use to run a test program, you might -want to run the test functions in parallel and get the result faster. We call -this technique *sharding*, where each machine is called a *shard*. - -GoogleTest is compatible with test sharding. To take advantage of this feature, -your test runner (not part of GoogleTest) needs to do the following: - -1. Allocate a number of machines (shards) to run the tests. -1. On each shard, set the `GTEST_TOTAL_SHARDS` environment variable to the total - number of shards. It must be the same for all shards. -1. On each shard, set the `GTEST_SHARD_INDEX` environment variable to the index - of the shard. Different shards must be assigned different indices, which - must be in the range `[0, GTEST_TOTAL_SHARDS - 1]`. -1. Run the same test program on all shards. When GoogleTest sees the above two - environment variables, it will select a subset of the test functions to run. - Across all shards, each test function in the program will be run exactly - once. -1. Wait for all shards to finish, then collect and report the results. - -Your project may have tests that were written without GoogleTest and thus don't -understand this protocol. In order for your test runner to figure out which test -supports sharding, it can set the environment variable `GTEST_SHARD_STATUS_FILE` -to a non-existent file path. If a test program supports sharding, it will create -this file to acknowledge that fact; otherwise it will not create it. The actual -contents of the file are not important at this time, although we may put some -useful information in it in the future. - -Here's an example to make it clear. Suppose you have a test program `foo_test` -that contains the following 5 test functions: - -``` -TEST(A, V) -TEST(A, W) -TEST(B, X) -TEST(B, Y) -TEST(B, Z) -``` - -Suppose you have 3 machines at your disposal. To run the test functions in -parallel, you would set `GTEST_TOTAL_SHARDS` to 3 on all machines, and set -`GTEST_SHARD_INDEX` to 0, 1, and 2 on the machines respectively. Then you would -run the same `foo_test` on each machine. - -GoogleTest reserves the right to change how the work is distributed across the -shards, but here's one possible scenario: - -* Machine #0 runs `A.V` and `B.X`. -* Machine #1 runs `A.W` and `B.Y`. -* Machine #2 runs `B.Z`. - -### Controlling Test Output - -#### Colored Terminal Output - -googletest can use colors in its terminal output to make it easier to spot the -important information: - -
...
-[----------] 1 test from FooTest
-[ RUN      ] FooTest.DoesAbc
-[       OK ] FooTest.DoesAbc
-[----------] 2 tests from BarTest
-[ RUN      ] BarTest.HasXyzProperty
-[       OK ] BarTest.HasXyzProperty
-[ RUN      ] BarTest.ReturnsTrueOnSuccess
-... some error messages ...
-[   FAILED ] BarTest.ReturnsTrueOnSuccess
-...
-[==========] 30 tests from 14 test suites ran.
-[   PASSED ] 28 tests.
-[   FAILED ] 2 tests, listed below:
-[   FAILED ] BarTest.ReturnsTrueOnSuccess
-[   FAILED ] AnotherTest.DoesXyz
-
- 2 FAILED TESTS
-
- -You can set the `GTEST_COLOR` environment variable or the `--gtest_color` -command line flag to `yes`, `no`, or `auto` (the default) to enable colors, -disable colors, or let googletest decide. When the value is `auto`, googletest -will use colors if and only if the output goes to a terminal and (on non-Windows -platforms) the `TERM` environment variable is set to `xterm` or `xterm-color`. - -#### Suppressing test passes - -By default, googletest prints 1 line of output for each test, indicating if it -passed or failed. To show only test failures, run the test program with -`--gtest_brief=1`, or set the GTEST_BRIEF environment variable to `1`. - -#### Suppressing the Elapsed Time - -By default, googletest prints the time it takes to run each test. To disable -that, run the test program with the `--gtest_print_time=0` command line flag, or -set the GTEST_PRINT_TIME environment variable to `0`. - -#### Suppressing UTF-8 Text Output - -In case of assertion failures, googletest prints expected and actual values of -type `string` both as hex-encoded strings as well as in readable UTF-8 text if -they contain valid non-ASCII UTF-8 characters. If you want to suppress the UTF-8 -text because, for example, you don't have an UTF-8 compatible output medium, run -the test program with `--gtest_print_utf8=0` or set the `GTEST_PRINT_UTF8` -environment variable to `0`. - -#### Generating an XML Report - -googletest can emit a detailed XML report to a file in addition to its normal -textual output. The report contains the duration of each test, and thus can help -you identify slow tests. - -To generate the XML report, set the `GTEST_OUTPUT` environment variable or the -`--gtest_output` flag to the string `"xml:path_to_output_file"`, which will -create the file at the given location. You can also just use the string `"xml"`, -in which case the output can be found in the `test_detail.xml` file in the -current directory. - -If you specify a directory (for example, `"xml:output/directory/"` on Linux or -`"xml:output\directory\"` on Windows), googletest will create the XML file in -that directory, named after the test executable (e.g. `foo_test.xml` for test -program `foo_test` or `foo_test.exe`). If the file already exists (perhaps left -over from a previous run), googletest will pick a different name (e.g. -`foo_test_1.xml`) to avoid overwriting it. - -The report is based on the `junitreport` Ant task. Since that format was -originally intended for Java, a little interpretation is required to make it -apply to googletest tests, as shown here: - -```xml - - - - - - - - - -``` - -* The root `` element corresponds to the entire test program. -* `` elements correspond to googletest test suites. -* `` elements correspond to googletest test functions. - -For instance, the following program - -```c++ -TEST(MathTest, Addition) { ... } -TEST(MathTest, Subtraction) { ... } -TEST(LogicTest, NonContradiction) { ... } -``` - -could generate this report: - -```xml - - - - - ... - ... - - - - - - - - - -``` - -Things to note: - -* The `tests` attribute of a `` or `` element tells how - many test functions the googletest program or test suite contains, while the - `failures` attribute tells how many of them failed. - -* The `time` attribute expresses the duration of the test, test suite, or - entire test program in seconds. - -* The `timestamp` attribute records the local date and time of the test - execution. - -* The `file` and `line` attributes record the source file location, where the - test was defined. - -* Each `` element corresponds to a single failed googletest - assertion. - -#### Generating a JSON Report - -googletest can also emit a JSON report as an alternative format to XML. To -generate the JSON report, set the `GTEST_OUTPUT` environment variable or the -`--gtest_output` flag to the string `"json:path_to_output_file"`, which will -create the file at the given location. You can also just use the string -`"json"`, in which case the output can be found in the `test_detail.json` file -in the current directory. - -The report format conforms to the following JSON Schema: - -```json -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "definitions": { - "TestCase": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "tests": { "type": "integer" }, - "failures": { "type": "integer" }, - "disabled": { "type": "integer" }, - "time": { "type": "string" }, - "testsuite": { - "type": "array", - "items": { - "$ref": "#/definitions/TestInfo" - } - } - } - }, - "TestInfo": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "file": { "type": "string" }, - "line": { "type": "integer" }, - "status": { - "type": "string", - "enum": ["RUN", "NOTRUN"] - }, - "time": { "type": "string" }, - "classname": { "type": "string" }, - "failures": { - "type": "array", - "items": { - "$ref": "#/definitions/Failure" - } - } - } - }, - "Failure": { - "type": "object", - "properties": { - "failures": { "type": "string" }, - "type": { "type": "string" } - } - } - }, - "properties": { - "tests": { "type": "integer" }, - "failures": { "type": "integer" }, - "disabled": { "type": "integer" }, - "errors": { "type": "integer" }, - "timestamp": { - "type": "string", - "format": "date-time" - }, - "time": { "type": "string" }, - "name": { "type": "string" }, - "testsuites": { - "type": "array", - "items": { - "$ref": "#/definitions/TestCase" - } - } - } -} -``` - -The report uses the format that conforms to the following Proto3 using the -[JSON encoding](https://developers.google.com/protocol-buffers/docs/proto3#json): - -```proto -syntax = "proto3"; - -package googletest; - -import "google/protobuf/timestamp.proto"; -import "google/protobuf/duration.proto"; - -message UnitTest { - int32 tests = 1; - int32 failures = 2; - int32 disabled = 3; - int32 errors = 4; - google.protobuf.Timestamp timestamp = 5; - google.protobuf.Duration time = 6; - string name = 7; - repeated TestCase testsuites = 8; -} - -message TestCase { - string name = 1; - int32 tests = 2; - int32 failures = 3; - int32 disabled = 4; - int32 errors = 5; - google.protobuf.Duration time = 6; - repeated TestInfo testsuite = 7; -} - -message TestInfo { - string name = 1; - string file = 6; - int32 line = 7; - enum Status { - RUN = 0; - NOTRUN = 1; - } - Status status = 2; - google.protobuf.Duration time = 3; - string classname = 4; - message Failure { - string failures = 1; - string type = 2; - } - repeated Failure failures = 5; -} -``` - -For instance, the following program - -```c++ -TEST(MathTest, Addition) { ... } -TEST(MathTest, Subtraction) { ... } -TEST(LogicTest, NonContradiction) { ... } -``` - -could generate this report: - -```json -{ - "tests": 3, - "failures": 1, - "errors": 0, - "time": "0.035s", - "timestamp": "2011-10-31T18:52:42Z", - "name": "AllTests", - "testsuites": [ - { - "name": "MathTest", - "tests": 2, - "failures": 1, - "errors": 0, - "time": "0.015s", - "testsuite": [ - { - "name": "Addition", - "file": "test.cpp", - "line": 1, - "status": "RUN", - "time": "0.007s", - "classname": "", - "failures": [ - { - "message": "Value of: add(1, 1)\n Actual: 3\nExpected: 2", - "type": "" - }, - { - "message": "Value of: add(1, -1)\n Actual: 1\nExpected: 0", - "type": "" - } - ] - }, - { - "name": "Subtraction", - "file": "test.cpp", - "line": 2, - "status": "RUN", - "time": "0.005s", - "classname": "" - } - ] - }, - { - "name": "LogicTest", - "tests": 1, - "failures": 0, - "errors": 0, - "time": "0.005s", - "testsuite": [ - { - "name": "NonContradiction", - "file": "test.cpp", - "line": 3, - "status": "RUN", - "time": "0.005s", - "classname": "" - } - ] - } - ] -} -``` - -{: .callout .important} -IMPORTANT: The exact format of the JSON document is subject to change. - -### Controlling How Failures Are Reported - -#### Detecting Test Premature Exit - -Google Test implements the _premature-exit-file_ protocol for test runners to -catch any kind of unexpected exits of test programs. Upon start, Google Test -creates the file which will be automatically deleted after all work has been -finished. Then, the test runner can check if this file exists. In case the file -remains undeleted, the inspected test has exited prematurely. - -This feature is enabled only if the `TEST_PREMATURE_EXIT_FILE` environment -variable has been set. - -#### Turning Assertion Failures into Break-Points - -When running test programs under a debugger, it's very convenient if the -debugger can catch an assertion failure and automatically drop into interactive -mode. googletest's *break-on-failure* mode supports this behavior. - -To enable it, set the `GTEST_BREAK_ON_FAILURE` environment variable to a value -other than `0`. Alternatively, you can use the `--gtest_break_on_failure` -command line flag. - -#### Disabling Catching Test-Thrown Exceptions - -googletest can be used either with or without exceptions enabled. If a test -throws a C++ exception or (on Windows) a structured exception (SEH), by default -googletest catches it, reports it as a test failure, and continues with the next -test method. This maximizes the coverage of a test run. Also, on Windows an -uncaught exception will cause a pop-up window, so catching the exceptions allows -you to run the tests automatically. - -When debugging the test failures, however, you may instead want the exceptions -to be handled by the debugger, such that you can examine the call stack when an -exception is thrown. To achieve that, set the `GTEST_CATCH_EXCEPTIONS` -environment variable to `0`, or use the `--gtest_catch_exceptions=0` flag when -running the tests. - -### Sanitizer Integration - -The -[Undefined Behavior Sanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html), -[Address Sanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer), -and -[Thread Sanitizer](https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual) -all provide weak functions that you can override to trigger explicit failures -when they detect sanitizer errors, such as creating a reference from `nullptr`. -To override these functions, place definitions for them in a source file that -you compile as part of your main binary: - -``` -extern "C" { -void __ubsan_on_report() { - FAIL() << "Encountered an undefined behavior sanitizer error"; -} -void __asan_on_error() { - FAIL() << "Encountered an address sanitizer error"; -} -void __tsan_on_report() { - FAIL() << "Encountered a thread sanitizer error"; -} -} // extern "C" -``` - -After compiling your project with one of the sanitizers enabled, if a particular -test triggers a sanitizer error, googletest will report that it failed. diff --git a/tests/lib/docs/assets/css/style.scss b/tests/lib/docs/assets/css/style.scss deleted file mode 100644 index bb30f418da..0000000000 --- a/tests/lib/docs/assets/css/style.scss +++ /dev/null @@ -1,5 +0,0 @@ ---- ---- - -@import "jekyll-theme-primer"; -@import "main"; diff --git a/tests/lib/docs/community_created_documentation.md b/tests/lib/docs/community_created_documentation.md deleted file mode 100644 index 4569075ff2..0000000000 --- a/tests/lib/docs/community_created_documentation.md +++ /dev/null @@ -1,7 +0,0 @@ -# Community-Created Documentation - -The following is a list, in no particular order, of links to documentation -created by the Googletest community. - -* [Googlemock Insights](https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/googletest/insights.md), - by [ElectricRCAircraftGuy](https://github.com/ElectricRCAircraftGuy) diff --git a/tests/lib/docs/faq.md b/tests/lib/docs/faq.md deleted file mode 100644 index c849aff923..0000000000 --- a/tests/lib/docs/faq.md +++ /dev/null @@ -1,692 +0,0 @@ -# GoogleTest FAQ - -## Why should test suite names and test names not contain underscore? - -{: .callout .note} -Note: GoogleTest reserves underscore (`_`) for special purpose keywords, such as -[the `DISABLED_` prefix](advanced.md#temporarily-disabling-tests), in addition -to the following rationale. - -Underscore (`_`) is special, as C++ reserves the following to be used by the -compiler and the standard library: - -1. any identifier that starts with an `_` followed by an upper-case letter, and -2. any identifier that contains two consecutive underscores (i.e. `__`) - *anywhere* in its name. - -User code is *prohibited* from using such identifiers. - -Now let's look at what this means for `TEST` and `TEST_F`. - -Currently `TEST(TestSuiteName, TestName)` generates a class named -`TestSuiteName_TestName_Test`. What happens if `TestSuiteName` or `TestName` -contains `_`? - -1. If `TestSuiteName` starts with an `_` followed by an upper-case letter (say, - `_Foo`), we end up with `_Foo_TestName_Test`, which is reserved and thus - invalid. -2. If `TestSuiteName` ends with an `_` (say, `Foo_`), we get - `Foo__TestName_Test`, which is invalid. -3. If `TestName` starts with an `_` (say, `_Bar`), we get - `TestSuiteName__Bar_Test`, which is invalid. -4. If `TestName` ends with an `_` (say, `Bar_`), we get - `TestSuiteName_Bar__Test`, which is invalid. - -So clearly `TestSuiteName` and `TestName` cannot start or end with `_` -(Actually, `TestSuiteName` can start with `_` -- as long as the `_` isn't -followed by an upper-case letter. But that's getting complicated. So for -simplicity we just say that it cannot start with `_`.). - -It may seem fine for `TestSuiteName` and `TestName` to contain `_` in the -middle. However, consider this: - -```c++ -TEST(Time, Flies_Like_An_Arrow) { ... } -TEST(Time_Flies, Like_An_Arrow) { ... } -``` - -Now, the two `TEST`s will both generate the same class -(`Time_Flies_Like_An_Arrow_Test`). That's not good. - -So for simplicity, we just ask the users to avoid `_` in `TestSuiteName` and -`TestName`. The rule is more constraining than necessary, but it's simple and -easy to remember. It also gives GoogleTest some wiggle room in case its -implementation needs to change in the future. - -If you violate the rule, there may not be immediate consequences, but your test -may (just may) break with a new compiler (or a new version of the compiler you -are using) or with a new version of GoogleTest. Therefore it's best to follow -the rule. - -## Why does GoogleTest support `EXPECT_EQ(NULL, ptr)` and `ASSERT_EQ(NULL, ptr)` but not `EXPECT_NE(NULL, ptr)` and `ASSERT_NE(NULL, ptr)`? - -First of all, you can use `nullptr` with each of these macros, e.g. -`EXPECT_EQ(ptr, nullptr)`, `EXPECT_NE(ptr, nullptr)`, `ASSERT_EQ(ptr, nullptr)`, -`ASSERT_NE(ptr, nullptr)`. This is the preferred syntax in the style guide -because `nullptr` does not have the type problems that `NULL` does. - -Due to some peculiarity of C++, it requires some non-trivial template meta -programming tricks to support using `NULL` as an argument of the `EXPECT_XX()` -and `ASSERT_XX()` macros. Therefore we only do it where it's most needed -(otherwise we make the implementation of GoogleTest harder to maintain and more -error-prone than necessary). - -Historically, the `EXPECT_EQ()` macro took the *expected* value as its first -argument and the *actual* value as the second, though this argument order is now -discouraged. It was reasonable that someone wanted -to write `EXPECT_EQ(NULL, some_expression)`, and this indeed was requested -several times. Therefore we implemented it. - -The need for `EXPECT_NE(NULL, ptr)` wasn't nearly as strong. When the assertion -fails, you already know that `ptr` must be `NULL`, so it doesn't add any -information to print `ptr` in this case. That means `EXPECT_TRUE(ptr != NULL)` -works just as well. - -If we were to support `EXPECT_NE(NULL, ptr)`, for consistency we'd have to -support `EXPECT_NE(ptr, NULL)` as well. This means using the template meta -programming tricks twice in the implementation, making it even harder to -understand and maintain. We believe the benefit doesn't justify the cost. - -Finally, with the growth of the gMock matcher library, we are encouraging people -to use the unified `EXPECT_THAT(value, matcher)` syntax more often in tests. One -significant advantage of the matcher approach is that matchers can be easily -combined to form new matchers, while the `EXPECT_NE`, etc, macros cannot be -easily combined. Therefore we want to invest more in the matchers than in the -`EXPECT_XX()` macros. - -## I need to test that different implementations of an interface satisfy some common requirements. Should I use typed tests or value-parameterized tests? - -For testing various implementations of the same interface, either typed tests or -value-parameterized tests can get it done. It's really up to you the user to -decide which is more convenient for you, depending on your particular case. Some -rough guidelines: - -* Typed tests can be easier to write if instances of the different - implementations can be created the same way, modulo the type. For example, - if all these implementations have a public default constructor (such that - you can write `new TypeParam`), or if their factory functions have the same - form (e.g. `CreateInstance()`). -* Value-parameterized tests can be easier to write if you need different code - patterns to create different implementations' instances, e.g. `new Foo` vs - `new Bar(5)`. To accommodate for the differences, you can write factory - function wrappers and pass these function pointers to the tests as their - parameters. -* When a typed test fails, the default output includes the name of the type, - which can help you quickly identify which implementation is wrong. - Value-parameterized tests only show the number of the failed iteration by - default. You will need to define a function that returns the iteration name - and pass it as the third parameter to INSTANTIATE_TEST_SUITE_P to have more - useful output. -* When using typed tests, you need to make sure you are testing against the - interface type, not the concrete types (in other words, you want to make - sure `implicit_cast(my_concrete_impl)` works, not just that - `my_concrete_impl` works). It's less likely to make mistakes in this area - when using value-parameterized tests. - -I hope I didn't confuse you more. :-) If you don't mind, I'd suggest you to give -both approaches a try. Practice is a much better way to grasp the subtle -differences between the two tools. Once you have some concrete experience, you -can much more easily decide which one to use the next time. - -## I got some run-time errors about invalid proto descriptors when using `ProtocolMessageEquals`. Help! - -{: .callout .note} -**Note:** `ProtocolMessageEquals` and `ProtocolMessageEquiv` are *deprecated* -now. Please use `EqualsProto`, etc instead. - -`ProtocolMessageEquals` and `ProtocolMessageEquiv` were redefined recently and -are now less tolerant of invalid protocol buffer definitions. In particular, if -you have a `foo.proto` that doesn't fully qualify the type of a protocol message -it references (e.g. `message` where it should be `message`), you -will now get run-time errors like: - -``` -... descriptor.cc:...] Invalid proto descriptor for file "path/to/foo.proto": -... descriptor.cc:...] blah.MyMessage.my_field: ".Bar" is not defined. -``` - -If you see this, your `.proto` file is broken and needs to be fixed by making -the types fully qualified. The new definition of `ProtocolMessageEquals` and -`ProtocolMessageEquiv` just happen to reveal your bug. - -## My death test modifies some state, but the change seems lost after the death test finishes. Why? - -Death tests (`EXPECT_DEATH`, etc) are executed in a sub-process s.t. the -expected crash won't kill the test program (i.e. the parent process). As a -result, any in-memory side effects they incur are observable in their respective -sub-processes, but not in the parent process. You can think of them as running -in a parallel universe, more or less. - -In particular, if you use mocking and the death test statement invokes some mock -methods, the parent process will think the calls have never occurred. Therefore, -you may want to move your `EXPECT_CALL` statements inside the `EXPECT_DEATH` -macro. - -## EXPECT_EQ(htonl(blah), blah_blah) generates weird compiler errors in opt mode. Is this a GoogleTest bug? - -Actually, the bug is in `htonl()`. - -According to `'man htonl'`, `htonl()` is a *function*, which means it's valid to -use `htonl` as a function pointer. However, in opt mode `htonl()` is defined as -a *macro*, which breaks this usage. - -Worse, the macro definition of `htonl()` uses a `gcc` extension and is *not* -standard C++. That hacky implementation has some ad hoc limitations. In -particular, it prevents you from writing `Foo()`, where `Foo` -is a template that has an integral argument. - -The implementation of `EXPECT_EQ(a, b)` uses `sizeof(... a ...)` inside a -template argument, and thus doesn't compile in opt mode when `a` contains a call -to `htonl()`. It is difficult to make `EXPECT_EQ` bypass the `htonl()` bug, as -the solution must work with different compilers on various platforms. - -## The compiler complains about "undefined references" to some static const member variables, but I did define them in the class body. What's wrong? - -If your class has a static data member: - -```c++ -// foo.h -class Foo { - ... - static const int kBar = 100; -}; -``` - -You also need to define it *outside* of the class body in `foo.cc`: - -```c++ -const int Foo::kBar; // No initializer here. -``` - -Otherwise your code is **invalid C++**, and may break in unexpected ways. In -particular, using it in GoogleTest comparison assertions (`EXPECT_EQ`, etc) will -generate an "undefined reference" linker error. The fact that "it used to work" -doesn't mean it's valid. It just means that you were lucky. :-) - -If the declaration of the static data member is `constexpr` then it is -implicitly an `inline` definition, and a separate definition in `foo.cc` is not -needed: - -```c++ -// foo.h -class Foo { - ... - static constexpr int kBar = 100; // Defines kBar, no need to do it in foo.cc. -}; -``` - -## Can I derive a test fixture from another? - -Yes. - -Each test fixture has a corresponding and same named test suite. This means only -one test suite can use a particular fixture. Sometimes, however, multiple test -cases may want to use the same or slightly different fixtures. For example, you -may want to make sure that all of a GUI library's test suites don't leak -important system resources like fonts and brushes. - -In GoogleTest, you share a fixture among test suites by putting the shared logic -in a base test fixture, then deriving from that base a separate fixture for each -test suite that wants to use this common logic. You then use `TEST_F()` to write -tests using each derived fixture. - -Typically, your code looks like this: - -```c++ -// Defines a base test fixture. -class BaseTest : public ::testing::Test { - protected: - ... -}; - -// Derives a fixture FooTest from BaseTest. -class FooTest : public BaseTest { - protected: - void SetUp() override { - BaseTest::SetUp(); // Sets up the base fixture first. - ... additional set-up work ... - } - - void TearDown() override { - ... clean-up work for FooTest ... - BaseTest::TearDown(); // Remember to tear down the base fixture - // after cleaning up FooTest! - } - - ... functions and variables for FooTest ... -}; - -// Tests that use the fixture FooTest. -TEST_F(FooTest, Bar) { ... } -TEST_F(FooTest, Baz) { ... } - -... additional fixtures derived from BaseTest ... -``` - -If necessary, you can continue to derive test fixtures from a derived fixture. -GoogleTest has no limit on how deep the hierarchy can be. - -For a complete example using derived test fixtures, see -[sample5_unittest.cc](https://github.com/google/googletest/blob/master/googletest/samples/sample5_unittest.cc). - -## My compiler complains "void value not ignored as it ought to be." What does this mean? - -You're probably using an `ASSERT_*()` in a function that doesn't return `void`. -`ASSERT_*()` can only be used in `void` functions, due to exceptions being -disabled by our build system. Please see more details -[here](advanced.md#assertion-placement). - -## My death test hangs (or seg-faults). How do I fix it? - -In GoogleTest, death tests are run in a child process and the way they work is -delicate. To write death tests you really need to understand how they work—see -the details at [Death Assertions](reference/assertions.md#death) in the -Assertions Reference. - -In particular, death tests don't like having multiple threads in the parent -process. So the first thing you can try is to eliminate creating threads outside -of `EXPECT_DEATH()`. For example, you may want to use mocks or fake objects -instead of real ones in your tests. - -Sometimes this is impossible as some library you must use may be creating -threads before `main()` is even reached. In this case, you can try to minimize -the chance of conflicts by either moving as many activities as possible inside -`EXPECT_DEATH()` (in the extreme case, you want to move everything inside), or -leaving as few things as possible in it. Also, you can try to set the death test -style to `"threadsafe"`, which is safer but slower, and see if it helps. - -If you go with thread-safe death tests, remember that they rerun the test -program from the beginning in the child process. Therefore make sure your -program can run side-by-side with itself and is deterministic. - -In the end, this boils down to good concurrent programming. You have to make -sure that there are no race conditions or deadlocks in your program. No silver -bullet - sorry! - -## Should I use the constructor/destructor of the test fixture or SetUp()/TearDown()? {#CtorVsSetUp} - -The first thing to remember is that GoogleTest does **not** reuse the same test -fixture object across multiple tests. For each `TEST_F`, GoogleTest will create -a **fresh** test fixture object, immediately call `SetUp()`, run the test body, -call `TearDown()`, and then delete the test fixture object. - -When you need to write per-test set-up and tear-down logic, you have the choice -between using the test fixture constructor/destructor or `SetUp()/TearDown()`. -The former is usually preferred, as it has the following benefits: - -* By initializing a member variable in the constructor, we have the option to - make it `const`, which helps prevent accidental changes to its value and - makes the tests more obviously correct. -* In case we need to subclass the test fixture class, the subclass' - constructor is guaranteed to call the base class' constructor *first*, and - the subclass' destructor is guaranteed to call the base class' destructor - *afterward*. With `SetUp()/TearDown()`, a subclass may make the mistake of - forgetting to call the base class' `SetUp()/TearDown()` or call them at the - wrong time. - -You may still want to use `SetUp()/TearDown()` in the following cases: - -* C++ does not allow virtual function calls in constructors and destructors. - You can call a method declared as virtual, but it will not use dynamic - dispatch. It will use the definition from the class the constructor of which - is currently executing. This is because calling a virtual method before the - derived class constructor has a chance to run is very dangerous - the - virtual method might operate on uninitialized data. Therefore, if you need - to call a method that will be overridden in a derived class, you have to use - `SetUp()/TearDown()`. -* In the body of a constructor (or destructor), it's not possible to use the - `ASSERT_xx` macros. Therefore, if the set-up operation could cause a fatal - test failure that should prevent the test from running, it's necessary to - use `abort` and abort the whole test - executable, or to use `SetUp()` instead of a constructor. -* If the tear-down operation could throw an exception, you must use - `TearDown()` as opposed to the destructor, as throwing in a destructor leads - to undefined behavior and usually will kill your program right away. Note - that many standard libraries (like STL) may throw when exceptions are - enabled in the compiler. Therefore you should prefer `TearDown()` if you - want to write portable tests that work with or without exceptions. -* The GoogleTest team is considering making the assertion macros throw on - platforms where exceptions are enabled (e.g. Windows, Mac OS, and Linux - client-side), which will eliminate the need for the user to propagate - failures from a subroutine to its caller. Therefore, you shouldn't use - GoogleTest assertions in a destructor if your code could run on such a - platform. - -## The compiler complains "no matching function to call" when I use ASSERT_PRED*. How do I fix it? - -See details for [`EXPECT_PRED*`](reference/assertions.md#EXPECT_PRED) in the -Assertions Reference. - -## My compiler complains about "ignoring return value" when I call RUN_ALL_TESTS(). Why? - -Some people had been ignoring the return value of `RUN_ALL_TESTS()`. That is, -instead of - -```c++ - return RUN_ALL_TESTS(); -``` - -they write - -```c++ - RUN_ALL_TESTS(); -``` - -This is **wrong and dangerous**. The testing services needs to see the return -value of `RUN_ALL_TESTS()` in order to determine if a test has passed. If your -`main()` function ignores it, your test will be considered successful even if it -has a GoogleTest assertion failure. Very bad. - -We have decided to fix this (thanks to Michael Chastain for the idea). Now, your -code will no longer be able to ignore `RUN_ALL_TESTS()` when compiled with -`gcc`. If you do so, you'll get a compiler error. - -If you see the compiler complaining about you ignoring the return value of -`RUN_ALL_TESTS()`, the fix is simple: just make sure its value is used as the -return value of `main()`. - -But how could we introduce a change that breaks existing tests? Well, in this -case, the code was already broken in the first place, so we didn't break it. :-) - -## My compiler complains that a constructor (or destructor) cannot return a value. What's going on? - -Due to a peculiarity of C++, in order to support the syntax for streaming -messages to an `ASSERT_*`, e.g. - -```c++ - ASSERT_EQ(1, Foo()) << "blah blah" << foo; -``` - -we had to give up using `ASSERT*` and `FAIL*` (but not `EXPECT*` and -`ADD_FAILURE*`) in constructors and destructors. The workaround is to move the -content of your constructor/destructor to a private void member function, or -switch to `EXPECT_*()` if that works. This -[section](advanced.md#assertion-placement) in the user's guide explains it. - -## My SetUp() function is not called. Why? - -C++ is case-sensitive. Did you spell it as `Setup()`? - -Similarly, sometimes people spell `SetUpTestSuite()` as `SetupTestSuite()` and -wonder why it's never called. - -## I have several test suites which share the same test fixture logic, do I have to define a new test fixture class for each of them? This seems pretty tedious. - -You don't have to. Instead of - -```c++ -class FooTest : public BaseTest {}; - -TEST_F(FooTest, Abc) { ... } -TEST_F(FooTest, Def) { ... } - -class BarTest : public BaseTest {}; - -TEST_F(BarTest, Abc) { ... } -TEST_F(BarTest, Def) { ... } -``` - -you can simply `typedef` the test fixtures: - -```c++ -typedef BaseTest FooTest; - -TEST_F(FooTest, Abc) { ... } -TEST_F(FooTest, Def) { ... } - -typedef BaseTest BarTest; - -TEST_F(BarTest, Abc) { ... } -TEST_F(BarTest, Def) { ... } -``` - -## GoogleTest output is buried in a whole bunch of LOG messages. What do I do? - -The GoogleTest output is meant to be a concise and human-friendly report. If -your test generates textual output itself, it will mix with the GoogleTest -output, making it hard to read. However, there is an easy solution to this -problem. - -Since `LOG` messages go to stderr, we decided to let GoogleTest output go to -stdout. This way, you can easily separate the two using redirection. For -example: - -```shell -$ ./my_test > gtest_output.txt -``` - -## Why should I prefer test fixtures over global variables? - -There are several good reasons: - -1. It's likely your test needs to change the states of its global variables. - This makes it difficult to keep side effects from escaping one test and - contaminating others, making debugging difficult. By using fixtures, each - test has a fresh set of variables that's different (but with the same - names). Thus, tests are kept independent of each other. -2. Global variables pollute the global namespace. -3. Test fixtures can be reused via subclassing, which cannot be done easily - with global variables. This is useful if many test suites have something in - common. - -## What can the statement argument in ASSERT_DEATH() be? - -`ASSERT_DEATH(statement, matcher)` (or any death assertion macro) can be used -wherever *`statement`* is valid. So basically *`statement`* can be any C++ -statement that makes sense in the current context. In particular, it can -reference global and/or local variables, and can be: - -* a simple function call (often the case), -* a complex expression, or -* a compound statement. - -Some examples are shown here: - -```c++ -// A death test can be a simple function call. -TEST(MyDeathTest, FunctionCall) { - ASSERT_DEATH(Xyz(5), "Xyz failed"); -} - -// Or a complex expression that references variables and functions. -TEST(MyDeathTest, ComplexExpression) { - const bool c = Condition(); - ASSERT_DEATH((c ? Func1(0) : object2.Method("test")), - "(Func1|Method) failed"); -} - -// Death assertions can be used anywhere in a function. In -// particular, they can be inside a loop. -TEST(MyDeathTest, InsideLoop) { - // Verifies that Foo(0), Foo(1), ..., and Foo(4) all die. - for (int i = 0; i < 5; i++) { - EXPECT_DEATH_M(Foo(i), "Foo has \\d+ errors", - ::testing::Message() << "where i is " << i); - } -} - -// A death assertion can contain a compound statement. -TEST(MyDeathTest, CompoundStatement) { - // Verifies that at lease one of Bar(0), Bar(1), ..., and - // Bar(4) dies. - ASSERT_DEATH({ - for (int i = 0; i < 5; i++) { - Bar(i); - } - }, - "Bar has \\d+ errors"); -} -``` - -## I have a fixture class `FooTest`, but `TEST_F(FooTest, Bar)` gives me error ``"no matching function for call to `FooTest::FooTest()'"``. Why? - -GoogleTest needs to be able to create objects of your test fixture class, so it -must have a default constructor. Normally the compiler will define one for you. -However, there are cases where you have to define your own: - -* If you explicitly declare a non-default constructor for class `FooTest` - (`DISALLOW_EVIL_CONSTRUCTORS()` does this), then you need to define a - default constructor, even if it would be empty. -* If `FooTest` has a const non-static data member, then you have to define the - default constructor *and* initialize the const member in the initializer - list of the constructor. (Early versions of `gcc` doesn't force you to - initialize the const member. It's a bug that has been fixed in `gcc 4`.) - -## Why does ASSERT_DEATH complain about previous threads that were already joined? - -With the Linux pthread library, there is no turning back once you cross the line -from a single thread to multiple threads. The first time you create a thread, a -manager thread is created in addition, so you get 3, not 2, threads. Later when -the thread you create joins the main thread, the thread count decrements by 1, -but the manager thread will never be killed, so you still have 2 threads, which -means you cannot safely run a death test. - -The new NPTL thread library doesn't suffer from this problem, as it doesn't -create a manager thread. However, if you don't control which machine your test -runs on, you shouldn't depend on this. - -## Why does GoogleTest require the entire test suite, instead of individual tests, to be named *DeathTest when it uses ASSERT_DEATH? - -GoogleTest does not interleave tests from different test suites. That is, it -runs all tests in one test suite first, and then runs all tests in the next test -suite, and so on. GoogleTest does this because it needs to set up a test suite -before the first test in it is run, and tear it down afterwards. Splitting up -the test case would require multiple set-up and tear-down processes, which is -inefficient and makes the semantics unclean. - -If we were to determine the order of tests based on test name instead of test -case name, then we would have a problem with the following situation: - -```c++ -TEST_F(FooTest, AbcDeathTest) { ... } -TEST_F(FooTest, Uvw) { ... } - -TEST_F(BarTest, DefDeathTest) { ... } -TEST_F(BarTest, Xyz) { ... } -``` - -Since `FooTest.AbcDeathTest` needs to run before `BarTest.Xyz`, and we don't -interleave tests from different test suites, we need to run all tests in the -`FooTest` case before running any test in the `BarTest` case. This contradicts -with the requirement to run `BarTest.DefDeathTest` before `FooTest.Uvw`. - -## But I don't like calling my entire test suite \*DeathTest when it contains both death tests and non-death tests. What do I do? - -You don't have to, but if you like, you may split up the test suite into -`FooTest` and `FooDeathTest`, where the names make it clear that they are -related: - -```c++ -class FooTest : public ::testing::Test { ... }; - -TEST_F(FooTest, Abc) { ... } -TEST_F(FooTest, Def) { ... } - -using FooDeathTest = FooTest; - -TEST_F(FooDeathTest, Uvw) { ... EXPECT_DEATH(...) ... } -TEST_F(FooDeathTest, Xyz) { ... ASSERT_DEATH(...) ... } -``` - -## GoogleTest prints the LOG messages in a death test's child process only when the test fails. How can I see the LOG messages when the death test succeeds? - -Printing the LOG messages generated by the statement inside `EXPECT_DEATH()` -makes it harder to search for real problems in the parent's log. Therefore, -GoogleTest only prints them when the death test has failed. - -If you really need to see such LOG messages, a workaround is to temporarily -break the death test (e.g. by changing the regex pattern it is expected to -match). Admittedly, this is a hack. We'll consider a more permanent solution -after the fork-and-exec-style death tests are implemented. - -## The compiler complains about `no match for 'operator<<'` when I use an assertion. What gives? - -If you use a user-defined type `FooType` in an assertion, you must make sure -there is an `std::ostream& operator<<(std::ostream&, const FooType&)` function -defined such that we can print a value of `FooType`. - -In addition, if `FooType` is declared in a name space, the `<<` operator also -needs to be defined in the *same* name space. See -[Tip of the Week #49](http://abseil.io/tips/49) for details. - -## How do I suppress the memory leak messages on Windows? - -Since the statically initialized GoogleTest singleton requires allocations on -the heap, the Visual C++ memory leak detector will report memory leaks at the -end of the program run. The easiest way to avoid this is to use the -`_CrtMemCheckpoint` and `_CrtMemDumpAllObjectsSince` calls to not report any -statically initialized heap objects. See MSDN for more details and additional -heap check/debug routines. - -## How can my code detect if it is running in a test? - -If you write code that sniffs whether it's running in a test and does different -things accordingly, you are leaking test-only logic into production code and -there is no easy way to ensure that the test-only code paths aren't run by -mistake in production. Such cleverness also leads to -[Heisenbugs](https://en.wikipedia.org/wiki/Heisenbug). Therefore we strongly -advise against the practice, and GoogleTest doesn't provide a way to do it. - -In general, the recommended way to cause the code to behave differently under -test is [Dependency Injection](http://en.wikipedia.org/wiki/Dependency_injection). You can inject -different functionality from the test and from the production code. Since your -production code doesn't link in the for-test logic at all (the -[`testonly`](http://docs.bazel.build/versions/master/be/common-definitions.html#common.testonly) attribute for BUILD targets helps to ensure -that), there is no danger in accidentally running it. - -However, if you *really*, *really*, *really* have no choice, and if you follow -the rule of ending your test program names with `_test`, you can use the -*horrible* hack of sniffing your executable name (`argv[0]` in `main()`) to know -whether the code is under test. - -## How do I temporarily disable a test? - -If you have a broken test that you cannot fix right away, you can add the -`DISABLED_` prefix to its name. This will exclude it from execution. This is -better than commenting out the code or using `#if 0`, as disabled tests are -still compiled (and thus won't rot). - -To include disabled tests in test execution, just invoke the test program with -the `--gtest_also_run_disabled_tests` flag. - -## Is it OK if I have two separate `TEST(Foo, Bar)` test methods defined in different namespaces? - -Yes. - -The rule is **all test methods in the same test suite must use the same fixture -class.** This means that the following is **allowed** because both tests use the -same fixture class (`::testing::Test`). - -```c++ -namespace foo { -TEST(CoolTest, DoSomething) { - SUCCEED(); -} -} // namespace foo - -namespace bar { -TEST(CoolTest, DoSomething) { - SUCCEED(); -} -} // namespace bar -``` - -However, the following code is **not allowed** and will produce a runtime error -from GoogleTest because the test methods are using different test fixture -classes with the same test suite name. - -```c++ -namespace foo { -class CoolTest : public ::testing::Test {}; // Fixture foo::CoolTest -TEST_F(CoolTest, DoSomething) { - SUCCEED(); -} -} // namespace foo - -namespace bar { -class CoolTest : public ::testing::Test {}; // Fixture: bar::CoolTest -TEST_F(CoolTest, DoSomething) { - SUCCEED(); -} -} // namespace bar -``` diff --git a/tests/lib/docs/gmock_cheat_sheet.md b/tests/lib/docs/gmock_cheat_sheet.md deleted file mode 100644 index 67d075dd9e..0000000000 --- a/tests/lib/docs/gmock_cheat_sheet.md +++ /dev/null @@ -1,241 +0,0 @@ -# gMock Cheat Sheet - -## Defining a Mock Class - -### Mocking a Normal Class {#MockClass} - -Given - -```cpp -class Foo { - public: - virtual ~Foo(); - virtual int GetSize() const = 0; - virtual string Describe(const char* name) = 0; - virtual string Describe(int type) = 0; - virtual bool Process(Bar elem, int count) = 0; -}; -``` - -(note that `~Foo()` **must** be virtual) we can define its mock as - -```cpp -#include "gmock/gmock.h" - -class MockFoo : public Foo { - public: - MOCK_METHOD(int, GetSize, (), (const, override)); - MOCK_METHOD(string, Describe, (const char* name), (override)); - MOCK_METHOD(string, Describe, (int type), (override)); - MOCK_METHOD(bool, Process, (Bar elem, int count), (override)); -}; -``` - -To create a "nice" mock, which ignores all uninteresting calls, a "naggy" mock, -which warns on all uninteresting calls, or a "strict" mock, which treats them as -failures: - -```cpp -using ::testing::NiceMock; -using ::testing::NaggyMock; -using ::testing::StrictMock; - -NiceMock nice_foo; // The type is a subclass of MockFoo. -NaggyMock naggy_foo; // The type is a subclass of MockFoo. -StrictMock strict_foo; // The type is a subclass of MockFoo. -``` - -{: .callout .note} -**Note:** A mock object is currently naggy by default. We may make it nice by -default in the future. - -### Mocking a Class Template {#MockTemplate} - -Class templates can be mocked just like any class. - -To mock - -```cpp -template -class StackInterface { - public: - virtual ~StackInterface(); - virtual int GetSize() const = 0; - virtual void Push(const Elem& x) = 0; -}; -``` - -(note that all member functions that are mocked, including `~StackInterface()` -**must** be virtual). - -```cpp -template -class MockStack : public StackInterface { - public: - MOCK_METHOD(int, GetSize, (), (const, override)); - MOCK_METHOD(void, Push, (const Elem& x), (override)); -}; -``` - -### Specifying Calling Conventions for Mock Functions - -If your mock function doesn't use the default calling convention, you can -specify it by adding `Calltype(convention)` to `MOCK_METHOD`'s 4th parameter. -For example, - -```cpp - MOCK_METHOD(bool, Foo, (int n), (Calltype(STDMETHODCALLTYPE))); - MOCK_METHOD(int, Bar, (double x, double y), - (const, Calltype(STDMETHODCALLTYPE))); -``` - -where `STDMETHODCALLTYPE` is defined by `` on Windows. - -## Using Mocks in Tests {#UsingMocks} - -The typical work flow is: - -1. Import the gMock names you need to use. All gMock symbols are in the - `testing` namespace unless they are macros or otherwise noted. -2. Create the mock objects. -3. Optionally, set the default actions of the mock objects. -4. Set your expectations on the mock objects (How will they be called? What - will they do?). -5. Exercise code that uses the mock objects; if necessary, check the result - using googletest assertions. -6. When a mock object is destructed, gMock automatically verifies that all - expectations on it have been satisfied. - -Here's an example: - -```cpp -using ::testing::Return; // #1 - -TEST(BarTest, DoesThis) { - MockFoo foo; // #2 - - ON_CALL(foo, GetSize()) // #3 - .WillByDefault(Return(1)); - // ... other default actions ... - - EXPECT_CALL(foo, Describe(5)) // #4 - .Times(3) - .WillRepeatedly(Return("Category 5")); - // ... other expectations ... - - EXPECT_EQ(MyProductionFunction(&foo), "good"); // #5 -} // #6 -``` - -## Setting Default Actions {#OnCall} - -gMock has a **built-in default action** for any function that returns `void`, -`bool`, a numeric value, or a pointer. In C++11, it will additionally returns -the default-constructed value, if one exists for the given type. - -To customize the default action for functions with return type `T`, use -[`DefaultValue`](reference/mocking.md#DefaultValue). For example: - -```cpp - // Sets the default action for return type std::unique_ptr to - // creating a new Buzz every time. - DefaultValue>::SetFactory( - [] { return MakeUnique(AccessLevel::kInternal); }); - - // When this fires, the default action of MakeBuzz() will run, which - // will return a new Buzz object. - EXPECT_CALL(mock_buzzer_, MakeBuzz("hello")).Times(AnyNumber()); - - auto buzz1 = mock_buzzer_.MakeBuzz("hello"); - auto buzz2 = mock_buzzer_.MakeBuzz("hello"); - EXPECT_NE(buzz1, nullptr); - EXPECT_NE(buzz2, nullptr); - EXPECT_NE(buzz1, buzz2); - - // Resets the default action for return type std::unique_ptr, - // to avoid interfere with other tests. - DefaultValue>::Clear(); -``` - -To customize the default action for a particular method of a specific mock -object, use [`ON_CALL`](reference/mocking.md#ON_CALL). `ON_CALL` has a similar -syntax to `EXPECT_CALL`, but it is used for setting default behaviors when you -do not require that the mock method is called. See -[Knowing When to Expect](gmock_cook_book.md#UseOnCall) for a more detailed -discussion. - -## Setting Expectations {#ExpectCall} - -See [`EXPECT_CALL`](reference/mocking.md#EXPECT_CALL) in the Mocking Reference. - -## Matchers {#MatcherList} - -See the [Matchers Reference](reference/matchers.md). - -## Actions {#ActionList} - -See the [Actions Reference](reference/actions.md). - -## Cardinalities {#CardinalityList} - -See the [`Times` clause](reference/mocking.md#EXPECT_CALL.Times) of -`EXPECT_CALL` in the Mocking Reference. - -## Expectation Order - -By default, expectations can be matched in *any* order. If some or all -expectations must be matched in a given order, you can use the -[`After` clause](reference/mocking.md#EXPECT_CALL.After) or -[`InSequence` clause](reference/mocking.md#EXPECT_CALL.InSequence) of -`EXPECT_CALL`, or use an [`InSequence` object](reference/mocking.md#InSequence). - -## Verifying and Resetting a Mock - -gMock will verify the expectations on a mock object when it is destructed, or -you can do it earlier: - -```cpp -using ::testing::Mock; -... -// Verifies and removes the expectations on mock_obj; -// returns true if and only if successful. -Mock::VerifyAndClearExpectations(&mock_obj); -... -// Verifies and removes the expectations on mock_obj; -// also removes the default actions set by ON_CALL(); -// returns true if and only if successful. -Mock::VerifyAndClear(&mock_obj); -``` - -Do not set new expectations after verifying and clearing a mock after its use. -Setting expectations after code that exercises the mock has undefined behavior. -See [Using Mocks in Tests](gmock_for_dummies.md#using-mocks-in-tests) for more -information. - -You can also tell gMock that a mock object can be leaked and doesn't need to be -verified: - -```cpp -Mock::AllowLeak(&mock_obj); -``` - -## Mock Classes - -gMock defines a convenient mock class template - -```cpp -class MockFunction { - public: - MOCK_METHOD(R, Call, (A1, ..., An)); -}; -``` - -See this [recipe](gmock_cook_book.md#UsingCheckPoints) for one application of -it. - -## Flags - -| Flag | Description | -| :----------------------------- | :---------------------------------------- | -| `--gmock_catch_leaked_mocks=0` | Don't report leaked mock objects as failures. | -| `--gmock_verbose=LEVEL` | Sets the default verbosity level (`info`, `warning`, or `error`) of Google Mock messages. | diff --git a/tests/lib/docs/gmock_cook_book.md b/tests/lib/docs/gmock_cook_book.md deleted file mode 100644 index 8a11d864f2..0000000000 --- a/tests/lib/docs/gmock_cook_book.md +++ /dev/null @@ -1,4342 +0,0 @@ -# gMock Cookbook - -You can find recipes for using gMock here. If you haven't yet, please read -[the dummy guide](gmock_for_dummies.md) first to make sure you understand the -basics. - -{: .callout .note} -**Note:** gMock lives in the `testing` name space. For readability, it is -recommended to write `using ::testing::Foo;` once in your file before using the -name `Foo` defined by gMock. We omit such `using` statements in this section for -brevity, but you should do it in your own code. - -## Creating Mock Classes - -Mock classes are defined as normal classes, using the `MOCK_METHOD` macro to -generate mocked methods. The macro gets 3 or 4 parameters: - -```cpp -class MyMock { - public: - MOCK_METHOD(ReturnType, MethodName, (Args...)); - MOCK_METHOD(ReturnType, MethodName, (Args...), (Specs...)); -}; -``` - -The first 3 parameters are simply the method declaration, split into 3 parts. -The 4th parameter accepts a closed list of qualifiers, which affect the -generated method: - -* **`const`** - Makes the mocked method a `const` method. Required if - overriding a `const` method. -* **`override`** - Marks the method with `override`. Recommended if overriding - a `virtual` method. -* **`noexcept`** - Marks the method with `noexcept`. Required if overriding a - `noexcept` method. -* **`Calltype(...)`** - Sets the call type for the method (e.g. to - `STDMETHODCALLTYPE`), useful in Windows. -* **`ref(...)`** - Marks the method with the reference qualification - specified. Required if overriding a method that has reference - qualifications. Eg `ref(&)` or `ref(&&)`. - -### Dealing with unprotected commas - -Unprotected commas, i.e. commas which are not surrounded by parentheses, prevent -`MOCK_METHOD` from parsing its arguments correctly: - -{: .bad} -```cpp -class MockFoo { - public: - MOCK_METHOD(std::pair, GetPair, ()); // Won't compile! - MOCK_METHOD(bool, CheckMap, (std::map, bool)); // Won't compile! -}; -``` - -Solution 1 - wrap with parentheses: - -{: .good} -```cpp -class MockFoo { - public: - MOCK_METHOD((std::pair), GetPair, ()); - MOCK_METHOD(bool, CheckMap, ((std::map), bool)); -}; -``` - -Note that wrapping a return or argument type with parentheses is, in general, -invalid C++. `MOCK_METHOD` removes the parentheses. - -Solution 2 - define an alias: - -{: .good} -```cpp -class MockFoo { - public: - using BoolAndInt = std::pair; - MOCK_METHOD(BoolAndInt, GetPair, ()); - using MapIntDouble = std::map; - MOCK_METHOD(bool, CheckMap, (MapIntDouble, bool)); -}; -``` - -### Mocking Private or Protected Methods - -You must always put a mock method definition (`MOCK_METHOD`) in a `public:` -section of the mock class, regardless of the method being mocked being `public`, -`protected`, or `private` in the base class. This allows `ON_CALL` and -`EXPECT_CALL` to reference the mock function from outside of the mock class. -(Yes, C++ allows a subclass to change the access level of a virtual function in -the base class.) Example: - -```cpp -class Foo { - public: - ... - virtual bool Transform(Gadget* g) = 0; - - protected: - virtual void Resume(); - - private: - virtual int GetTimeOut(); -}; - -class MockFoo : public Foo { - public: - ... - MOCK_METHOD(bool, Transform, (Gadget* g), (override)); - - // The following must be in the public section, even though the - // methods are protected or private in the base class. - MOCK_METHOD(void, Resume, (), (override)); - MOCK_METHOD(int, GetTimeOut, (), (override)); -}; -``` - -### Mocking Overloaded Methods - -You can mock overloaded functions as usual. No special attention is required: - -```cpp -class Foo { - ... - - // Must be virtual as we'll inherit from Foo. - virtual ~Foo(); - - // Overloaded on the types and/or numbers of arguments. - virtual int Add(Element x); - virtual int Add(int times, Element x); - - // Overloaded on the const-ness of this object. - virtual Bar& GetBar(); - virtual const Bar& GetBar() const; -}; - -class MockFoo : public Foo { - ... - MOCK_METHOD(int, Add, (Element x), (override)); - MOCK_METHOD(int, Add, (int times, Element x), (override)); - - MOCK_METHOD(Bar&, GetBar, (), (override)); - MOCK_METHOD(const Bar&, GetBar, (), (const, override)); -}; -``` - -{: .callout .note} -**Note:** if you don't mock all versions of the overloaded method, the compiler -will give you a warning about some methods in the base class being hidden. To -fix that, use `using` to bring them in scope: - -```cpp -class MockFoo : public Foo { - ... - using Foo::Add; - MOCK_METHOD(int, Add, (Element x), (override)); - // We don't want to mock int Add(int times, Element x); - ... -}; -``` - -### Mocking Class Templates - -You can mock class templates just like any class. - -```cpp -template -class StackInterface { - ... - // Must be virtual as we'll inherit from StackInterface. - virtual ~StackInterface(); - - virtual int GetSize() const = 0; - virtual void Push(const Elem& x) = 0; -}; - -template -class MockStack : public StackInterface { - ... - MOCK_METHOD(int, GetSize, (), (override)); - MOCK_METHOD(void, Push, (const Elem& x), (override)); -}; -``` - -### Mocking Non-virtual Methods {#MockingNonVirtualMethods} - -gMock can mock non-virtual functions to be used in Hi-perf dependency injection. - -In this case, instead of sharing a common base class with the real class, your -mock class will be *unrelated* to the real class, but contain methods with the -same signatures. The syntax for mocking non-virtual methods is the *same* as -mocking virtual methods (just don't add `override`): - -```cpp -// A simple packet stream class. None of its members is virtual. -class ConcretePacketStream { - public: - void AppendPacket(Packet* new_packet); - const Packet* GetPacket(size_t packet_number) const; - size_t NumberOfPackets() const; - ... -}; - -// A mock packet stream class. It inherits from no other, but defines -// GetPacket() and NumberOfPackets(). -class MockPacketStream { - public: - MOCK_METHOD(const Packet*, GetPacket, (size_t packet_number), (const)); - MOCK_METHOD(size_t, NumberOfPackets, (), (const)); - ... -}; -``` - -Note that the mock class doesn't define `AppendPacket()`, unlike the real class. -That's fine as long as the test doesn't need to call it. - -Next, you need a way to say that you want to use `ConcretePacketStream` in -production code, and use `MockPacketStream` in tests. Since the functions are -not virtual and the two classes are unrelated, you must specify your choice at -*compile time* (as opposed to run time). - -One way to do it is to templatize your code that needs to use a packet stream. -More specifically, you will give your code a template type argument for the type -of the packet stream. In production, you will instantiate your template with -`ConcretePacketStream` as the type argument. In tests, you will instantiate the -same template with `MockPacketStream`. For example, you may write: - -```cpp -template -void CreateConnection(PacketStream* stream) { ... } - -template -class PacketReader { - public: - void ReadPackets(PacketStream* stream, size_t packet_num); -}; -``` - -Then you can use `CreateConnection()` and -`PacketReader` in production code, and use -`CreateConnection()` and `PacketReader` in -tests. - -```cpp - MockPacketStream mock_stream; - EXPECT_CALL(mock_stream, ...)...; - .. set more expectations on mock_stream ... - PacketReader reader(&mock_stream); - ... exercise reader ... -``` - -### Mocking Free Functions - -It is not possible to directly mock a free function (i.e. a C-style function or -a static method). If you need to, you can rewrite your code to use an interface -(abstract class). - -Instead of calling a free function (say, `OpenFile`) directly, introduce an -interface for it and have a concrete subclass that calls the free function: - -```cpp -class FileInterface { - public: - ... - virtual bool Open(const char* path, const char* mode) = 0; -}; - -class File : public FileInterface { - public: - ... - bool Open(const char* path, const char* mode) override { - return OpenFile(path, mode); - } -}; -``` - -Your code should talk to `FileInterface` to open a file. Now it's easy to mock -out the function. - -This may seem like a lot of hassle, but in practice you often have multiple -related functions that you can put in the same interface, so the per-function -syntactic overhead will be much lower. - -If you are concerned about the performance overhead incurred by virtual -functions, and profiling confirms your concern, you can combine this with the -recipe for [mocking non-virtual methods](#MockingNonVirtualMethods). - -### Old-Style `MOCK_METHODn` Macros - -Before the generic `MOCK_METHOD` macro -[was introduced in 2018](https://github.com/google/googletest/commit/c5f08bf91944ce1b19bcf414fa1760e69d20afc2), -mocks where created using a family of macros collectively called `MOCK_METHODn`. -These macros are still supported, though migration to the new `MOCK_METHOD` is -recommended. - -The macros in the `MOCK_METHODn` family differ from `MOCK_METHOD`: - -* The general structure is `MOCK_METHODn(MethodName, ReturnType(Args))`, - instead of `MOCK_METHOD(ReturnType, MethodName, (Args))`. -* The number `n` must equal the number of arguments. -* When mocking a const method, one must use `MOCK_CONST_METHODn`. -* When mocking a class template, the macro name must be suffixed with `_T`. -* In order to specify the call type, the macro name must be suffixed with - `_WITH_CALLTYPE`, and the call type is the first macro argument. - -Old macros and their new equivalents: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simple
OldMOCK_METHOD1(Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int))
Const Method
OldMOCK_CONST_METHOD1(Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int), (const))
Method in a Class Template
OldMOCK_METHOD1_T(Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int))
Const Method in a Class Template
OldMOCK_CONST_METHOD1_T(Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int), (const))
Method with Call Type
OldMOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int), (Calltype(STDMETHODCALLTYPE)))
Const Method with Call Type
OldMOCK_CONST_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int), (const, Calltype(STDMETHODCALLTYPE)))
Method with Call Type in a Class Template
OldMOCK_METHOD1_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int), (Calltype(STDMETHODCALLTYPE)))
Const Method with Call Type in a Class Template
OldMOCK_CONST_METHOD1_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, bool(int))
NewMOCK_METHOD(bool, Foo, (int), (const, Calltype(STDMETHODCALLTYPE)))
- -### The Nice, the Strict, and the Naggy {#NiceStrictNaggy} - -If a mock method has no `EXPECT_CALL` spec but is called, we say that it's an -"uninteresting call", and the default action (which can be specified using -`ON_CALL()`) of the method will be taken. Currently, an uninteresting call will -also by default cause gMock to print a warning. - -However, sometimes you may want to ignore these uninteresting calls, and -sometimes you may want to treat them as errors. gMock lets you make the decision -on a per-mock-object basis. - -Suppose your test uses a mock class `MockFoo`: - -```cpp -TEST(...) { - MockFoo mock_foo; - EXPECT_CALL(mock_foo, DoThis()); - ... code that uses mock_foo ... -} -``` - -If a method of `mock_foo` other than `DoThis()` is called, you will get a -warning. However, if you rewrite your test to use `NiceMock` instead, -you can suppress the warning: - -```cpp -using ::testing::NiceMock; - -TEST(...) { - NiceMock mock_foo; - EXPECT_CALL(mock_foo, DoThis()); - ... code that uses mock_foo ... -} -``` - -`NiceMock` is a subclass of `MockFoo`, so it can be used wherever -`MockFoo` is accepted. - -It also works if `MockFoo`'s constructor takes some arguments, as -`NiceMock` "inherits" `MockFoo`'s constructors: - -```cpp -using ::testing::NiceMock; - -TEST(...) { - NiceMock mock_foo(5, "hi"); // Calls MockFoo(5, "hi"). - EXPECT_CALL(mock_foo, DoThis()); - ... code that uses mock_foo ... -} -``` - -The usage of `StrictMock` is similar, except that it makes all uninteresting -calls failures: - -```cpp -using ::testing::StrictMock; - -TEST(...) { - StrictMock mock_foo; - EXPECT_CALL(mock_foo, DoThis()); - ... code that uses mock_foo ... - - // The test will fail if a method of mock_foo other than DoThis() - // is called. -} -``` - -{: .callout .note} -NOTE: `NiceMock` and `StrictMock` only affects *uninteresting* calls (calls of -*methods* with no expectations); they do not affect *unexpected* calls (calls of -methods with expectations, but they don't match). See -[Understanding Uninteresting vs Unexpected Calls](#uninteresting-vs-unexpected). - -There are some caveats though (sadly they are side effects of C++'s -limitations): - -1. `NiceMock` and `StrictMock` only work for mock methods - defined using the `MOCK_METHOD` macro **directly** in the `MockFoo` class. - If a mock method is defined in a **base class** of `MockFoo`, the "nice" or - "strict" modifier may not affect it, depending on the compiler. In - particular, nesting `NiceMock` and `StrictMock` (e.g. - `NiceMock >`) is **not** supported. -2. `NiceMock` and `StrictMock` may not work correctly if the - destructor of `MockFoo` is not virtual. We would like to fix this, but it - requires cleaning up existing tests. - -Finally, you should be **very cautious** about when to use naggy or strict -mocks, as they tend to make tests more brittle and harder to maintain. When you -refactor your code without changing its externally visible behavior, ideally you -shouldn't need to update any tests. If your code interacts with a naggy mock, -however, you may start to get spammed with warnings as the result of your -change. Worse, if your code interacts with a strict mock, your tests may start -to fail and you'll be forced to fix them. Our general recommendation is to use -nice mocks (not yet the default) most of the time, use naggy mocks (the current -default) when developing or debugging tests, and use strict mocks only as the -last resort. - -### Simplifying the Interface without Breaking Existing Code {#SimplerInterfaces} - -Sometimes a method has a long list of arguments that is mostly uninteresting. -For example: - -```cpp -class LogSink { - public: - ... - virtual void send(LogSeverity severity, const char* full_filename, - const char* base_filename, int line, - const struct tm* tm_time, - const char* message, size_t message_len) = 0; -}; -``` - -This method's argument list is lengthy and hard to work with (the `message` -argument is not even 0-terminated). If we mock it as is, using the mock will be -awkward. If, however, we try to simplify this interface, we'll need to fix all -clients depending on it, which is often infeasible. - -The trick is to redispatch the method in the mock class: - -```cpp -class ScopedMockLog : public LogSink { - public: - ... - void send(LogSeverity severity, const char* full_filename, - const char* base_filename, int line, const tm* tm_time, - const char* message, size_t message_len) override { - // We are only interested in the log severity, full file name, and - // log message. - Log(severity, full_filename, std::string(message, message_len)); - } - - // Implements the mock method: - // - // void Log(LogSeverity severity, - // const string& file_path, - // const string& message); - MOCK_METHOD(void, Log, - (LogSeverity severity, const string& file_path, - const string& message)); -}; -``` - -By defining a new mock method with a trimmed argument list, we make the mock -class more user-friendly. - -This technique may also be applied to make overloaded methods more amenable to -mocking. For example, when overloads have been used to implement default -arguments: - -```cpp -class MockTurtleFactory : public TurtleFactory { - public: - Turtle* MakeTurtle(int length, int weight) override { ... } - Turtle* MakeTurtle(int length, int weight, int speed) override { ... } - - // the above methods delegate to this one: - MOCK_METHOD(Turtle*, DoMakeTurtle, ()); -}; -``` - -This allows tests that don't care which overload was invoked to avoid specifying -argument matchers: - -```cpp -ON_CALL(factory, DoMakeTurtle) - .WillByDefault(Return(MakeMockTurtle())); -``` - -### Alternative to Mocking Concrete Classes - -Often you may find yourself using classes that don't implement interfaces. In -order to test your code that uses such a class (let's call it `Concrete`), you -may be tempted to make the methods of `Concrete` virtual and then mock it. - -Try not to do that. - -Making a non-virtual function virtual is a big decision. It creates an extension -point where subclasses can tweak your class' behavior. This weakens your control -on the class because now it's harder to maintain the class invariants. You -should make a function virtual only when there is a valid reason for a subclass -to override it. - -Mocking concrete classes directly is problematic as it creates a tight coupling -between the class and the tests - any small change in the class may invalidate -your tests and make test maintenance a pain. - -To avoid such problems, many programmers have been practicing "coding to -interfaces": instead of talking to the `Concrete` class, your code would define -an interface and talk to it. Then you implement that interface as an adaptor on -top of `Concrete`. In tests, you can easily mock that interface to observe how -your code is doing. - -This technique incurs some overhead: - -* You pay the cost of virtual function calls (usually not a problem). -* There is more abstraction for the programmers to learn. - -However, it can also bring significant benefits in addition to better -testability: - -* `Concrete`'s API may not fit your problem domain very well, as you may not - be the only client it tries to serve. By designing your own interface, you - have a chance to tailor it to your need - you may add higher-level - functionalities, rename stuff, etc instead of just trimming the class. This - allows you to write your code (user of the interface) in a more natural way, - which means it will be more readable, more maintainable, and you'll be more - productive. -* If `Concrete`'s implementation ever has to change, you don't have to rewrite - everywhere it is used. Instead, you can absorb the change in your - implementation of the interface, and your other code and tests will be - insulated from this change. - -Some people worry that if everyone is practicing this technique, they will end -up writing lots of redundant code. This concern is totally understandable. -However, there are two reasons why it may not be the case: - -* Different projects may need to use `Concrete` in different ways, so the best - interfaces for them will be different. Therefore, each of them will have its - own domain-specific interface on top of `Concrete`, and they will not be the - same code. -* If enough projects want to use the same interface, they can always share it, - just like they have been sharing `Concrete`. You can check in the interface - and the adaptor somewhere near `Concrete` (perhaps in a `contrib` - sub-directory) and let many projects use it. - -You need to weigh the pros and cons carefully for your particular problem, but -I'd like to assure you that the Java community has been practicing this for a -long time and it's a proven effective technique applicable in a wide variety of -situations. :-) - -### Delegating Calls to a Fake {#DelegatingToFake} - -Some times you have a non-trivial fake implementation of an interface. For -example: - -```cpp -class Foo { - public: - virtual ~Foo() {} - virtual char DoThis(int n) = 0; - virtual void DoThat(const char* s, int* p) = 0; -}; - -class FakeFoo : public Foo { - public: - char DoThis(int n) override { - return (n > 0) ? '+' : - (n < 0) ? '-' : '0'; - } - - void DoThat(const char* s, int* p) override { - *p = strlen(s); - } -}; -``` - -Now you want to mock this interface such that you can set expectations on it. -However, you also want to use `FakeFoo` for the default behavior, as duplicating -it in the mock object is, well, a lot of work. - -When you define the mock class using gMock, you can have it delegate its default -action to a fake class you already have, using this pattern: - -```cpp -class MockFoo : public Foo { - public: - // Normal mock method definitions using gMock. - MOCK_METHOD(char, DoThis, (int n), (override)); - MOCK_METHOD(void, DoThat, (const char* s, int* p), (override)); - - // Delegates the default actions of the methods to a FakeFoo object. - // This must be called *before* the custom ON_CALL() statements. - void DelegateToFake() { - ON_CALL(*this, DoThis).WillByDefault([this](int n) { - return fake_.DoThis(n); - }); - ON_CALL(*this, DoThat).WillByDefault([this](const char* s, int* p) { - fake_.DoThat(s, p); - }); - } - - private: - FakeFoo fake_; // Keeps an instance of the fake in the mock. -}; -``` - -With that, you can use `MockFoo` in your tests as usual. Just remember that if -you don't explicitly set an action in an `ON_CALL()` or `EXPECT_CALL()`, the -fake will be called upon to do it.: - -```cpp -using ::testing::_; - -TEST(AbcTest, Xyz) { - MockFoo foo; - - foo.DelegateToFake(); // Enables the fake for delegation. - - // Put your ON_CALL(foo, ...)s here, if any. - - // No action specified, meaning to use the default action. - EXPECT_CALL(foo, DoThis(5)); - EXPECT_CALL(foo, DoThat(_, _)); - - int n = 0; - EXPECT_EQ('+', foo.DoThis(5)); // FakeFoo::DoThis() is invoked. - foo.DoThat("Hi", &n); // FakeFoo::DoThat() is invoked. - EXPECT_EQ(2, n); -} -``` - -**Some tips:** - -* If you want, you can still override the default action by providing your own - `ON_CALL()` or using `.WillOnce()` / `.WillRepeatedly()` in `EXPECT_CALL()`. -* In `DelegateToFake()`, you only need to delegate the methods whose fake - implementation you intend to use. - -* The general technique discussed here works for overloaded methods, but - you'll need to tell the compiler which version you mean. To disambiguate a - mock function (the one you specify inside the parentheses of `ON_CALL()`), - use [this technique](#SelectOverload); to disambiguate a fake function (the - one you place inside `Invoke()`), use a `static_cast` to specify the - function's type. For instance, if class `Foo` has methods `char DoThis(int - n)` and `bool DoThis(double x) const`, and you want to invoke the latter, - you need to write `Invoke(&fake_, static_cast(&FakeFoo::DoThis))` instead of `Invoke(&fake_, &FakeFoo::DoThis)` - (The strange-looking thing inside the angled brackets of `static_cast` is - the type of a function pointer to the second `DoThis()` method.). - -* Having to mix a mock and a fake is often a sign of something gone wrong. - Perhaps you haven't got used to the interaction-based way of testing yet. Or - perhaps your interface is taking on too many roles and should be split up. - Therefore, **don't abuse this**. We would only recommend to do it as an - intermediate step when you are refactoring your code. - -Regarding the tip on mixing a mock and a fake, here's an example on why it may -be a bad sign: Suppose you have a class `System` for low-level system -operations. In particular, it does file and I/O operations. And suppose you want -to test how your code uses `System` to do I/O, and you just want the file -operations to work normally. If you mock out the entire `System` class, you'll -have to provide a fake implementation for the file operation part, which -suggests that `System` is taking on too many roles. - -Instead, you can define a `FileOps` interface and an `IOOps` interface and split -`System`'s functionalities into the two. Then you can mock `IOOps` without -mocking `FileOps`. - -### Delegating Calls to a Real Object - -When using testing doubles (mocks, fakes, stubs, and etc), sometimes their -behaviors will differ from those of the real objects. This difference could be -either intentional (as in simulating an error such that you can test the error -handling code) or unintentional. If your mocks have different behaviors than the -real objects by mistake, you could end up with code that passes the tests but -fails in production. - -You can use the *delegating-to-real* technique to ensure that your mock has the -same behavior as the real object while retaining the ability to validate calls. -This technique is very similar to the [delegating-to-fake](#DelegatingToFake) -technique, the difference being that we use a real object instead of a fake. -Here's an example: - -```cpp -using ::testing::AtLeast; - -class MockFoo : public Foo { - public: - MockFoo() { - // By default, all calls are delegated to the real object. - ON_CALL(*this, DoThis).WillByDefault([this](int n) { - return real_.DoThis(n); - }); - ON_CALL(*this, DoThat).WillByDefault([this](const char* s, int* p) { - real_.DoThat(s, p); - }); - ... - } - MOCK_METHOD(char, DoThis, ...); - MOCK_METHOD(void, DoThat, ...); - ... - private: - Foo real_; -}; - -... - MockFoo mock; - EXPECT_CALL(mock, DoThis()) - .Times(3); - EXPECT_CALL(mock, DoThat("Hi")) - .Times(AtLeast(1)); - ... use mock in test ... -``` - -With this, gMock will verify that your code made the right calls (with the right -arguments, in the right order, called the right number of times, etc), and a -real object will answer the calls (so the behavior will be the same as in -production). This gives you the best of both worlds. - -### Delegating Calls to a Parent Class - -Ideally, you should code to interfaces, whose methods are all pure virtual. In -reality, sometimes you do need to mock a virtual method that is not pure (i.e, -it already has an implementation). For example: - -```cpp -class Foo { - public: - virtual ~Foo(); - - virtual void Pure(int n) = 0; - virtual int Concrete(const char* str) { ... } -}; - -class MockFoo : public Foo { - public: - // Mocking a pure method. - MOCK_METHOD(void, Pure, (int n), (override)); - // Mocking a concrete method. Foo::Concrete() is shadowed. - MOCK_METHOD(int, Concrete, (const char* str), (override)); -}; -``` - -Sometimes you may want to call `Foo::Concrete()` instead of -`MockFoo::Concrete()`. Perhaps you want to do it as part of a stub action, or -perhaps your test doesn't need to mock `Concrete()` at all (but it would be -oh-so painful to have to define a new mock class whenever you don't need to mock -one of its methods). - -You can call `Foo::Concrete()` inside an action by: - -```cpp -... - EXPECT_CALL(foo, Concrete).WillOnce([&foo](const char* str) { - return foo.Foo::Concrete(str); - }); -``` - -or tell the mock object that you don't want to mock `Concrete()`: - -```cpp -... - ON_CALL(foo, Concrete).WillByDefault([&foo](const char* str) { - return foo.Foo::Concrete(str); - }); -``` - -(Why don't we just write `{ return foo.Concrete(str); }`? If you do that, -`MockFoo::Concrete()` will be called (and cause an infinite recursion) since -`Foo::Concrete()` is virtual. That's just how C++ works.) - -## Using Matchers - -### Matching Argument Values Exactly - -You can specify exactly which arguments a mock method is expecting: - -```cpp -using ::testing::Return; -... - EXPECT_CALL(foo, DoThis(5)) - .WillOnce(Return('a')); - EXPECT_CALL(foo, DoThat("Hello", bar)); -``` - -### Using Simple Matchers - -You can use matchers to match arguments that have a certain property: - -```cpp -using ::testing::NotNull; -using ::testing::Return; -... - EXPECT_CALL(foo, DoThis(Ge(5))) // The argument must be >= 5. - .WillOnce(Return('a')); - EXPECT_CALL(foo, DoThat("Hello", NotNull())); - // The second argument must not be NULL. -``` - -A frequently used matcher is `_`, which matches anything: - -```cpp - EXPECT_CALL(foo, DoThat(_, NotNull())); -``` - -### Combining Matchers {#CombiningMatchers} - -You can build complex matchers from existing ones using `AllOf()`, -`AllOfArray()`, `AnyOf()`, `AnyOfArray()` and `Not()`: - -```cpp -using ::testing::AllOf; -using ::testing::Gt; -using ::testing::HasSubstr; -using ::testing::Ne; -using ::testing::Not; -... - // The argument must be > 5 and != 10. - EXPECT_CALL(foo, DoThis(AllOf(Gt(5), - Ne(10)))); - - // The first argument must not contain sub-string "blah". - EXPECT_CALL(foo, DoThat(Not(HasSubstr("blah")), - NULL)); -``` - -Matchers are function objects, and parametrized matchers can be composed just -like any other function. However because their types can be long and rarely -provide meaningful information, it can be easier to express them with C++14 -generic lambdas to avoid specifying types. For example, - -```cpp -using ::testing::Contains; -using ::testing::Property; - -inline constexpr auto HasFoo = [](const auto& f) { - return Property(&MyClass::foo, Contains(f)); -}; -... - EXPECT_THAT(x, HasFoo("blah")); -``` - -### Casting Matchers {#SafeMatcherCast} - -gMock matchers are statically typed, meaning that the compiler can catch your -mistake if you use a matcher of the wrong type (for example, if you use `Eq(5)` -to match a `string` argument). Good for you! - -Sometimes, however, you know what you're doing and want the compiler to give you -some slack. One example is that you have a matcher for `long` and the argument -you want to match is `int`. While the two types aren't exactly the same, there -is nothing really wrong with using a `Matcher` to match an `int` - after -all, we can first convert the `int` argument to a `long` losslessly before -giving it to the matcher. - -To support this need, gMock gives you the `SafeMatcherCast(m)` function. It -casts a matcher `m` to type `Matcher`. To ensure safety, gMock checks that -(let `U` be the type `m` accepts : - -1. Type `T` can be *implicitly* cast to type `U`; -2. When both `T` and `U` are built-in arithmetic types (`bool`, integers, and - floating-point numbers), the conversion from `T` to `U` is not lossy (in - other words, any value representable by `T` can also be represented by `U`); - and -3. When `U` is a reference, `T` must also be a reference (as the underlying - matcher may be interested in the address of the `U` value). - -The code won't compile if any of these conditions isn't met. - -Here's one example: - -```cpp -using ::testing::SafeMatcherCast; - -// A base class and a child class. -class Base { ... }; -class Derived : public Base { ... }; - -class MockFoo : public Foo { - public: - MOCK_METHOD(void, DoThis, (Derived* derived), (override)); -}; - -... - MockFoo foo; - // m is a Matcher we got from somewhere. - EXPECT_CALL(foo, DoThis(SafeMatcherCast(m))); -``` - -If you find `SafeMatcherCast(m)` too limiting, you can use a similar function -`MatcherCast(m)`. The difference is that `MatcherCast` works as long as you -can `static_cast` type `T` to type `U`. - -`MatcherCast` essentially lets you bypass C++'s type system (`static_cast` isn't -always safe as it could throw away information, for example), so be careful not -to misuse/abuse it. - -### Selecting Between Overloaded Functions {#SelectOverload} - -If you expect an overloaded function to be called, the compiler may need some -help on which overloaded version it is. - -To disambiguate functions overloaded on the const-ness of this object, use the -`Const()` argument wrapper. - -```cpp -using ::testing::ReturnRef; - -class MockFoo : public Foo { - ... - MOCK_METHOD(Bar&, GetBar, (), (override)); - MOCK_METHOD(const Bar&, GetBar, (), (const, override)); -}; - -... - MockFoo foo; - Bar bar1, bar2; - EXPECT_CALL(foo, GetBar()) // The non-const GetBar(). - .WillOnce(ReturnRef(bar1)); - EXPECT_CALL(Const(foo), GetBar()) // The const GetBar(). - .WillOnce(ReturnRef(bar2)); -``` - -(`Const()` is defined by gMock and returns a `const` reference to its argument.) - -To disambiguate overloaded functions with the same number of arguments but -different argument types, you may need to specify the exact type of a matcher, -either by wrapping your matcher in `Matcher()`, or using a matcher whose -type is fixed (`TypedEq`, `An()`, etc): - -```cpp -using ::testing::An; -using ::testing::Matcher; -using ::testing::TypedEq; - -class MockPrinter : public Printer { - public: - MOCK_METHOD(void, Print, (int n), (override)); - MOCK_METHOD(void, Print, (char c), (override)); -}; - -TEST(PrinterTest, Print) { - MockPrinter printer; - - EXPECT_CALL(printer, Print(An())); // void Print(int); - EXPECT_CALL(printer, Print(Matcher(Lt(5)))); // void Print(int); - EXPECT_CALL(printer, Print(TypedEq('a'))); // void Print(char); - - printer.Print(3); - printer.Print(6); - printer.Print('a'); -} -``` - -### Performing Different Actions Based on the Arguments - -When a mock method is called, the *last* matching expectation that's still -active will be selected (think "newer overrides older"). So, you can make a -method do different things depending on its argument values like this: - -```cpp -using ::testing::_; -using ::testing::Lt; -using ::testing::Return; -... - // The default case. - EXPECT_CALL(foo, DoThis(_)) - .WillRepeatedly(Return('b')); - // The more specific case. - EXPECT_CALL(foo, DoThis(Lt(5))) - .WillRepeatedly(Return('a')); -``` - -Now, if `foo.DoThis()` is called with a value less than 5, `'a'` will be -returned; otherwise `'b'` will be returned. - -### Matching Multiple Arguments as a Whole - -Sometimes it's not enough to match the arguments individually. For example, we -may want to say that the first argument must be less than the second argument. -The `With()` clause allows us to match all arguments of a mock function as a -whole. For example, - -```cpp -using ::testing::_; -using ::testing::Ne; -using ::testing::Lt; -... - EXPECT_CALL(foo, InRange(Ne(0), _)) - .With(Lt()); -``` - -says that the first argument of `InRange()` must not be 0, and must be less than -the second argument. - -The expression inside `With()` must be a matcher of type `Matcher>`, where `A1`, ..., `An` are the types of the function arguments. - -You can also write `AllArgs(m)` instead of `m` inside `.With()`. The two forms -are equivalent, but `.With(AllArgs(Lt()))` is more readable than `.With(Lt())`. - -You can use `Args(m)` to match the `n` selected arguments (as a -tuple) against `m`. For example, - -```cpp -using ::testing::_; -using ::testing::AllOf; -using ::testing::Args; -using ::testing::Lt; -... - EXPECT_CALL(foo, Blah) - .With(AllOf(Args<0, 1>(Lt()), Args<1, 2>(Lt()))); -``` - -says that `Blah` will be called with arguments `x`, `y`, and `z` where `x < y < -z`. Note that in this example, it wasn't necessary to specify the positional -matchers. - -As a convenience and example, gMock provides some matchers for 2-tuples, -including the `Lt()` matcher above. See -[Multi-argument Matchers](reference/matchers.md#MultiArgMatchers) for the -complete list. - -Note that if you want to pass the arguments to a predicate of your own (e.g. -`.With(Args<0, 1>(Truly(&MyPredicate)))`), that predicate MUST be written to -take a `std::tuple` as its argument; gMock will pass the `n` selected arguments -as *one* single tuple to the predicate. - -### Using Matchers as Predicates - -Have you noticed that a matcher is just a fancy predicate that also knows how to -describe itself? Many existing algorithms take predicates as arguments (e.g. -those defined in STL's `` header), and it would be a shame if gMock -matchers were not allowed to participate. - -Luckily, you can use a matcher where a unary predicate functor is expected by -wrapping it inside the `Matches()` function. For example, - -```cpp -#include -#include - -using ::testing::Matches; -using ::testing::Ge; - -vector v; -... -// How many elements in v are >= 10? -const int count = count_if(v.begin(), v.end(), Matches(Ge(10))); -``` - -Since you can build complex matchers from simpler ones easily using gMock, this -gives you a way to conveniently construct composite predicates (doing the same -using STL's `` header is just painful). For example, here's a -predicate that's satisfied by any number that is >= 0, <= 100, and != 50: - -```cpp -using testing::AllOf; -using testing::Ge; -using testing::Le; -using testing::Matches; -using testing::Ne; -... -Matches(AllOf(Ge(0), Le(100), Ne(50))) -``` - -### Using Matchers in googletest Assertions - -See [`EXPECT_THAT`](reference/assertions.md#EXPECT_THAT) in the Assertions -Reference. - -### Using Predicates as Matchers - -gMock provides a set of built-in matchers for matching arguments with expected -values—see the [Matchers Reference](reference/matchers.md) for more information. -In case you find the built-in set lacking, you can use an arbitrary unary -predicate function or functor as a matcher - as long as the predicate accepts a -value of the type you want. You do this by wrapping the predicate inside the -`Truly()` function, for example: - -```cpp -using ::testing::Truly; - -int IsEven(int n) { return (n % 2) == 0 ? 1 : 0; } -... - // Bar() must be called with an even number. - EXPECT_CALL(foo, Bar(Truly(IsEven))); -``` - -Note that the predicate function / functor doesn't have to return `bool`. It -works as long as the return value can be used as the condition in in statement -`if (condition) ...`. - -### Matching Arguments that Are Not Copyable - -When you do an `EXPECT_CALL(mock_obj, Foo(bar))`, gMock saves away a copy of -`bar`. When `Foo()` is called later, gMock compares the argument to `Foo()` with -the saved copy of `bar`. This way, you don't need to worry about `bar` being -modified or destroyed after the `EXPECT_CALL()` is executed. The same is true -when you use matchers like `Eq(bar)`, `Le(bar)`, and so on. - -But what if `bar` cannot be copied (i.e. has no copy constructor)? You could -define your own matcher function or callback and use it with `Truly()`, as the -previous couple of recipes have shown. Or, you may be able to get away from it -if you can guarantee that `bar` won't be changed after the `EXPECT_CALL()` is -executed. Just tell gMock that it should save a reference to `bar`, instead of a -copy of it. Here's how: - -```cpp -using ::testing::Eq; -using ::testing::Lt; -... - // Expects that Foo()'s argument == bar. - EXPECT_CALL(mock_obj, Foo(Eq(std::ref(bar)))); - - // Expects that Foo()'s argument < bar. - EXPECT_CALL(mock_obj, Foo(Lt(std::ref(bar)))); -``` - -Remember: if you do this, don't change `bar` after the `EXPECT_CALL()`, or the -result is undefined. - -### Validating a Member of an Object - -Often a mock function takes a reference to object as an argument. When matching -the argument, you may not want to compare the entire object against a fixed -object, as that may be over-specification. Instead, you may need to validate a -certain member variable or the result of a certain getter method of the object. -You can do this with `Field()` and `Property()`. More specifically, - -```cpp -Field(&Foo::bar, m) -``` - -is a matcher that matches a `Foo` object whose `bar` member variable satisfies -matcher `m`. - -```cpp -Property(&Foo::baz, m) -``` - -is a matcher that matches a `Foo` object whose `baz()` method returns a value -that satisfies matcher `m`. - -For example: - -| Expression | Description | -| :--------------------------- | :--------------------------------------- | -| `Field(&Foo::number, Ge(3))` | Matches `x` where `x.number >= 3`. | -| `Property(&Foo::name, StartsWith("John "))` | Matches `x` where `x.name()` starts with `"John "`. | - -Note that in `Property(&Foo::baz, ...)`, method `baz()` must take no argument -and be declared as `const`. Don't use `Property()` against member functions that -you do not own, because taking addresses of functions is fragile and generally -not part of the contract of the function. - -`Field()` and `Property()` can also match plain pointers to objects. For -instance, - -```cpp -using ::testing::Field; -using ::testing::Ge; -... -Field(&Foo::number, Ge(3)) -``` - -matches a plain pointer `p` where `p->number >= 3`. If `p` is `NULL`, the match -will always fail regardless of the inner matcher. - -What if you want to validate more than one members at the same time? Remember -that there are [`AllOf()` and `AllOfArray()`](#CombiningMatchers). - -Finally `Field()` and `Property()` provide overloads that take the field or -property names as the first argument to include it in the error message. This -can be useful when creating combined matchers. - -```cpp -using ::testing::AllOf; -using ::testing::Field; -using ::testing::Matcher; -using ::testing::SafeMatcherCast; - -Matcher IsFoo(const Foo& foo) { - return AllOf(Field("some_field", &Foo::some_field, foo.some_field), - Field("other_field", &Foo::other_field, foo.other_field), - Field("last_field", &Foo::last_field, foo.last_field)); -} -``` - -### Validating the Value Pointed to by a Pointer Argument - -C++ functions often take pointers as arguments. You can use matchers like -`IsNull()`, `NotNull()`, and other comparison matchers to match a pointer, but -what if you want to make sure the value *pointed to* by the pointer, instead of -the pointer itself, has a certain property? Well, you can use the `Pointee(m)` -matcher. - -`Pointee(m)` matches a pointer if and only if `m` matches the value the pointer -points to. For example: - -```cpp -using ::testing::Ge; -using ::testing::Pointee; -... - EXPECT_CALL(foo, Bar(Pointee(Ge(3)))); -``` - -expects `foo.Bar()` to be called with a pointer that points to a value greater -than or equal to 3. - -One nice thing about `Pointee()` is that it treats a `NULL` pointer as a match -failure, so you can write `Pointee(m)` instead of - -```cpp -using ::testing::AllOf; -using ::testing::NotNull; -using ::testing::Pointee; -... - AllOf(NotNull(), Pointee(m)) -``` - -without worrying that a `NULL` pointer will crash your test. - -Also, did we tell you that `Pointee()` works with both raw pointers **and** -smart pointers (`std::unique_ptr`, `std::shared_ptr`, etc)? - -What if you have a pointer to pointer? You guessed it - you can use nested -`Pointee()` to probe deeper inside the value. For example, -`Pointee(Pointee(Lt(3)))` matches a pointer that points to a pointer that points -to a number less than 3 (what a mouthful...). - -### Defining a Custom Matcher Class {#CustomMatcherClass} - -Most matchers can be simply defined using [the MATCHER* macros](#NewMatchers), -which are terse and flexible, and produce good error messages. However, these -macros are not very explicit about the interfaces they create and are not always -suitable, especially for matchers that will be widely reused. - -For more advanced cases, you may need to define your own matcher class. A custom -matcher allows you to test a specific invariant property of that object. Let's -take a look at how to do so. - -Imagine you have a mock function that takes an object of type `Foo`, which has -an `int bar()` method and an `int baz()` method. You want to constrain that the -argument's `bar()` value plus its `baz()` value is a given number. (This is an -invariant.) Here's how we can write and use a matcher class to do so: - -```cpp -class BarPlusBazEqMatcher { - public: - using is_gtest_matcher = void; - - explicit BarPlusBazEqMatcher(int expected_sum) - : expected_sum_(expected_sum) {} - - bool MatchAndExplain(const Foo& foo, - std::ostream* /* listener */) const { - return (foo.bar() + foo.baz()) == expected_sum_; - } - - void DescribeTo(std::ostream* os) const { - *os << "bar() + baz() equals " << expected_sum_; - } - - void DescribeNegationTo(std::ostream* os) const { - *os << "bar() + baz() does not equal " << expected_sum_; - } - private: - const int expected_sum_; -}; - -::testing::Matcher BarPlusBazEq(int expected_sum) { - return BarPlusBazEqMatcher(expected_sum); -} - -... - Foo foo; - EXPECT_CALL(foo, BarPlusBazEq(5))...; -``` - -### Matching Containers - -Sometimes an STL container (e.g. list, vector, map, ...) is passed to a mock -function and you may want to validate it. Since most STL containers support the -`==` operator, you can write `Eq(expected_container)` or simply -`expected_container` to match a container exactly. - -Sometimes, though, you may want to be more flexible (for example, the first -element must be an exact match, but the second element can be any positive -number, and so on). Also, containers used in tests often have a small number of -elements, and having to define the expected container out-of-line is a bit of a -hassle. - -You can use the `ElementsAre()` or `UnorderedElementsAre()` matcher in such -cases: - -```cpp -using ::testing::_; -using ::testing::ElementsAre; -using ::testing::Gt; -... - MOCK_METHOD(void, Foo, (const vector& numbers), (override)); -... - EXPECT_CALL(mock, Foo(ElementsAre(1, Gt(0), _, 5))); -``` - -The above matcher says that the container must have 4 elements, which must be 1, -greater than 0, anything, and 5 respectively. - -If you instead write: - -```cpp -using ::testing::_; -using ::testing::Gt; -using ::testing::UnorderedElementsAre; -... - MOCK_METHOD(void, Foo, (const vector& numbers), (override)); -... - EXPECT_CALL(mock, Foo(UnorderedElementsAre(1, Gt(0), _, 5))); -``` - -It means that the container must have 4 elements, which (under some permutation) -must be 1, greater than 0, anything, and 5 respectively. - -As an alternative you can place the arguments in a C-style array and use -`ElementsAreArray()` or `UnorderedElementsAreArray()` instead: - -```cpp -using ::testing::ElementsAreArray; -... - // ElementsAreArray accepts an array of element values. - const int expected_vector1[] = {1, 5, 2, 4, ...}; - EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector1))); - - // Or, an array of element matchers. - Matcher expected_vector2[] = {1, Gt(2), _, 3, ...}; - EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector2))); -``` - -In case the array needs to be dynamically created (and therefore the array size -cannot be inferred by the compiler), you can give `ElementsAreArray()` an -additional argument to specify the array size: - -```cpp -using ::testing::ElementsAreArray; -... - int* const expected_vector3 = new int[count]; - ... fill expected_vector3 with values ... - EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector3, count))); -``` - -Use `Pair` when comparing maps or other associative containers. - -{% raw %} - -```cpp -using testing::ElementsAre; -using testing::Pair; -... - std::map m = {{"a", 1}, {"b", 2}, {"c", 3}}; - EXPECT_THAT(m, ElementsAre(Pair("a", 1), Pair("b", 2), Pair("c", 3))); -``` - -{% endraw %} - -**Tips:** - -* `ElementsAre*()` can be used to match *any* container that implements the - STL iterator pattern (i.e. it has a `const_iterator` type and supports - `begin()/end()`), not just the ones defined in STL. It will even work with - container types yet to be written - as long as they follows the above - pattern. -* You can use nested `ElementsAre*()` to match nested (multi-dimensional) - containers. -* If the container is passed by pointer instead of by reference, just write - `Pointee(ElementsAre*(...))`. -* The order of elements *matters* for `ElementsAre*()`. If you are using it - with containers whose element order are undefined (e.g. `hash_map`) you - should use `WhenSorted` around `ElementsAre`. - -### Sharing Matchers - -Under the hood, a gMock matcher object consists of a pointer to a ref-counted -implementation object. Copying matchers is allowed and very efficient, as only -the pointer is copied. When the last matcher that references the implementation -object dies, the implementation object will be deleted. - -Therefore, if you have some complex matcher that you want to use again and -again, there is no need to build it every time. Just assign it to a matcher -variable and use that variable repeatedly! For example, - -```cpp -using ::testing::AllOf; -using ::testing::Gt; -using ::testing::Le; -using ::testing::Matcher; -... - Matcher in_range = AllOf(Gt(5), Le(10)); - ... use in_range as a matcher in multiple EXPECT_CALLs ... -``` - -### Matchers must have no side-effects {#PureMatchers} - -{: .callout .warning} -WARNING: gMock does not guarantee when or how many times a matcher will be -invoked. Therefore, all matchers must be *purely functional*: they cannot have -any side effects, and the match result must not depend on anything other than -the matcher's parameters and the value being matched. - -This requirement must be satisfied no matter how a matcher is defined (e.g., if -it is one of the standard matchers, or a custom matcher). In particular, a -matcher can never call a mock function, as that will affect the state of the -mock object and gMock. - -## Setting Expectations - -### Knowing When to Expect {#UseOnCall} - -**`ON_CALL`** is likely the *single most under-utilized construct* in gMock. - -There are basically two constructs for defining the behavior of a mock object: -`ON_CALL` and `EXPECT_CALL`. The difference? `ON_CALL` defines what happens when -a mock method is called, but doesn't imply any expectation on the method -being called. `EXPECT_CALL` not only defines the behavior, but also sets an -expectation that the method will be called with the given arguments, for the -given number of times (and *in the given order* when you specify the order -too). - -Since `EXPECT_CALL` does more, isn't it better than `ON_CALL`? Not really. Every -`EXPECT_CALL` adds a constraint on the behavior of the code under test. Having -more constraints than necessary is *baaad* - even worse than not having enough -constraints. - -This may be counter-intuitive. How could tests that verify more be worse than -tests that verify less? Isn't verification the whole point of tests? - -The answer lies in *what* a test should verify. **A good test verifies the -contract of the code.** If a test over-specifies, it doesn't leave enough -freedom to the implementation. As a result, changing the implementation without -breaking the contract (e.g. refactoring and optimization), which should be -perfectly fine to do, can break such tests. Then you have to spend time fixing -them, only to see them broken again the next time the implementation is changed. - -Keep in mind that one doesn't have to verify more than one property in one test. -In fact, **it's a good style to verify only one thing in one test.** If you do -that, a bug will likely break only one or two tests instead of dozens (which -case would you rather debug?). If you are also in the habit of giving tests -descriptive names that tell what they verify, you can often easily guess what's -wrong just from the test log itself. - -So use `ON_CALL` by default, and only use `EXPECT_CALL` when you actually intend -to verify that the call is made. For example, you may have a bunch of `ON_CALL`s -in your test fixture to set the common mock behavior shared by all tests in the -same group, and write (scarcely) different `EXPECT_CALL`s in different `TEST_F`s -to verify different aspects of the code's behavior. Compared with the style -where each `TEST` has many `EXPECT_CALL`s, this leads to tests that are more -resilient to implementational changes (and thus less likely to require -maintenance) and makes the intent of the tests more obvious (so they are easier -to maintain when you do need to maintain them). - -If you are bothered by the "Uninteresting mock function call" message printed -when a mock method without an `EXPECT_CALL` is called, you may use a `NiceMock` -instead to suppress all such messages for the mock object, or suppress the -message for specific methods by adding `EXPECT_CALL(...).Times(AnyNumber())`. DO -NOT suppress it by blindly adding an `EXPECT_CALL(...)`, or you'll have a test -that's a pain to maintain. - -### Ignoring Uninteresting Calls - -If you are not interested in how a mock method is called, just don't say -anything about it. In this case, if the method is ever called, gMock will -perform its default action to allow the test program to continue. If you are not -happy with the default action taken by gMock, you can override it using -`DefaultValue::Set()` (described [here](#DefaultValue)) or `ON_CALL()`. - -Please note that once you expressed interest in a particular mock method (via -`EXPECT_CALL()`), all invocations to it must match some expectation. If this -function is called but the arguments don't match any `EXPECT_CALL()` statement, -it will be an error. - -### Disallowing Unexpected Calls - -If a mock method shouldn't be called at all, explicitly say so: - -```cpp -using ::testing::_; -... - EXPECT_CALL(foo, Bar(_)) - .Times(0); -``` - -If some calls to the method are allowed, but the rest are not, just list all the -expected calls: - -```cpp -using ::testing::AnyNumber; -using ::testing::Gt; -... - EXPECT_CALL(foo, Bar(5)); - EXPECT_CALL(foo, Bar(Gt(10))) - .Times(AnyNumber()); -``` - -A call to `foo.Bar()` that doesn't match any of the `EXPECT_CALL()` statements -will be an error. - -### Understanding Uninteresting vs Unexpected Calls {#uninteresting-vs-unexpected} - -*Uninteresting* calls and *unexpected* calls are different concepts in gMock. -*Very* different. - -A call `x.Y(...)` is **uninteresting** if there's *not even a single* -`EXPECT_CALL(x, Y(...))` set. In other words, the test isn't interested in the -`x.Y()` method at all, as evident in that the test doesn't care to say anything -about it. - -A call `x.Y(...)` is **unexpected** if there are *some* `EXPECT_CALL(x, -Y(...))`s set, but none of them matches the call. Put another way, the test is -interested in the `x.Y()` method (therefore it explicitly sets some -`EXPECT_CALL` to verify how it's called); however, the verification fails as the -test doesn't expect this particular call to happen. - -**An unexpected call is always an error,** as the code under test doesn't behave -the way the test expects it to behave. - -**By default, an uninteresting call is not an error,** as it violates no -constraint specified by the test. (gMock's philosophy is that saying nothing -means there is no constraint.) However, it leads to a warning, as it *might* -indicate a problem (e.g. the test author might have forgotten to specify a -constraint). - -In gMock, `NiceMock` and `StrictMock` can be used to make a mock class "nice" or -"strict". How does this affect uninteresting calls and unexpected calls? - -A **nice mock** suppresses uninteresting call *warnings*. It is less chatty than -the default mock, but otherwise is the same. If a test fails with a default -mock, it will also fail using a nice mock instead. And vice versa. Don't expect -making a mock nice to change the test's result. - -A **strict mock** turns uninteresting call warnings into errors. So making a -mock strict may change the test's result. - -Let's look at an example: - -```cpp -TEST(...) { - NiceMock mock_registry; - EXPECT_CALL(mock_registry, GetDomainOwner("google.com")) - .WillRepeatedly(Return("Larry Page")); - - // Use mock_registry in code under test. - ... &mock_registry ... -} -``` - -The sole `EXPECT_CALL` here says that all calls to `GetDomainOwner()` must have -`"google.com"` as the argument. If `GetDomainOwner("yahoo.com")` is called, it -will be an unexpected call, and thus an error. *Having a nice mock doesn't -change the severity of an unexpected call.* - -So how do we tell gMock that `GetDomainOwner()` can be called with some other -arguments as well? The standard technique is to add a "catch all" `EXPECT_CALL`: - -```cpp - EXPECT_CALL(mock_registry, GetDomainOwner(_)) - .Times(AnyNumber()); // catches all other calls to this method. - EXPECT_CALL(mock_registry, GetDomainOwner("google.com")) - .WillRepeatedly(Return("Larry Page")); -``` - -Remember that `_` is the wildcard matcher that matches anything. With this, if -`GetDomainOwner("google.com")` is called, it will do what the second -`EXPECT_CALL` says; if it is called with a different argument, it will do what -the first `EXPECT_CALL` says. - -Note that the order of the two `EXPECT_CALL`s is important, as a newer -`EXPECT_CALL` takes precedence over an older one. - -For more on uninteresting calls, nice mocks, and strict mocks, read -["The Nice, the Strict, and the Naggy"](#NiceStrictNaggy). - -### Ignoring Uninteresting Arguments {#ParameterlessExpectations} - -If your test doesn't care about the parameters (it only cares about the number -or order of calls), you can often simply omit the parameter list: - -```cpp - // Expect foo.Bar( ... ) twice with any arguments. - EXPECT_CALL(foo, Bar).Times(2); - - // Delegate to the given method whenever the factory is invoked. - ON_CALL(foo_factory, MakeFoo) - .WillByDefault(&BuildFooForTest); -``` - -This functionality is only available when a method is not overloaded; to prevent -unexpected behavior it is a compilation error to try to set an expectation on a -method where the specific overload is ambiguous. You can work around this by -supplying a [simpler mock interface](#SimplerInterfaces) than the mocked class -provides. - -This pattern is also useful when the arguments are interesting, but match logic -is substantially complex. You can leave the argument list unspecified and use -SaveArg actions to [save the values for later verification](#SaveArgVerify). If -you do that, you can easily differentiate calling the method the wrong number of -times from calling it with the wrong arguments. - -### Expecting Ordered Calls {#OrderedCalls} - -Although an `EXPECT_CALL()` statement defined later takes precedence when gMock -tries to match a function call with an expectation, by default calls don't have -to happen in the order `EXPECT_CALL()` statements are written. For example, if -the arguments match the matchers in the second `EXPECT_CALL()`, but not those in -the first and third, then the second expectation will be used. - -If you would rather have all calls occur in the order of the expectations, put -the `EXPECT_CALL()` statements in a block where you define a variable of type -`InSequence`: - -```cpp -using ::testing::_; -using ::testing::InSequence; - - { - InSequence s; - - EXPECT_CALL(foo, DoThis(5)); - EXPECT_CALL(bar, DoThat(_)) - .Times(2); - EXPECT_CALL(foo, DoThis(6)); - } -``` - -In this example, we expect a call to `foo.DoThis(5)`, followed by two calls to -`bar.DoThat()` where the argument can be anything, which are in turn followed by -a call to `foo.DoThis(6)`. If a call occurred out-of-order, gMock will report an -error. - -### Expecting Partially Ordered Calls {#PartialOrder} - -Sometimes requiring everything to occur in a predetermined order can lead to -brittle tests. For example, we may care about `A` occurring before both `B` and -`C`, but aren't interested in the relative order of `B` and `C`. In this case, -the test should reflect our real intent, instead of being overly constraining. - -gMock allows you to impose an arbitrary DAG (directed acyclic graph) on the -calls. One way to express the DAG is to use the -[`After` clause](reference/mocking.md#EXPECT_CALL.After) of `EXPECT_CALL`. - -Another way is via the `InSequence()` clause (not the same as the `InSequence` -class), which we borrowed from jMock 2. It's less flexible than `After()`, but -more convenient when you have long chains of sequential calls, as it doesn't -require you to come up with different names for the expectations in the chains. -Here's how it works: - -If we view `EXPECT_CALL()` statements as nodes in a graph, and add an edge from -node A to node B wherever A must occur before B, we can get a DAG. We use the -term "sequence" to mean a directed path in this DAG. Now, if we decompose the -DAG into sequences, we just need to know which sequences each `EXPECT_CALL()` -belongs to in order to be able to reconstruct the original DAG. - -So, to specify the partial order on the expectations we need to do two things: -first to define some `Sequence` objects, and then for each `EXPECT_CALL()` say -which `Sequence` objects it is part of. - -Expectations in the same sequence must occur in the order they are written. For -example, - -```cpp -using ::testing::Sequence; -... - Sequence s1, s2; - - EXPECT_CALL(foo, A()) - .InSequence(s1, s2); - EXPECT_CALL(bar, B()) - .InSequence(s1); - EXPECT_CALL(bar, C()) - .InSequence(s2); - EXPECT_CALL(foo, D()) - .InSequence(s2); -``` - -specifies the following DAG (where `s1` is `A -> B`, and `s2` is `A -> C -> D`): - -```text - +---> B - | - A ---| - | - +---> C ---> D -``` - -This means that A must occur before B and C, and C must occur before D. There's -no restriction about the order other than these. - -### Controlling When an Expectation Retires - -When a mock method is called, gMock only considers expectations that are still -active. An expectation is active when created, and becomes inactive (aka -*retires*) when a call that has to occur later has occurred. For example, in - -```cpp -using ::testing::_; -using ::testing::Sequence; -... - Sequence s1, s2; - - EXPECT_CALL(log, Log(WARNING, _, "File too large.")) // #1 - .Times(AnyNumber()) - .InSequence(s1, s2); - EXPECT_CALL(log, Log(WARNING, _, "Data set is empty.")) // #2 - .InSequence(s1); - EXPECT_CALL(log, Log(WARNING, _, "User not found.")) // #3 - .InSequence(s2); -``` - -as soon as either #2 or #3 is matched, #1 will retire. If a warning `"File too -large."` is logged after this, it will be an error. - -Note that an expectation doesn't retire automatically when it's saturated. For -example, - -```cpp -using ::testing::_; -... - EXPECT_CALL(log, Log(WARNING, _, _)); // #1 - EXPECT_CALL(log, Log(WARNING, _, "File too large.")); // #2 -``` - -says that there will be exactly one warning with the message `"File too -large."`. If the second warning contains this message too, #2 will match again -and result in an upper-bound-violated error. - -If this is not what you want, you can ask an expectation to retire as soon as it -becomes saturated: - -```cpp -using ::testing::_; -... - EXPECT_CALL(log, Log(WARNING, _, _)); // #1 - EXPECT_CALL(log, Log(WARNING, _, "File too large.")) // #2 - .RetiresOnSaturation(); -``` - -Here #2 can be used only once, so if you have two warnings with the message -`"File too large."`, the first will match #2 and the second will match #1 - -there will be no error. - -## Using Actions - -### Returning References from Mock Methods - -If a mock function's return type is a reference, you need to use `ReturnRef()` -instead of `Return()` to return a result: - -```cpp -using ::testing::ReturnRef; - -class MockFoo : public Foo { - public: - MOCK_METHOD(Bar&, GetBar, (), (override)); -}; -... - MockFoo foo; - Bar bar; - EXPECT_CALL(foo, GetBar()) - .WillOnce(ReturnRef(bar)); -... -``` - -### Returning Live Values from Mock Methods - -The `Return(x)` action saves a copy of `x` when the action is created, and -always returns the same value whenever it's executed. Sometimes you may want to -instead return the *live* value of `x` (i.e. its value at the time when the -action is *executed*.). Use either `ReturnRef()` or `ReturnPointee()` for this -purpose. - -If the mock function's return type is a reference, you can do it using -`ReturnRef(x)`, as shown in the previous recipe ("Returning References from Mock -Methods"). However, gMock doesn't let you use `ReturnRef()` in a mock function -whose return type is not a reference, as doing that usually indicates a user -error. So, what shall you do? - -Though you may be tempted, DO NOT use `std::ref()`: - -```cpp -using testing::Return; - -class MockFoo : public Foo { - public: - MOCK_METHOD(int, GetValue, (), (override)); -}; -... - int x = 0; - MockFoo foo; - EXPECT_CALL(foo, GetValue()) - .WillRepeatedly(Return(std::ref(x))); // Wrong! - x = 42; - EXPECT_EQ(42, foo.GetValue()); -``` - -Unfortunately, it doesn't work here. The above code will fail with error: - -```text -Value of: foo.GetValue() - Actual: 0 -Expected: 42 -``` - -The reason is that `Return(*value*)` converts `value` to the actual return type -of the mock function at the time when the action is *created*, not when it is -*executed*. (This behavior was chosen for the action to be safe when `value` is -a proxy object that references some temporary objects.) As a result, -`std::ref(x)` is converted to an `int` value (instead of a `const int&`) when -the expectation is set, and `Return(std::ref(x))` will always return 0. - -`ReturnPointee(pointer)` was provided to solve this problem specifically. It -returns the value pointed to by `pointer` at the time the action is *executed*: - -```cpp -using testing::ReturnPointee; -... - int x = 0; - MockFoo foo; - EXPECT_CALL(foo, GetValue()) - .WillRepeatedly(ReturnPointee(&x)); // Note the & here. - x = 42; - EXPECT_EQ(42, foo.GetValue()); // This will succeed now. -``` - -### Combining Actions - -Want to do more than one thing when a function is called? That's fine. `DoAll()` -allow you to do sequence of actions every time. Only the return value of the -last action in the sequence will be used. - -```cpp -using ::testing::_; -using ::testing::DoAll; - -class MockFoo : public Foo { - public: - MOCK_METHOD(bool, Bar, (int n), (override)); -}; -... - EXPECT_CALL(foo, Bar(_)) - .WillOnce(DoAll(action_1, - action_2, - ... - action_n)); -``` - -### Verifying Complex Arguments {#SaveArgVerify} - -If you want to verify that a method is called with a particular argument but the -match criteria is complex, it can be difficult to distinguish between -cardinality failures (calling the method the wrong number of times) and argument -match failures. Similarly, if you are matching multiple parameters, it may not -be easy to distinguishing which argument failed to match. For example: - -```cpp - // Not ideal: this could fail because of a problem with arg1 or arg2, or maybe - // just the method wasn't called. - EXPECT_CALL(foo, SendValues(_, ElementsAre(1, 4, 4, 7), EqualsProto( ... ))); -``` - -You can instead save the arguments and test them individually: - -```cpp - EXPECT_CALL(foo, SendValues) - .WillOnce(DoAll(SaveArg<1>(&actual_array), SaveArg<2>(&actual_proto))); - ... run the test - EXPECT_THAT(actual_array, ElementsAre(1, 4, 4, 7)); - EXPECT_THAT(actual_proto, EqualsProto( ... )); -``` - -### Mocking Side Effects {#MockingSideEffects} - -Sometimes a method exhibits its effect not via returning a value but via side -effects. For example, it may change some global state or modify an output -argument. To mock side effects, in general you can define your own action by -implementing `::testing::ActionInterface`. - -If all you need to do is to change an output argument, the built-in -`SetArgPointee()` action is convenient: - -```cpp -using ::testing::_; -using ::testing::SetArgPointee; - -class MockMutator : public Mutator { - public: - MOCK_METHOD(void, Mutate, (bool mutate, int* value), (override)); - ... -} -... - MockMutator mutator; - EXPECT_CALL(mutator, Mutate(true, _)) - .WillOnce(SetArgPointee<1>(5)); -``` - -In this example, when `mutator.Mutate()` is called, we will assign 5 to the -`int` variable pointed to by argument #1 (0-based). - -`SetArgPointee()` conveniently makes an internal copy of the value you pass to -it, removing the need to keep the value in scope and alive. The implication -however is that the value must have a copy constructor and assignment operator. - -If the mock method also needs to return a value as well, you can chain -`SetArgPointee()` with `Return()` using `DoAll()`, remembering to put the -`Return()` statement last: - -```cpp -using ::testing::_; -using ::testing::DoAll; -using ::testing::Return; -using ::testing::SetArgPointee; - -class MockMutator : public Mutator { - public: - ... - MOCK_METHOD(bool, MutateInt, (int* value), (override)); -} -... - MockMutator mutator; - EXPECT_CALL(mutator, MutateInt(_)) - .WillOnce(DoAll(SetArgPointee<0>(5), - Return(true))); -``` - -Note, however, that if you use the `ReturnOKWith()` method, it will override the -values provided by `SetArgPointee()` in the response parameters of your function -call. - -If the output argument is an array, use the `SetArrayArgument(first, last)` -action instead. It copies the elements in source range `[first, last)` to the -array pointed to by the `N`-th (0-based) argument: - -```cpp -using ::testing::NotNull; -using ::testing::SetArrayArgument; - -class MockArrayMutator : public ArrayMutator { - public: - MOCK_METHOD(void, Mutate, (int* values, int num_values), (override)); - ... -} -... - MockArrayMutator mutator; - int values[5] = {1, 2, 3, 4, 5}; - EXPECT_CALL(mutator, Mutate(NotNull(), 5)) - .WillOnce(SetArrayArgument<0>(values, values + 5)); -``` - -This also works when the argument is an output iterator: - -```cpp -using ::testing::_; -using ::testing::SetArrayArgument; - -class MockRolodex : public Rolodex { - public: - MOCK_METHOD(void, GetNames, (std::back_insert_iterator>), - (override)); - ... -} -... - MockRolodex rolodex; - vector names = {"George", "John", "Thomas"}; - EXPECT_CALL(rolodex, GetNames(_)) - .WillOnce(SetArrayArgument<0>(names.begin(), names.end())); -``` - -### Changing a Mock Object's Behavior Based on the State - -If you expect a call to change the behavior of a mock object, you can use -`::testing::InSequence` to specify different behaviors before and after the -call: - -```cpp -using ::testing::InSequence; -using ::testing::Return; - -... - { - InSequence seq; - EXPECT_CALL(my_mock, IsDirty()) - .WillRepeatedly(Return(true)); - EXPECT_CALL(my_mock, Flush()); - EXPECT_CALL(my_mock, IsDirty()) - .WillRepeatedly(Return(false)); - } - my_mock.FlushIfDirty(); -``` - -This makes `my_mock.IsDirty()` return `true` before `my_mock.Flush()` is called -and return `false` afterwards. - -If the behavior change is more complex, you can store the effects in a variable -and make a mock method get its return value from that variable: - -```cpp -using ::testing::_; -using ::testing::SaveArg; -using ::testing::Return; - -ACTION_P(ReturnPointee, p) { return *p; } -... - int previous_value = 0; - EXPECT_CALL(my_mock, GetPrevValue) - .WillRepeatedly(ReturnPointee(&previous_value)); - EXPECT_CALL(my_mock, UpdateValue) - .WillRepeatedly(SaveArg<0>(&previous_value)); - my_mock.DoSomethingToUpdateValue(); -``` - -Here `my_mock.GetPrevValue()` will always return the argument of the last -`UpdateValue()` call. - -### Setting the Default Value for a Return Type {#DefaultValue} - -If a mock method's return type is a built-in C++ type or pointer, by default it -will return 0 when invoked. Also, in C++ 11 and above, a mock method whose -return type has a default constructor will return a default-constructed value by -default. You only need to specify an action if this default value doesn't work -for you. - -Sometimes, you may want to change this default value, or you may want to specify -a default value for types gMock doesn't know about. You can do this using the -`::testing::DefaultValue` class template: - -```cpp -using ::testing::DefaultValue; - -class MockFoo : public Foo { - public: - MOCK_METHOD(Bar, CalculateBar, (), (override)); -}; - - -... - Bar default_bar; - // Sets the default return value for type Bar. - DefaultValue::Set(default_bar); - - MockFoo foo; - - // We don't need to specify an action here, as the default - // return value works for us. - EXPECT_CALL(foo, CalculateBar()); - - foo.CalculateBar(); // This should return default_bar. - - // Unsets the default return value. - DefaultValue::Clear(); -``` - -Please note that changing the default value for a type can make your tests hard -to understand. We recommend you to use this feature judiciously. For example, -you may want to make sure the `Set()` and `Clear()` calls are right next to the -code that uses your mock. - -### Setting the Default Actions for a Mock Method - -You've learned how to change the default value of a given type. However, this -may be too coarse for your purpose: perhaps you have two mock methods with the -same return type and you want them to have different behaviors. The `ON_CALL()` -macro allows you to customize your mock's behavior at the method level: - -```cpp -using ::testing::_; -using ::testing::AnyNumber; -using ::testing::Gt; -using ::testing::Return; -... - ON_CALL(foo, Sign(_)) - .WillByDefault(Return(-1)); - ON_CALL(foo, Sign(0)) - .WillByDefault(Return(0)); - ON_CALL(foo, Sign(Gt(0))) - .WillByDefault(Return(1)); - - EXPECT_CALL(foo, Sign(_)) - .Times(AnyNumber()); - - foo.Sign(5); // This should return 1. - foo.Sign(-9); // This should return -1. - foo.Sign(0); // This should return 0. -``` - -As you may have guessed, when there are more than one `ON_CALL()` statements, -the newer ones in the order take precedence over the older ones. In other words, -the **last** one that matches the function arguments will be used. This matching -order allows you to set up the common behavior in a mock object's constructor or -the test fixture's set-up phase and specialize the mock's behavior later. - -Note that both `ON_CALL` and `EXPECT_CALL` have the same "later statements take -precedence" rule, but they don't interact. That is, `EXPECT_CALL`s have their -own precedence order distinct from the `ON_CALL` precedence order. - -### Using Functions/Methods/Functors/Lambdas as Actions {#FunctionsAsActions} - -If the built-in actions don't suit you, you can use an existing callable -(function, `std::function`, method, functor, lambda) as an action. - -```cpp -using ::testing::_; using ::testing::Invoke; - -class MockFoo : public Foo { - public: - MOCK_METHOD(int, Sum, (int x, int y), (override)); - MOCK_METHOD(bool, ComplexJob, (int x), (override)); -}; - -int CalculateSum(int x, int y) { return x + y; } -int Sum3(int x, int y, int z) { return x + y + z; } - -class Helper { - public: - bool ComplexJob(int x); -}; - -... - MockFoo foo; - Helper helper; - EXPECT_CALL(foo, Sum(_, _)) - .WillOnce(&CalculateSum) - .WillRepeatedly(Invoke(NewPermanentCallback(Sum3, 1))); - EXPECT_CALL(foo, ComplexJob(_)) - .WillOnce(Invoke(&helper, &Helper::ComplexJob)) - .WillOnce([] { return true; }) - .WillRepeatedly([](int x) { return x > 0; }); - - foo.Sum(5, 6); // Invokes CalculateSum(5, 6). - foo.Sum(2, 3); // Invokes Sum3(1, 2, 3). - foo.ComplexJob(10); // Invokes helper.ComplexJob(10). - foo.ComplexJob(-1); // Invokes the inline lambda. -``` - -The only requirement is that the type of the function, etc must be *compatible* -with the signature of the mock function, meaning that the latter's arguments (if -it takes any) can be implicitly converted to the corresponding arguments of the -former, and the former's return type can be implicitly converted to that of the -latter. So, you can invoke something whose type is *not* exactly the same as the -mock function, as long as it's safe to do so - nice, huh? - -Note that: - -* The action takes ownership of the callback and will delete it when the - action itself is destructed. -* If the type of a callback is derived from a base callback type `C`, you need - to implicitly cast it to `C` to resolve the overloading, e.g. - - ```cpp - using ::testing::Invoke; - ... - ResultCallback* is_ok = ...; - ... Invoke(is_ok) ...; // This works. - - BlockingClosure* done = new BlockingClosure; - ... Invoke(implicit_cast(done)) ...; // The cast is necessary. - ``` - -### Using Functions with Extra Info as Actions - -The function or functor you call using `Invoke()` must have the same number of -arguments as the mock function you use it for. Sometimes you may have a function -that takes more arguments, and you are willing to pass in the extra arguments -yourself to fill the gap. You can do this in gMock using callbacks with -pre-bound arguments. Here's an example: - -```cpp -using ::testing::Invoke; - -class MockFoo : public Foo { - public: - MOCK_METHOD(char, DoThis, (int n), (override)); -}; - -char SignOfSum(int x, int y) { - const int sum = x + y; - return (sum > 0) ? '+' : (sum < 0) ? '-' : '0'; -} - -TEST_F(FooTest, Test) { - MockFoo foo; - - EXPECT_CALL(foo, DoThis(2)) - .WillOnce(Invoke(NewPermanentCallback(SignOfSum, 5))); - EXPECT_EQ('+', foo.DoThis(2)); // Invokes SignOfSum(5, 2). -} -``` - -### Invoking a Function/Method/Functor/Lambda/Callback Without Arguments - -`Invoke()` passes the mock function's arguments to the function, etc being -invoked such that the callee has the full context of the call to work with. If -the invoked function is not interested in some or all of the arguments, it can -simply ignore them. - -Yet, a common pattern is that a test author wants to invoke a function without -the arguments of the mock function. She could do that using a wrapper function -that throws away the arguments before invoking an underlining nullary function. -Needless to say, this can be tedious and obscures the intent of the test. - -There are two solutions to this problem. First, you can pass any callable of -zero args as an action. Alternatively, use `InvokeWithoutArgs()`, which is like -`Invoke()` except that it doesn't pass the mock function's arguments to the -callee. Here's an example of each: - -```cpp -using ::testing::_; -using ::testing::InvokeWithoutArgs; - -class MockFoo : public Foo { - public: - MOCK_METHOD(bool, ComplexJob, (int n), (override)); -}; - -bool Job1() { ... } -bool Job2(int n, char c) { ... } - -... - MockFoo foo; - EXPECT_CALL(foo, ComplexJob(_)) - .WillOnce([] { Job1(); }); - .WillOnce(InvokeWithoutArgs(NewPermanentCallback(Job2, 5, 'a'))); - - foo.ComplexJob(10); // Invokes Job1(). - foo.ComplexJob(20); // Invokes Job2(5, 'a'). -``` - -Note that: - -* The action takes ownership of the callback and will delete it when the - action itself is destructed. -* If the type of a callback is derived from a base callback type `C`, you need - to implicitly cast it to `C` to resolve the overloading, e.g. - - ```cpp - using ::testing::InvokeWithoutArgs; - ... - ResultCallback* is_ok = ...; - ... InvokeWithoutArgs(is_ok) ...; // This works. - - BlockingClosure* done = ...; - ... InvokeWithoutArgs(implicit_cast(done)) ...; - // The cast is necessary. - ``` - -### Invoking an Argument of the Mock Function - -Sometimes a mock function will receive a function pointer, a functor (in other -words, a "callable") as an argument, e.g. - -```cpp -class MockFoo : public Foo { - public: - MOCK_METHOD(bool, DoThis, (int n, (ResultCallback1* callback)), - (override)); -}; -``` - -and you may want to invoke this callable argument: - -```cpp -using ::testing::_; -... - MockFoo foo; - EXPECT_CALL(foo, DoThis(_, _)) - .WillOnce(...); - // Will execute callback->Run(5), where callback is the - // second argument DoThis() receives. -``` - -{: .callout .note} -NOTE: The section below is legacy documentation from before C++ had lambdas: - -Arghh, you need to refer to a mock function argument but C++ has no lambda -(yet), so you have to define your own action. :-( Or do you really? - -Well, gMock has an action to solve *exactly* this problem: - -```cpp -InvokeArgument(arg_1, arg_2, ..., arg_m) -``` - -will invoke the `N`-th (0-based) argument the mock function receives, with -`arg_1`, `arg_2`, ..., and `arg_m`. No matter if the argument is a function -pointer, a functor, or a callback. gMock handles them all. - -With that, you could write: - -```cpp -using ::testing::_; -using ::testing::InvokeArgument; -... - EXPECT_CALL(foo, DoThis(_, _)) - .WillOnce(InvokeArgument<1>(5)); - // Will execute callback->Run(5), where callback is the - // second argument DoThis() receives. -``` - -What if the callable takes an argument by reference? No problem - just wrap it -inside `std::ref()`: - -```cpp - ... - MOCK_METHOD(bool, Bar, - ((ResultCallback2* callback)), - (override)); - ... - using ::testing::_; - using ::testing::InvokeArgument; - ... - MockFoo foo; - Helper helper; - ... - EXPECT_CALL(foo, Bar(_)) - .WillOnce(InvokeArgument<0>(5, std::ref(helper))); - // std::ref(helper) guarantees that a reference to helper, not a copy of - // it, will be passed to the callback. -``` - -What if the callable takes an argument by reference and we do **not** wrap the -argument in `std::ref()`? Then `InvokeArgument()` will *make a copy* of the -argument, and pass a *reference to the copy*, instead of a reference to the -original value, to the callable. This is especially handy when the argument is a -temporary value: - -```cpp - ... - MOCK_METHOD(bool, DoThat, (bool (*f)(const double& x, const string& s)), - (override)); - ... - using ::testing::_; - using ::testing::InvokeArgument; - ... - MockFoo foo; - ... - EXPECT_CALL(foo, DoThat(_)) - .WillOnce(InvokeArgument<0>(5.0, string("Hi"))); - // Will execute (*f)(5.0, string("Hi")), where f is the function pointer - // DoThat() receives. Note that the values 5.0 and string("Hi") are - // temporary and dead once the EXPECT_CALL() statement finishes. Yet - // it's fine to perform this action later, since a copy of the values - // are kept inside the InvokeArgument action. -``` - -### Ignoring an Action's Result - -Sometimes you have an action that returns *something*, but you need an action -that returns `void` (perhaps you want to use it in a mock function that returns -`void`, or perhaps it needs to be used in `DoAll()` and it's not the last in the -list). `IgnoreResult()` lets you do that. For example: - -```cpp -using ::testing::_; -using ::testing::DoAll; -using ::testing::IgnoreResult; -using ::testing::Return; - -int Process(const MyData& data); -string DoSomething(); - -class MockFoo : public Foo { - public: - MOCK_METHOD(void, Abc, (const MyData& data), (override)); - MOCK_METHOD(bool, Xyz, (), (override)); -}; - - ... - MockFoo foo; - EXPECT_CALL(foo, Abc(_)) - // .WillOnce(Invoke(Process)); - // The above line won't compile as Process() returns int but Abc() needs - // to return void. - .WillOnce(IgnoreResult(Process)); - EXPECT_CALL(foo, Xyz()) - .WillOnce(DoAll(IgnoreResult(DoSomething), - // Ignores the string DoSomething() returns. - Return(true))); -``` - -Note that you **cannot** use `IgnoreResult()` on an action that already returns -`void`. Doing so will lead to ugly compiler errors. - -### Selecting an Action's Arguments {#SelectingArgs} - -Say you have a mock function `Foo()` that takes seven arguments, and you have a -custom action that you want to invoke when `Foo()` is called. Trouble is, the -custom action only wants three arguments: - -```cpp -using ::testing::_; -using ::testing::Invoke; -... - MOCK_METHOD(bool, Foo, - (bool visible, const string& name, int x, int y, - (const map>), double& weight, double min_weight, - double max_wight)); -... -bool IsVisibleInQuadrant1(bool visible, int x, int y) { - return visible && x >= 0 && y >= 0; -} -... - EXPECT_CALL(mock, Foo) - .WillOnce(Invoke(IsVisibleInQuadrant1)); // Uh, won't compile. :-( -``` - -To please the compiler God, you need to define an "adaptor" that has the same -signature as `Foo()` and calls the custom action with the right arguments: - -```cpp -using ::testing::_; -using ::testing::Invoke; -... -bool MyIsVisibleInQuadrant1(bool visible, const string& name, int x, int y, - const map, double>& weight, - double min_weight, double max_wight) { - return IsVisibleInQuadrant1(visible, x, y); -} -... - EXPECT_CALL(mock, Foo) - .WillOnce(Invoke(MyIsVisibleInQuadrant1)); // Now it works. -``` - -But isn't this awkward? - -gMock provides a generic *action adaptor*, so you can spend your time minding -more important business than writing your own adaptors. Here's the syntax: - -```cpp -WithArgs(action) -``` - -creates an action that passes the arguments of the mock function at the given -indices (0-based) to the inner `action` and performs it. Using `WithArgs`, our -original example can be written as: - -```cpp -using ::testing::_; -using ::testing::Invoke; -using ::testing::WithArgs; -... - EXPECT_CALL(mock, Foo) - .WillOnce(WithArgs<0, 2, 3>(Invoke(IsVisibleInQuadrant1))); // No need to define your own adaptor. -``` - -For better readability, gMock also gives you: - -* `WithoutArgs(action)` when the inner `action` takes *no* argument, and -* `WithArg(action)` (no `s` after `Arg`) when the inner `action` takes - *one* argument. - -As you may have realized, `InvokeWithoutArgs(...)` is just syntactic sugar for -`WithoutArgs(Invoke(...))`. - -Here are more tips: - -* The inner action used in `WithArgs` and friends does not have to be - `Invoke()` -- it can be anything. -* You can repeat an argument in the argument list if necessary, e.g. - `WithArgs<2, 3, 3, 5>(...)`. -* You can change the order of the arguments, e.g. `WithArgs<3, 2, 1>(...)`. -* The types of the selected arguments do *not* have to match the signature of - the inner action exactly. It works as long as they can be implicitly - converted to the corresponding arguments of the inner action. For example, - if the 4-th argument of the mock function is an `int` and `my_action` takes - a `double`, `WithArg<4>(my_action)` will work. - -### Ignoring Arguments in Action Functions - -The [selecting-an-action's-arguments](#SelectingArgs) recipe showed us one way -to make a mock function and an action with incompatible argument lists fit -together. The downside is that wrapping the action in `WithArgs<...>()` can get -tedious for people writing the tests. - -If you are defining a function (or method, functor, lambda, callback) to be used -with `Invoke*()`, and you are not interested in some of its arguments, an -alternative to `WithArgs` is to declare the uninteresting arguments as `Unused`. -This makes the definition less cluttered and less fragile in case the types of -the uninteresting arguments change. It could also increase the chance the action -function can be reused. For example, given - -```cpp - public: - MOCK_METHOD(double, Foo, double(const string& label, double x, double y), - (override)); - MOCK_METHOD(double, Bar, (int index, double x, double y), (override)); -``` - -instead of - -```cpp -using ::testing::_; -using ::testing::Invoke; - -double DistanceToOriginWithLabel(const string& label, double x, double y) { - return sqrt(x*x + y*y); -} -double DistanceToOriginWithIndex(int index, double x, double y) { - return sqrt(x*x + y*y); -} -... - EXPECT_CALL(mock, Foo("abc", _, _)) - .WillOnce(Invoke(DistanceToOriginWithLabel)); - EXPECT_CALL(mock, Bar(5, _, _)) - .WillOnce(Invoke(DistanceToOriginWithIndex)); -``` - -you could write - -```cpp -using ::testing::_; -using ::testing::Invoke; -using ::testing::Unused; - -double DistanceToOrigin(Unused, double x, double y) { - return sqrt(x*x + y*y); -} -... - EXPECT_CALL(mock, Foo("abc", _, _)) - .WillOnce(Invoke(DistanceToOrigin)); - EXPECT_CALL(mock, Bar(5, _, _)) - .WillOnce(Invoke(DistanceToOrigin)); -``` - -### Sharing Actions - -Just like matchers, a gMock action object consists of a pointer to a ref-counted -implementation object. Therefore copying actions is also allowed and very -efficient. When the last action that references the implementation object dies, -the implementation object will be deleted. - -If you have some complex action that you want to use again and again, you may -not have to build it from scratch every time. If the action doesn't have an -internal state (i.e. if it always does the same thing no matter how many times -it has been called), you can assign it to an action variable and use that -variable repeatedly. For example: - -```cpp -using ::testing::Action; -using ::testing::DoAll; -using ::testing::Return; -using ::testing::SetArgPointee; -... - Action set_flag = DoAll(SetArgPointee<0>(5), - Return(true)); - ... use set_flag in .WillOnce() and .WillRepeatedly() ... -``` - -However, if the action has its own state, you may be surprised if you share the -action object. Suppose you have an action factory `IncrementCounter(init)` which -creates an action that increments and returns a counter whose initial value is -`init`, using two actions created from the same expression and using a shared -action will exhibit different behaviors. Example: - -```cpp - EXPECT_CALL(foo, DoThis()) - .WillRepeatedly(IncrementCounter(0)); - EXPECT_CALL(foo, DoThat()) - .WillRepeatedly(IncrementCounter(0)); - foo.DoThis(); // Returns 1. - foo.DoThis(); // Returns 2. - foo.DoThat(); // Returns 1 - Blah() uses a different - // counter than Bar()'s. -``` - -versus - -```cpp -using ::testing::Action; -... - Action increment = IncrementCounter(0); - EXPECT_CALL(foo, DoThis()) - .WillRepeatedly(increment); - EXPECT_CALL(foo, DoThat()) - .WillRepeatedly(increment); - foo.DoThis(); // Returns 1. - foo.DoThis(); // Returns 2. - foo.DoThat(); // Returns 3 - the counter is shared. -``` - -### Testing Asynchronous Behavior - -One oft-encountered problem with gMock is that it can be hard to test -asynchronous behavior. Suppose you had a `EventQueue` class that you wanted to -test, and you created a separate `EventDispatcher` interface so that you could -easily mock it out. However, the implementation of the class fired all the -events on a background thread, which made test timings difficult. You could just -insert `sleep()` statements and hope for the best, but that makes your test -behavior nondeterministic. A better way is to use gMock actions and -`Notification` objects to force your asynchronous test to behave synchronously. - -```cpp -class MockEventDispatcher : public EventDispatcher { - MOCK_METHOD(bool, DispatchEvent, (int32), (override)); -}; - -TEST(EventQueueTest, EnqueueEventTest) { - MockEventDispatcher mock_event_dispatcher; - EventQueue event_queue(&mock_event_dispatcher); - - const int32 kEventId = 321; - absl::Notification done; - EXPECT_CALL(mock_event_dispatcher, DispatchEvent(kEventId)) - .WillOnce([&done] { done.Notify(); }); - - event_queue.EnqueueEvent(kEventId); - done.WaitForNotification(); -} -``` - -In the example above, we set our normal gMock expectations, but then add an -additional action to notify the `Notification` object. Now we can just call -`Notification::WaitForNotification()` in the main thread to wait for the -asynchronous call to finish. After that, our test suite is complete and we can -safely exit. - -{: .callout .note} -Note: this example has a downside: namely, if the expectation is not satisfied, -our test will run forever. It will eventually time-out and fail, but it will -take longer and be slightly harder to debug. To alleviate this problem, you can -use `WaitForNotificationWithTimeout(ms)` instead of `WaitForNotification()`. - -## Misc Recipes on Using gMock - -### Mocking Methods That Use Move-Only Types - -C++11 introduced *move-only types*. A move-only-typed value can be moved from -one object to another, but cannot be copied. `std::unique_ptr` is probably -the most commonly used move-only type. - -Mocking a method that takes and/or returns move-only types presents some -challenges, but nothing insurmountable. This recipe shows you how you can do it. -Note that the support for move-only method arguments was only introduced to -gMock in April 2017; in older code, you may find more complex -[workarounds](#LegacyMoveOnly) for lack of this feature. - -Let’s say we are working on a fictional project that lets one post and share -snippets called “buzzes”. Your code uses these types: - -```cpp -enum class AccessLevel { kInternal, kPublic }; - -class Buzz { - public: - explicit Buzz(AccessLevel access) { ... } - ... -}; - -class Buzzer { - public: - virtual ~Buzzer() {} - virtual std::unique_ptr MakeBuzz(StringPiece text) = 0; - virtual bool ShareBuzz(std::unique_ptr buzz, int64_t timestamp) = 0; - ... -}; -``` - -A `Buzz` object represents a snippet being posted. A class that implements the -`Buzzer` interface is capable of creating and sharing `Buzz`es. Methods in -`Buzzer` may return a `unique_ptr` or take a `unique_ptr`. Now we -need to mock `Buzzer` in our tests. - -To mock a method that accepts or returns move-only types, you just use the -familiar `MOCK_METHOD` syntax as usual: - -```cpp -class MockBuzzer : public Buzzer { - public: - MOCK_METHOD(std::unique_ptr, MakeBuzz, (StringPiece text), (override)); - MOCK_METHOD(bool, ShareBuzz, (std::unique_ptr buzz, int64_t timestamp), - (override)); -}; -``` - -Now that we have the mock class defined, we can use it in tests. In the -following code examples, we assume that we have defined a `MockBuzzer` object -named `mock_buzzer_`: - -```cpp - MockBuzzer mock_buzzer_; -``` - -First let’s see how we can set expectations on the `MakeBuzz()` method, which -returns a `unique_ptr`. - -As usual, if you set an expectation without an action (i.e. the `.WillOnce()` or -`.WillRepeatedly()` clause), when that expectation fires, the default action for -that method will be taken. Since `unique_ptr<>` has a default constructor that -returns a null `unique_ptr`, that’s what you’ll get if you don’t specify an -action: - -```cpp - // Use the default action. - EXPECT_CALL(mock_buzzer_, MakeBuzz("hello")); - - // Triggers the previous EXPECT_CALL. - EXPECT_EQ(nullptr, mock_buzzer_.MakeBuzz("hello")); -``` - -If you are not happy with the default action, you can tweak it as usual; see -[Setting Default Actions](#OnCall). - -If you just need to return a pre-defined move-only value, you can use the -`Return(ByMove(...))` action: - -```cpp - // When this fires, the unique_ptr<> specified by ByMove(...) will - // be returned. - EXPECT_CALL(mock_buzzer_, MakeBuzz("world")) - .WillOnce(Return(ByMove(MakeUnique(AccessLevel::kInternal)))); - - EXPECT_NE(nullptr, mock_buzzer_.MakeBuzz("world")); -``` - -Note that `ByMove()` is essential here - if you drop it, the code won’t compile. - -Quiz time! What do you think will happen if a `Return(ByMove(...))` action is -performed more than once (e.g. you write `... -.WillRepeatedly(Return(ByMove(...)));`)? Come think of it, after the first time -the action runs, the source value will be consumed (since it’s a move-only -value), so the next time around, there’s no value to move from -- you’ll get a -run-time error that `Return(ByMove(...))` can only be run once. - -If you need your mock method to do more than just moving a pre-defined value, -remember that you can always use a lambda or a callable object, which can do -pretty much anything you want: - -```cpp - EXPECT_CALL(mock_buzzer_, MakeBuzz("x")) - .WillRepeatedly([](StringPiece text) { - return MakeUnique(AccessLevel::kInternal); - }); - - EXPECT_NE(nullptr, mock_buzzer_.MakeBuzz("x")); - EXPECT_NE(nullptr, mock_buzzer_.MakeBuzz("x")); -``` - -Every time this `EXPECT_CALL` fires, a new `unique_ptr` will be created -and returned. You cannot do this with `Return(ByMove(...))`. - -That covers returning move-only values; but how do we work with methods -accepting move-only arguments? The answer is that they work normally, although -some actions will not compile when any of method's arguments are move-only. You -can always use `Return`, or a [lambda or functor](#FunctionsAsActions): - -```cpp - using ::testing::Unused; - - EXPECT_CALL(mock_buzzer_, ShareBuzz(NotNull(), _)).WillOnce(Return(true)); - EXPECT_TRUE(mock_buzzer_.ShareBuzz(MakeUnique(AccessLevel::kInternal)), - 0); - - EXPECT_CALL(mock_buzzer_, ShareBuzz(_, _)).WillOnce( - [](std::unique_ptr buzz, Unused) { return buzz != nullptr; }); - EXPECT_FALSE(mock_buzzer_.ShareBuzz(nullptr, 0)); -``` - -Many built-in actions (`WithArgs`, `WithoutArgs`,`DeleteArg`, `SaveArg`, ...) -could in principle support move-only arguments, but the support for this is not -implemented yet. If this is blocking you, please file a bug. - -A few actions (e.g. `DoAll`) copy their arguments internally, so they can never -work with non-copyable objects; you'll have to use functors instead. - -#### Legacy workarounds for move-only types {#LegacyMoveOnly} - -Support for move-only function arguments was only introduced to gMock in April -of 2017. In older code, you may encounter the following workaround for the lack -of this feature (it is no longer necessary - we're including it just for -reference): - -```cpp -class MockBuzzer : public Buzzer { - public: - MOCK_METHOD(bool, DoShareBuzz, (Buzz* buzz, Time timestamp)); - bool ShareBuzz(std::unique_ptr buzz, Time timestamp) override { - return DoShareBuzz(buzz.get(), timestamp); - } -}; -``` - -The trick is to delegate the `ShareBuzz()` method to a mock method (let’s call -it `DoShareBuzz()`) that does not take move-only parameters. Then, instead of -setting expectations on `ShareBuzz()`, you set them on the `DoShareBuzz()` mock -method: - -```cpp - MockBuzzer mock_buzzer_; - EXPECT_CALL(mock_buzzer_, DoShareBuzz(NotNull(), _)); - - // When one calls ShareBuzz() on the MockBuzzer like this, the call is - // forwarded to DoShareBuzz(), which is mocked. Therefore this statement - // will trigger the above EXPECT_CALL. - mock_buzzer_.ShareBuzz(MakeUnique(AccessLevel::kInternal), 0); -``` - -### Making the Compilation Faster - -Believe it or not, the *vast majority* of the time spent on compiling a mock -class is in generating its constructor and destructor, as they perform -non-trivial tasks (e.g. verification of the expectations). What's more, mock -methods with different signatures have different types and thus their -constructors/destructors need to be generated by the compiler separately. As a -result, if you mock many different types of methods, compiling your mock class -can get really slow. - -If you are experiencing slow compilation, you can move the definition of your -mock class' constructor and destructor out of the class body and into a `.cc` -file. This way, even if you `#include` your mock class in N files, the compiler -only needs to generate its constructor and destructor once, resulting in a much -faster compilation. - -Let's illustrate the idea using an example. Here's the definition of a mock -class before applying this recipe: - -```cpp -// File mock_foo.h. -... -class MockFoo : public Foo { - public: - // Since we don't declare the constructor or the destructor, - // the compiler will generate them in every translation unit - // where this mock class is used. - - MOCK_METHOD(int, DoThis, (), (override)); - MOCK_METHOD(bool, DoThat, (const char* str), (override)); - ... more mock methods ... -}; -``` - -After the change, it would look like: - -```cpp -// File mock_foo.h. -... -class MockFoo : public Foo { - public: - // The constructor and destructor are declared, but not defined, here. - MockFoo(); - virtual ~MockFoo(); - - MOCK_METHOD(int, DoThis, (), (override)); - MOCK_METHOD(bool, DoThat, (const char* str), (override)); - ... more mock methods ... -}; -``` - -and - -```cpp -// File mock_foo.cc. -#include "path/to/mock_foo.h" - -// The definitions may appear trivial, but the functions actually do a -// lot of things through the constructors/destructors of the member -// variables used to implement the mock methods. -MockFoo::MockFoo() {} -MockFoo::~MockFoo() {} -``` - -### Forcing a Verification - -When it's being destroyed, your friendly mock object will automatically verify -that all expectations on it have been satisfied, and will generate googletest -failures if not. This is convenient as it leaves you with one less thing to -worry about. That is, unless you are not sure if your mock object will be -destroyed. - -How could it be that your mock object won't eventually be destroyed? Well, it -might be created on the heap and owned by the code you are testing. Suppose -there's a bug in that code and it doesn't delete the mock object properly - you -could end up with a passing test when there's actually a bug. - -Using a heap checker is a good idea and can alleviate the concern, but its -implementation is not 100% reliable. So, sometimes you do want to *force* gMock -to verify a mock object before it is (hopefully) destructed. You can do this -with `Mock::VerifyAndClearExpectations(&mock_object)`: - -```cpp -TEST(MyServerTest, ProcessesRequest) { - using ::testing::Mock; - - MockFoo* const foo = new MockFoo; - EXPECT_CALL(*foo, ...)...; - // ... other expectations ... - - // server now owns foo. - MyServer server(foo); - server.ProcessRequest(...); - - // In case that server's destructor will forget to delete foo, - // this will verify the expectations anyway. - Mock::VerifyAndClearExpectations(foo); -} // server is destroyed when it goes out of scope here. -``` - -{: .callout .tip} -**Tip:** The `Mock::VerifyAndClearExpectations()` function returns a `bool` to -indicate whether the verification was successful (`true` for yes), so you can -wrap that function call inside a `ASSERT_TRUE()` if there is no point going -further when the verification has failed. - -Do not set new expectations after verifying and clearing a mock after its use. -Setting expectations after code that exercises the mock has undefined behavior. -See [Using Mocks in Tests](gmock_for_dummies.md#using-mocks-in-tests) for more -information. - -### Using Checkpoints {#UsingCheckPoints} - -Sometimes you might want to test a mock object's behavior in phases whose sizes -are each manageable, or you might want to set more detailed expectations about -which API calls invoke which mock functions. - -A technique you can use is to put the expectations in a sequence and insert -calls to a dummy "checkpoint" function at specific places. Then you can verify -that the mock function calls do happen at the right time. For example, if you -are exercising the code: - -```cpp - Foo(1); - Foo(2); - Foo(3); -``` - -and want to verify that `Foo(1)` and `Foo(3)` both invoke `mock.Bar("a")`, but -`Foo(2)` doesn't invoke anything, you can write: - -```cpp -using ::testing::MockFunction; - -TEST(FooTest, InvokesBarCorrectly) { - MyMock mock; - // Class MockFunction has exactly one mock method. It is named - // Call() and has type F. - MockFunction check; - { - InSequence s; - - EXPECT_CALL(mock, Bar("a")); - EXPECT_CALL(check, Call("1")); - EXPECT_CALL(check, Call("2")); - EXPECT_CALL(mock, Bar("a")); - } - Foo(1); - check.Call("1"); - Foo(2); - check.Call("2"); - Foo(3); -} -``` - -The expectation spec says that the first `Bar("a")` call must happen before -checkpoint "1", the second `Bar("a")` call must happen after checkpoint "2", and -nothing should happen between the two checkpoints. The explicit checkpoints make -it clear which `Bar("a")` is called by which call to `Foo()`. - -### Mocking Destructors - -Sometimes you want to make sure a mock object is destructed at the right time, -e.g. after `bar->A()` is called but before `bar->B()` is called. We already know -that you can specify constraints on the [order](#OrderedCalls) of mock function -calls, so all we need to do is to mock the destructor of the mock function. - -This sounds simple, except for one problem: a destructor is a special function -with special syntax and special semantics, and the `MOCK_METHOD` macro doesn't -work for it: - -```cpp -MOCK_METHOD(void, ~MockFoo, ()); // Won't compile! -``` - -The good news is that you can use a simple pattern to achieve the same effect. -First, add a mock function `Die()` to your mock class and call it in the -destructor, like this: - -```cpp -class MockFoo : public Foo { - ... - // Add the following two lines to the mock class. - MOCK_METHOD(void, Die, ()); - ~MockFoo() override { Die(); } -}; -``` - -(If the name `Die()` clashes with an existing symbol, choose another name.) Now, -we have translated the problem of testing when a `MockFoo` object dies to -testing when its `Die()` method is called: - -```cpp - MockFoo* foo = new MockFoo; - MockBar* bar = new MockBar; - ... - { - InSequence s; - - // Expects *foo to die after bar->A() and before bar->B(). - EXPECT_CALL(*bar, A()); - EXPECT_CALL(*foo, Die()); - EXPECT_CALL(*bar, B()); - } -``` - -And that's that. - -### Using gMock and Threads {#UsingThreads} - -In a **unit** test, it's best if you could isolate and test a piece of code in a -single-threaded context. That avoids race conditions and dead locks, and makes -debugging your test much easier. - -Yet most programs are multi-threaded, and sometimes to test something we need to -pound on it from more than one thread. gMock works for this purpose too. - -Remember the steps for using a mock: - -1. Create a mock object `foo`. -2. Set its default actions and expectations using `ON_CALL()` and - `EXPECT_CALL()`. -3. The code under test calls methods of `foo`. -4. Optionally, verify and reset the mock. -5. Destroy the mock yourself, or let the code under test destroy it. The - destructor will automatically verify it. - -If you follow the following simple rules, your mocks and threads can live -happily together: - -* Execute your *test code* (as opposed to the code being tested) in *one* - thread. This makes your test easy to follow. -* Obviously, you can do step #1 without locking. -* When doing step #2 and #5, make sure no other thread is accessing `foo`. - Obvious too, huh? -* #3 and #4 can be done either in one thread or in multiple threads - anyway - you want. gMock takes care of the locking, so you don't have to do any - - unless required by your test logic. - -If you violate the rules (for example, if you set expectations on a mock while -another thread is calling its methods), you get undefined behavior. That's not -fun, so don't do it. - -gMock guarantees that the action for a mock function is done in the same thread -that called the mock function. For example, in - -```cpp - EXPECT_CALL(mock, Foo(1)) - .WillOnce(action1); - EXPECT_CALL(mock, Foo(2)) - .WillOnce(action2); -``` - -if `Foo(1)` is called in thread 1 and `Foo(2)` is called in thread 2, gMock will -execute `action1` in thread 1 and `action2` in thread 2. - -gMock does *not* impose a sequence on actions performed in different threads -(doing so may create deadlocks as the actions may need to cooperate). This means -that the execution of `action1` and `action2` in the above example *may* -interleave. If this is a problem, you should add proper synchronization logic to -`action1` and `action2` to make the test thread-safe. - -Also, remember that `DefaultValue` is a global resource that potentially -affects *all* living mock objects in your program. Naturally, you won't want to -mess with it from multiple threads or when there still are mocks in action. - -### Controlling How Much Information gMock Prints - -When gMock sees something that has the potential of being an error (e.g. a mock -function with no expectation is called, a.k.a. an uninteresting call, which is -allowed but perhaps you forgot to explicitly ban the call), it prints some -warning messages, including the arguments of the function, the return value, and -the stack trace. Hopefully this will remind you to take a look and see if there -is indeed a problem. - -Sometimes you are confident that your tests are correct and may not appreciate -such friendly messages. Some other times, you are debugging your tests or -learning about the behavior of the code you are testing, and wish you could -observe every mock call that happens (including argument values, the return -value, and the stack trace). Clearly, one size doesn't fit all. - -You can control how much gMock tells you using the `--gmock_verbose=LEVEL` -command-line flag, where `LEVEL` is a string with three possible values: - -* `info`: gMock will print all informational messages, warnings, and errors - (most verbose). At this setting, gMock will also log any calls to the - `ON_CALL/EXPECT_CALL` macros. It will include a stack trace in - "uninteresting call" warnings. -* `warning`: gMock will print both warnings and errors (less verbose); it will - omit the stack traces in "uninteresting call" warnings. This is the default. -* `error`: gMock will print errors only (least verbose). - -Alternatively, you can adjust the value of that flag from within your tests like -so: - -```cpp - ::testing::FLAGS_gmock_verbose = "error"; -``` - -If you find gMock printing too many stack frames with its informational or -warning messages, remember that you can control their amount with the -`--gtest_stack_trace_depth=max_depth` flag. - -Now, judiciously use the right flag to enable gMock serve you better! - -### Gaining Super Vision into Mock Calls - -You have a test using gMock. It fails: gMock tells you some expectations aren't -satisfied. However, you aren't sure why: Is there a typo somewhere in the -matchers? Did you mess up the order of the `EXPECT_CALL`s? Or is the code under -test doing something wrong? How can you find out the cause? - -Won't it be nice if you have X-ray vision and can actually see the trace of all -`EXPECT_CALL`s and mock method calls as they are made? For each call, would you -like to see its actual argument values and which `EXPECT_CALL` gMock thinks it -matches? If you still need some help to figure out who made these calls, how -about being able to see the complete stack trace at each mock call? - -You can unlock this power by running your test with the `--gmock_verbose=info` -flag. For example, given the test program: - -```cpp -#include "gmock/gmock.h" - -using testing::_; -using testing::HasSubstr; -using testing::Return; - -class MockFoo { - public: - MOCK_METHOD(void, F, (const string& x, const string& y)); -}; - -TEST(Foo, Bar) { - MockFoo mock; - EXPECT_CALL(mock, F(_, _)).WillRepeatedly(Return()); - EXPECT_CALL(mock, F("a", "b")); - EXPECT_CALL(mock, F("c", HasSubstr("d"))); - - mock.F("a", "good"); - mock.F("a", "b"); -} -``` - -if you run it with `--gmock_verbose=info`, you will see this output: - -```shell -[ RUN ] Foo.Bar - -foo_test.cc:14: EXPECT_CALL(mock, F(_, _)) invoked -Stack trace: ... - -foo_test.cc:15: EXPECT_CALL(mock, F("a", "b")) invoked -Stack trace: ... - -foo_test.cc:16: EXPECT_CALL(mock, F("c", HasSubstr("d"))) invoked -Stack trace: ... - -foo_test.cc:14: Mock function call matches EXPECT_CALL(mock, F(_, _))... - Function call: F(@0x7fff7c8dad40"a",@0x7fff7c8dad10"good") -Stack trace: ... - -foo_test.cc:15: Mock function call matches EXPECT_CALL(mock, F("a", "b"))... - Function call: F(@0x7fff7c8dada0"a",@0x7fff7c8dad70"b") -Stack trace: ... - -foo_test.cc:16: Failure -Actual function call count doesn't match EXPECT_CALL(mock, F("c", HasSubstr("d")))... - Expected: to be called once - Actual: never called - unsatisfied and active -[ FAILED ] Foo.Bar -``` - -Suppose the bug is that the `"c"` in the third `EXPECT_CALL` is a typo and -should actually be `"a"`. With the above message, you should see that the actual -`F("a", "good")` call is matched by the first `EXPECT_CALL`, not the third as -you thought. From that it should be obvious that the third `EXPECT_CALL` is -written wrong. Case solved. - -If you are interested in the mock call trace but not the stack traces, you can -combine `--gmock_verbose=info` with `--gtest_stack_trace_depth=0` on the test -command line. - -### Running Tests in Emacs - -If you build and run your tests in Emacs using the `M-x google-compile` command -(as many googletest users do), the source file locations of gMock and googletest -errors will be highlighted. Just press `` on one of them and you'll be -taken to the offending line. Or, you can just type `C-x`` to jump to the next -error. - -To make it even easier, you can add the following lines to your `~/.emacs` file: - -```text -(global-set-key "\M-m" 'google-compile) ; m is for make -(global-set-key [M-down] 'next-error) -(global-set-key [M-up] '(lambda () (interactive) (next-error -1))) -``` - -Then you can type `M-m` to start a build (if you want to run the test as well, -just make sure `foo_test.run` or `runtests` is in the build command you supply -after typing `M-m`), or `M-up`/`M-down` to move back and forth between errors. - -## Extending gMock - -### Writing New Matchers Quickly {#NewMatchers} - -{: .callout .warning} -WARNING: gMock does not guarantee when or how many times a matcher will be -invoked. Therefore, all matchers must be functionally pure. See -[this section](#PureMatchers) for more details. - -The `MATCHER*` family of macros can be used to define custom matchers easily. -The syntax: - -```cpp -MATCHER(name, description_string_expression) { statements; } -``` - -will define a matcher with the given name that executes the statements, which -must return a `bool` to indicate if the match succeeds. Inside the statements, -you can refer to the value being matched by `arg`, and refer to its type by -`arg_type`. - -The *description string* is a `string`-typed expression that documents what the -matcher does, and is used to generate the failure message when the match fails. -It can (and should) reference the special `bool` variable `negation`, and should -evaluate to the description of the matcher when `negation` is `false`, or that -of the matcher's negation when `negation` is `true`. - -For convenience, we allow the description string to be empty (`""`), in which -case gMock will use the sequence of words in the matcher name as the -description. - -For example: - -```cpp -MATCHER(IsDivisibleBy7, "") { return (arg % 7) == 0; } -``` - -allows you to write - -```cpp - // Expects mock_foo.Bar(n) to be called where n is divisible by 7. - EXPECT_CALL(mock_foo, Bar(IsDivisibleBy7())); -``` - -or, - -```cpp - using ::testing::Not; - ... - // Verifies that a value is divisible by 7 and the other is not. - EXPECT_THAT(some_expression, IsDivisibleBy7()); - EXPECT_THAT(some_other_expression, Not(IsDivisibleBy7())); -``` - -If the above assertions fail, they will print something like: - -```shell - Value of: some_expression - Expected: is divisible by 7 - Actual: 27 - ... - Value of: some_other_expression - Expected: not (is divisible by 7) - Actual: 21 -``` - -where the descriptions `"is divisible by 7"` and `"not (is divisible by 7)"` are -automatically calculated from the matcher name `IsDivisibleBy7`. - -As you may have noticed, the auto-generated descriptions (especially those for -the negation) may not be so great. You can always override them with a `string` -expression of your own: - -```cpp -MATCHER(IsDivisibleBy7, - absl::StrCat(negation ? "isn't" : "is", " divisible by 7")) { - return (arg % 7) == 0; -} -``` - -Optionally, you can stream additional information to a hidden argument named -`result_listener` to explain the match result. For example, a better definition -of `IsDivisibleBy7` is: - -```cpp -MATCHER(IsDivisibleBy7, "") { - if ((arg % 7) == 0) - return true; - - *result_listener << "the remainder is " << (arg % 7); - return false; -} -``` - -With this definition, the above assertion will give a better message: - -```shell - Value of: some_expression - Expected: is divisible by 7 - Actual: 27 (the remainder is 6) -``` - -You should let `MatchAndExplain()` print *any additional information* that can -help a user understand the match result. Note that it should explain why the -match succeeds in case of a success (unless it's obvious) - this is useful when -the matcher is used inside `Not()`. There is no need to print the argument value -itself, as gMock already prints it for you. - -{: .callout .note} -NOTE: The type of the value being matched (`arg_type`) is determined by the -context in which you use the matcher and is supplied to you by the compiler, so -you don't need to worry about declaring it (nor can you). This allows the -matcher to be polymorphic. For example, `IsDivisibleBy7()` can be used to match -any type where the value of `(arg % 7) == 0` can be implicitly converted to a -`bool`. In the `Bar(IsDivisibleBy7())` example above, if method `Bar()` takes an -`int`, `arg_type` will be `int`; if it takes an `unsigned long`, `arg_type` will -be `unsigned long`; and so on. - -### Writing New Parameterized Matchers Quickly - -Sometimes you'll want to define a matcher that has parameters. For that you can -use the macro: - -```cpp -MATCHER_P(name, param_name, description_string) { statements; } -``` - -where the description string can be either `""` or a `string` expression that -references `negation` and `param_name`. - -For example: - -```cpp -MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; } -``` - -will allow you to write: - -```cpp - EXPECT_THAT(Blah("a"), HasAbsoluteValue(n)); -``` - -which may lead to this message (assuming `n` is 10): - -```shell - Value of: Blah("a") - Expected: has absolute value 10 - Actual: -9 -``` - -Note that both the matcher description and its parameter are printed, making the -message human-friendly. - -In the matcher definition body, you can write `foo_type` to reference the type -of a parameter named `foo`. For example, in the body of -`MATCHER_P(HasAbsoluteValue, value)` above, you can write `value_type` to refer -to the type of `value`. - -gMock also provides `MATCHER_P2`, `MATCHER_P3`, ..., up to `MATCHER_P10` to -support multi-parameter matchers: - -```cpp -MATCHER_Pk(name, param_1, ..., param_k, description_string) { statements; } -``` - -Please note that the custom description string is for a particular *instance* of -the matcher, where the parameters have been bound to actual values. Therefore -usually you'll want the parameter values to be part of the description. gMock -lets you do that by referencing the matcher parameters in the description string -expression. - -For example, - -```cpp -using ::testing::PrintToString; -MATCHER_P2(InClosedRange, low, hi, - absl::StrFormat("%s in range [%s, %s]", negation ? "isn't" : "is", - PrintToString(low), PrintToString(hi))) { - return low <= arg && arg <= hi; -} -... -EXPECT_THAT(3, InClosedRange(4, 6)); -``` - -would generate a failure that contains the message: - -```shell - Expected: is in range [4, 6] -``` - -If you specify `""` as the description, the failure message will contain the -sequence of words in the matcher name followed by the parameter values printed -as a tuple. For example, - -```cpp - MATCHER_P2(InClosedRange, low, hi, "") { ... } - ... - EXPECT_THAT(3, InClosedRange(4, 6)); -``` - -would generate a failure that contains the text: - -```shell - Expected: in closed range (4, 6) -``` - -For the purpose of typing, you can view - -```cpp -MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... } -``` - -as shorthand for - -```cpp -template -FooMatcherPk -Foo(p1_type p1, ..., pk_type pk) { ... } -``` - -When you write `Foo(v1, ..., vk)`, the compiler infers the types of the -parameters `v1`, ..., and `vk` for you. If you are not happy with the result of -the type inference, you can specify the types by explicitly instantiating the -template, as in `Foo(5, false)`. As said earlier, you don't get to -(or need to) specify `arg_type` as that's determined by the context in which the -matcher is used. - -You can assign the result of expression `Foo(p1, ..., pk)` to a variable of type -`FooMatcherPk`. This can be useful when composing -matchers. Matchers that don't have a parameter or have only one parameter have -special types: you can assign `Foo()` to a `FooMatcher`-typed variable, and -assign `Foo(p)` to a `FooMatcherP`-typed variable. - -While you can instantiate a matcher template with reference types, passing the -parameters by pointer usually makes your code more readable. If, however, you -still want to pass a parameter by reference, be aware that in the failure -message generated by the matcher you will see the value of the referenced object -but not its address. - -You can overload matchers with different numbers of parameters: - -```cpp -MATCHER_P(Blah, a, description_string_1) { ... } -MATCHER_P2(Blah, a, b, description_string_2) { ... } -``` - -While it's tempting to always use the `MATCHER*` macros when defining a new -matcher, you should also consider implementing the matcher interface directly -instead (see the recipes that follow), especially if you need to use the matcher -a lot. While these approaches require more work, they give you more control on -the types of the value being matched and the matcher parameters, which in -general leads to better compiler error messages that pay off in the long run. -They also allow overloading matchers based on parameter types (as opposed to -just based on the number of parameters). - -### Writing New Monomorphic Matchers - -A matcher of argument type `T` implements the matcher interface for `T` and does -two things: it tests whether a value of type `T` matches the matcher, and can -describe what kind of values it matches. The latter ability is used for -generating readable error messages when expectations are violated. - -A matcher of `T` must declare a typedef like: - -```cpp -using is_gtest_matcher = void; -``` - -and supports the following operations: - -```cpp -// Match a value and optionally explain into an ostream. -bool matched = matcher.MatchAndExplain(value, maybe_os); -// where `value` is of type `T` and -// `maybe_os` is of type `std::ostream*`, where it can be null if the caller -// is not interested in there textual explanation. - -matcher.DescribeTo(os); -matcher.DescribeNegationTo(os); -// where `os` is of type `std::ostream*`. -``` - -If you need a custom matcher but `Truly()` is not a good option (for example, -you may not be happy with the way `Truly(predicate)` describes itself, or you -may want your matcher to be polymorphic as `Eq(value)` is), you can define a -matcher to do whatever you want in two steps: first implement the matcher -interface, and then define a factory function to create a matcher instance. The -second step is not strictly needed but it makes the syntax of using the matcher -nicer. - -For example, you can define a matcher to test whether an `int` is divisible by 7 -and then use it like this: - -```cpp -using ::testing::Matcher; - -class DivisibleBy7Matcher { - public: - using is_gtest_matcher = void; - - bool MatchAndExplain(int n, std::ostream*) const { - return (n % 7) == 0; - } - - void DescribeTo(std::ostream* os) const { - *os << "is divisible by 7"; - } - - void DescribeNegationTo(std::ostream* os) const { - *os << "is not divisible by 7"; - } -}; - -Matcher DivisibleBy7() { - return DivisibleBy7Matcher(); -} - -... - EXPECT_CALL(foo, Bar(DivisibleBy7())); -``` - -You may improve the matcher message by streaming additional information to the -`os` argument in `MatchAndExplain()`: - -```cpp -class DivisibleBy7Matcher { - public: - bool MatchAndExplain(int n, std::ostream* os) const { - const int remainder = n % 7; - if (remainder != 0 && os != nullptr) { - *os << "the remainder is " << remainder; - } - return remainder == 0; - } - ... -}; -``` - -Then, `EXPECT_THAT(x, DivisibleBy7());` may generate a message like this: - -```shell -Value of: x -Expected: is divisible by 7 - Actual: 23 (the remainder is 2) -``` - -{: .callout .tip} -Tip: for convenience, `MatchAndExplain()` can take a `MatchResultListener*` -instead of `std::ostream*`. - -### Writing New Polymorphic Matchers - -Expanding what we learned above to *polymorphic* matchers is now just as simple -as adding templates in the right place. - -```cpp - -class NotNullMatcher { - public: - using is_gtest_matcher = void; - - // To implement a polymorphic matcher, we just need to make MatchAndExplain a - // template on its first argument. - - // In this example, we want to use NotNull() with any pointer, so - // MatchAndExplain() accepts a pointer of any type as its first argument. - // In general, you can define MatchAndExplain() as an ordinary method or - // a method template, or even overload it. - template - bool MatchAndExplain(T* p, std::ostream*) const { - return p != nullptr; - } - - // Describes the property of a value matching this matcher. - void DescribeTo(std::ostream* os) const { *os << "is not NULL"; } - - // Describes the property of a value NOT matching this matcher. - void DescribeNegationTo(std::ostream* os) const { *os << "is NULL"; } -}; - -NotNullMatcher NotNull() { - return NotNullMatcher(); -} - -... - - EXPECT_CALL(foo, Bar(NotNull())); // The argument must be a non-NULL pointer. -``` - -### Legacy Matcher Implementation - -Defining matchers used to be somewhat more complicated, in which it required -several supporting classes and virtual functions. To implement a matcher for -type `T` using the legacy API you have to derive from `MatcherInterface` and -call `MakeMatcher` to construct the object. - -The interface looks like this: - -```cpp -class MatchResultListener { - public: - ... - // Streams x to the underlying ostream; does nothing if the ostream - // is NULL. - template - MatchResultListener& operator<<(const T& x); - - // Returns the underlying ostream. - std::ostream* stream(); -}; - -template -class MatcherInterface { - public: - virtual ~MatcherInterface(); - - // Returns true if and only if the matcher matches x; also explains the match - // result to 'listener'. - virtual bool MatchAndExplain(T x, MatchResultListener* listener) const = 0; - - // Describes this matcher to an ostream. - virtual void DescribeTo(std::ostream* os) const = 0; - - // Describes the negation of this matcher to an ostream. - virtual void DescribeNegationTo(std::ostream* os) const; -}; -``` - -Fortunately, most of the time you can define a polymorphic matcher easily with -the help of `MakePolymorphicMatcher()`. Here's how you can define `NotNull()` as -an example: - -```cpp -using ::testing::MakePolymorphicMatcher; -using ::testing::MatchResultListener; -using ::testing::PolymorphicMatcher; - -class NotNullMatcher { - public: - // To implement a polymorphic matcher, first define a COPYABLE class - // that has three members MatchAndExplain(), DescribeTo(), and - // DescribeNegationTo(), like the following. - - // In this example, we want to use NotNull() with any pointer, so - // MatchAndExplain() accepts a pointer of any type as its first argument. - // In general, you can define MatchAndExplain() as an ordinary method or - // a method template, or even overload it. - template - bool MatchAndExplain(T* p, - MatchResultListener* /* listener */) const { - return p != NULL; - } - - // Describes the property of a value matching this matcher. - void DescribeTo(std::ostream* os) const { *os << "is not NULL"; } - - // Describes the property of a value NOT matching this matcher. - void DescribeNegationTo(std::ostream* os) const { *os << "is NULL"; } -}; - -// To construct a polymorphic matcher, pass an instance of the class -// to MakePolymorphicMatcher(). Note the return type. -PolymorphicMatcher NotNull() { - return MakePolymorphicMatcher(NotNullMatcher()); -} - -... - - EXPECT_CALL(foo, Bar(NotNull())); // The argument must be a non-NULL pointer. -``` - -{: .callout .note} -**Note:** Your polymorphic matcher class does **not** need to inherit from -`MatcherInterface` or any other class, and its methods do **not** need to be -virtual. - -Like in a monomorphic matcher, you may explain the match result by streaming -additional information to the `listener` argument in `MatchAndExplain()`. - -### Writing New Cardinalities - -A cardinality is used in `Times()` to tell gMock how many times you expect a -call to occur. It doesn't have to be exact. For example, you can say -`AtLeast(5)` or `Between(2, 4)`. - -If the [built-in set](gmock_cheat_sheet.md#CardinalityList) of cardinalities -doesn't suit you, you are free to define your own by implementing the following -interface (in namespace `testing`): - -```cpp -class CardinalityInterface { - public: - virtual ~CardinalityInterface(); - - // Returns true if and only if call_count calls will satisfy this cardinality. - virtual bool IsSatisfiedByCallCount(int call_count) const = 0; - - // Returns true if and only if call_count calls will saturate this - // cardinality. - virtual bool IsSaturatedByCallCount(int call_count) const = 0; - - // Describes self to an ostream. - virtual void DescribeTo(std::ostream* os) const = 0; -}; -``` - -For example, to specify that a call must occur even number of times, you can -write - -```cpp -using ::testing::Cardinality; -using ::testing::CardinalityInterface; -using ::testing::MakeCardinality; - -class EvenNumberCardinality : public CardinalityInterface { - public: - bool IsSatisfiedByCallCount(int call_count) const override { - return (call_count % 2) == 0; - } - - bool IsSaturatedByCallCount(int call_count) const override { - return false; - } - - void DescribeTo(std::ostream* os) const { - *os << "called even number of times"; - } -}; - -Cardinality EvenNumber() { - return MakeCardinality(new EvenNumberCardinality); -} - -... - EXPECT_CALL(foo, Bar(3)) - .Times(EvenNumber()); -``` - -### Writing New Actions {#QuickNewActions} - -If the built-in actions don't work for you, you can easily define your own one. -All you need is a call operator with a signature compatible with the mocked -function. So you can use a lambda: - -``` -MockFunction mock; -EXPECT_CALL(mock, Call).WillOnce([](const int input) { return input * 7; }); -EXPECT_EQ(14, mock.AsStdFunction()(2)); -``` - -Or a struct with a call operator (even a templated one): - -``` -struct MultiplyBy { - template - T operator()(T arg) { return arg * multiplier; } - - int multiplier; -}; - -// Then use: -// EXPECT_CALL(...).WillOnce(MultiplyBy{7}); -``` - -It's also fine for the callable to take no arguments, ignoring the arguments -supplied to the mock function: - -``` -MockFunction mock; -EXPECT_CALL(mock, Call).WillOnce([] { return 17; }); -EXPECT_EQ(17, mock.AsStdFunction()(0)); -``` - -When used with `WillOnce`, the callable can assume it will be called at most -once and is allowed to be a move-only type: - -``` -// An action that contains move-only types and has an &&-qualified operator, -// demanding in the type system that it be called at most once. This can be -// used with WillOnce, but the compiler will reject it if handed to -// WillRepeatedly. -struct MoveOnlyAction { - std::unique_ptr move_only_state; - std::unique_ptr operator()() && { return std::move(move_only_state); } -}; - -MockFunction()> mock; -EXPECT_CALL(mock, Call).WillOnce(MoveOnlyAction{std::make_unique(17)}); -EXPECT_THAT(mock.AsStdFunction()(), Pointee(Eq(17))); -``` - -More generally, to use with a mock function whose signature is `R(Args...)` the -object can be anything convertible to `OnceAction` or -`Action. The difference between the two is that `OnceAction` has -weaker requirements (`Action` requires a copy-constructible input that can be -called repeatedly whereas `OnceAction` requires only move-constructible and -supports `&&`-qualified call operators), but can be used only with `WillOnce`. -`OnceAction` is typically relevant only when supporting move-only types or -actions that want a type-system guarantee that they will be called at most once. - -Typically the `OnceAction` and `Action` templates need not be referenced -directly in your actions: a struct or class with a call operator is sufficient, -as in the examples above. But fancier polymorphic actions that need to know the -specific return type of the mock function can define templated conversion -operators to make that possible. See `gmock-actions.h` for examples. - -#### Legacy macro-based Actions - -Before C++11, the functor-based actions were not supported; the old way of -writing actions was through a set of `ACTION*` macros. We suggest to avoid them -in new code; they hide a lot of logic behind the macro, potentially leading to -harder-to-understand compiler errors. Nevertheless, we cover them here for -completeness. - -By writing - -```cpp -ACTION(name) { statements; } -``` - -in a namespace scope (i.e. not inside a class or function), you will define an -action with the given name that executes the statements. The value returned by -`statements` will be used as the return value of the action. Inside the -statements, you can refer to the K-th (0-based) argument of the mock function as -`argK`. For example: - -```cpp -ACTION(IncrementArg1) { return ++(*arg1); } -``` - -allows you to write - -```cpp -... WillOnce(IncrementArg1()); -``` - -Note that you don't need to specify the types of the mock function arguments. -Rest assured that your code is type-safe though: you'll get a compiler error if -`*arg1` doesn't support the `++` operator, or if the type of `++(*arg1)` isn't -compatible with the mock function's return type. - -Another example: - -```cpp -ACTION(Foo) { - (*arg2)(5); - Blah(); - *arg1 = 0; - return arg0; -} -``` - -defines an action `Foo()` that invokes argument #2 (a function pointer) with 5, -calls function `Blah()`, sets the value pointed to by argument #1 to 0, and -returns argument #0. - -For more convenience and flexibility, you can also use the following pre-defined -symbols in the body of `ACTION`: - -`argK_type` | The type of the K-th (0-based) argument of the mock function -:-------------- | :----------------------------------------------------------- -`args` | All arguments of the mock function as a tuple -`args_type` | The type of all arguments of the mock function as a tuple -`return_type` | The return type of the mock function -`function_type` | The type of the mock function - -For example, when using an `ACTION` as a stub action for mock function: - -```cpp -int DoSomething(bool flag, int* ptr); -``` - -we have: - -Pre-defined Symbol | Is Bound To ------------------- | --------------------------------- -`arg0` | the value of `flag` -`arg0_type` | the type `bool` -`arg1` | the value of `ptr` -`arg1_type` | the type `int*` -`args` | the tuple `(flag, ptr)` -`args_type` | the type `std::tuple` -`return_type` | the type `int` -`function_type` | the type `int(bool, int*)` - -#### Legacy macro-based parameterized Actions - -Sometimes you'll want to parameterize an action you define. For that we have -another macro - -```cpp -ACTION_P(name, param) { statements; } -``` - -For example, - -```cpp -ACTION_P(Add, n) { return arg0 + n; } -``` - -will allow you to write - -```cpp -// Returns argument #0 + 5. -... WillOnce(Add(5)); -``` - -For convenience, we use the term *arguments* for the values used to invoke the -mock function, and the term *parameters* for the values used to instantiate an -action. - -Note that you don't need to provide the type of the parameter either. Suppose -the parameter is named `param`, you can also use the gMock-defined symbol -`param_type` to refer to the type of the parameter as inferred by the compiler. -For example, in the body of `ACTION_P(Add, n)` above, you can write `n_type` for -the type of `n`. - -gMock also provides `ACTION_P2`, `ACTION_P3`, and etc to support multi-parameter -actions. For example, - -```cpp -ACTION_P2(ReturnDistanceTo, x, y) { - double dx = arg0 - x; - double dy = arg1 - y; - return sqrt(dx*dx + dy*dy); -} -``` - -lets you write - -```cpp -... WillOnce(ReturnDistanceTo(5.0, 26.5)); -``` - -You can view `ACTION` as a degenerated parameterized action where the number of -parameters is 0. - -You can also easily define actions overloaded on the number of parameters: - -```cpp -ACTION_P(Plus, a) { ... } -ACTION_P2(Plus, a, b) { ... } -``` - -### Restricting the Type of an Argument or Parameter in an ACTION - -For maximum brevity and reusability, the `ACTION*` macros don't ask you to -provide the types of the mock function arguments and the action parameters. -Instead, we let the compiler infer the types for us. - -Sometimes, however, we may want to be more explicit about the types. There are -several tricks to do that. For example: - -```cpp -ACTION(Foo) { - // Makes sure arg0 can be converted to int. - int n = arg0; - ... use n instead of arg0 here ... -} - -ACTION_P(Bar, param) { - // Makes sure the type of arg1 is const char*. - ::testing::StaticAssertTypeEq(); - - // Makes sure param can be converted to bool. - bool flag = param; -} -``` - -where `StaticAssertTypeEq` is a compile-time assertion in googletest that -verifies two types are the same. - -### Writing New Action Templates Quickly - -Sometimes you want to give an action explicit template parameters that cannot be -inferred from its value parameters. `ACTION_TEMPLATE()` supports that and can be -viewed as an extension to `ACTION()` and `ACTION_P*()`. - -The syntax: - -```cpp -ACTION_TEMPLATE(ActionName, - HAS_m_TEMPLATE_PARAMS(kind1, name1, ..., kind_m, name_m), - AND_n_VALUE_PARAMS(p1, ..., p_n)) { statements; } -``` - -defines an action template that takes *m* explicit template parameters and *n* -value parameters, where *m* is in [1, 10] and *n* is in [0, 10]. `name_i` is the -name of the *i*-th template parameter, and `kind_i` specifies whether it's a -`typename`, an integral constant, or a template. `p_i` is the name of the *i*-th -value parameter. - -Example: - -```cpp -// DuplicateArg(output) converts the k-th argument of the mock -// function to type T and copies it to *output. -ACTION_TEMPLATE(DuplicateArg, - // Note the comma between int and k: - HAS_2_TEMPLATE_PARAMS(int, k, typename, T), - AND_1_VALUE_PARAMS(output)) { - *output = T(std::get(args)); -} -``` - -To create an instance of an action template, write: - -```cpp -ActionName(v1, ..., v_n) -``` - -where the `t`s are the template arguments and the `v`s are the value arguments. -The value argument types are inferred by the compiler. For example: - -```cpp -using ::testing::_; -... - int n; - EXPECT_CALL(mock, Foo).WillOnce(DuplicateArg<1, unsigned char>(&n)); -``` - -If you want to explicitly specify the value argument types, you can provide -additional template arguments: - -```cpp -ActionName(v1, ..., v_n) -``` - -where `u_i` is the desired type of `v_i`. - -`ACTION_TEMPLATE` and `ACTION`/`ACTION_P*` can be overloaded on the number of -value parameters, but not on the number of template parameters. Without the -restriction, the meaning of the following is unclear: - -```cpp - OverloadedAction(x); -``` - -Are we using a single-template-parameter action where `bool` refers to the type -of `x`, or a two-template-parameter action where the compiler is asked to infer -the type of `x`? - -### Using the ACTION Object's Type - -If you are writing a function that returns an `ACTION` object, you'll need to -know its type. The type depends on the macro used to define the action and the -parameter types. The rule is relatively simple: - - -| Given Definition | Expression | Has Type | -| ----------------------------- | ------------------- | --------------------- | -| `ACTION(Foo)` | `Foo()` | `FooAction` | -| `ACTION_TEMPLATE(Foo, HAS_m_TEMPLATE_PARAMS(...), AND_0_VALUE_PARAMS())` | `Foo()` | `FooAction` | -| `ACTION_P(Bar, param)` | `Bar(int_value)` | `BarActionP` | -| `ACTION_TEMPLATE(Bar, HAS_m_TEMPLATE_PARAMS(...), AND_1_VALUE_PARAMS(p1))` | `Bar(int_value)` | `BarActionP` | -| `ACTION_P2(Baz, p1, p2)` | `Baz(bool_value, int_value)` | `BazActionP2` | -| `ACTION_TEMPLATE(Baz, HAS_m_TEMPLATE_PARAMS(...), AND_2_VALUE_PARAMS(p1, p2))` | `Baz(bool_value, int_value)` | `BazActionP2` | -| ... | ... | ... | - - -Note that we have to pick different suffixes (`Action`, `ActionP`, `ActionP2`, -and etc) for actions with different numbers of value parameters, or the action -definitions cannot be overloaded on the number of them. - -### Writing New Monomorphic Actions {#NewMonoActions} - -While the `ACTION*` macros are very convenient, sometimes they are -inappropriate. For example, despite the tricks shown in the previous recipes, -they don't let you directly specify the types of the mock function arguments and -the action parameters, which in general leads to unoptimized compiler error -messages that can baffle unfamiliar users. They also don't allow overloading -actions based on parameter types without jumping through some hoops. - -An alternative to the `ACTION*` macros is to implement -`::testing::ActionInterface`, where `F` is the type of the mock function in -which the action will be used. For example: - -```cpp -template -class ActionInterface { - public: - virtual ~ActionInterface(); - - // Performs the action. Result is the return type of function type - // F, and ArgumentTuple is the tuple of arguments of F. - // - - // For example, if F is int(bool, const string&), then Result would - // be int, and ArgumentTuple would be std::tuple. - virtual Result Perform(const ArgumentTuple& args) = 0; -}; -``` - -```cpp -using ::testing::_; -using ::testing::Action; -using ::testing::ActionInterface; -using ::testing::MakeAction; - -typedef int IncrementMethod(int*); - -class IncrementArgumentAction : public ActionInterface { - public: - int Perform(const std::tuple& args) override { - int* p = std::get<0>(args); // Grabs the first argument. - return *p++; - } -}; - -Action IncrementArgument() { - return MakeAction(new IncrementArgumentAction); -} - -... - EXPECT_CALL(foo, Baz(_)) - .WillOnce(IncrementArgument()); - - int n = 5; - foo.Baz(&n); // Should return 5 and change n to 6. -``` - -### Writing New Polymorphic Actions {#NewPolyActions} - -The previous recipe showed you how to define your own action. This is all good, -except that you need to know the type of the function in which the action will -be used. Sometimes that can be a problem. For example, if you want to use the -action in functions with *different* types (e.g. like `Return()` and -`SetArgPointee()`). - -If an action can be used in several types of mock functions, we say it's -*polymorphic*. The `MakePolymorphicAction()` function template makes it easy to -define such an action: - -```cpp -namespace testing { -template -PolymorphicAction MakePolymorphicAction(const Impl& impl); -} // namespace testing -``` - -As an example, let's define an action that returns the second argument in the -mock function's argument list. The first step is to define an implementation -class: - -```cpp -class ReturnSecondArgumentAction { - public: - template - Result Perform(const ArgumentTuple& args) const { - // To get the i-th (0-based) argument, use std::get(args). - return std::get<1>(args); - } -}; -``` - -This implementation class does *not* need to inherit from any particular class. -What matters is that it must have a `Perform()` method template. This method -template takes the mock function's arguments as a tuple in a **single** -argument, and returns the result of the action. It can be either `const` or not, -but must be invocable with exactly one template argument, which is the result -type. In other words, you must be able to call `Perform(args)` where `R` is -the mock function's return type and `args` is its arguments in a tuple. - -Next, we use `MakePolymorphicAction()` to turn an instance of the implementation -class into the polymorphic action we need. It will be convenient to have a -wrapper for this: - -```cpp -using ::testing::MakePolymorphicAction; -using ::testing::PolymorphicAction; - -PolymorphicAction ReturnSecondArgument() { - return MakePolymorphicAction(ReturnSecondArgumentAction()); -} -``` - -Now, you can use this polymorphic action the same way you use the built-in ones: - -```cpp -using ::testing::_; - -class MockFoo : public Foo { - public: - MOCK_METHOD(int, DoThis, (bool flag, int n), (override)); - MOCK_METHOD(string, DoThat, (int x, const char* str1, const char* str2), - (override)); -}; - - ... - MockFoo foo; - EXPECT_CALL(foo, DoThis).WillOnce(ReturnSecondArgument()); - EXPECT_CALL(foo, DoThat).WillOnce(ReturnSecondArgument()); - ... - foo.DoThis(true, 5); // Will return 5. - foo.DoThat(1, "Hi", "Bye"); // Will return "Hi". -``` - -### Teaching gMock How to Print Your Values - -When an uninteresting or unexpected call occurs, gMock prints the argument -values and the stack trace to help you debug. Assertion macros like -`EXPECT_THAT` and `EXPECT_EQ` also print the values in question when the -assertion fails. gMock and googletest do this using googletest's user-extensible -value printer. - -This printer knows how to print built-in C++ types, native arrays, STL -containers, and any type that supports the `<<` operator. For other types, it -prints the raw bytes in the value and hopes that you the user can figure it out. -[The GoogleTest advanced guide](advanced.md#teaching-googletest-how-to-print-your-values) -explains how to extend the printer to do a better job at printing your -particular type than to dump the bytes. - -## Useful Mocks Created Using gMock - - - - -### Mock std::function {#MockFunction} - -`std::function` is a general function type introduced in C++11. It is a -preferred way of passing callbacks to new interfaces. Functions are copiable, -and are not usually passed around by pointer, which makes them tricky to mock. -But fear not - `MockFunction` can help you with that. - -`MockFunction` has a mock method `Call()` with the signature: - -```cpp - R Call(T1, ..., Tn); -``` - -It also has a `AsStdFunction()` method, which creates a `std::function` proxy -forwarding to Call: - -```cpp - std::function AsStdFunction(); -``` - -To use `MockFunction`, first create `MockFunction` object and set up -expectations on its `Call` method. Then pass proxy obtained from -`AsStdFunction()` to the code you are testing. For example: - -```cpp -TEST(FooTest, RunsCallbackWithBarArgument) { - // 1. Create a mock object. - MockFunction mock_function; - - // 2. Set expectations on Call() method. - EXPECT_CALL(mock_function, Call("bar")).WillOnce(Return(1)); - - // 3. Exercise code that uses std::function. - Foo(mock_function.AsStdFunction()); - // Foo's signature can be either of: - // void Foo(const std::function& fun); - // void Foo(std::function fun); - - // 4. All expectations will be verified when mock_function - // goes out of scope and is destroyed. -} -``` - -Remember that function objects created with `AsStdFunction()` are just -forwarders. If you create multiple of them, they will share the same set of -expectations. - -Although `std::function` supports unlimited number of arguments, `MockFunction` -implementation is limited to ten. If you ever hit that limit... well, your -callback has bigger problems than being mockable. :-) diff --git a/tests/lib/docs/gmock_faq.md b/tests/lib/docs/gmock_faq.md deleted file mode 100644 index 8f220bf7a8..0000000000 --- a/tests/lib/docs/gmock_faq.md +++ /dev/null @@ -1,390 +0,0 @@ -# Legacy gMock FAQ - -### When I call a method on my mock object, the method for the real object is invoked instead. What's the problem? - -In order for a method to be mocked, it must be *virtual*, unless you use the -[high-perf dependency injection technique](gmock_cook_book.md#MockingNonVirtualMethods). - -### Can I mock a variadic function? - -You cannot mock a variadic function (i.e. a function taking ellipsis (`...`) -arguments) directly in gMock. - -The problem is that in general, there is *no way* for a mock object to know how -many arguments are passed to the variadic method, and what the arguments' types -are. Only the *author of the base class* knows the protocol, and we cannot look -into his or her head. - -Therefore, to mock such a function, the *user* must teach the mock object how to -figure out the number of arguments and their types. One way to do it is to -provide overloaded versions of the function. - -Ellipsis arguments are inherited from C and not really a C++ feature. They are -unsafe to use and don't work with arguments that have constructors or -destructors. Therefore we recommend to avoid them in C++ as much as possible. - -### MSVC gives me warning C4301 or C4373 when I define a mock method with a const parameter. Why? - -If you compile this using Microsoft Visual C++ 2005 SP1: - -```cpp -class Foo { - ... - virtual void Bar(const int i) = 0; -}; - -class MockFoo : public Foo { - ... - MOCK_METHOD(void, Bar, (const int i), (override)); -}; -``` - -You may get the following warning: - -```shell -warning C4301: 'MockFoo::Bar': overriding virtual function only differs from 'Foo::Bar' by const/volatile qualifier -``` - -This is a MSVC bug. The same code compiles fine with gcc, for example. If you -use Visual C++ 2008 SP1, you would get the warning: - -```shell -warning C4373: 'MockFoo::Bar': virtual function overrides 'Foo::Bar', previous versions of the compiler did not override when parameters only differed by const/volatile qualifiers -``` - -In C++, if you *declare* a function with a `const` parameter, the `const` -modifier is ignored. Therefore, the `Foo` base class above is equivalent to: - -```cpp -class Foo { - ... - virtual void Bar(int i) = 0; // int or const int? Makes no difference. -}; -``` - -In fact, you can *declare* `Bar()` with an `int` parameter, and define it with a -`const int` parameter. The compiler will still match them up. - -Since making a parameter `const` is meaningless in the method declaration, we -recommend to remove it in both `Foo` and `MockFoo`. That should workaround the -VC bug. - -Note that we are talking about the *top-level* `const` modifier here. If the -function parameter is passed by pointer or reference, declaring the pointee or -referee as `const` is still meaningful. For example, the following two -declarations are *not* equivalent: - -```cpp -void Bar(int* p); // Neither p nor *p is const. -void Bar(const int* p); // p is not const, but *p is. -``` - -### I can't figure out why gMock thinks my expectations are not satisfied. What should I do? - -You might want to run your test with `--gmock_verbose=info`. This flag lets -gMock print a trace of every mock function call it receives. By studying the -trace, you'll gain insights on why the expectations you set are not met. - -If you see the message "The mock function has no default action set, and its -return type has no default value set.", then try -[adding a default action](gmock_cheat_sheet.md#OnCall). Due to a known issue, -unexpected calls on mocks without default actions don't print out a detailed -comparison between the actual arguments and the expected arguments. - -### My program crashed and `ScopedMockLog` spit out tons of messages. Is it a gMock bug? - -gMock and `ScopedMockLog` are likely doing the right thing here. - -When a test crashes, the failure signal handler will try to log a lot of -information (the stack trace, and the address map, for example). The messages -are compounded if you have many threads with depth stacks. When `ScopedMockLog` -intercepts these messages and finds that they don't match any expectations, it -prints an error for each of them. - -You can learn to ignore the errors, or you can rewrite your expectations to make -your test more robust, for example, by adding something like: - -```cpp -using ::testing::AnyNumber; -using ::testing::Not; -... - // Ignores any log not done by us. - EXPECT_CALL(log, Log(_, Not(EndsWith("/my_file.cc")), _)) - .Times(AnyNumber()); -``` - -### How can I assert that a function is NEVER called? - -```cpp -using ::testing::_; -... - EXPECT_CALL(foo, Bar(_)) - .Times(0); -``` - -### I have a failed test where gMock tells me TWICE that a particular expectation is not satisfied. Isn't this redundant? - -When gMock detects a failure, it prints relevant information (the mock function -arguments, the state of relevant expectations, and etc) to help the user debug. -If another failure is detected, gMock will do the same, including printing the -state of relevant expectations. - -Sometimes an expectation's state didn't change between two failures, and you'll -see the same description of the state twice. They are however *not* redundant, -as they refer to *different points in time*. The fact they are the same *is* -interesting information. - -### I get a heapcheck failure when using a mock object, but using a real object is fine. What can be wrong? - -Does the class (hopefully a pure interface) you are mocking have a virtual -destructor? - -Whenever you derive from a base class, make sure its destructor is virtual. -Otherwise Bad Things will happen. Consider the following code: - -```cpp -class Base { - public: - // Not virtual, but should be. - ~Base() { ... } - ... -}; - -class Derived : public Base { - public: - ... - private: - std::string value_; -}; - -... - Base* p = new Derived; - ... - delete p; // Surprise! ~Base() will be called, but ~Derived() will not - // - value_ is leaked. -``` - -By changing `~Base()` to virtual, `~Derived()` will be correctly called when -`delete p` is executed, and the heap checker will be happy. - -### The "newer expectations override older ones" rule makes writing expectations awkward. Why does gMock do that? - -When people complain about this, often they are referring to code like: - -```cpp -using ::testing::Return; -... - // foo.Bar() should be called twice, return 1 the first time, and return - // 2 the second time. However, I have to write the expectations in the - // reverse order. This sucks big time!!! - EXPECT_CALL(foo, Bar()) - .WillOnce(Return(2)) - .RetiresOnSaturation(); - EXPECT_CALL(foo, Bar()) - .WillOnce(Return(1)) - .RetiresOnSaturation(); -``` - -The problem, is that they didn't pick the **best** way to express the test's -intent. - -By default, expectations don't have to be matched in *any* particular order. If -you want them to match in a certain order, you need to be explicit. This is -gMock's (and jMock's) fundamental philosophy: it's easy to accidentally -over-specify your tests, and we want to make it harder to do so. - -There are two better ways to write the test spec. You could either put the -expectations in sequence: - -```cpp -using ::testing::Return; -... - // foo.Bar() should be called twice, return 1 the first time, and return - // 2 the second time. Using a sequence, we can write the expectations - // in their natural order. - { - InSequence s; - EXPECT_CALL(foo, Bar()) - .WillOnce(Return(1)) - .RetiresOnSaturation(); - EXPECT_CALL(foo, Bar()) - .WillOnce(Return(2)) - .RetiresOnSaturation(); - } -``` - -or you can put the sequence of actions in the same expectation: - -```cpp -using ::testing::Return; -... - // foo.Bar() should be called twice, return 1 the first time, and return - // 2 the second time. - EXPECT_CALL(foo, Bar()) - .WillOnce(Return(1)) - .WillOnce(Return(2)) - .RetiresOnSaturation(); -``` - -Back to the original questions: why does gMock search the expectations (and -`ON_CALL`s) from back to front? Because this allows a user to set up a mock's -behavior for the common case early (e.g. in the mock's constructor or the test -fixture's set-up phase) and customize it with more specific rules later. If -gMock searches from front to back, this very useful pattern won't be possible. - -### gMock prints a warning when a function without EXPECT_CALL is called, even if I have set its behavior using ON_CALL. Would it be reasonable not to show the warning in this case? - -When choosing between being neat and being safe, we lean toward the latter. So -the answer is that we think it's better to show the warning. - -Often people write `ON_CALL`s in the mock object's constructor or `SetUp()`, as -the default behavior rarely changes from test to test. Then in the test body -they set the expectations, which are often different for each test. Having an -`ON_CALL` in the set-up part of a test doesn't mean that the calls are expected. -If there's no `EXPECT_CALL` and the method is called, it's possibly an error. If -we quietly let the call go through without notifying the user, bugs may creep in -unnoticed. - -If, however, you are sure that the calls are OK, you can write - -```cpp -using ::testing::_; -... - EXPECT_CALL(foo, Bar(_)) - .WillRepeatedly(...); -``` - -instead of - -```cpp -using ::testing::_; -... - ON_CALL(foo, Bar(_)) - .WillByDefault(...); -``` - -This tells gMock that you do expect the calls and no warning should be printed. - -Also, you can control the verbosity by specifying `--gmock_verbose=error`. Other -values are `info` and `warning`. If you find the output too noisy when -debugging, just choose a less verbose level. - -### How can I delete the mock function's argument in an action? - -If your mock function takes a pointer argument and you want to delete that -argument, you can use testing::DeleteArg() to delete the N'th (zero-indexed) -argument: - -```cpp -using ::testing::_; - ... - MOCK_METHOD(void, Bar, (X* x, const Y& y)); - ... - EXPECT_CALL(mock_foo_, Bar(_, _)) - .WillOnce(testing::DeleteArg<0>())); -``` - -### How can I perform an arbitrary action on a mock function's argument? - -If you find yourself needing to perform some action that's not supported by -gMock directly, remember that you can define your own actions using -[`MakeAction()`](#NewMonoActions) or -[`MakePolymorphicAction()`](#NewPolyActions), or you can write a stub function -and invoke it using [`Invoke()`](#FunctionsAsActions). - -```cpp -using ::testing::_; -using ::testing::Invoke; - ... - MOCK_METHOD(void, Bar, (X* p)); - ... - EXPECT_CALL(mock_foo_, Bar(_)) - .WillOnce(Invoke(MyAction(...))); -``` - -### My code calls a static/global function. Can I mock it? - -You can, but you need to make some changes. - -In general, if you find yourself needing to mock a static function, it's a sign -that your modules are too tightly coupled (and less flexible, less reusable, -less testable, etc). You are probably better off defining a small interface and -call the function through that interface, which then can be easily mocked. It's -a bit of work initially, but usually pays for itself quickly. - -This Google Testing Blog -[post](https://testing.googleblog.com/2008/06/defeat-static-cling.html) says it -excellently. Check it out. - -### My mock object needs to do complex stuff. It's a lot of pain to specify the actions. gMock sucks! - -I know it's not a question, but you get an answer for free any way. :-) - -With gMock, you can create mocks in C++ easily. And people might be tempted to -use them everywhere. Sometimes they work great, and sometimes you may find them, -well, a pain to use. So, what's wrong in the latter case? - -When you write a test without using mocks, you exercise the code and assert that -it returns the correct value or that the system is in an expected state. This is -sometimes called "state-based testing". - -Mocks are great for what some call "interaction-based" testing: instead of -checking the system state at the very end, mock objects verify that they are -invoked the right way and report an error as soon as it arises, giving you a -handle on the precise context in which the error was triggered. This is often -more effective and economical to do than state-based testing. - -If you are doing state-based testing and using a test double just to simulate -the real object, you are probably better off using a fake. Using a mock in this -case causes pain, as it's not a strong point for mocks to perform complex -actions. If you experience this and think that mocks suck, you are just not -using the right tool for your problem. Or, you might be trying to solve the -wrong problem. :-) - -### I got a warning "Uninteresting function call encountered - default action taken.." Should I panic? - -By all means, NO! It's just an FYI. :-) - -What it means is that you have a mock function, you haven't set any expectations -on it (by gMock's rule this means that you are not interested in calls to this -function and therefore it can be called any number of times), and it is called. -That's OK - you didn't say it's not OK to call the function! - -What if you actually meant to disallow this function to be called, but forgot to -write `EXPECT_CALL(foo, Bar()).Times(0)`? While one can argue that it's the -user's fault, gMock tries to be nice and prints you a note. - -So, when you see the message and believe that there shouldn't be any -uninteresting calls, you should investigate what's going on. To make your life -easier, gMock dumps the stack trace when an uninteresting call is encountered. -From that you can figure out which mock function it is, and how it is called. - -### I want to define a custom action. Should I use Invoke() or implement the ActionInterface interface? - -Either way is fine - you want to choose the one that's more convenient for your -circumstance. - -Usually, if your action is for a particular function type, defining it using -`Invoke()` should be easier; if your action can be used in functions of -different types (e.g. if you are defining `Return(*value*)`), -`MakePolymorphicAction()` is easiest. Sometimes you want precise control on what -types of functions the action can be used in, and implementing `ActionInterface` -is the way to go here. See the implementation of `Return()` in `gmock-actions.h` -for an example. - -### I use SetArgPointee() in WillOnce(), but gcc complains about "conflicting return type specified". What does it mean? - -You got this error as gMock has no idea what value it should return when the -mock method is called. `SetArgPointee()` says what the side effect is, but -doesn't say what the return value should be. You need `DoAll()` to chain a -`SetArgPointee()` with a `Return()` that provides a value appropriate to the API -being mocked. - -See this [recipe](gmock_cook_book.md#mocking-side-effects) for more details and -an example. - -### I have a huge mock class, and Microsoft Visual C++ runs out of memory when compiling it. What can I do? - -We've noticed that when the `/clr` compiler flag is used, Visual C++ uses 5~6 -times as much memory when compiling a mock class. We suggest to avoid `/clr` -when compiling native C++ mocks. diff --git a/tests/lib/docs/gmock_for_dummies.md b/tests/lib/docs/gmock_for_dummies.md deleted file mode 100644 index b7264d3587..0000000000 --- a/tests/lib/docs/gmock_for_dummies.md +++ /dev/null @@ -1,700 +0,0 @@ -# gMock for Dummies - -## What Is gMock? - -When you write a prototype or test, often it's not feasible or wise to rely on -real objects entirely. A **mock object** implements the same interface as a real -object (so it can be used as one), but lets you specify at run time how it will -be used and what it should do (which methods will be called? in which order? how -many times? with what arguments? what will they return? etc). - -It is easy to confuse the term *fake objects* with mock objects. Fakes and mocks -actually mean very different things in the Test-Driven Development (TDD) -community: - -* **Fake** objects have working implementations, but usually take some - shortcut (perhaps to make the operations less expensive), which makes them - not suitable for production. An in-memory file system would be an example of - a fake. -* **Mocks** are objects pre-programmed with *expectations*, which form a - specification of the calls they are expected to receive. - -If all this seems too abstract for you, don't worry - the most important thing -to remember is that a mock allows you to check the *interaction* between itself -and code that uses it. The difference between fakes and mocks shall become much -clearer once you start to use mocks. - -**gMock** is a library (sometimes we also call it a "framework" to make it sound -cool) for creating mock classes and using them. It does to C++ what -jMock/EasyMock does to Java (well, more or less). - -When using gMock, - -1. first, you use some simple macros to describe the interface you want to - mock, and they will expand to the implementation of your mock class; -2. next, you create some mock objects and specify its expectations and behavior - using an intuitive syntax; -3. then you exercise code that uses the mock objects. gMock will catch any - violation to the expectations as soon as it arises. - -## Why gMock? - -While mock objects help you remove unnecessary dependencies in tests and make -them fast and reliable, using mocks manually in C++ is *hard*: - -* Someone has to implement the mocks. The job is usually tedious and - error-prone. No wonder people go great distance to avoid it. -* The quality of those manually written mocks is a bit, uh, unpredictable. You - may see some really polished ones, but you may also see some that were - hacked up in a hurry and have all sorts of ad hoc restrictions. -* The knowledge you gained from using one mock doesn't transfer to the next - one. - -In contrast, Java and Python programmers have some fine mock frameworks (jMock, -EasyMock, etc), which automate the creation of mocks. As a result, mocking is a -proven effective technique and widely adopted practice in those communities. -Having the right tool absolutely makes the difference. - -gMock was built to help C++ programmers. It was inspired by jMock and EasyMock, -but designed with C++'s specifics in mind. It is your friend if any of the -following problems is bothering you: - -* You are stuck with a sub-optimal design and wish you had done more - prototyping before it was too late, but prototyping in C++ is by no means - "rapid". -* Your tests are slow as they depend on too many libraries or use expensive - resources (e.g. a database). -* Your tests are brittle as some resources they use are unreliable (e.g. the - network). -* You want to test how your code handles a failure (e.g. a file checksum - error), but it's not easy to cause one. -* You need to make sure that your module interacts with other modules in the - right way, but it's hard to observe the interaction; therefore you resort to - observing the side effects at the end of the action, but it's awkward at - best. -* You want to "mock out" your dependencies, except that they don't have mock - implementations yet; and, frankly, you aren't thrilled by some of those - hand-written mocks. - -We encourage you to use gMock as - -* a *design* tool, for it lets you experiment with your interface design early - and often. More iterations lead to better designs! -* a *testing* tool to cut your tests' outbound dependencies and probe the - interaction between your module and its collaborators. - -## Getting Started - -gMock is bundled with googletest. - -## A Case for Mock Turtles - -Let's look at an example. Suppose you are developing a graphics program that -relies on a [LOGO](http://en.wikipedia.org/wiki/Logo_programming_language)-like -API for drawing. How would you test that it does the right thing? Well, you can -run it and compare the screen with a golden screen snapshot, but let's admit it: -tests like this are expensive to run and fragile (What if you just upgraded to a -shiny new graphics card that has better anti-aliasing? Suddenly you have to -update all your golden images.). It would be too painful if all your tests are -like this. Fortunately, you learned about -[Dependency Injection](http://en.wikipedia.org/wiki/Dependency_injection) and know the right thing -to do: instead of having your application talk to the system API directly, wrap -the API in an interface (say, `Turtle`) and code to that interface: - -```cpp -class Turtle { - ... - virtual ~Turtle() {} - virtual void PenUp() = 0; - virtual void PenDown() = 0; - virtual void Forward(int distance) = 0; - virtual void Turn(int degrees) = 0; - virtual void GoTo(int x, int y) = 0; - virtual int GetX() const = 0; - virtual int GetY() const = 0; -}; -``` - -(Note that the destructor of `Turtle` **must** be virtual, as is the case for -**all** classes you intend to inherit from - otherwise the destructor of the -derived class will not be called when you delete an object through a base -pointer, and you'll get corrupted program states like memory leaks.) - -You can control whether the turtle's movement will leave a trace using `PenUp()` -and `PenDown()`, and control its movement using `Forward()`, `Turn()`, and -`GoTo()`. Finally, `GetX()` and `GetY()` tell you the current position of the -turtle. - -Your program will normally use a real implementation of this interface. In -tests, you can use a mock implementation instead. This allows you to easily -check what drawing primitives your program is calling, with what arguments, and -in which order. Tests written this way are much more robust (they won't break -because your new machine does anti-aliasing differently), easier to read and -maintain (the intent of a test is expressed in the code, not in some binary -images), and run *much, much faster*. - -## Writing the Mock Class - -If you are lucky, the mocks you need to use have already been implemented by -some nice people. If, however, you find yourself in the position to write a mock -class, relax - gMock turns this task into a fun game! (Well, almost.) - -### How to Define It - -Using the `Turtle` interface as example, here are the simple steps you need to -follow: - -* Derive a class `MockTurtle` from `Turtle`. -* Take a *virtual* function of `Turtle` (while it's possible to - [mock non-virtual methods using templates](gmock_cook_book.md#MockingNonVirtualMethods), - it's much more involved). -* In the `public:` section of the child class, write `MOCK_METHOD();` -* Now comes the fun part: you take the function signature, cut-and-paste it - into the macro, and add two commas - one between the return type and the - name, another between the name and the argument list. -* If you're mocking a const method, add a 4th parameter containing `(const)` - (the parentheses are required). -* Since you're overriding a virtual method, we suggest adding the `override` - keyword. For const methods the 4th parameter becomes `(const, override)`, - for non-const methods just `(override)`. This isn't mandatory. -* Repeat until all virtual functions you want to mock are done. (It goes - without saying that *all* pure virtual methods in your abstract class must - be either mocked or overridden.) - -After the process, you should have something like: - -```cpp -#include "gmock/gmock.h" // Brings in gMock. - -class MockTurtle : public Turtle { - public: - ... - MOCK_METHOD(void, PenUp, (), (override)); - MOCK_METHOD(void, PenDown, (), (override)); - MOCK_METHOD(void, Forward, (int distance), (override)); - MOCK_METHOD(void, Turn, (int degrees), (override)); - MOCK_METHOD(void, GoTo, (int x, int y), (override)); - MOCK_METHOD(int, GetX, (), (const, override)); - MOCK_METHOD(int, GetY, (), (const, override)); -}; -``` - -You don't need to define these mock methods somewhere else - the `MOCK_METHOD` -macro will generate the definitions for you. It's that simple! - -### Where to Put It - -When you define a mock class, you need to decide where to put its definition. -Some people put it in a `_test.cc`. This is fine when the interface being mocked -(say, `Foo`) is owned by the same person or team. Otherwise, when the owner of -`Foo` changes it, your test could break. (You can't really expect `Foo`'s -maintainer to fix every test that uses `Foo`, can you?) - -Generally, you should not mock classes you don't own. If you must mock such a -class owned by others, define the mock class in `Foo`'s Bazel package (usually -the same directory or a `testing` sub-directory), and put it in a `.h` and a -`cc_library` with `testonly=True`. Then everyone can reference them from their -tests. If `Foo` ever changes, there is only one copy of `MockFoo` to change, and -only tests that depend on the changed methods need to be fixed. - -Another way to do it: you can introduce a thin layer `FooAdaptor` on top of -`Foo` and code to this new interface. Since you own `FooAdaptor`, you can absorb -changes in `Foo` much more easily. While this is more work initially, carefully -choosing the adaptor interface can make your code easier to write and more -readable (a net win in the long run), as you can choose `FooAdaptor` to fit your -specific domain much better than `Foo` does. - -## Using Mocks in Tests - -Once you have a mock class, using it is easy. The typical work flow is: - -1. Import the gMock names from the `testing` namespace such that you can use - them unqualified (You only have to do it once per file). Remember that - namespaces are a good idea. -2. Create some mock objects. -3. Specify your expectations on them (How many times will a method be called? - With what arguments? What should it do? etc.). -4. Exercise some code that uses the mocks; optionally, check the result using - googletest assertions. If a mock method is called more than expected or with - wrong arguments, you'll get an error immediately. -5. When a mock is destructed, gMock will automatically check whether all - expectations on it have been satisfied. - -Here's an example: - -```cpp -#include "path/to/mock-turtle.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using ::testing::AtLeast; // #1 - -TEST(PainterTest, CanDrawSomething) { - MockTurtle turtle; // #2 - EXPECT_CALL(turtle, PenDown()) // #3 - .Times(AtLeast(1)); - - Painter painter(&turtle); // #4 - - EXPECT_TRUE(painter.DrawCircle(0, 0, 10)); // #5 -} -``` - -As you might have guessed, this test checks that `PenDown()` is called at least -once. If the `painter` object didn't call this method, your test will fail with -a message like this: - -```text -path/to/my_test.cc:119: Failure -Actual function call count doesn't match this expectation: -Actually: never called; -Expected: called at least once. -Stack trace: -... -``` - -**Tip 1:** If you run the test from an Emacs buffer, you can hit `` on -the line number to jump right to the failed expectation. - -**Tip 2:** If your mock objects are never deleted, the final verification won't -happen. Therefore it's a good idea to turn on the heap checker in your tests -when you allocate mocks on the heap. You get that automatically if you use the -`gtest_main` library already. - -**Important note:** gMock requires expectations to be set **before** the mock -functions are called, otherwise the behavior is **undefined**. Do not alternate -between calls to `EXPECT_CALL()` and calls to the mock functions, and do not set -any expectations on a mock after passing the mock to an API. - -This means `EXPECT_CALL()` should be read as expecting that a call will occur -*in the future*, not that a call has occurred. Why does gMock work like that? -Well, specifying the expectation beforehand allows gMock to report a violation -as soon as it rises, when the context (stack trace, etc) is still available. -This makes debugging much easier. - -Admittedly, this test is contrived and doesn't do much. You can easily achieve -the same effect without using gMock. However, as we shall reveal soon, gMock -allows you to do *so much more* with the mocks. - -## Setting Expectations - -The key to using a mock object successfully is to set the *right expectations* -on it. If you set the expectations too strict, your test will fail as the result -of unrelated changes. If you set them too loose, bugs can slip through. You want -to do it just right such that your test can catch exactly the kind of bugs you -intend it to catch. gMock provides the necessary means for you to do it "just -right." - -### General Syntax - -In gMock we use the `EXPECT_CALL()` macro to set an expectation on a mock -method. The general syntax is: - -```cpp -EXPECT_CALL(mock_object, method(matchers)) - .Times(cardinality) - .WillOnce(action) - .WillRepeatedly(action); -``` - -The macro has two arguments: first the mock object, and then the method and its -arguments. Note that the two are separated by a comma (`,`), not a period (`.`). -(Why using a comma? The answer is that it was necessary for technical reasons.) -If the method is not overloaded, the macro can also be called without matchers: - -```cpp -EXPECT_CALL(mock_object, non-overloaded-method) - .Times(cardinality) - .WillOnce(action) - .WillRepeatedly(action); -``` - -This syntax allows the test writer to specify "called with any arguments" -without explicitly specifying the number or types of arguments. To avoid -unintended ambiguity, this syntax may only be used for methods that are not -overloaded. - -Either form of the macro can be followed by some optional *clauses* that provide -more information about the expectation. We'll discuss how each clause works in -the coming sections. - -This syntax is designed to make an expectation read like English. For example, -you can probably guess that - -```cpp -using ::testing::Return; -... -EXPECT_CALL(turtle, GetX()) - .Times(5) - .WillOnce(Return(100)) - .WillOnce(Return(150)) - .WillRepeatedly(Return(200)); -``` - -says that the `turtle` object's `GetX()` method will be called five times, it -will return 100 the first time, 150 the second time, and then 200 every time. -Some people like to call this style of syntax a Domain-Specific Language (DSL). - -{: .callout .note} -**Note:** Why do we use a macro to do this? Well it serves two purposes: first -it makes expectations easily identifiable (either by `grep` or by a human -reader), and second it allows gMock to include the source file location of a -failed expectation in messages, making debugging easier. - -### Matchers: What Arguments Do We Expect? - -When a mock function takes arguments, we may specify what arguments we are -expecting, for example: - -```cpp -// Expects the turtle to move forward by 100 units. -EXPECT_CALL(turtle, Forward(100)); -``` - -Oftentimes you do not want to be too specific. Remember that talk about tests -being too rigid? Over specification leads to brittle tests and obscures the -intent of tests. Therefore we encourage you to specify only what's necessary—no -more, no less. If you aren't interested in the value of an argument, write `_` -as the argument, which means "anything goes": - -```cpp -using ::testing::_; -... -// Expects that the turtle jumps to somewhere on the x=50 line. -EXPECT_CALL(turtle, GoTo(50, _)); -``` - -`_` is an instance of what we call **matchers**. A matcher is like a predicate -and can test whether an argument is what we'd expect. You can use a matcher -inside `EXPECT_CALL()` wherever a function argument is expected. `_` is a -convenient way of saying "any value". - -In the above examples, `100` and `50` are also matchers; implicitly, they are -the same as `Eq(100)` and `Eq(50)`, which specify that the argument must be -equal (using `operator==`) to the matcher argument. There are many -[built-in matchers](reference/matchers.md) for common types (as well as -[custom matchers](gmock_cook_book.md#NewMatchers)); for example: - -```cpp -using ::testing::Ge; -... -// Expects the turtle moves forward by at least 100. -EXPECT_CALL(turtle, Forward(Ge(100))); -``` - -If you don't care about *any* arguments, rather than specify `_` for each of -them you may instead omit the parameter list: - -```cpp -// Expects the turtle to move forward. -EXPECT_CALL(turtle, Forward); -// Expects the turtle to jump somewhere. -EXPECT_CALL(turtle, GoTo); -``` - -This works for all non-overloaded methods; if a method is overloaded, you need -to help gMock resolve which overload is expected by specifying the number of -arguments and possibly also the -[types of the arguments](gmock_cook_book.md#SelectOverload). - -### Cardinalities: How Many Times Will It Be Called? - -The first clause we can specify following an `EXPECT_CALL()` is `Times()`. We -call its argument a **cardinality** as it tells *how many times* the call should -occur. It allows us to repeat an expectation many times without actually writing -it as many times. More importantly, a cardinality can be "fuzzy", just like a -matcher can be. This allows a user to express the intent of a test exactly. - -An interesting special case is when we say `Times(0)`. You may have guessed - it -means that the function shouldn't be called with the given arguments at all, and -gMock will report a googletest failure whenever the function is (wrongfully) -called. - -We've seen `AtLeast(n)` as an example of fuzzy cardinalities earlier. For the -list of built-in cardinalities you can use, see -[here](gmock_cheat_sheet.md#CardinalityList). - -The `Times()` clause can be omitted. **If you omit `Times()`, gMock will infer -the cardinality for you.** The rules are easy to remember: - -* If **neither** `WillOnce()` **nor** `WillRepeatedly()` is in the - `EXPECT_CALL()`, the inferred cardinality is `Times(1)`. -* If there are *n* `WillOnce()`'s but **no** `WillRepeatedly()`, where *n* >= - 1, the cardinality is `Times(n)`. -* If there are *n* `WillOnce()`'s and **one** `WillRepeatedly()`, where *n* >= - 0, the cardinality is `Times(AtLeast(n))`. - -**Quick quiz:** what do you think will happen if a function is expected to be -called twice but actually called four times? - -### Actions: What Should It Do? - -Remember that a mock object doesn't really have a working implementation? We as -users have to tell it what to do when a method is invoked. This is easy in -gMock. - -First, if the return type of a mock function is a built-in type or a pointer, -the function has a **default action** (a `void` function will just return, a -`bool` function will return `false`, and other functions will return 0). In -addition, in C++ 11 and above, a mock function whose return type is -default-constructible (i.e. has a default constructor) has a default action of -returning a default-constructed value. If you don't say anything, this behavior -will be used. - -Second, if a mock function doesn't have a default action, or the default action -doesn't suit you, you can specify the action to be taken each time the -expectation matches using a series of `WillOnce()` clauses followed by an -optional `WillRepeatedly()`. For example, - -```cpp -using ::testing::Return; -... -EXPECT_CALL(turtle, GetX()) - .WillOnce(Return(100)) - .WillOnce(Return(200)) - .WillOnce(Return(300)); -``` - -says that `turtle.GetX()` will be called *exactly three times* (gMock inferred -this from how many `WillOnce()` clauses we've written, since we didn't -explicitly write `Times()`), and will return 100, 200, and 300 respectively. - -```cpp -using ::testing::Return; -... -EXPECT_CALL(turtle, GetY()) - .WillOnce(Return(100)) - .WillOnce(Return(200)) - .WillRepeatedly(Return(300)); -``` - -says that `turtle.GetY()` will be called *at least twice* (gMock knows this as -we've written two `WillOnce()` clauses and a `WillRepeatedly()` while having no -explicit `Times()`), will return 100 and 200 respectively the first two times, -and 300 from the third time on. - -Of course, if you explicitly write a `Times()`, gMock will not try to infer the -cardinality itself. What if the number you specified is larger than there are -`WillOnce()` clauses? Well, after all `WillOnce()`s are used up, gMock will do -the *default* action for the function every time (unless, of course, you have a -`WillRepeatedly()`.). - -What can we do inside `WillOnce()` besides `Return()`? You can return a -reference using `ReturnRef(`*`variable`*`)`, or invoke a pre-defined function, -among [others](gmock_cook_book.md#using-actions). - -**Important note:** The `EXPECT_CALL()` statement evaluates the action clause -only once, even though the action may be performed many times. Therefore you -must be careful about side effects. The following may not do what you want: - -```cpp -using ::testing::Return; -... -int n = 100; -EXPECT_CALL(turtle, GetX()) - .Times(4) - .WillRepeatedly(Return(n++)); -``` - -Instead of returning 100, 101, 102, ..., consecutively, this mock function will -always return 100 as `n++` is only evaluated once. Similarly, `Return(new Foo)` -will create a new `Foo` object when the `EXPECT_CALL()` is executed, and will -return the same pointer every time. If you want the side effect to happen every -time, you need to define a custom action, which we'll teach in the -[cook book](gmock_cook_book.md). - -Time for another quiz! What do you think the following means? - -```cpp -using ::testing::Return; -... -EXPECT_CALL(turtle, GetY()) - .Times(4) - .WillOnce(Return(100)); -``` - -Obviously `turtle.GetY()` is expected to be called four times. But if you think -it will return 100 every time, think twice! Remember that one `WillOnce()` -clause will be consumed each time the function is invoked and the default action -will be taken afterwards. So the right answer is that `turtle.GetY()` will -return 100 the first time, but **return 0 from the second time on**, as -returning 0 is the default action for `int` functions. - -### Using Multiple Expectations {#MultiExpectations} - -So far we've only shown examples where you have a single expectation. More -realistically, you'll specify expectations on multiple mock methods which may be -from multiple mock objects. - -By default, when a mock method is invoked, gMock will search the expectations in -the **reverse order** they are defined, and stop when an active expectation that -matches the arguments is found (you can think of it as "newer rules override -older ones."). If the matching expectation cannot take any more calls, you will -get an upper-bound-violated failure. Here's an example: - -```cpp -using ::testing::_; -... -EXPECT_CALL(turtle, Forward(_)); // #1 -EXPECT_CALL(turtle, Forward(10)) // #2 - .Times(2); -``` - -If `Forward(10)` is called three times in a row, the third time it will be an -error, as the last matching expectation (#2) has been saturated. If, however, -the third `Forward(10)` call is replaced by `Forward(20)`, then it would be OK, -as now #1 will be the matching expectation. - -{: .callout .note} -**Note:** Why does gMock search for a match in the *reverse* order of the -expectations? The reason is that this allows a user to set up the default -expectations in a mock object's constructor or the test fixture's set-up phase -and then customize the mock by writing more specific expectations in the test -body. So, if you have two expectations on the same method, you want to put the -one with more specific matchers **after** the other, or the more specific rule -would be shadowed by the more general one that comes after it. - -{: .callout .tip} -**Tip:** It is very common to start with a catch-all expectation for a method -and `Times(AnyNumber())` (omitting arguments, or with `_` for all arguments, if -overloaded). This makes any calls to the method expected. This is not necessary -for methods that are not mentioned at all (these are "uninteresting"), but is -useful for methods that have some expectations, but for which other calls are -ok. See -[Understanding Uninteresting vs Unexpected Calls](gmock_cook_book.md#uninteresting-vs-unexpected). - -### Ordered vs Unordered Calls {#OrderedCalls} - -By default, an expectation can match a call even though an earlier expectation -hasn't been satisfied. In other words, the calls don't have to occur in the -order the expectations are specified. - -Sometimes, you may want all the expected calls to occur in a strict order. To -say this in gMock is easy: - -```cpp -using ::testing::InSequence; -... -TEST(FooTest, DrawsLineSegment) { - ... - { - InSequence seq; - - EXPECT_CALL(turtle, PenDown()); - EXPECT_CALL(turtle, Forward(100)); - EXPECT_CALL(turtle, PenUp()); - } - Foo(); -} -``` - -By creating an object of type `InSequence`, all expectations in its scope are -put into a *sequence* and have to occur *sequentially*. Since we are just -relying on the constructor and destructor of this object to do the actual work, -its name is really irrelevant. - -In this example, we test that `Foo()` calls the three expected functions in the -order as written. If a call is made out-of-order, it will be an error. - -(What if you care about the relative order of some of the calls, but not all of -them? Can you specify an arbitrary partial order? The answer is ... yes! The -details can be found [here](gmock_cook_book.md#OrderedCalls).) - -### All Expectations Are Sticky (Unless Said Otherwise) {#StickyExpectations} - -Now let's do a quick quiz to see how well you can use this mock stuff already. -How would you test that the turtle is asked to go to the origin *exactly twice* -(you want to ignore any other instructions it receives)? - -After you've come up with your answer, take a look at ours and compare notes -(solve it yourself first - don't cheat!): - -```cpp -using ::testing::_; -using ::testing::AnyNumber; -... -EXPECT_CALL(turtle, GoTo(_, _)) // #1 - .Times(AnyNumber()); -EXPECT_CALL(turtle, GoTo(0, 0)) // #2 - .Times(2); -``` - -Suppose `turtle.GoTo(0, 0)` is called three times. In the third time, gMock will -see that the arguments match expectation #2 (remember that we always pick the -last matching expectation). Now, since we said that there should be only two -such calls, gMock will report an error immediately. This is basically what we've -told you in the [Using Multiple Expectations](#MultiExpectations) section above. - -This example shows that **expectations in gMock are "sticky" by default**, in -the sense that they remain active even after we have reached their invocation -upper bounds. This is an important rule to remember, as it affects the meaning -of the spec, and is **different** to how it's done in many other mocking -frameworks (Why'd we do that? Because we think our rule makes the common cases -easier to express and understand.). - -Simple? Let's see if you've really understood it: what does the following code -say? - -```cpp -using ::testing::Return; -... -for (int i = n; i > 0; i--) { - EXPECT_CALL(turtle, GetX()) - .WillOnce(Return(10*i)); -} -``` - -If you think it says that `turtle.GetX()` will be called `n` times and will -return 10, 20, 30, ..., consecutively, think twice! The problem is that, as we -said, expectations are sticky. So, the second time `turtle.GetX()` is called, -the last (latest) `EXPECT_CALL()` statement will match, and will immediately -lead to an "upper bound violated" error - this piece of code is not very useful! - -One correct way of saying that `turtle.GetX()` will return 10, 20, 30, ..., is -to explicitly say that the expectations are *not* sticky. In other words, they -should *retire* as soon as they are saturated: - -```cpp -using ::testing::Return; -... -for (int i = n; i > 0; i--) { - EXPECT_CALL(turtle, GetX()) - .WillOnce(Return(10*i)) - .RetiresOnSaturation(); -} -``` - -And, there's a better way to do it: in this case, we expect the calls to occur -in a specific order, and we line up the actions to match the order. Since the -order is important here, we should make it explicit using a sequence: - -```cpp -using ::testing::InSequence; -using ::testing::Return; -... -{ - InSequence s; - - for (int i = 1; i <= n; i++) { - EXPECT_CALL(turtle, GetX()) - .WillOnce(Return(10*i)) - .RetiresOnSaturation(); - } -} -``` - -By the way, the other situation where an expectation may *not* be sticky is when -it's in a sequence - as soon as another expectation that comes after it in the -sequence has been used, it automatically retires (and will never be used to -match any call). - -### Uninteresting Calls - -A mock object may have many methods, and not all of them are that interesting. -For example, in some tests we may not care about how many times `GetX()` and -`GetY()` get called. - -In gMock, if you are not interested in a method, just don't say anything about -it. If a call to this method occurs, you'll see a warning in the test output, -but it won't be a failure. This is called "naggy" behavior; to change, see -[The Nice, the Strict, and the Naggy](gmock_cook_book.md#NiceStrictNaggy). diff --git a/tests/lib/docs/index.md b/tests/lib/docs/index.md deleted file mode 100644 index b162c74011..0000000000 --- a/tests/lib/docs/index.md +++ /dev/null @@ -1,22 +0,0 @@ -# GoogleTest User's Guide - -## Welcome to GoogleTest! - -GoogleTest is Google's C++ testing and mocking framework. This user's guide has -the following contents: - -* [GoogleTest Primer](primer.md) - Teaches you how to write simple tests using - GoogleTest. Read this first if you are new to GoogleTest. -* [GoogleTest Advanced](advanced.md) - Read this when you've finished the - Primer and want to utilize GoogleTest to its full potential. -* [GoogleTest Samples](samples.md) - Describes some GoogleTest samples. -* [GoogleTest FAQ](faq.md) - Have a question? Want some tips? Check here - first. -* [Mocking for Dummies](gmock_for_dummies.md) - Teaches you how to create mock - objects and use them in tests. -* [Mocking Cookbook](gmock_cook_book.md) - Includes tips and approaches to - common mocking use cases. -* [Mocking Cheat Sheet](gmock_cheat_sheet.md) - A handy reference for - matchers, actions, invariants, and more. -* [Mocking FAQ](gmock_faq.md) - Contains answers to some mocking-specific - questions. diff --git a/tests/lib/docs/pkgconfig.md b/tests/lib/docs/pkgconfig.md deleted file mode 100644 index 18a2546a38..0000000000 --- a/tests/lib/docs/pkgconfig.md +++ /dev/null @@ -1,148 +0,0 @@ -## Using GoogleTest from various build systems - -GoogleTest comes with pkg-config files that can be used to determine all -necessary flags for compiling and linking to GoogleTest (and GoogleMock). -Pkg-config is a standardised plain-text format containing - -* the includedir (-I) path -* necessary macro (-D) definitions -* further required flags (-pthread) -* the library (-L) path -* the library (-l) to link to - -All current build systems support pkg-config in one way or another. For all -examples here we assume you want to compile the sample -`samples/sample3_unittest.cc`. - -### CMake - -Using `pkg-config` in CMake is fairly easy: - -```cmake -cmake_minimum_required(VERSION 3.0) - -cmake_policy(SET CMP0048 NEW) -project(my_gtest_pkgconfig VERSION 0.0.1 LANGUAGES CXX) - -find_package(PkgConfig) -pkg_search_module(GTEST REQUIRED gtest_main) - -add_executable(testapp samples/sample3_unittest.cc) -target_link_libraries(testapp ${GTEST_LDFLAGS}) -target_compile_options(testapp PUBLIC ${GTEST_CFLAGS}) - -include(CTest) -add_test(first_and_only_test testapp) -``` - -It is generally recommended that you use `target_compile_options` + `_CFLAGS` -over `target_include_directories` + `_INCLUDE_DIRS` as the former includes not -just -I flags (GoogleTest might require a macro indicating to internal headers -that all libraries have been compiled with threading enabled. In addition, -GoogleTest might also require `-pthread` in the compiling step, and as such -splitting the pkg-config `Cflags` variable into include dirs and macros for -`target_compile_definitions()` might still miss this). The same recommendation -goes for using `_LDFLAGS` over the more commonplace `_LIBRARIES`, which happens -to discard `-L` flags and `-pthread`. - -### Help! pkg-config can't find GoogleTest! - -Let's say you have a `CMakeLists.txt` along the lines of the one in this -tutorial and you try to run `cmake`. It is very possible that you get a failure -along the lines of: - -``` --- Checking for one of the modules 'gtest_main' -CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:640 (message): - None of the required 'gtest_main' found -``` - -These failures are common if you installed GoogleTest yourself and have not -sourced it from a distro or other package manager. If so, you need to tell -pkg-config where it can find the `.pc` files containing the information. Say you -installed GoogleTest to `/usr/local`, then it might be that the `.pc` files are -installed under `/usr/local/lib64/pkgconfig`. If you set - -``` -export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig -``` - -pkg-config will also try to look in `PKG_CONFIG_PATH` to find `gtest_main.pc`. - -### Using pkg-config in a cross-compilation setting - -Pkg-config can be used in a cross-compilation setting too. To do this, let's -assume the final prefix of the cross-compiled installation will be `/usr`, and -your sysroot is `/home/MYUSER/sysroot`. Configure and install GTest using - -``` -mkdir build && cmake -DCMAKE_INSTALL_PREFIX=/usr .. -``` - -Install into the sysroot using `DESTDIR`: - -``` -make -j install DESTDIR=/home/MYUSER/sysroot -``` - -Before we continue, it is recommended to **always** define the following two -variables for pkg-config in a cross-compilation setting: - -``` -export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=yes -export PKG_CONFIG_ALLOW_SYSTEM_LIBS=yes -``` - -otherwise `pkg-config` will filter `-I` and `-L` flags against standard prefixes -such as `/usr` (see https://bugs.freedesktop.org/show_bug.cgi?id=28264#c3 for -reasons why this stripping needs to occur usually). - -If you look at the generated pkg-config file, it will look something like - -``` -libdir=/usr/lib64 -includedir=/usr/include - -Name: gtest -Description: GoogleTest (without main() function) -Version: 1.11.0 -URL: https://github.com/google/googletest -Libs: -L${libdir} -lgtest -lpthread -Cflags: -I${includedir} -DGTEST_HAS_PTHREAD=1 -lpthread -``` - -Notice that the sysroot is not included in `libdir` and `includedir`! If you try -to run `pkg-config` with the correct -`PKG_CONFIG_LIBDIR=/home/MYUSER/sysroot/usr/lib64/pkgconfig` against this `.pc` -file, you will get - -``` -$ pkg-config --cflags gtest --DGTEST_HAS_PTHREAD=1 -lpthread -I/usr/include -$ pkg-config --libs gtest --L/usr/lib64 -lgtest -lpthread -``` - -which is obviously wrong and points to the `CBUILD` and not `CHOST` root. In -order to use this in a cross-compilation setting, we need to tell pkg-config to -inject the actual sysroot into `-I` and `-L` variables. Let us now tell -pkg-config about the actual sysroot - -``` -export PKG_CONFIG_DIR= -export PKG_CONFIG_SYSROOT_DIR=/home/MYUSER/sysroot -export PKG_CONFIG_LIBDIR=${PKG_CONFIG_SYSROOT_DIR}/usr/lib64/pkgconfig -``` - -and running `pkg-config` again we get - -``` -$ pkg-config --cflags gtest --DGTEST_HAS_PTHREAD=1 -lpthread -I/home/MYUSER/sysroot/usr/include -$ pkg-config --libs gtest --L/home/MYUSER/sysroot/usr/lib64 -lgtest -lpthread -``` - -which contains the correct sysroot now. For a more comprehensive guide to also -including `${CHOST}` in build system calls, see the excellent tutorial by Diego -Elio Pettenò: diff --git a/tests/lib/docs/platforms.md b/tests/lib/docs/platforms.md deleted file mode 100644 index eba6ef8056..0000000000 --- a/tests/lib/docs/platforms.md +++ /dev/null @@ -1,35 +0,0 @@ -# Supported Platforms - -GoogleTest requires a codebase and compiler compliant with the C++11 standard or -newer. - -The GoogleTest code is officially supported on the following platforms. -Operating systems or tools not listed below are community-supported. For -community-supported platforms, patches that do not complicate the code may be -considered. - -If you notice any problems on your platform, please file an issue on the -[GoogleTest GitHub Issue Tracker](https://github.com/google/googletest/issues). -Pull requests containing fixes are welcome! - -### Operating systems - -* Linux -* macOS -* Windows - -### Compilers - -* gcc 5.0+ -* clang 5.0+ -* MSVC 2015+ - -**macOS users:** Xcode 9.3+ provides clang 5.0+. - -### Build systems - -* [Bazel](https://bazel.build/) -* [CMake](https://cmake.org/) - -Bazel is the build system used by the team internally and in tests. CMake is -supported on a best-effort basis and by the community. diff --git a/tests/lib/docs/primer.md b/tests/lib/docs/primer.md deleted file mode 100644 index aecc368b08..0000000000 --- a/tests/lib/docs/primer.md +++ /dev/null @@ -1,482 +0,0 @@ -# Googletest Primer - -## Introduction: Why googletest? - -*googletest* helps you write better C++ tests. - -googletest is a testing framework developed by the Testing Technology team with -Google's specific requirements and constraints in mind. Whether you work on -Linux, Windows, or a Mac, if you write C++ code, googletest can help you. And it -supports *any* kind of tests, not just unit tests. - -So what makes a good test, and how does googletest fit in? We believe: - -1. Tests should be *independent* and *repeatable*. It's a pain to debug a test - that succeeds or fails as a result of other tests. googletest isolates the - tests by running each of them on a different object. When a test fails, - googletest allows you to run it in isolation for quick debugging. -2. Tests should be well *organized* and reflect the structure of the tested - code. googletest groups related tests into test suites that can share data - and subroutines. This common pattern is easy to recognize and makes tests - easy to maintain. Such consistency is especially helpful when people switch - projects and start to work on a new code base. -3. Tests should be *portable* and *reusable*. Google has a lot of code that is - platform-neutral; its tests should also be platform-neutral. googletest - works on different OSes, with different compilers, with or without - exceptions, so googletest tests can work with a variety of configurations. -4. When tests fail, they should provide as much *information* about the problem - as possible. googletest doesn't stop at the first test failure. Instead, it - only stops the current test and continues with the next. You can also set up - tests that report non-fatal failures after which the current test continues. - Thus, you can detect and fix multiple bugs in a single run-edit-compile - cycle. -5. The testing framework should liberate test writers from housekeeping chores - and let them focus on the test *content*. googletest automatically keeps - track of all tests defined, and doesn't require the user to enumerate them - in order to run them. -6. Tests should be *fast*. With googletest, you can reuse shared resources - across tests and pay for the set-up/tear-down only once, without making - tests depend on each other. - -Since googletest is based on the popular xUnit architecture, you'll feel right -at home if you've used JUnit or PyUnit before. If not, it will take you about 10 -minutes to learn the basics and get started. So let's go! - -## Beware of the nomenclature - -{: .callout .note} -_Note:_ There might be some confusion arising from different definitions of the -terms _Test_, _Test Case_ and _Test Suite_, so beware of misunderstanding these. - -Historically, googletest started to use the term _Test Case_ for grouping -related tests, whereas current publications, including International Software -Testing Qualifications Board ([ISTQB](http://www.istqb.org/)) materials and -various textbooks on software quality, use the term -_[Test Suite][istqb test suite]_ for this. - -The related term _Test_, as it is used in googletest, corresponds to the term -_[Test Case][istqb test case]_ of ISTQB and others. - -The term _Test_ is commonly of broad enough sense, including ISTQB's definition -of _Test Case_, so it's not much of a problem here. But the term _Test Case_ as -was used in Google Test is of contradictory sense and thus confusing. - -googletest recently started replacing the term _Test Case_ with _Test Suite_. -The preferred API is *TestSuite*. The older TestCase API is being slowly -deprecated and refactored away. - -So please be aware of the different definitions of the terms: - - -Meaning | googletest Term | [ISTQB](http://www.istqb.org/) Term -:----------------------------------------------------------------------------------- | :---------------------- | :---------------------------------- -Exercise a particular program path with specific input values and verify the results | [TEST()](#simple-tests) | [Test Case][istqb test case] - - -[istqb test case]: http://glossary.istqb.org/en/search/test%20case -[istqb test suite]: http://glossary.istqb.org/en/search/test%20suite - -## Basic Concepts - -When using googletest, you start by writing *assertions*, which are statements -that check whether a condition is true. An assertion's result can be *success*, -*nonfatal failure*, or *fatal failure*. If a fatal failure occurs, it aborts the -current function; otherwise the program continues normally. - -*Tests* use assertions to verify the tested code's behavior. If a test crashes -or has a failed assertion, then it *fails*; otherwise it *succeeds*. - -A *test suite* contains one or many tests. You should group your tests into test -suites that reflect the structure of the tested code. When multiple tests in a -test suite need to share common objects and subroutines, you can put them into a -*test fixture* class. - -A *test program* can contain multiple test suites. - -We'll now explain how to write a test program, starting at the individual -assertion level and building up to tests and test suites. - -## Assertions - -googletest assertions are macros that resemble function calls. You test a class -or function by making assertions about its behavior. When an assertion fails, -googletest prints the assertion's source file and line number location, along -with a failure message. You may also supply a custom failure message which will -be appended to googletest's message. - -The assertions come in pairs that test the same thing but have different effects -on the current function. `ASSERT_*` versions generate fatal failures when they -fail, and **abort the current function**. `EXPECT_*` versions generate nonfatal -failures, which don't abort the current function. Usually `EXPECT_*` are -preferred, as they allow more than one failure to be reported in a test. -However, you should use `ASSERT_*` if it doesn't make sense to continue when the -assertion in question fails. - -Since a failed `ASSERT_*` returns from the current function immediately, -possibly skipping clean-up code that comes after it, it may cause a space leak. -Depending on the nature of the leak, it may or may not be worth fixing - so keep -this in mind if you get a heap checker error in addition to assertion errors. - -To provide a custom failure message, simply stream it into the macro using the -`<<` operator or a sequence of such operators. See the following example, using -the [`ASSERT_EQ` and `EXPECT_EQ`](reference/assertions.md#EXPECT_EQ) macros to -verify value equality: - -```c++ -ASSERT_EQ(x.size(), y.size()) << "Vectors x and y are of unequal length"; - -for (int i = 0; i < x.size(); ++i) { - EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i; -} -``` - -Anything that can be streamed to an `ostream` can be streamed to an assertion -macro--in particular, C strings and `string` objects. If a wide string -(`wchar_t*`, `TCHAR*` in `UNICODE` mode on Windows, or `std::wstring`) is -streamed to an assertion, it will be translated to UTF-8 when printed. - -GoogleTest provides a collection of assertions for verifying the behavior of -your code in various ways. You can check Boolean conditions, compare values -based on relational operators, verify string values, floating-point values, and -much more. There are even assertions that enable you to verify more complex -states by providing custom predicates. For the complete list of assertions -provided by GoogleTest, see the [Assertions Reference](reference/assertions.md). - -## Simple Tests - -To create a test: - -1. Use the `TEST()` macro to define and name a test function. These are - ordinary C++ functions that don't return a value. -2. In this function, along with any valid C++ statements you want to include, - use the various googletest assertions to check values. -3. The test's result is determined by the assertions; if any assertion in the - test fails (either fatally or non-fatally), or if the test crashes, the - entire test fails. Otherwise, it succeeds. - -```c++ -TEST(TestSuiteName, TestName) { - ... test body ... -} -``` - -`TEST()` arguments go from general to specific. The *first* argument is the name -of the test suite, and the *second* argument is the test's name within the test -suite. Both names must be valid C++ identifiers, and they should not contain any -underscores (`_`). A test's *full name* consists of its containing test suite -and its individual name. Tests from different test suites can have the same -individual name. - -For example, let's take a simple integer function: - -```c++ -int Factorial(int n); // Returns the factorial of n -``` - -A test suite for this function might look like: - -```c++ -// Tests factorial of 0. -TEST(FactorialTest, HandlesZeroInput) { - EXPECT_EQ(Factorial(0), 1); -} - -// Tests factorial of positive numbers. -TEST(FactorialTest, HandlesPositiveInput) { - EXPECT_EQ(Factorial(1), 1); - EXPECT_EQ(Factorial(2), 2); - EXPECT_EQ(Factorial(3), 6); - EXPECT_EQ(Factorial(8), 40320); -} -``` - -googletest groups the test results by test suites, so logically related tests -should be in the same test suite; in other words, the first argument to their -`TEST()` should be the same. In the above example, we have two tests, -`HandlesZeroInput` and `HandlesPositiveInput`, that belong to the same test -suite `FactorialTest`. - -When naming your test suites and tests, you should follow the same convention as -for -[naming functions and classes](https://google.github.io/styleguide/cppguide.html#Function_Names). - -**Availability**: Linux, Windows, Mac. - -## Test Fixtures: Using the Same Data Configuration for Multiple Tests {#same-data-multiple-tests} - -If you find yourself writing two or more tests that operate on similar data, you -can use a *test fixture*. This allows you to reuse the same configuration of -objects for several different tests. - -To create a fixture: - -1. Derive a class from `::testing::Test` . Start its body with `protected:`, as - we'll want to access fixture members from sub-classes. -2. Inside the class, declare any objects you plan to use. -3. If necessary, write a default constructor or `SetUp()` function to prepare - the objects for each test. A common mistake is to spell `SetUp()` as - **`Setup()`** with a small `u` - Use `override` in C++11 to make sure you - spelled it correctly. -4. If necessary, write a destructor or `TearDown()` function to release any - resources you allocated in `SetUp()` . To learn when you should use the - constructor/destructor and when you should use `SetUp()/TearDown()`, read - the [FAQ](faq.md#CtorVsSetUp). -5. If needed, define subroutines for your tests to share. - -When using a fixture, use `TEST_F()` instead of `TEST()` as it allows you to -access objects and subroutines in the test fixture: - -```c++ -TEST_F(TestFixtureName, TestName) { - ... test body ... -} -``` - -Like `TEST()`, the first argument is the test suite name, but for `TEST_F()` -this must be the name of the test fixture class. You've probably guessed: `_F` -is for fixture. - -Unfortunately, the C++ macro system does not allow us to create a single macro -that can handle both types of tests. Using the wrong macro causes a compiler -error. - -Also, you must first define a test fixture class before using it in a -`TEST_F()`, or you'll get the compiler error "`virtual outside class -declaration`". - -For each test defined with `TEST_F()`, googletest will create a *fresh* test -fixture at runtime, immediately initialize it via `SetUp()`, run the test, clean -up by calling `TearDown()`, and then delete the test fixture. Note that -different tests in the same test suite have different test fixture objects, and -googletest always deletes a test fixture before it creates the next one. -googletest does **not** reuse the same test fixture for multiple tests. Any -changes one test makes to the fixture do not affect other tests. - -As an example, let's write tests for a FIFO queue class named `Queue`, which has -the following interface: - -```c++ -template // E is the element type. -class Queue { - public: - Queue(); - void Enqueue(const E& element); - E* Dequeue(); // Returns NULL if the queue is empty. - size_t size() const; - ... -}; -``` - -First, define a fixture class. By convention, you should give it the name -`FooTest` where `Foo` is the class being tested. - -```c++ -class QueueTest : public ::testing::Test { - protected: - void SetUp() override { - q1_.Enqueue(1); - q2_.Enqueue(2); - q2_.Enqueue(3); - } - - // void TearDown() override {} - - Queue q0_; - Queue q1_; - Queue q2_; -}; -``` - -In this case, `TearDown()` is not needed since we don't have to clean up after -each test, other than what's already done by the destructor. - -Now we'll write tests using `TEST_F()` and this fixture. - -```c++ -TEST_F(QueueTest, IsEmptyInitially) { - EXPECT_EQ(q0_.size(), 0); -} - -TEST_F(QueueTest, DequeueWorks) { - int* n = q0_.Dequeue(); - EXPECT_EQ(n, nullptr); - - n = q1_.Dequeue(); - ASSERT_NE(n, nullptr); - EXPECT_EQ(*n, 1); - EXPECT_EQ(q1_.size(), 0); - delete n; - - n = q2_.Dequeue(); - ASSERT_NE(n, nullptr); - EXPECT_EQ(*n, 2); - EXPECT_EQ(q2_.size(), 1); - delete n; -} -``` - -The above uses both `ASSERT_*` and `EXPECT_*` assertions. The rule of thumb is -to use `EXPECT_*` when you want the test to continue to reveal more errors after -the assertion failure, and use `ASSERT_*` when continuing after failure doesn't -make sense. For example, the second assertion in the `Dequeue` test is -`ASSERT_NE(n, nullptr)`, as we need to dereference the pointer `n` later, which -would lead to a segfault when `n` is `NULL`. - -When these tests run, the following happens: - -1. googletest constructs a `QueueTest` object (let's call it `t1`). -2. `t1.SetUp()` initializes `t1`. -3. The first test (`IsEmptyInitially`) runs on `t1`. -4. `t1.TearDown()` cleans up after the test finishes. -5. `t1` is destructed. -6. The above steps are repeated on another `QueueTest` object, this time - running the `DequeueWorks` test. - -**Availability**: Linux, Windows, Mac. - -## Invoking the Tests - -`TEST()` and `TEST_F()` implicitly register their tests with googletest. So, -unlike with many other C++ testing frameworks, you don't have to re-list all -your defined tests in order to run them. - -After defining your tests, you can run them with `RUN_ALL_TESTS()`, which -returns `0` if all the tests are successful, or `1` otherwise. Note that -`RUN_ALL_TESTS()` runs *all tests* in your link unit--they can be from different -test suites, or even different source files. - -When invoked, the `RUN_ALL_TESTS()` macro: - -* Saves the state of all googletest flags. - -* Creates a test fixture object for the first test. - -* Initializes it via `SetUp()`. - -* Runs the test on the fixture object. - -* Cleans up the fixture via `TearDown()`. - -* Deletes the fixture. - -* Restores the state of all googletest flags. - -* Repeats the above steps for the next test, until all tests have run. - -If a fatal failure happens the subsequent steps will be skipped. - -{: .callout .important} -> IMPORTANT: You must **not** ignore the return value of `RUN_ALL_TESTS()`, or -> you will get a compiler error. The rationale for this design is that the -> automated testing service determines whether a test has passed based on its -> exit code, not on its stdout/stderr output; thus your `main()` function must -> return the value of `RUN_ALL_TESTS()`. -> -> Also, you should call `RUN_ALL_TESTS()` only **once**. Calling it more than -> once conflicts with some advanced googletest features (e.g., thread-safe -> [death tests](advanced.md#death-tests)) and thus is not supported. - -**Availability**: Linux, Windows, Mac. - -## Writing the main() Function - -Most users should _not_ need to write their own `main` function and instead link -with `gtest_main` (as opposed to with `gtest`), which defines a suitable entry -point. See the end of this section for details. The remainder of this section -should only apply when you need to do something custom before the tests run that -cannot be expressed within the framework of fixtures and test suites. - -If you write your own `main` function, it should return the value of -`RUN_ALL_TESTS()`. - -You can start from this boilerplate: - -```c++ -#include "this/package/foo.h" - -#include "gtest/gtest.h" - -namespace my { -namespace project { -namespace { - -// The fixture for testing class Foo. -class FooTest : public ::testing::Test { - protected: - // You can remove any or all of the following functions if their bodies would - // be empty. - - FooTest() { - // You can do set-up work for each test here. - } - - ~FooTest() override { - // You can do clean-up work that doesn't throw exceptions here. - } - - // If the constructor and destructor are not enough for setting up - // and cleaning up each test, you can define the following methods: - - void SetUp() override { - // Code here will be called immediately after the constructor (right - // before each test). - } - - void TearDown() override { - // Code here will be called immediately after each test (right - // before the destructor). - } - - // Class members declared here can be used by all tests in the test suite - // for Foo. -}; - -// Tests that the Foo::Bar() method does Abc. -TEST_F(FooTest, MethodBarDoesAbc) { - const std::string input_filepath = "this/package/testdata/myinputfile.dat"; - const std::string output_filepath = "this/package/testdata/myoutputfile.dat"; - Foo f; - EXPECT_EQ(f.Bar(input_filepath, output_filepath), 0); -} - -// Tests that Foo does Xyz. -TEST_F(FooTest, DoesXyz) { - // Exercises the Xyz feature of Foo. -} - -} // namespace -} // namespace project -} // namespace my - -int main(int argc, char **argv) { - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} -``` - -The `::testing::InitGoogleTest()` function parses the command line for -googletest flags, and removes all recognized flags. This allows the user to -control a test program's behavior via various flags, which we'll cover in the -[AdvancedGuide](advanced.md). You **must** call this function before calling -`RUN_ALL_TESTS()`, or the flags won't be properly initialized. - -On Windows, `InitGoogleTest()` also works with wide strings, so it can be used -in programs compiled in `UNICODE` mode as well. - -But maybe you think that writing all those `main` functions is too much work? We -agree with you completely, and that's why Google Test provides a basic -implementation of main(). If it fits your needs, then just link your test with -the `gtest_main` library and you are good to go. - -{: .callout .note} -NOTE: `ParseGUnitFlags()` is deprecated in favor of `InitGoogleTest()`. - -## Known Limitations - -* Google Test is designed to be thread-safe. The implementation is thread-safe - on systems where the `pthreads` library is available. It is currently - _unsafe_ to use Google Test assertions from two threads concurrently on - other systems (e.g. Windows). In most tests this is not an issue as usually - the assertions are done in the main thread. If you want to help, you can - volunteer to implement the necessary synchronization primitives in - `gtest-port.h` for your platform. diff --git a/tests/lib/docs/quickstart-bazel.md b/tests/lib/docs/quickstart-bazel.md deleted file mode 100644 index 5d6e9c68ad..0000000000 --- a/tests/lib/docs/quickstart-bazel.md +++ /dev/null @@ -1,147 +0,0 @@ -# Quickstart: Building with Bazel - -This tutorial aims to get you up and running with GoogleTest using the Bazel -build system. If you're using GoogleTest for the first time or need a refresher, -we recommend this tutorial as a starting point. - -## Prerequisites - -To complete this tutorial, you'll need: - -* A compatible operating system (e.g. Linux, macOS, Windows). -* A compatible C++ compiler that supports at least C++11. -* [Bazel](https://bazel.build/), the preferred build system used by the - GoogleTest team. - -See [Supported Platforms](platforms.md) for more information about platforms -compatible with GoogleTest. - -If you don't already have Bazel installed, see the -[Bazel installation guide](https://docs.bazel.build/versions/main/install.html). - -{: .callout .note} -Note: The terminal commands in this tutorial show a Unix shell prompt, but the -commands work on the Windows command line as well. - -## Set up a Bazel workspace - -A -[Bazel workspace](https://docs.bazel.build/versions/main/build-ref.html#workspace) -is a directory on your filesystem that you use to manage source files for the -software you want to build. Each workspace directory has a text file named -`WORKSPACE` which may be empty, or may contain references to external -dependencies required to build the outputs. - -First, create a directory for your workspace: - -``` -$ mkdir my_workspace && cd my_workspace -``` - -Next, you’ll create the `WORKSPACE` file to specify dependencies. A common and -recommended way to depend on GoogleTest is to use a -[Bazel external dependency](https://docs.bazel.build/versions/main/external.html) -via the -[`http_archive` rule](https://docs.bazel.build/versions/main/repo/http.html#http_archive). -To do this, in the root directory of your workspace (`my_workspace/`), create a -file named `WORKSPACE` with the following contents: - -``` -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "com_google_googletest", - urls = ["https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip"], - strip_prefix = "googletest-609281088cfefc76f9d0ce82e1ff6c30cc3591e5", -) -``` - -The above configuration declares a dependency on GoogleTest which is downloaded -as a ZIP archive from GitHub. In the above example, -`609281088cfefc76f9d0ce82e1ff6c30cc3591e5` is the Git commit hash of the -GoogleTest version to use; we recommend updating the hash often to point to the -latest version. - -Now you're ready to build C++ code that uses GoogleTest. - -## Create and run a binary - -With your Bazel workspace set up, you can now use GoogleTest code within your -own project. - -As an example, create a file named `hello_test.cc` in your `my_workspace` -directory with the following contents: - -```cpp -#include - -// Demonstrate some basic assertions. -TEST(HelloTest, BasicAssertions) { - // Expect two strings not to be equal. - EXPECT_STRNE("hello", "world"); - // Expect equality. - EXPECT_EQ(7 * 6, 42); -} -``` - -GoogleTest provides [assertions](primer.md#assertions) that you use to test the -behavior of your code. The above sample includes the main GoogleTest header file -and demonstrates some basic assertions. - -To build the code, create a file named `BUILD` in the same directory with the -following contents: - -``` -cc_test( - name = "hello_test", - size = "small", - srcs = ["hello_test.cc"], - deps = ["@com_google_googletest//:gtest_main"], -) -``` - -This `cc_test` rule declares the C++ test binary you want to build, and links to -GoogleTest (`//:gtest_main`) using the prefix you specified in the `WORKSPACE` -file (`@com_google_googletest`). For more information about Bazel `BUILD` files, -see the -[Bazel C++ Tutorial](https://docs.bazel.build/versions/main/tutorial/cpp.html). - -Now you can build and run your test: - -
-my_workspace$ bazel test --test_output=all //:hello_test
-INFO: Analyzed target //:hello_test (26 packages loaded, 362 targets configured).
-INFO: Found 1 test target...
-INFO: From Testing //:hello_test:
-==================== Test output for //:hello_test:
-Running main() from gmock_main.cc
-[==========] Running 1 test from 1 test suite.
-[----------] Global test environment set-up.
-[----------] 1 test from HelloTest
-[ RUN      ] HelloTest.BasicAssertions
-[       OK ] HelloTest.BasicAssertions (0 ms)
-[----------] 1 test from HelloTest (0 ms total)
-
-[----------] Global test environment tear-down
-[==========] 1 test from 1 test suite ran. (0 ms total)
-[  PASSED  ] 1 test.
-================================================================================
-Target //:hello_test up-to-date:
-  bazel-bin/hello_test
-INFO: Elapsed time: 4.190s, Critical Path: 3.05s
-INFO: 27 processes: 8 internal, 19 linux-sandbox.
-INFO: Build completed successfully, 27 total actions
-//:hello_test                                                     PASSED in 0.1s
-
-INFO: Build completed successfully, 27 total actions
-
- -Congratulations! You've successfully built and run a test binary using -GoogleTest. - -## Next steps - -* [Check out the Primer](primer.md) to start learning how to write simple - tests. -* [See the code samples](samples.md) for more examples showing how to use a - variety of GoogleTest features. diff --git a/tests/lib/docs/quickstart-cmake.md b/tests/lib/docs/quickstart-cmake.md deleted file mode 100644 index 420f1d3a3c..0000000000 --- a/tests/lib/docs/quickstart-cmake.md +++ /dev/null @@ -1,156 +0,0 @@ -# Quickstart: Building with CMake - -This tutorial aims to get you up and running with GoogleTest using CMake. If -you're using GoogleTest for the first time or need a refresher, we recommend -this tutorial as a starting point. If your project uses Bazel, see the -[Quickstart for Bazel](quickstart-bazel.md) instead. - -## Prerequisites - -To complete this tutorial, you'll need: - -* A compatible operating system (e.g. Linux, macOS, Windows). -* A compatible C++ compiler that supports at least C++11. -* [CMake](https://cmake.org/) and a compatible build tool for building the - project. - * Compatible build tools include - [Make](https://www.gnu.org/software/make/), - [Ninja](https://ninja-build.org/), and others - see - [CMake Generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html) - for more information. - -See [Supported Platforms](platforms.md) for more information about platforms -compatible with GoogleTest. - -If you don't already have CMake installed, see the -[CMake installation guide](https://cmake.org/install). - -{: .callout .note} -Note: The terminal commands in this tutorial show a Unix shell prompt, but the -commands work on the Windows command line as well. - -## Set up a project - -CMake uses a file named `CMakeLists.txt` to configure the build system for a -project. You'll use this file to set up your project and declare a dependency on -GoogleTest. - -First, create a directory for your project: - -``` -$ mkdir my_project && cd my_project -``` - -Next, you'll create the `CMakeLists.txt` file and declare a dependency on -GoogleTest. There are many ways to express dependencies in the CMake ecosystem; -in this quickstart, you'll use the -[`FetchContent` CMake module](https://cmake.org/cmake/help/latest/module/FetchContent.html). -To do this, in your project directory (`my_project`), create a file named -`CMakeLists.txt` with the following contents: - -```cmake -cmake_minimum_required(VERSION 3.14) -project(my_project) - -# GoogleTest requires at least C++11 -set(CMAKE_CXX_STANDARD 11) - -include(FetchContent) -FetchContent_Declare( - googletest - URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip -) -# For Windows: Prevent overriding the parent project's compiler/linker settings -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -FetchContent_MakeAvailable(googletest) -``` - -The above configuration declares a dependency on GoogleTest which is downloaded -from GitHub. In the above example, `609281088cfefc76f9d0ce82e1ff6c30cc3591e5` is -the Git commit hash of the GoogleTest version to use; we recommend updating the -hash often to point to the latest version. - -For more information about how to create `CMakeLists.txt` files, see the -[CMake Tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html). - -## Create and run a binary - -With GoogleTest declared as a dependency, you can use GoogleTest code within -your own project. - -As an example, create a file named `hello_test.cc` in your `my_project` -directory with the following contents: - -```cpp -#include - -// Demonstrate some basic assertions. -TEST(HelloTest, BasicAssertions) { - // Expect two strings not to be equal. - EXPECT_STRNE("hello", "world"); - // Expect equality. - EXPECT_EQ(7 * 6, 42); -} -``` - -GoogleTest provides [assertions](primer.md#assertions) that you use to test the -behavior of your code. The above sample includes the main GoogleTest header file -and demonstrates some basic assertions. - -To build the code, add the following to the end of your `CMakeLists.txt` file: - -```cmake -enable_testing() - -add_executable( - hello_test - hello_test.cc -) -target_link_libraries( - hello_test - gtest_main -) - -include(GoogleTest) -gtest_discover_tests(hello_test) -``` - -The above configuration enables testing in CMake, declares the C++ test binary -you want to build (`hello_test`), and links it to GoogleTest (`gtest_main`). The -last two lines enable CMake's test runner to discover the tests included in the -binary, using the -[`GoogleTest` CMake module](https://cmake.org/cmake/help/git-stage/module/GoogleTest.html). - -Now you can build and run your test: - -
-my_project$ cmake -S . -B build
--- The C compiler identification is GNU 10.2.1
--- The CXX compiler identification is GNU 10.2.1
-...
--- Build files have been written to: .../my_project/build
-
-my_project$ cmake --build build
-Scanning dependencies of target gtest
-...
-[100%] Built target gmock_main
-
-my_project$ cd build && ctest
-Test project .../my_project/build
-    Start 1: HelloTest.BasicAssertions
-1/1 Test #1: HelloTest.BasicAssertions ........   Passed    0.00 sec
-
-100% tests passed, 0 tests failed out of 1
-
-Total Test time (real) =   0.01 sec
-
- -Congratulations! You've successfully built and run a test binary using -GoogleTest. - -## Next steps - -* [Check out the Primer](primer.md) to start learning how to write simple - tests. -* [See the code samples](samples.md) for more examples showing how to use a - variety of GoogleTest features. diff --git a/tests/lib/docs/reference/actions.md b/tests/lib/docs/reference/actions.md deleted file mode 100644 index ab81a129ef..0000000000 --- a/tests/lib/docs/reference/actions.md +++ /dev/null @@ -1,115 +0,0 @@ -# Actions Reference - -[**Actions**](../gmock_for_dummies.md#actions-what-should-it-do) specify what a -mock function should do when invoked. This page lists the built-in actions -provided by GoogleTest. All actions are defined in the `::testing` namespace. - -## Returning a Value - -| Action | Description | -| :-------------------------------- | :-------------------------------------------- | -| `Return()` | Return from a `void` mock function. | -| `Return(value)` | Return `value`. If the type of `value` is different to the mock function's return type, `value` is converted to the latter type at the time the expectation is set, not when the action is executed. | -| `ReturnArg()` | Return the `N`-th (0-based) argument. | -| `ReturnNew(a1, ..., ak)` | Return `new T(a1, ..., ak)`; a different object is created each time. | -| `ReturnNull()` | Return a null pointer. | -| `ReturnPointee(ptr)` | Return the value pointed to by `ptr`. | -| `ReturnRef(variable)` | Return a reference to `variable`. | -| `ReturnRefOfCopy(value)` | Return a reference to a copy of `value`; the copy lives as long as the action. | -| `ReturnRoundRobin({a1, ..., ak})` | Each call will return the next `ai` in the list, starting at the beginning when the end of the list is reached. | - -## Side Effects - -| Action | Description | -| :--------------------------------- | :-------------------------------------- | -| `Assign(&variable, value)` | Assign `value` to variable. | -| `DeleteArg()` | Delete the `N`-th (0-based) argument, which must be a pointer. | -| `SaveArg(pointer)` | Save the `N`-th (0-based) argument to `*pointer`. | -| `SaveArgPointee(pointer)` | Save the value pointed to by the `N`-th (0-based) argument to `*pointer`. | -| `SetArgReferee(value)` | Assign `value` to the variable referenced by the `N`-th (0-based) argument. | -| `SetArgPointee(value)` | Assign `value` to the variable pointed by the `N`-th (0-based) argument. | -| `SetArgumentPointee(value)` | Same as `SetArgPointee(value)`. Deprecated. Will be removed in v1.7.0. | -| `SetArrayArgument(first, last)` | Copies the elements in source range [`first`, `last`) to the array pointed to by the `N`-th (0-based) argument, which can be either a pointer or an iterator. The action does not take ownership of the elements in the source range. | -| `SetErrnoAndReturn(error, value)` | Set `errno` to `error` and return `value`. | -| `Throw(exception)` | Throws the given exception, which can be any copyable value. Available since v1.1.0. | - -## Using a Function, Functor, or Lambda as an Action - -In the following, by "callable" we mean a free function, `std::function`, -functor, or lambda. - -| Action | Description | -| :---------------------------------- | :------------------------------------- | -| `f` | Invoke `f` with the arguments passed to the mock function, where `f` is a callable. | -| `Invoke(f)` | Invoke `f` with the arguments passed to the mock function, where `f` can be a global/static function or a functor. | -| `Invoke(object_pointer, &class::method)` | Invoke the method on the object with the arguments passed to the mock function. | -| `InvokeWithoutArgs(f)` | Invoke `f`, which can be a global/static function or a functor. `f` must take no arguments. | -| `InvokeWithoutArgs(object_pointer, &class::method)` | Invoke the method on the object, which takes no arguments. | -| `InvokeArgument(arg1, arg2, ..., argk)` | Invoke the mock function's `N`-th (0-based) argument, which must be a function or a functor, with the `k` arguments. | - -The return value of the invoked function is used as the return value of the -action. - -When defining a callable to be used with `Invoke*()`, you can declare any unused -parameters as `Unused`: - -```cpp -using ::testing::Invoke; -double Distance(Unused, double x, double y) { return sqrt(x*x + y*y); } -... -EXPECT_CALL(mock, Foo("Hi", _, _)).WillOnce(Invoke(Distance)); -``` - -`Invoke(callback)` and `InvokeWithoutArgs(callback)` take ownership of -`callback`, which must be permanent. The type of `callback` must be a base -callback type instead of a derived one, e.g. - -```cpp - BlockingClosure* done = new BlockingClosure; - ... Invoke(done) ...; // This won't compile! - - Closure* done2 = new BlockingClosure; - ... Invoke(done2) ...; // This works. -``` - -In `InvokeArgument(...)`, if an argument needs to be passed by reference, -wrap it inside `std::ref()`. For example, - -```cpp -using ::testing::InvokeArgument; -... -InvokeArgument<2>(5, string("Hi"), std::ref(foo)) -``` - -calls the mock function's #2 argument, passing to it `5` and `string("Hi")` by -value, and `foo` by reference. - -## Default Action - -| Action | Description | -| :------------ | :----------------------------------------------------- | -| `DoDefault()` | Do the default action (specified by `ON_CALL()` or the built-in one). | - -{: .callout .note} -**Note:** due to technical reasons, `DoDefault()` cannot be used inside a -composite action - trying to do so will result in a run-time error. - -## Composite Actions - -| Action | Description | -| :----------------------------- | :------------------------------------------ | -| `DoAll(a1, a2, ..., an)` | Do all actions `a1` to `an` and return the result of `an` in each invocation. The first `n - 1` sub-actions must return void and will receive a readonly view of the arguments. | -| `IgnoreResult(a)` | Perform action `a` and ignore its result. `a` must not return void. | -| `WithArg(a)` | Pass the `N`-th (0-based) argument of the mock function to action `a` and perform it. | -| `WithArgs(a)` | Pass the selected (0-based) arguments of the mock function to action `a` and perform it. | -| `WithoutArgs(a)` | Perform action `a` without any arguments. | - -## Defining Actions - -| Macro | Description | -| :--------------------------------- | :-------------------------------------- | -| `ACTION(Sum) { return arg0 + arg1; }` | Defines an action `Sum()` to return the sum of the mock function's argument #0 and #1. | -| `ACTION_P(Plus, n) { return arg0 + n; }` | Defines an action `Plus(n)` to return the sum of the mock function's argument #0 and `n`. | -| `ACTION_Pk(Foo, p1, ..., pk) { statements; }` | Defines a parameterized action `Foo(p1, ..., pk)` to execute the given `statements`. | - -The `ACTION*` macros cannot be used inside a function or class. diff --git a/tests/lib/docs/reference/assertions.md b/tests/lib/docs/reference/assertions.md deleted file mode 100644 index 7bf03a3dde..0000000000 --- a/tests/lib/docs/reference/assertions.md +++ /dev/null @@ -1,633 +0,0 @@ -# Assertions Reference - -This page lists the assertion macros provided by GoogleTest for verifying code -behavior. To use them, include the header `gtest/gtest.h`. - -The majority of the macros listed below come as a pair with an `EXPECT_` variant -and an `ASSERT_` variant. Upon failure, `EXPECT_` macros generate nonfatal -failures and allow the current function to continue running, while `ASSERT_` -macros generate fatal failures and abort the current function. - -All assertion macros support streaming a custom failure message into them with -the `<<` operator, for example: - -```cpp -EXPECT_TRUE(my_condition) << "My condition is not true"; -``` - -Anything that can be streamed to an `ostream` can be streamed to an assertion -macro—in particular, C strings and string objects. If a wide string (`wchar_t*`, -`TCHAR*` in `UNICODE` mode on Windows, or `std::wstring`) is streamed to an -assertion, it will be translated to UTF-8 when printed. - -## Explicit Success and Failure {#success-failure} - -The assertions in this section generate a success or failure directly instead of -testing a value or expression. These are useful when control flow, rather than a -Boolean expression, determines the test's success or failure, as shown by the -following example: - -```c++ -switch(expression) { - case 1: - ... some checks ... - case 2: - ... some other checks ... - default: - FAIL() << "We shouldn't get here."; -} -``` - -### SUCCEED {#SUCCEED} - -`SUCCEED()` - -Generates a success. This *does not* make the overall test succeed. A test is -considered successful only if none of its assertions fail during its execution. - -The `SUCCEED` assertion is purely documentary and currently doesn't generate any -user-visible output. However, we may add `SUCCEED` messages to GoogleTest output -in the future. - -### FAIL {#FAIL} - -`FAIL()` - -Generates a fatal failure, which returns from the current function. - -Can only be used in functions that return `void`. See -[Assertion Placement](../advanced.md#assertion-placement) for more information. - -### ADD_FAILURE {#ADD_FAILURE} - -`ADD_FAILURE()` - -Generates a nonfatal failure, which allows the current function to continue -running. - -### ADD_FAILURE_AT {#ADD_FAILURE_AT} - -`ADD_FAILURE_AT(`*`file_path`*`,`*`line_number`*`)` - -Generates a nonfatal failure at the file and line number specified. - -## Generalized Assertion {#generalized} - -The following assertion allows [matchers](matchers.md) to be used to verify -values. - -### EXPECT_THAT {#EXPECT_THAT} - -`EXPECT_THAT(`*`value`*`,`*`matcher`*`)` \ -`ASSERT_THAT(`*`value`*`,`*`matcher`*`)` - -Verifies that *`value`* matches the [matcher](matchers.md) *`matcher`*. - -For example, the following code verifies that the string `value1` starts with -`"Hello"`, `value2` matches a regular expression, and `value3` is between 5 and -10: - -```cpp -#include "gmock/gmock.h" - -using ::testing::AllOf; -using ::testing::Gt; -using ::testing::Lt; -using ::testing::MatchesRegex; -using ::testing::StartsWith; - -... -EXPECT_THAT(value1, StartsWith("Hello")); -EXPECT_THAT(value2, MatchesRegex("Line \\d+")); -ASSERT_THAT(value3, AllOf(Gt(5), Lt(10))); -``` - -Matchers enable assertions of this form to read like English and generate -informative failure messages. For example, if the above assertion on `value1` -fails, the resulting message will be similar to the following: - -``` -Value of: value1 - Actual: "Hi, world!" -Expected: starts with "Hello" -``` - -GoogleTest provides a built-in library of matchers—see the -[Matchers Reference](matchers.md). It is also possible to write your own -matchers—see [Writing New Matchers Quickly](../gmock_cook_book.md#NewMatchers). -The use of matchers makes `EXPECT_THAT` a powerful, extensible assertion. - -*The idea for this assertion was borrowed from Joe Walnes' Hamcrest project, -which adds `assertThat()` to JUnit.* - -## Boolean Conditions {#boolean} - -The following assertions test Boolean conditions. - -### EXPECT_TRUE {#EXPECT_TRUE} - -`EXPECT_TRUE(`*`condition`*`)` \ -`ASSERT_TRUE(`*`condition`*`)` - -Verifies that *`condition`* is true. - -### EXPECT_FALSE {#EXPECT_FALSE} - -`EXPECT_FALSE(`*`condition`*`)` \ -`ASSERT_FALSE(`*`condition`*`)` - -Verifies that *`condition`* is false. - -## Binary Comparison {#binary-comparison} - -The following assertions compare two values. The value arguments must be -comparable by the assertion's comparison operator, otherwise a compiler error -will result. - -If an argument supports the `<<` operator, it will be called to print the -argument when the assertion fails. Otherwise, GoogleTest will attempt to print -them in the best way it can—see -[Teaching GoogleTest How to Print Your Values](../advanced.md#teaching-googletest-how-to-print-your-values). - -Arguments are always evaluated exactly once, so it's OK for the arguments to -have side effects. However, the argument evaluation order is undefined and -programs should not depend on any particular argument evaluation order. - -These assertions work with both narrow and wide string objects (`string` and -`wstring`). - -See also the [Floating-Point Comparison](#floating-point) assertions to compare -floating-point numbers and avoid problems caused by rounding. - -### EXPECT_EQ {#EXPECT_EQ} - -`EXPECT_EQ(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_EQ(`*`val1`*`,`*`val2`*`)` - -Verifies that *`val1`*`==`*`val2`*. - -Does pointer equality on pointers. If used on two C strings, it tests if they -are in the same memory location, not if they have the same value. Use -[`EXPECT_STREQ`](#EXPECT_STREQ) to compare C strings (e.g. `const char*`) by -value. - -When comparing a pointer to `NULL`, use `EXPECT_EQ(`*`ptr`*`, nullptr)` instead -of `EXPECT_EQ(`*`ptr`*`, NULL)`. - -### EXPECT_NE {#EXPECT_NE} - -`EXPECT_NE(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_NE(`*`val1`*`,`*`val2`*`)` - -Verifies that *`val1`*`!=`*`val2`*. - -Does pointer equality on pointers. If used on two C strings, it tests if they -are in different memory locations, not if they have different values. Use -[`EXPECT_STRNE`](#EXPECT_STRNE) to compare C strings (e.g. `const char*`) by -value. - -When comparing a pointer to `NULL`, use `EXPECT_NE(`*`ptr`*`, nullptr)` instead -of `EXPECT_NE(`*`ptr`*`, NULL)`. - -### EXPECT_LT {#EXPECT_LT} - -`EXPECT_LT(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_LT(`*`val1`*`,`*`val2`*`)` - -Verifies that *`val1`*`<`*`val2`*. - -### EXPECT_LE {#EXPECT_LE} - -`EXPECT_LE(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_LE(`*`val1`*`,`*`val2`*`)` - -Verifies that *`val1`*`<=`*`val2`*. - -### EXPECT_GT {#EXPECT_GT} - -`EXPECT_GT(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_GT(`*`val1`*`,`*`val2`*`)` - -Verifies that *`val1`*`>`*`val2`*. - -### EXPECT_GE {#EXPECT_GE} - -`EXPECT_GE(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_GE(`*`val1`*`,`*`val2`*`)` - -Verifies that *`val1`*`>=`*`val2`*. - -## String Comparison {#c-strings} - -The following assertions compare two **C strings**. To compare two `string` -objects, use [`EXPECT_EQ`](#EXPECT_EQ) or [`EXPECT_NE`](#EXPECT_NE) instead. - -These assertions also accept wide C strings (`wchar_t*`). If a comparison of two -wide strings fails, their values will be printed as UTF-8 narrow strings. - -To compare a C string with `NULL`, use `EXPECT_EQ(`*`c_string`*`, nullptr)` or -`EXPECT_NE(`*`c_string`*`, nullptr)`. - -### EXPECT_STREQ {#EXPECT_STREQ} - -`EXPECT_STREQ(`*`str1`*`,`*`str2`*`)` \ -`ASSERT_STREQ(`*`str1`*`,`*`str2`*`)` - -Verifies that the two C strings *`str1`* and *`str2`* have the same contents. - -### EXPECT_STRNE {#EXPECT_STRNE} - -`EXPECT_STRNE(`*`str1`*`,`*`str2`*`)` \ -`ASSERT_STRNE(`*`str1`*`,`*`str2`*`)` - -Verifies that the two C strings *`str1`* and *`str2`* have different contents. - -### EXPECT_STRCASEEQ {#EXPECT_STRCASEEQ} - -`EXPECT_STRCASEEQ(`*`str1`*`,`*`str2`*`)` \ -`ASSERT_STRCASEEQ(`*`str1`*`,`*`str2`*`)` - -Verifies that the two C strings *`str1`* and *`str2`* have the same contents, -ignoring case. - -### EXPECT_STRCASENE {#EXPECT_STRCASENE} - -`EXPECT_STRCASENE(`*`str1`*`,`*`str2`*`)` \ -`ASSERT_STRCASENE(`*`str1`*`,`*`str2`*`)` - -Verifies that the two C strings *`str1`* and *`str2`* have different contents, -ignoring case. - -## Floating-Point Comparison {#floating-point} - -The following assertions compare two floating-point values. - -Due to rounding errors, it is very unlikely that two floating-point values will -match exactly, so `EXPECT_EQ` is not suitable. In general, for floating-point -comparison to make sense, the user needs to carefully choose the error bound. - -GoogleTest also provides assertions that use a default error bound based on -Units in the Last Place (ULPs). To learn more about ULPs, see the article -[Comparing Floating Point Numbers](https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/). - -### EXPECT_FLOAT_EQ {#EXPECT_FLOAT_EQ} - -`EXPECT_FLOAT_EQ(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_FLOAT_EQ(`*`val1`*`,`*`val2`*`)` - -Verifies that the two `float` values *`val1`* and *`val2`* are approximately -equal, to within 4 ULPs from each other. - -### EXPECT_DOUBLE_EQ {#EXPECT_DOUBLE_EQ} - -`EXPECT_DOUBLE_EQ(`*`val1`*`,`*`val2`*`)` \ -`ASSERT_DOUBLE_EQ(`*`val1`*`,`*`val2`*`)` - -Verifies that the two `double` values *`val1`* and *`val2`* are approximately -equal, to within 4 ULPs from each other. - -### EXPECT_NEAR {#EXPECT_NEAR} - -`EXPECT_NEAR(`*`val1`*`,`*`val2`*`,`*`abs_error`*`)` \ -`ASSERT_NEAR(`*`val1`*`,`*`val2`*`,`*`abs_error`*`)` - -Verifies that the difference between *`val1`* and *`val2`* does not exceed the -absolute error bound *`abs_error`*. - -## Exception Assertions {#exceptions} - -The following assertions verify that a piece of code throws, or does not throw, -an exception. Usage requires exceptions to be enabled in the build environment. - -Note that the piece of code under test can be a compound statement, for example: - -```cpp -EXPECT_NO_THROW({ - int n = 5; - DoSomething(&n); -}); -``` - -### EXPECT_THROW {#EXPECT_THROW} - -`EXPECT_THROW(`*`statement`*`,`*`exception_type`*`)` \ -`ASSERT_THROW(`*`statement`*`,`*`exception_type`*`)` - -Verifies that *`statement`* throws an exception of type *`exception_type`*. - -### EXPECT_ANY_THROW {#EXPECT_ANY_THROW} - -`EXPECT_ANY_THROW(`*`statement`*`)` \ -`ASSERT_ANY_THROW(`*`statement`*`)` - -Verifies that *`statement`* throws an exception of any type. - -### EXPECT_NO_THROW {#EXPECT_NO_THROW} - -`EXPECT_NO_THROW(`*`statement`*`)` \ -`ASSERT_NO_THROW(`*`statement`*`)` - -Verifies that *`statement`* does not throw any exception. - -## Predicate Assertions {#predicates} - -The following assertions enable more complex predicates to be verified while -printing a more clear failure message than if `EXPECT_TRUE` were used alone. - -### EXPECT_PRED* {#EXPECT_PRED} - -`EXPECT_PRED1(`*`pred`*`,`*`val1`*`)` \ -`EXPECT_PRED2(`*`pred`*`,`*`val1`*`,`*`val2`*`)` \ -`EXPECT_PRED3(`*`pred`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`)` \ -`EXPECT_PRED4(`*`pred`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`)` \ -`EXPECT_PRED5(`*`pred`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`,`*`val5`*`)` - -`ASSERT_PRED1(`*`pred`*`,`*`val1`*`)` \ -`ASSERT_PRED2(`*`pred`*`,`*`val1`*`,`*`val2`*`)` \ -`ASSERT_PRED3(`*`pred`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`)` \ -`ASSERT_PRED4(`*`pred`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`)` \ -`ASSERT_PRED5(`*`pred`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`,`*`val5`*`)` - -Verifies that the predicate *`pred`* returns `true` when passed the given values -as arguments. - -The parameter *`pred`* is a function or functor that accepts as many arguments -as the corresponding macro accepts values. If *`pred`* returns `true` for the -given arguments, the assertion succeeds, otherwise the assertion fails. - -When the assertion fails, it prints the value of each argument. Arguments are -always evaluated exactly once. - -As an example, see the following code: - -```cpp -// Returns true if m and n have no common divisors except 1. -bool MutuallyPrime(int m, int n) { ... } -... -const int a = 3; -const int b = 4; -const int c = 10; -... -EXPECT_PRED2(MutuallyPrime, a, b); // Succeeds -EXPECT_PRED2(MutuallyPrime, b, c); // Fails -``` - -In the above example, the first assertion succeeds, and the second fails with -the following message: - -``` -MutuallyPrime(b, c) is false, where -b is 4 -c is 10 -``` - -Note that if the given predicate is an overloaded function or a function -template, the assertion macro might not be able to determine which version to -use, and it might be necessary to explicitly specify the type of the function. -For example, for a Boolean function `IsPositive()` overloaded to take either a -single `int` or `double` argument, it would be necessary to write one of the -following: - -```cpp -EXPECT_PRED1(static_cast(IsPositive), 5); -EXPECT_PRED1(static_cast(IsPositive), 3.14); -``` - -Writing simply `EXPECT_PRED1(IsPositive, 5);` would result in a compiler error. -Similarly, to use a template function, specify the template arguments: - -```cpp -template -bool IsNegative(T x) { - return x < 0; -} -... -EXPECT_PRED1(IsNegative, -5); // Must specify type for IsNegative -``` - -If a template has multiple parameters, wrap the predicate in parentheses so the -macro arguments are parsed correctly: - -```cpp -ASSERT_PRED2((MyPredicate), 5, 0); -``` - -### EXPECT_PRED_FORMAT* {#EXPECT_PRED_FORMAT} - -`EXPECT_PRED_FORMAT1(`*`pred_formatter`*`,`*`val1`*`)` \ -`EXPECT_PRED_FORMAT2(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`)` \ -`EXPECT_PRED_FORMAT3(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`)` \ -`EXPECT_PRED_FORMAT4(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`)` -\ -`EXPECT_PRED_FORMAT5(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`,`*`val5`*`)` - -`ASSERT_PRED_FORMAT1(`*`pred_formatter`*`,`*`val1`*`)` \ -`ASSERT_PRED_FORMAT2(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`)` \ -`ASSERT_PRED_FORMAT3(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`)` \ -`ASSERT_PRED_FORMAT4(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`)` -\ -`ASSERT_PRED_FORMAT5(`*`pred_formatter`*`,`*`val1`*`,`*`val2`*`,`*`val3`*`,`*`val4`*`,`*`val5`*`)` - -Verifies that the predicate *`pred_formatter`* succeeds when passed the given -values as arguments. - -The parameter *`pred_formatter`* is a *predicate-formatter*, which is a function -or functor with the signature: - -```cpp -testing::AssertionResult PredicateFormatter(const char* expr1, - const char* expr2, - ... - const char* exprn, - T1 val1, - T2 val2, - ... - Tn valn); -``` - -where *`val1`*, *`val2`*, ..., *`valn`* are the values of the predicate -arguments, and *`expr1`*, *`expr2`*, ..., *`exprn`* are the corresponding -expressions as they appear in the source code. The types `T1`, `T2`, ..., `Tn` -can be either value types or reference types; if an argument has type `T`, it -can be declared as either `T` or `const T&`, whichever is appropriate. For more -about the return type `testing::AssertionResult`, see -[Using a Function That Returns an AssertionResult](../advanced.md#using-a-function-that-returns-an-assertionresult). - -As an example, see the following code: - -```cpp -// Returns the smallest prime common divisor of m and n, -// or 1 when m and n are mutually prime. -int SmallestPrimeCommonDivisor(int m, int n) { ... } - -// Returns true if m and n have no common divisors except 1. -bool MutuallyPrime(int m, int n) { ... } - -// A predicate-formatter for asserting that two integers are mutually prime. -testing::AssertionResult AssertMutuallyPrime(const char* m_expr, - const char* n_expr, - int m, - int n) { - if (MutuallyPrime(m, n)) return testing::AssertionSuccess(); - - return testing::AssertionFailure() << m_expr << " and " << n_expr - << " (" << m << " and " << n << ") are not mutually prime, " - << "as they have a common divisor " << SmallestPrimeCommonDivisor(m, n); -} - -... -const int a = 3; -const int b = 4; -const int c = 10; -... -EXPECT_PRED_FORMAT2(AssertMutuallyPrime, a, b); // Succeeds -EXPECT_PRED_FORMAT2(AssertMutuallyPrime, b, c); // Fails -``` - -In the above example, the final assertion fails and the predicate-formatter -produces the following failure message: - -``` -b and c (4 and 10) are not mutually prime, as they have a common divisor 2 -``` - -## Windows HRESULT Assertions {#HRESULT} - -The following assertions test for `HRESULT` success or failure. For example: - -```cpp -CComPtr shell; -ASSERT_HRESULT_SUCCEEDED(shell.CoCreateInstance(L"Shell.Application")); -CComVariant empty; -ASSERT_HRESULT_SUCCEEDED(shell->ShellExecute(CComBSTR(url), empty, empty, empty, empty)); -``` - -The generated output contains the human-readable error message associated with -the returned `HRESULT` code. - -### EXPECT_HRESULT_SUCCEEDED {#EXPECT_HRESULT_SUCCEEDED} - -`EXPECT_HRESULT_SUCCEEDED(`*`expression`*`)` \ -`ASSERT_HRESULT_SUCCEEDED(`*`expression`*`)` - -Verifies that *`expression`* is a success `HRESULT`. - -### EXPECT_HRESULT_FAILED {#EXPECT_HRESULT_FAILED} - -`EXPECT_HRESULT_FAILED(`*`expression`*`)` \ -`EXPECT_HRESULT_FAILED(`*`expression`*`)` - -Verifies that *`expression`* is a failure `HRESULT`. - -## Death Assertions {#death} - -The following assertions verify that a piece of code causes the process to -terminate. For context, see [Death Tests](../advanced.md#death-tests). - -These assertions spawn a new process and execute the code under test in that -process. How that happens depends on the platform and the variable -`::testing::GTEST_FLAG(death_test_style)`, which is initialized from the -command-line flag `--gtest_death_test_style`. - -* On POSIX systems, `fork()` (or `clone()` on Linux) is used to spawn the - child, after which: - * If the variable's value is `"fast"`, the death test statement is - immediately executed. - * If the variable's value is `"threadsafe"`, the child process re-executes - the unit test binary just as it was originally invoked, but with some - extra flags to cause just the single death test under consideration to - be run. -* On Windows, the child is spawned using the `CreateProcess()` API, and - re-executes the binary to cause just the single death test under - consideration to be run - much like the `"threadsafe"` mode on POSIX. - -Other values for the variable are illegal and will cause the death test to fail. -Currently, the flag's default value is -**`"fast"`**. - -If the death test statement runs to completion without dying, the child process -will nonetheless terminate, and the assertion fails. - -Note that the piece of code under test can be a compound statement, for example: - -```cpp -EXPECT_DEATH({ - int n = 5; - DoSomething(&n); -}, "Error on line .* of DoSomething()"); -``` - -### EXPECT_DEATH {#EXPECT_DEATH} - -`EXPECT_DEATH(`*`statement`*`,`*`matcher`*`)` \ -`ASSERT_DEATH(`*`statement`*`,`*`matcher`*`)` - -Verifies that *`statement`* causes the process to terminate with a nonzero exit -status and produces `stderr` output that matches *`matcher`*. - -The parameter *`matcher`* is either a [matcher](matchers.md) for a `const -std::string&`, or a regular expression (see -[Regular Expression Syntax](../advanced.md#regular-expression-syntax))—a bare -string *`s`* (with no matcher) is treated as -[`ContainsRegex(s)`](matchers.md#string-matchers), **not** -[`Eq(s)`](matchers.md#generic-comparison). - -For example, the following code verifies that calling `DoSomething(42)` causes -the process to die with an error message that contains the text `My error`: - -```cpp -EXPECT_DEATH(DoSomething(42), "My error"); -``` - -### EXPECT_DEATH_IF_SUPPORTED {#EXPECT_DEATH_IF_SUPPORTED} - -`EXPECT_DEATH_IF_SUPPORTED(`*`statement`*`,`*`matcher`*`)` \ -`ASSERT_DEATH_IF_SUPPORTED(`*`statement`*`,`*`matcher`*`)` - -If death tests are supported, behaves the same as -[`EXPECT_DEATH`](#EXPECT_DEATH). Otherwise, verifies nothing. - -### EXPECT_DEBUG_DEATH {#EXPECT_DEBUG_DEATH} - -`EXPECT_DEBUG_DEATH(`*`statement`*`,`*`matcher`*`)` \ -`ASSERT_DEBUG_DEATH(`*`statement`*`,`*`matcher`*`)` - -In debug mode, behaves the same as [`EXPECT_DEATH`](#EXPECT_DEATH). When not in -debug mode (i.e. `NDEBUG` is defined), just executes *`statement`*. - -### EXPECT_EXIT {#EXPECT_EXIT} - -`EXPECT_EXIT(`*`statement`*`,`*`predicate`*`,`*`matcher`*`)` \ -`ASSERT_EXIT(`*`statement`*`,`*`predicate`*`,`*`matcher`*`)` - -Verifies that *`statement`* causes the process to terminate with an exit status -that satisfies *`predicate`*, and produces `stderr` output that matches -*`matcher`*. - -The parameter *`predicate`* is a function or functor that accepts an `int` exit -status and returns a `bool`. GoogleTest provides two predicates to handle common -cases: - -```cpp -// Returns true if the program exited normally with the given exit status code. -::testing::ExitedWithCode(exit_code); - -// Returns true if the program was killed by the given signal. -// Not available on Windows. -::testing::KilledBySignal(signal_number); -``` - -The parameter *`matcher`* is either a [matcher](matchers.md) for a `const -std::string&`, or a regular expression (see -[Regular Expression Syntax](../advanced.md#regular-expression-syntax))—a bare -string *`s`* (with no matcher) is treated as -[`ContainsRegex(s)`](matchers.md#string-matchers), **not** -[`Eq(s)`](matchers.md#generic-comparison). - -For example, the following code verifies that calling `NormalExit()` causes the -process to print a message containing the text `Success` to `stderr` and exit -with exit status code 0: - -```cpp -EXPECT_EXIT(NormalExit(), testing::ExitedWithCode(0), "Success"); -``` diff --git a/tests/lib/docs/reference/matchers.md b/tests/lib/docs/reference/matchers.md deleted file mode 100644 index 9fb1592751..0000000000 --- a/tests/lib/docs/reference/matchers.md +++ /dev/null @@ -1,290 +0,0 @@ -# Matchers Reference - -A **matcher** matches a *single* argument. You can use it inside `ON_CALL()` or -`EXPECT_CALL()`, or use it to validate a value directly using two macros: - -| Macro | Description | -| :----------------------------------- | :------------------------------------ | -| `EXPECT_THAT(actual_value, matcher)` | Asserts that `actual_value` matches `matcher`. | -| `ASSERT_THAT(actual_value, matcher)` | The same as `EXPECT_THAT(actual_value, matcher)`, except that it generates a **fatal** failure. | - -{: .callout .warning} -**WARNING:** Equality matching via `EXPECT_THAT(actual_value, expected_value)` -is supported, however note that implicit conversions can cause surprising -results. For example, `EXPECT_THAT(some_bool, "some string")` will compile and -may pass unintentionally. - -**BEST PRACTICE:** Prefer to make the comparison explicit via -`EXPECT_THAT(actual_value, Eq(expected_value))` or `EXPECT_EQ(actual_value, -expected_value)`. - -Built-in matchers (where `argument` is the function argument, e.g. -`actual_value` in the example above, or when used in the context of -`EXPECT_CALL(mock_object, method(matchers))`, the arguments of `method`) are -divided into several categories. All matchers are defined in the `::testing` -namespace unless otherwise noted. - -## Wildcard - -Matcher | Description -:-------------------------- | :----------------------------------------------- -`_` | `argument` can be any value of the correct type. -`A()` or `An()` | `argument` can be any value of type `type`. - -## Generic Comparison - -| Matcher | Description | -| :--------------------- | :-------------------------------------------------- | -| `Eq(value)` or `value` | `argument == value` | -| `Ge(value)` | `argument >= value` | -| `Gt(value)` | `argument > value` | -| `Le(value)` | `argument <= value` | -| `Lt(value)` | `argument < value` | -| `Ne(value)` | `argument != value` | -| `IsFalse()` | `argument` evaluates to `false` in a Boolean context. | -| `IsTrue()` | `argument` evaluates to `true` in a Boolean context. | -| `IsNull()` | `argument` is a `NULL` pointer (raw or smart). | -| `NotNull()` | `argument` is a non-null pointer (raw or smart). | -| `Optional(m)` | `argument` is `optional<>` that contains a value matching `m`. (For testing whether an `optional<>` is set, check for equality with `nullopt`. You may need to use `Eq(nullopt)` if the inner type doesn't have `==`.)| -| `VariantWith(m)` | `argument` is `variant<>` that holds the alternative of type T with a value matching `m`. | -| `Ref(variable)` | `argument` is a reference to `variable`. | -| `TypedEq(value)` | `argument` has type `type` and is equal to `value`. You may need to use this instead of `Eq(value)` when the mock function is overloaded. | - -Except `Ref()`, these matchers make a *copy* of `value` in case it's modified or -destructed later. If the compiler complains that `value` doesn't have a public -copy constructor, try wrap it in `std::ref()`, e.g. -`Eq(std::ref(non_copyable_value))`. If you do that, make sure -`non_copyable_value` is not changed afterwards, or the meaning of your matcher -will be changed. - -`IsTrue` and `IsFalse` are useful when you need to use a matcher, or for types -that can be explicitly converted to Boolean, but are not implicitly converted to -Boolean. In other cases, you can use the basic -[`EXPECT_TRUE` and `EXPECT_FALSE`](assertions.md#boolean) assertions. - -## Floating-Point Matchers {#FpMatchers} - -| Matcher | Description | -| :------------------------------- | :--------------------------------- | -| `DoubleEq(a_double)` | `argument` is a `double` value approximately equal to `a_double`, treating two NaNs as unequal. | -| `FloatEq(a_float)` | `argument` is a `float` value approximately equal to `a_float`, treating two NaNs as unequal. | -| `NanSensitiveDoubleEq(a_double)` | `argument` is a `double` value approximately equal to `a_double`, treating two NaNs as equal. | -| `NanSensitiveFloatEq(a_float)` | `argument` is a `float` value approximately equal to `a_float`, treating two NaNs as equal. | -| `IsNan()` | `argument` is any floating-point type with a NaN value. | - -The above matchers use ULP-based comparison (the same as used in googletest). -They automatically pick a reasonable error bound based on the absolute value of -the expected value. `DoubleEq()` and `FloatEq()` conform to the IEEE standard, -which requires comparing two NaNs for equality to return false. The -`NanSensitive*` version instead treats two NaNs as equal, which is often what a -user wants. - -| Matcher | Description | -| :------------------------------------------------ | :----------------------- | -| `DoubleNear(a_double, max_abs_error)` | `argument` is a `double` value close to `a_double` (absolute error <= `max_abs_error`), treating two NaNs as unequal. | -| `FloatNear(a_float, max_abs_error)` | `argument` is a `float` value close to `a_float` (absolute error <= `max_abs_error`), treating two NaNs as unequal. | -| `NanSensitiveDoubleNear(a_double, max_abs_error)` | `argument` is a `double` value close to `a_double` (absolute error <= `max_abs_error`), treating two NaNs as equal. | -| `NanSensitiveFloatNear(a_float, max_abs_error)` | `argument` is a `float` value close to `a_float` (absolute error <= `max_abs_error`), treating two NaNs as equal. | - -## String Matchers - -The `argument` can be either a C string or a C++ string object: - -| Matcher | Description | -| :---------------------- | :------------------------------------------------- | -| `ContainsRegex(string)` | `argument` matches the given regular expression. | -| `EndsWith(suffix)` | `argument` ends with string `suffix`. | -| `HasSubstr(string)` | `argument` contains `string` as a sub-string. | -| `IsEmpty()` | `argument` is an empty string. | -| `MatchesRegex(string)` | `argument` matches the given regular expression with the match starting at the first character and ending at the last character. | -| `StartsWith(prefix)` | `argument` starts with string `prefix`. | -| `StrCaseEq(string)` | `argument` is equal to `string`, ignoring case. | -| `StrCaseNe(string)` | `argument` is not equal to `string`, ignoring case. | -| `StrEq(string)` | `argument` is equal to `string`. | -| `StrNe(string)` | `argument` is not equal to `string`. | -| `WhenBase64Unescaped(m)` | `argument` is a base-64 escaped string whose unescaped string matches `m`. | - -`ContainsRegex()` and `MatchesRegex()` take ownership of the `RE` object. They -use the regular expression syntax defined -[here](../advanced.md#regular-expression-syntax). All of these matchers, except -`ContainsRegex()` and `MatchesRegex()` work for wide strings as well. - -## Container Matchers - -Most STL-style containers support `==`, so you can use `Eq(expected_container)` -or simply `expected_container` to match a container exactly. If you want to -write the elements in-line, match them more flexibly, or get more informative -messages, you can use: - -| Matcher | Description | -| :---------------------------------------- | :------------------------------- | -| `BeginEndDistanceIs(m)` | `argument` is a container whose `begin()` and `end()` iterators are separated by a number of increments matching `m`. E.g. `BeginEndDistanceIs(2)` or `BeginEndDistanceIs(Lt(2))`. For containers that define a `size()` method, `SizeIs(m)` may be more efficient. | -| `ContainerEq(container)` | The same as `Eq(container)` except that the failure message also includes which elements are in one container but not the other. | -| `Contains(e)` | `argument` contains an element that matches `e`, which can be either a value or a matcher. | -| `Contains(e).Times(n)` | `argument` contains elements that match `e`, which can be either a value or a matcher, and the number of matches is `n`, which can be either a value or a matcher. Unlike the plain `Contains` and `Each` this allows to check for arbitrary occurrences including testing for absence with `Contains(e).Times(0)`. | -| `Each(e)` | `argument` is a container where *every* element matches `e`, which can be either a value or a matcher. | -| `ElementsAre(e0, e1, ..., en)` | `argument` has `n + 1` elements, where the *i*-th element matches `ei`, which can be a value or a matcher. | -| `ElementsAreArray({e0, e1, ..., en})`, `ElementsAreArray(a_container)`, `ElementsAreArray(begin, end)`, `ElementsAreArray(array)`, or `ElementsAreArray(array, count)` | The same as `ElementsAre()` except that the expected element values/matchers come from an initializer list, STL-style container, iterator range, or C-style array. | -| `IsEmpty()` | `argument` is an empty container (`container.empty()`). | -| `IsSubsetOf({e0, e1, ..., en})`, `IsSubsetOf(a_container)`, `IsSubsetOf(begin, end)`, `IsSubsetOf(array)`, or `IsSubsetOf(array, count)` | `argument` matches `UnorderedElementsAre(x0, x1, ..., xk)` for some subset `{x0, x1, ..., xk}` of the expected matchers. | -| `IsSupersetOf({e0, e1, ..., en})`, `IsSupersetOf(a_container)`, `IsSupersetOf(begin, end)`, `IsSupersetOf(array)`, or `IsSupersetOf(array, count)` | Some subset of `argument` matches `UnorderedElementsAre(`expected matchers`)`. | -| `Pointwise(m, container)`, `Pointwise(m, {e0, e1, ..., en})` | `argument` contains the same number of elements as in `container`, and for all i, (the i-th element in `argument`, the i-th element in `container`) match `m`, which is a matcher on 2-tuples. E.g. `Pointwise(Le(), upper_bounds)` verifies that each element in `argument` doesn't exceed the corresponding element in `upper_bounds`. See more detail below. | -| `SizeIs(m)` | `argument` is a container whose size matches `m`. E.g. `SizeIs(2)` or `SizeIs(Lt(2))`. | -| `UnorderedElementsAre(e0, e1, ..., en)` | `argument` has `n + 1` elements, and under *some* permutation of the elements, each element matches an `ei` (for a different `i`), which can be a value or a matcher. | -| `UnorderedElementsAreArray({e0, e1, ..., en})`, `UnorderedElementsAreArray(a_container)`, `UnorderedElementsAreArray(begin, end)`, `UnorderedElementsAreArray(array)`, or `UnorderedElementsAreArray(array, count)` | The same as `UnorderedElementsAre()` except that the expected element values/matchers come from an initializer list, STL-style container, iterator range, or C-style array. | -| `UnorderedPointwise(m, container)`, `UnorderedPointwise(m, {e0, e1, ..., en})` | Like `Pointwise(m, container)`, but ignores the order of elements. | -| `WhenSorted(m)` | When `argument` is sorted using the `<` operator, it matches container matcher `m`. E.g. `WhenSorted(ElementsAre(1, 2, 3))` verifies that `argument` contains elements 1, 2, and 3, ignoring order. | -| `WhenSortedBy(comparator, m)` | The same as `WhenSorted(m)`, except that the given comparator instead of `<` is used to sort `argument`. E.g. `WhenSortedBy(std::greater(), ElementsAre(3, 2, 1))`. | - -**Notes:** - -* These matchers can also match: - 1. a native array passed by reference (e.g. in `Foo(const int (&a)[5])`), - and - 2. an array passed as a pointer and a count (e.g. in `Bar(const T* buffer, - int len)` -- see [Multi-argument Matchers](#MultiArgMatchers)). -* The array being matched may be multi-dimensional (i.e. its elements can be - arrays). -* `m` in `Pointwise(m, ...)` and `UnorderedPointwise(m, ...)` should be a - matcher for `::std::tuple` where `T` and `U` are the element type of - the actual container and the expected container, respectively. For example, - to compare two `Foo` containers where `Foo` doesn't support `operator==`, - one might write: - - ```cpp - MATCHER(FooEq, "") { - return std::get<0>(arg).Equals(std::get<1>(arg)); - } - ... - EXPECT_THAT(actual_foos, Pointwise(FooEq(), expected_foos)); - ``` - -## Member Matchers - -| Matcher | Description | -| :------------------------------ | :----------------------------------------- | -| `Field(&class::field, m)` | `argument.field` (or `argument->field` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_. | -| `Field(field_name, &class::field, m)` | The same as the two-parameter version, but provides a better error message. | -| `Key(e)` | `argument.first` matches `e`, which can be either a value or a matcher. E.g. `Contains(Key(Le(5)))` can verify that a `map` contains a key `<= 5`. | -| `Pair(m1, m2)` | `argument` is an `std::pair` whose `first` field matches `m1` and `second` field matches `m2`. | -| `FieldsAre(m...)` | `argument` is a compatible object where each field matches piecewise with the matchers `m...`. A compatible object is any that supports the `std::tuple_size`+`get(obj)` protocol. In C++17 and up this also supports types compatible with structured bindings, like aggregates. | -| `Property(&class::property, m)` | `argument.property()` (or `argument->property()` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_. The method `property()` must take no argument and be declared as `const`. | -| `Property(property_name, &class::property, m)` | The same as the two-parameter version, but provides a better error message. - -**Notes:** - -* You can use `FieldsAre()` to match any type that supports structured - bindings, such as `std::tuple`, `std::pair`, `std::array`, and aggregate - types. For example: - - ```cpp - std::tuple my_tuple{7, "hello world"}; - EXPECT_THAT(my_tuple, FieldsAre(Ge(0), HasSubstr("hello"))); - - struct MyStruct { - int value = 42; - std::string greeting = "aloha"; - }; - MyStruct s; - EXPECT_THAT(s, FieldsAre(42, "aloha")); - ``` - -* Don't use `Property()` against member functions that you do not own, because - taking addresses of functions is fragile and generally not part of the - contract of the function. - -## Matching the Result of a Function, Functor, or Callback - -| Matcher | Description | -| :--------------- | :------------------------------------------------ | -| `ResultOf(f, m)` | `f(argument)` matches matcher `m`, where `f` is a function or functor. | -| `ResultOf(result_description, f, m)` | The same as the two-parameter version, but provides a better error message. - -## Pointer Matchers - -| Matcher | Description | -| :------------------------ | :---------------------------------------------- | -| `Address(m)` | the result of `std::addressof(argument)` matches `m`. | -| `Pointee(m)` | `argument` (either a smart pointer or a raw pointer) points to a value that matches matcher `m`. | -| `Pointer(m)` | `argument` (either a smart pointer or a raw pointer) contains a pointer that matches `m`. `m` will match against the raw pointer regardless of the type of `argument`. | -| `WhenDynamicCastTo(m)` | when `argument` is passed through `dynamic_cast()`, it matches matcher `m`. | - -## Multi-argument Matchers {#MultiArgMatchers} - -Technically, all matchers match a *single* value. A "multi-argument" matcher is -just one that matches a *tuple*. The following matchers can be used to match a -tuple `(x, y)`: - -Matcher | Description -:------ | :---------- -`Eq()` | `x == y` -`Ge()` | `x >= y` -`Gt()` | `x > y` -`Le()` | `x <= y` -`Lt()` | `x < y` -`Ne()` | `x != y` - -You can use the following selectors to pick a subset of the arguments (or -reorder them) to participate in the matching: - -| Matcher | Description | -| :------------------------- | :---------------------------------------------- | -| `AllArgs(m)` | Equivalent to `m`. Useful as syntactic sugar in `.With(AllArgs(m))`. | -| `Args(m)` | The tuple of the `k` selected (using 0-based indices) arguments matches `m`, e.g. `Args<1, 2>(Eq())`. | - -## Composite Matchers - -You can make a matcher from one or more other matchers: - -| Matcher | Description | -| :------------------------------- | :-------------------------------------- | -| `AllOf(m1, m2, ..., mn)` | `argument` matches all of the matchers `m1` to `mn`. | -| `AllOfArray({m0, m1, ..., mn})`, `AllOfArray(a_container)`, `AllOfArray(begin, end)`, `AllOfArray(array)`, or `AllOfArray(array, count)` | The same as `AllOf()` except that the matchers come from an initializer list, STL-style container, iterator range, or C-style array. | -| `AnyOf(m1, m2, ..., mn)` | `argument` matches at least one of the matchers `m1` to `mn`. | -| `AnyOfArray({m0, m1, ..., mn})`, `AnyOfArray(a_container)`, `AnyOfArray(begin, end)`, `AnyOfArray(array)`, or `AnyOfArray(array, count)` | The same as `AnyOf()` except that the matchers come from an initializer list, STL-style container, iterator range, or C-style array. | -| `Not(m)` | `argument` doesn't match matcher `m`. | -| `Conditional(cond, m1, m2)` | Matches matcher `m1` if `cond` evaluates to true, else matches `m2`.| - -## Adapters for Matchers - -| Matcher | Description | -| :---------------------- | :------------------------------------ | -| `MatcherCast(m)` | casts matcher `m` to type `Matcher`. | -| `SafeMatcherCast(m)` | [safely casts](../gmock_cook_book.md#SafeMatcherCast) matcher `m` to type `Matcher`. | -| `Truly(predicate)` | `predicate(argument)` returns something considered by C++ to be true, where `predicate` is a function or functor. | - -`AddressSatisfies(callback)` and `Truly(callback)` take ownership of `callback`, -which must be a permanent callback. - -## Using Matchers as Predicates {#MatchersAsPredicatesCheat} - -| Matcher | Description | -| :---------------------------- | :------------------------------------------ | -| `Matches(m)(value)` | evaluates to `true` if `value` matches `m`. You can use `Matches(m)` alone as a unary functor. | -| `ExplainMatchResult(m, value, result_listener)` | evaluates to `true` if `value` matches `m`, explaining the result to `result_listener`. | -| `Value(value, m)` | evaluates to `true` if `value` matches `m`. | - -## Defining Matchers - -| Macro | Description | -| :----------------------------------- | :------------------------------------ | -| `MATCHER(IsEven, "") { return (arg % 2) == 0; }` | Defines a matcher `IsEven()` to match an even number. | -| `MATCHER_P(IsDivisibleBy, n, "") { *result_listener << "where the remainder is " << (arg % n); return (arg % n) == 0; }` | Defines a matcher `IsDivisibleBy(n)` to match a number divisible by `n`. | -| `MATCHER_P2(IsBetween, a, b, absl::StrCat(negation ? "isn't" : "is", " between ", PrintToString(a), " and ", PrintToString(b))) { return a <= arg && arg <= b; }` | Defines a matcher `IsBetween(a, b)` to match a value in the range [`a`, `b`]. | - -**Notes:** - -1. The `MATCHER*` macros cannot be used inside a function or class. -2. The matcher body must be *purely functional* (i.e. it cannot have any side - effect, and the result must not depend on anything other than the value - being matched and the matcher parameters). -3. You can use `PrintToString(x)` to convert a value `x` of any type to a - string. -4. You can use `ExplainMatchResult()` in a custom matcher to wrap another - matcher, for example: - - ```cpp - MATCHER_P(NestedPropertyMatches, matcher, "") { - return ExplainMatchResult(matcher, arg.nested().property(), result_listener); - } - ``` diff --git a/tests/lib/docs/reference/mocking.md b/tests/lib/docs/reference/mocking.md deleted file mode 100644 index e414ffbd0d..0000000000 --- a/tests/lib/docs/reference/mocking.md +++ /dev/null @@ -1,589 +0,0 @@ -# Mocking Reference - -This page lists the facilities provided by GoogleTest for creating and working -with mock objects. To use them, include the header -`gmock/gmock.h`. - -## Macros {#macros} - -GoogleTest defines the following macros for working with mocks. - -### MOCK_METHOD {#MOCK_METHOD} - -`MOCK_METHOD(`*`return_type`*`,`*`method_name`*`, (`*`args...`*`));` \ -`MOCK_METHOD(`*`return_type`*`,`*`method_name`*`, (`*`args...`*`), -(`*`specs...`*`));` - -Defines a mock method *`method_name`* with arguments `(`*`args...`*`)` and -return type *`return_type`* within a mock class. - -The parameters of `MOCK_METHOD` mirror the method declaration. The optional -fourth parameter *`specs...`* is a comma-separated list of qualifiers. The -following qualifiers are accepted: - -| Qualifier | Meaning | -| -------------------------- | -------------------------------------------- | -| `const` | Makes the mocked method a `const` method. Required if overriding a `const` method. | -| `override` | Marks the method with `override`. Recommended if overriding a `virtual` method. | -| `noexcept` | Marks the method with `noexcept`. Required if overriding a `noexcept` method. | -| `Calltype(`*`calltype`*`)` | Sets the call type for the method, for example `Calltype(STDMETHODCALLTYPE)`. Useful on Windows. | -| `ref(`*`qualifier`*`)` | Marks the method with the given reference qualifier, for example `ref(&)` or `ref(&&)`. Required if overriding a method that has a reference qualifier. | - -Note that commas in arguments prevent `MOCK_METHOD` from parsing the arguments -correctly if they are not appropriately surrounded by parentheses. See the -following example: - -```cpp -class MyMock { - public: - // The following 2 lines will not compile due to commas in the arguments: - MOCK_METHOD(std::pair, GetPair, ()); // Error! - MOCK_METHOD(bool, CheckMap, (std::map, bool)); // Error! - - // One solution - wrap arguments that contain commas in parentheses: - MOCK_METHOD((std::pair), GetPair, ()); - MOCK_METHOD(bool, CheckMap, ((std::map), bool)); - - // Another solution - use type aliases: - using BoolAndInt = std::pair; - MOCK_METHOD(BoolAndInt, GetPair, ()); - using MapIntDouble = std::map; - MOCK_METHOD(bool, CheckMap, (MapIntDouble, bool)); -}; -``` - -`MOCK_METHOD` must be used in the `public:` section of a mock class definition, -regardless of whether the method being mocked is `public`, `protected`, or -`private` in the base class. - -### EXPECT_CALL {#EXPECT_CALL} - -`EXPECT_CALL(`*`mock_object`*`,`*`method_name`*`(`*`matchers...`*`))` - -Creates an [expectation](../gmock_for_dummies.md#setting-expectations) that the -method *`method_name`* of the object *`mock_object`* is called with arguments -that match the given matchers *`matchers...`*. `EXPECT_CALL` must precede any -code that exercises the mock object. - -The parameter *`matchers...`* is a comma-separated list of -[matchers](../gmock_for_dummies.md#matchers-what-arguments-do-we-expect) that -correspond to each argument of the method *`method_name`*. The expectation will -apply only to calls of *`method_name`* whose arguments match all of the -matchers. If `(`*`matchers...`*`)` is omitted, the expectation behaves as if -each argument's matcher were a [wildcard matcher (`_`)](matchers.md#wildcard). -See the [Matchers Reference](matchers.md) for a list of all built-in matchers. - -The following chainable clauses can be used to modify the expectation, and they -must be used in the following order: - -```cpp -EXPECT_CALL(mock_object, method_name(matchers...)) - .With(multi_argument_matcher) // Can be used at most once - .Times(cardinality) // Can be used at most once - .InSequence(sequences...) // Can be used any number of times - .After(expectations...) // Can be used any number of times - .WillOnce(action) // Can be used any number of times - .WillRepeatedly(action) // Can be used at most once - .RetiresOnSaturation(); // Can be used at most once -``` - -See details for each modifier clause below. - -#### With {#EXPECT_CALL.With} - -`.With(`*`multi_argument_matcher`*`)` - -Restricts the expectation to apply only to mock function calls whose arguments -as a whole match the multi-argument matcher *`multi_argument_matcher`*. - -GoogleTest passes all of the arguments as one tuple into the matcher. The -parameter *`multi_argument_matcher`* must thus be a matcher of type -`Matcher>`, where `A1, ..., An` are the types of the -function arguments. - -For example, the following code sets the expectation that -`my_mock.SetPosition()` is called with any two arguments, the first argument -being less than the second: - -```cpp -using ::testing::_; -using ::testing::Lt; -... -EXPECT_CALL(my_mock, SetPosition(_, _)) - .With(Lt()); -``` - -GoogleTest provides some built-in matchers for 2-tuples, including the `Lt()` -matcher above. See [Multi-argument Matchers](matchers.md#MultiArgMatchers). - -The `With` clause can be used at most once on an expectation and must be the -first clause. - -#### Times {#EXPECT_CALL.Times} - -`.Times(`*`cardinality`*`)` - -Specifies how many times the mock function call is expected. - -The parameter *`cardinality`* represents the number of expected calls and can be -one of the following, all defined in the `::testing` namespace: - -| Cardinality | Meaning | -| ------------------- | --------------------------------------------------- | -| `AnyNumber()` | The function can be called any number of times. | -| `AtLeast(n)` | The function call is expected at least *n* times. | -| `AtMost(n)` | The function call is expected at most *n* times. | -| `Between(m, n)` | The function call is expected between *m* and *n* times, inclusive. | -| `Exactly(n)` or `n` | The function call is expected exactly *n* times. If *n* is 0, the call should never happen. | - -If the `Times` clause is omitted, GoogleTest infers the cardinality as follows: - -* If neither [`WillOnce`](#EXPECT_CALL.WillOnce) nor - [`WillRepeatedly`](#EXPECT_CALL.WillRepeatedly) are specified, the inferred - cardinality is `Times(1)`. -* If there are *n* `WillOnce` clauses and no `WillRepeatedly` clause, where - *n* >= 1, the inferred cardinality is `Times(n)`. -* If there are *n* `WillOnce` clauses and one `WillRepeatedly` clause, where - *n* >= 0, the inferred cardinality is `Times(AtLeast(n))`. - -The `Times` clause can be used at most once on an expectation. - -#### InSequence {#EXPECT_CALL.InSequence} - -`.InSequence(`*`sequences...`*`)` - -Specifies that the mock function call is expected in a certain sequence. - -The parameter *`sequences...`* is any number of [`Sequence`](#Sequence) objects. -Expected calls assigned to the same sequence are expected to occur in the order -the expectations are declared. - -For example, the following code sets the expectation that the `Reset()` method -of `my_mock` is called before both `GetSize()` and `Describe()`, and `GetSize()` -and `Describe()` can occur in any order relative to each other: - -```cpp -using ::testing::Sequence; -Sequence s1, s2; -... -EXPECT_CALL(my_mock, Reset()) - .InSequence(s1, s2); -EXPECT_CALL(my_mock, GetSize()) - .InSequence(s1); -EXPECT_CALL(my_mock, Describe()) - .InSequence(s2); -``` - -The `InSequence` clause can be used any number of times on an expectation. - -See also the [`InSequence` class](#InSequence). - -#### After {#EXPECT_CALL.After} - -`.After(`*`expectations...`*`)` - -Specifies that the mock function call is expected to occur after one or more -other calls. - -The parameter *`expectations...`* can be up to five -[`Expectation`](#Expectation) or [`ExpectationSet`](#ExpectationSet) objects. -The mock function call is expected to occur after all of the given expectations. - -For example, the following code sets the expectation that the `Describe()` -method of `my_mock` is called only after both `InitX()` and `InitY()` have been -called. - -```cpp -using ::testing::Expectation; -... -Expectation init_x = EXPECT_CALL(my_mock, InitX()); -Expectation init_y = EXPECT_CALL(my_mock, InitY()); -EXPECT_CALL(my_mock, Describe()) - .After(init_x, init_y); -``` - -The `ExpectationSet` object is helpful when the number of prerequisites for an -expectation is large or variable, for example: - -```cpp -using ::testing::ExpectationSet; -... -ExpectationSet all_inits; -// Collect all expectations of InitElement() calls -for (int i = 0; i < element_count; i++) { - all_inits += EXPECT_CALL(my_mock, InitElement(i)); -} -EXPECT_CALL(my_mock, Describe()) - .After(all_inits); // Expect Describe() call after all InitElement() calls -``` - -The `After` clause can be used any number of times on an expectation. - -#### WillOnce {#EXPECT_CALL.WillOnce} - -`.WillOnce(`*`action`*`)` - -Specifies the mock function's actual behavior when invoked, for a single -matching function call. - -The parameter *`action`* represents the -[action](../gmock_for_dummies.md#actions-what-should-it-do) that the function -call will perform. See the [Actions Reference](actions.md) for a list of -built-in actions. - -The use of `WillOnce` implicitly sets a cardinality on the expectation when -`Times` is not specified. See [`Times`](#EXPECT_CALL.Times). - -Each matching function call will perform the next action in the order declared. -For example, the following code specifies that `my_mock.GetNumber()` is expected -to be called exactly 3 times and will return `1`, `2`, and `3` respectively on -the first, second, and third calls: - -```cpp -using ::testing::Return; -... -EXPECT_CALL(my_mock, GetNumber()) - .WillOnce(Return(1)) - .WillOnce(Return(2)) - .WillOnce(Return(3)); -``` - -The `WillOnce` clause can be used any number of times on an expectation. Unlike -`WillRepeatedly`, the action fed to each `WillOnce` call will be called at most -once, so may be a move-only type and/or have an `&&`-qualified call operator. - -#### WillRepeatedly {#EXPECT_CALL.WillRepeatedly} - -`.WillRepeatedly(`*`action`*`)` - -Specifies the mock function's actual behavior when invoked, for all subsequent -matching function calls. Takes effect after the actions specified in the -[`WillOnce`](#EXPECT_CALL.WillOnce) clauses, if any, have been performed. - -The parameter *`action`* represents the -[action](../gmock_for_dummies.md#actions-what-should-it-do) that the function -call will perform. See the [Actions Reference](actions.md) for a list of -built-in actions. - -The use of `WillRepeatedly` implicitly sets a cardinality on the expectation -when `Times` is not specified. See [`Times`](#EXPECT_CALL.Times). - -If any `WillOnce` clauses have been specified, matching function calls will -perform those actions before the action specified by `WillRepeatedly`. See the -following example: - -```cpp -using ::testing::Return; -... -EXPECT_CALL(my_mock, GetName()) - .WillRepeatedly(Return("John Doe")); // Return "John Doe" on all calls - -EXPECT_CALL(my_mock, GetNumber()) - .WillOnce(Return(42)) // Return 42 on the first call - .WillRepeatedly(Return(7)); // Return 7 on all subsequent calls -``` - -The `WillRepeatedly` clause can be used at most once on an expectation. - -#### RetiresOnSaturation {#EXPECT_CALL.RetiresOnSaturation} - -`.RetiresOnSaturation()` - -Indicates that the expectation will no longer be active after the expected -number of matching function calls has been reached. - -The `RetiresOnSaturation` clause is only meaningful for expectations with an -upper-bounded cardinality. The expectation will *retire* (no longer match any -function calls) after it has been *saturated* (the upper bound has been -reached). See the following example: - -```cpp -using ::testing::_; -using ::testing::AnyNumber; -... -EXPECT_CALL(my_mock, SetNumber(_)) // Expectation 1 - .Times(AnyNumber()); -EXPECT_CALL(my_mock, SetNumber(7)) // Expectation 2 - .Times(2) - .RetiresOnSaturation(); -``` - -In the above example, the first two calls to `my_mock.SetNumber(7)` match -expectation 2, which then becomes inactive and no longer matches any calls. A -third call to `my_mock.SetNumber(7)` would then match expectation 1. Without -`RetiresOnSaturation()` on expectation 2, a third call to `my_mock.SetNumber(7)` -would match expectation 2 again, producing a failure since the limit of 2 calls -was exceeded. - -The `RetiresOnSaturation` clause can be used at most once on an expectation and -must be the last clause. - -### ON_CALL {#ON_CALL} - -`ON_CALL(`*`mock_object`*`,`*`method_name`*`(`*`matchers...`*`))` - -Defines what happens when the method *`method_name`* of the object -*`mock_object`* is called with arguments that match the given matchers -*`matchers...`*. Requires a modifier clause to specify the method's behavior. -*Does not* set any expectations that the method will be called. - -The parameter *`matchers...`* is a comma-separated list of -[matchers](../gmock_for_dummies.md#matchers-what-arguments-do-we-expect) that -correspond to each argument of the method *`method_name`*. The `ON_CALL` -specification will apply only to calls of *`method_name`* whose arguments match -all of the matchers. If `(`*`matchers...`*`)` is omitted, the behavior is as if -each argument's matcher were a [wildcard matcher (`_`)](matchers.md#wildcard). -See the [Matchers Reference](matchers.md) for a list of all built-in matchers. - -The following chainable clauses can be used to set the method's behavior, and -they must be used in the following order: - -```cpp -ON_CALL(mock_object, method_name(matchers...)) - .With(multi_argument_matcher) // Can be used at most once - .WillByDefault(action); // Required -``` - -See details for each modifier clause below. - -#### With {#ON_CALL.With} - -`.With(`*`multi_argument_matcher`*`)` - -Restricts the specification to only mock function calls whose arguments as a -whole match the multi-argument matcher *`multi_argument_matcher`*. - -GoogleTest passes all of the arguments as one tuple into the matcher. The -parameter *`multi_argument_matcher`* must thus be a matcher of type -`Matcher>`, where `A1, ..., An` are the types of the -function arguments. - -For example, the following code sets the default behavior when -`my_mock.SetPosition()` is called with any two arguments, the first argument -being less than the second: - -```cpp -using ::testing::_; -using ::testing::Lt; -using ::testing::Return; -... -ON_CALL(my_mock, SetPosition(_, _)) - .With(Lt()) - .WillByDefault(Return(true)); -``` - -GoogleTest provides some built-in matchers for 2-tuples, including the `Lt()` -matcher above. See [Multi-argument Matchers](matchers.md#MultiArgMatchers). - -The `With` clause can be used at most once with each `ON_CALL` statement. - -#### WillByDefault {#ON_CALL.WillByDefault} - -`.WillByDefault(`*`action`*`)` - -Specifies the default behavior of a matching mock function call. - -The parameter *`action`* represents the -[action](../gmock_for_dummies.md#actions-what-should-it-do) that the function -call will perform. See the [Actions Reference](actions.md) for a list of -built-in actions. - -For example, the following code specifies that by default, a call to -`my_mock.Greet()` will return `"hello"`: - -```cpp -using ::testing::Return; -... -ON_CALL(my_mock, Greet()) - .WillByDefault(Return("hello")); -``` - -The action specified by `WillByDefault` is superseded by the actions specified -on a matching `EXPECT_CALL` statement, if any. See the -[`WillOnce`](#EXPECT_CALL.WillOnce) and -[`WillRepeatedly`](#EXPECT_CALL.WillRepeatedly) clauses of `EXPECT_CALL`. - -The `WillByDefault` clause must be used exactly once with each `ON_CALL` -statement. - -## Classes {#classes} - -GoogleTest defines the following classes for working with mocks. - -### DefaultValue {#DefaultValue} - -`::testing::DefaultValue` - -Allows a user to specify the default value for a type `T` that is both copyable -and publicly destructible (i.e. anything that can be used as a function return -type). For mock functions with a return type of `T`, this default value is -returned from function calls that do not specify an action. - -Provides the static methods `Set()`, `SetFactory()`, and `Clear()` to manage the -default value: - -```cpp -// Sets the default value to be returned. T must be copy constructible. -DefaultValue::Set(value); - -// Sets a factory. Will be invoked on demand. T must be move constructible. -T MakeT(); -DefaultValue::SetFactory(&MakeT); - -// Unsets the default value. -DefaultValue::Clear(); -``` - -### NiceMock {#NiceMock} - -`::testing::NiceMock` - -Represents a mock object that suppresses warnings on -[uninteresting calls](../gmock_cook_book.md#uninteresting-vs-unexpected). The -template parameter `T` is any mock class, except for another `NiceMock`, -`NaggyMock`, or `StrictMock`. - -Usage of `NiceMock` is analogous to usage of `T`. `NiceMock` is a subclass -of `T`, so it can be used wherever an object of type `T` is accepted. In -addition, `NiceMock` can be constructed with any arguments that a constructor -of `T` accepts. - -For example, the following code suppresses warnings on the mock `my_mock` of -type `MockClass` if a method other than `DoSomething()` is called: - -```cpp -using ::testing::NiceMock; -... -NiceMock my_mock("some", "args"); -EXPECT_CALL(my_mock, DoSomething()); -... code that uses my_mock ... -``` - -`NiceMock` only works for mock methods defined using the `MOCK_METHOD` macro -directly in the definition of class `T`. If a mock method is defined in a base -class of `T`, a warning might still be generated. - -`NiceMock` might not work correctly if the destructor of `T` is not virtual. - -### NaggyMock {#NaggyMock} - -`::testing::NaggyMock` - -Represents a mock object that generates warnings on -[uninteresting calls](../gmock_cook_book.md#uninteresting-vs-unexpected). The -template parameter `T` is any mock class, except for another `NiceMock`, -`NaggyMock`, or `StrictMock`. - -Usage of `NaggyMock` is analogous to usage of `T`. `NaggyMock` is a -subclass of `T`, so it can be used wherever an object of type `T` is accepted. -In addition, `NaggyMock` can be constructed with any arguments that a -constructor of `T` accepts. - -For example, the following code generates warnings on the mock `my_mock` of type -`MockClass` if a method other than `DoSomething()` is called: - -```cpp -using ::testing::NaggyMock; -... -NaggyMock my_mock("some", "args"); -EXPECT_CALL(my_mock, DoSomething()); -... code that uses my_mock ... -``` - -Mock objects of type `T` by default behave the same way as `NaggyMock`. - -### StrictMock {#StrictMock} - -`::testing::StrictMock` - -Represents a mock object that generates test failures on -[uninteresting calls](../gmock_cook_book.md#uninteresting-vs-unexpected). The -template parameter `T` is any mock class, except for another `NiceMock`, -`NaggyMock`, or `StrictMock`. - -Usage of `StrictMock` is analogous to usage of `T`. `StrictMock` is a -subclass of `T`, so it can be used wherever an object of type `T` is accepted. -In addition, `StrictMock` can be constructed with any arguments that a -constructor of `T` accepts. - -For example, the following code generates a test failure on the mock `my_mock` -of type `MockClass` if a method other than `DoSomething()` is called: - -```cpp -using ::testing::StrictMock; -... -StrictMock my_mock("some", "args"); -EXPECT_CALL(my_mock, DoSomething()); -... code that uses my_mock ... -``` - -`StrictMock` only works for mock methods defined using the `MOCK_METHOD` -macro directly in the definition of class `T`. If a mock method is defined in a -base class of `T`, a failure might not be generated. - -`StrictMock` might not work correctly if the destructor of `T` is not -virtual. - -### Sequence {#Sequence} - -`::testing::Sequence` - -Represents a chronological sequence of expectations. See the -[`InSequence`](#EXPECT_CALL.InSequence) clause of `EXPECT_CALL` for usage. - -### InSequence {#InSequence} - -`::testing::InSequence` - -An object of this type causes all expectations encountered in its scope to be -put in an anonymous sequence. - -This allows more convenient expression of multiple expectations in a single -sequence: - -```cpp -using ::testing::InSequence; -{ - InSequence seq; - - // The following are expected to occur in the order declared. - EXPECT_CALL(...); - EXPECT_CALL(...); - ... - EXPECT_CALL(...); -} -``` - -The name of the `InSequence` object does not matter. - -### Expectation {#Expectation} - -`::testing::Expectation` - -Represents a mock function call expectation as created by -[`EXPECT_CALL`](#EXPECT_CALL): - -```cpp -using ::testing::Expectation; -Expectation my_expectation = EXPECT_CALL(...); -``` - -Useful for specifying sequences of expectations; see the -[`After`](#EXPECT_CALL.After) clause of `EXPECT_CALL`. - -### ExpectationSet {#ExpectationSet} - -`::testing::ExpectationSet` - -Represents a set of mock function call expectations. - -Use the `+=` operator to add [`Expectation`](#Expectation) objects to the set: - -```cpp -using ::testing::ExpectationSet; -ExpectationSet my_expectations; -my_expectations += EXPECT_CALL(...); -``` - -Useful for specifying sequences of expectations; see the -[`After`](#EXPECT_CALL.After) clause of `EXPECT_CALL`. diff --git a/tests/lib/docs/reference/testing.md b/tests/lib/docs/reference/testing.md deleted file mode 100644 index dc47942399..0000000000 --- a/tests/lib/docs/reference/testing.md +++ /dev/null @@ -1,1431 +0,0 @@ -# Testing Reference - - - -This page lists the facilities provided by GoogleTest for writing test programs. -To use them, include the header `gtest/gtest.h`. - -## Macros - -GoogleTest defines the following macros for writing tests. - -### TEST {#TEST} - -
-TEST(TestSuiteName, TestName) {
-  ... statements ...
-}
-
- -Defines an individual test named *`TestName`* in the test suite -*`TestSuiteName`*, consisting of the given statements. - -Both arguments *`TestSuiteName`* and *`TestName`* must be valid C++ identifiers -and must not contain underscores (`_`). Tests in different test suites can have -the same individual name. - -The statements within the test body can be any code under test. -[Assertions](assertions.md) used within the test body determine the outcome of -the test. - -### TEST_F {#TEST_F} - -
-TEST_F(TestFixtureName, TestName) {
-  ... statements ...
-}
-
- -Defines an individual test named *`TestName`* that uses the test fixture class -*`TestFixtureName`*. The test suite name is *`TestFixtureName`*. - -Both arguments *`TestFixtureName`* and *`TestName`* must be valid C++ -identifiers and must not contain underscores (`_`). *`TestFixtureName`* must be -the name of a test fixture class—see -[Test Fixtures](../primer.md#same-data-multiple-tests). - -The statements within the test body can be any code under test. -[Assertions](assertions.md) used within the test body determine the outcome of -the test. - -### TEST_P {#TEST_P} - -
-TEST_P(TestFixtureName, TestName) {
-  ... statements ...
-}
-
- -Defines an individual value-parameterized test named *`TestName`* that uses the -test fixture class *`TestFixtureName`*. The test suite name is -*`TestFixtureName`*. - -Both arguments *`TestFixtureName`* and *`TestName`* must be valid C++ -identifiers and must not contain underscores (`_`). *`TestFixtureName`* must be -the name of a value-parameterized test fixture class—see -[Value-Parameterized Tests](../advanced.md#value-parameterized-tests). - -The statements within the test body can be any code under test. Within the test -body, the test parameter can be accessed with the `GetParam()` function (see -[`WithParamInterface`](#WithParamInterface)). For example: - -```cpp -TEST_P(MyTestSuite, DoesSomething) { - ... - EXPECT_TRUE(DoSomething(GetParam())); - ... -} -``` - -[Assertions](assertions.md) used within the test body determine the outcome of -the test. - -See also [`INSTANTIATE_TEST_SUITE_P`](#INSTANTIATE_TEST_SUITE_P). - -### INSTANTIATE_TEST_SUITE_P {#INSTANTIATE_TEST_SUITE_P} - -`INSTANTIATE_TEST_SUITE_P(`*`InstantiationName`*`,`*`TestSuiteName`*`,`*`param_generator`*`)` -\ -`INSTANTIATE_TEST_SUITE_P(`*`InstantiationName`*`,`*`TestSuiteName`*`,`*`param_generator`*`,`*`name_generator`*`)` - -Instantiates the value-parameterized test suite *`TestSuiteName`* (defined with -[`TEST_P`](#TEST_P)). - -The argument *`InstantiationName`* is a unique name for the instantiation of the -test suite, to distinguish between multiple instantiations. In test output, the -instantiation name is added as a prefix to the test suite name -*`TestSuiteName`*. - -The argument *`param_generator`* is one of the following GoogleTest-provided -functions that generate the test parameters, all defined in the `::testing` -namespace: - - - -| Parameter Generator | Behavior | -| ------------------- | ---------------------------------------------------- | -| `Range(begin, end [, step])` | Yields values `{begin, begin+step, begin+step+step, ...}`. The values do not include `end`. `step` defaults to 1. | -| `Values(v1, v2, ..., vN)` | Yields values `{v1, v2, ..., vN}`. | -| `ValuesIn(container)` or `ValuesIn(begin,end)` | Yields values from a C-style array, an STL-style container, or an iterator range `[begin, end)`. | -| `Bool()` | Yields sequence `{false, true}`. | -| `Combine(g1, g2, ..., gN)` | Yields as `std::tuple` *n*-tuples all combinations (Cartesian product) of the values generated by the given *n* generators `g1`, `g2`, ..., `gN`. | - -The optional last argument *`name_generator`* is a function or functor that -generates custom test name suffixes based on the test parameters. The function -must accept an argument of type -[`TestParamInfo`](#TestParamInfo) and return a `std::string`. -The test name suffix can only contain alphanumeric characters and underscores. -GoogleTest provides [`PrintToStringParamName`](#PrintToStringParamName), or a -custom function can be used for more control: - -```cpp -INSTANTIATE_TEST_SUITE_P( - MyInstantiation, MyTestSuite, - ::testing::Values(...), - [](const ::testing::TestParamInfo& info) { - // Can use info.param here to generate the test suffix - std::string name = ... - return name; - }); -``` - -For more information, see -[Value-Parameterized Tests](../advanced.md#value-parameterized-tests). - -See also -[`GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST`](#GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST). - -### TYPED_TEST_SUITE {#TYPED_TEST_SUITE} - -`TYPED_TEST_SUITE(`*`TestFixtureName`*`,`*`Types`*`)` - -Defines a typed test suite based on the test fixture *`TestFixtureName`*. The -test suite name is *`TestFixtureName`*. - -The argument *`TestFixtureName`* is a fixture class template, parameterized by a -type, for example: - -```cpp -template -class MyFixture : public ::testing::Test { - public: - ... - using List = std::list; - static T shared_; - T value_; -}; -``` - -The argument *`Types`* is a [`Types`](#Types) object representing the list of -types to run the tests on, for example: - -```cpp -using MyTypes = ::testing::Types; -TYPED_TEST_SUITE(MyFixture, MyTypes); -``` - -The type alias (`using` or `typedef`) is necessary for the `TYPED_TEST_SUITE` -macro to parse correctly. - -See also [`TYPED_TEST`](#TYPED_TEST) and -[Typed Tests](../advanced.md#typed-tests) for more information. - -### TYPED_TEST {#TYPED_TEST} - -
-TYPED_TEST(TestSuiteName, TestName) {
-  ... statements ...
-}
-
- -Defines an individual typed test named *`TestName`* in the typed test suite -*`TestSuiteName`*. The test suite must be defined with -[`TYPED_TEST_SUITE`](#TYPED_TEST_SUITE). - -Within the test body, the special name `TypeParam` refers to the type parameter, -and `TestFixture` refers to the fixture class. See the following example: - -```cpp -TYPED_TEST(MyFixture, Example) { - // Inside a test, refer to the special name TypeParam to get the type - // parameter. Since we are inside a derived class template, C++ requires - // us to visit the members of MyFixture via 'this'. - TypeParam n = this->value_; - - // To visit static members of the fixture, add the 'TestFixture::' - // prefix. - n += TestFixture::shared_; - - // To refer to typedefs in the fixture, add the 'typename TestFixture::' - // prefix. The 'typename' is required to satisfy the compiler. - typename TestFixture::List values; - - values.push_back(n); - ... -} -``` - -For more information, see [Typed Tests](../advanced.md#typed-tests). - -### TYPED_TEST_SUITE_P {#TYPED_TEST_SUITE_P} - -`TYPED_TEST_SUITE_P(`*`TestFixtureName`*`)` - -Defines a type-parameterized test suite based on the test fixture -*`TestFixtureName`*. The test suite name is *`TestFixtureName`*. - -The argument *`TestFixtureName`* is a fixture class template, parameterized by a -type. See [`TYPED_TEST_SUITE`](#TYPED_TEST_SUITE) for an example. - -See also [`TYPED_TEST_P`](#TYPED_TEST_P) and -[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more -information. - -### TYPED_TEST_P {#TYPED_TEST_P} - -
-TYPED_TEST_P(TestSuiteName, TestName) {
-  ... statements ...
-}
-
- -Defines an individual type-parameterized test named *`TestName`* in the -type-parameterized test suite *`TestSuiteName`*. The test suite must be defined -with [`TYPED_TEST_SUITE_P`](#TYPED_TEST_SUITE_P). - -Within the test body, the special name `TypeParam` refers to the type parameter, -and `TestFixture` refers to the fixture class. See [`TYPED_TEST`](#TYPED_TEST) -for an example. - -See also [`REGISTER_TYPED_TEST_SUITE_P`](#REGISTER_TYPED_TEST_SUITE_P) and -[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more -information. - -### REGISTER_TYPED_TEST_SUITE_P {#REGISTER_TYPED_TEST_SUITE_P} - -`REGISTER_TYPED_TEST_SUITE_P(`*`TestSuiteName`*`,`*`TestNames...`*`)` - -Registers the type-parameterized tests *`TestNames...`* of the test suite -*`TestSuiteName`*. The test suite and tests must be defined with -[`TYPED_TEST_SUITE_P`](#TYPED_TEST_SUITE_P) and [`TYPED_TEST_P`](#TYPED_TEST_P). - -For example: - -```cpp -// Define the test suite and tests. -TYPED_TEST_SUITE_P(MyFixture); -TYPED_TEST_P(MyFixture, HasPropertyA) { ... } -TYPED_TEST_P(MyFixture, HasPropertyB) { ... } - -// Register the tests in the test suite. -REGISTER_TYPED_TEST_SUITE_P(MyFixture, HasPropertyA, HasPropertyB); -``` - -See also [`INSTANTIATE_TYPED_TEST_SUITE_P`](#INSTANTIATE_TYPED_TEST_SUITE_P) and -[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more -information. - -### INSTANTIATE_TYPED_TEST_SUITE_P {#INSTANTIATE_TYPED_TEST_SUITE_P} - -`INSTANTIATE_TYPED_TEST_SUITE_P(`*`InstantiationName`*`,`*`TestSuiteName`*`,`*`Types`*`)` - -Instantiates the type-parameterized test suite *`TestSuiteName`*. The test suite -must be registered with -[`REGISTER_TYPED_TEST_SUITE_P`](#REGISTER_TYPED_TEST_SUITE_P). - -The argument *`InstantiationName`* is a unique name for the instantiation of the -test suite, to distinguish between multiple instantiations. In test output, the -instantiation name is added as a prefix to the test suite name -*`TestSuiteName`*. - -The argument *`Types`* is a [`Types`](#Types) object representing the list of -types to run the tests on, for example: - -```cpp -using MyTypes = ::testing::Types; -INSTANTIATE_TYPED_TEST_SUITE_P(MyInstantiation, MyFixture, MyTypes); -``` - -The type alias (`using` or `typedef`) is necessary for the -`INSTANTIATE_TYPED_TEST_SUITE_P` macro to parse correctly. - -For more information, see -[Type-Parameterized Tests](../advanced.md#type-parameterized-tests). - -### FRIEND_TEST {#FRIEND_TEST} - -`FRIEND_TEST(`*`TestSuiteName`*`,`*`TestName`*`)` - -Within a class body, declares an individual test as a friend of the class, -enabling the test to access private class members. - -If the class is defined in a namespace, then in order to be friends of the -class, test fixtures and tests must be defined in the exact same namespace, -without inline or anonymous namespaces. - -For example, if the class definition looks like the following: - -```cpp -namespace my_namespace { - -class MyClass { - friend class MyClassTest; - FRIEND_TEST(MyClassTest, HasPropertyA); - FRIEND_TEST(MyClassTest, HasPropertyB); - ... definition of class MyClass ... -}; - -} // namespace my_namespace -``` - -Then the test code should look like: - -```cpp -namespace my_namespace { - -class MyClassTest : public ::testing::Test { - ... -}; - -TEST_F(MyClassTest, HasPropertyA) { ... } -TEST_F(MyClassTest, HasPropertyB) { ... } - -} // namespace my_namespace -``` - -See [Testing Private Code](../advanced.md#testing-private-code) for more -information. - -### SCOPED_TRACE {#SCOPED_TRACE} - -`SCOPED_TRACE(`*`message`*`)` - -Causes the current file name, line number, and the given message *`message`* to -be added to the failure message for each assertion failure that occurs in the -scope. - -For more information, see -[Adding Traces to Assertions](../advanced.md#adding-traces-to-assertions). - -See also the [`ScopedTrace` class](#ScopedTrace). - -### GTEST_SKIP {#GTEST_SKIP} - -`GTEST_SKIP()` - -Prevents further test execution at runtime. - -Can be used in individual test cases or in the `SetUp()` methods of test -environments or test fixtures (classes derived from the -[`Environment`](#Environment) or [`Test`](#Test) classes). If used in a global -test environment `SetUp()` method, it skips all tests in the test program. If -used in a test fixture `SetUp()` method, it skips all tests in the corresponding -test suite. - -Similar to assertions, `GTEST_SKIP` allows streaming a custom message into it. - -See [Skipping Test Execution](../advanced.md#skipping-test-execution) for more -information. - -### GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST {#GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST} - -`GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(`*`TestSuiteName`*`)` - -Allows the value-parameterized test suite *`TestSuiteName`* to be -uninstantiated. - -By default, every [`TEST_P`](#TEST_P) call without a corresponding -[`INSTANTIATE_TEST_SUITE_P`](#INSTANTIATE_TEST_SUITE_P) call causes a failing -test in the test suite `GoogleTestVerification`. -`GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST` suppresses this failure for the -given test suite. - -## Classes and types - -GoogleTest defines the following classes and types to help with writing tests. - -### AssertionResult {#AssertionResult} - -`::testing::AssertionResult` - -A class for indicating whether an assertion was successful. - -When the assertion wasn't successful, the `AssertionResult` object stores a -non-empty failure message that can be retrieved with the object's `message()` -method. - -To create an instance of this class, use one of the factory functions -[`AssertionSuccess()`](#AssertionSuccess) or -[`AssertionFailure()`](#AssertionFailure). - -### AssertionException {#AssertionException} - -`::testing::AssertionException` - -Exception which can be thrown from -[`TestEventListener::OnTestPartResult`](#TestEventListener::OnTestPartResult). - -### EmptyTestEventListener {#EmptyTestEventListener} - -`::testing::EmptyTestEventListener` - -Provides an empty implementation of all methods in the -[`TestEventListener`](#TestEventListener) interface, such that a subclass only -needs to override the methods it cares about. - -### Environment {#Environment} - -`::testing::Environment` - -Represents a global test environment. See -[Global Set-Up and Tear-Down](../advanced.md#global-set-up-and-tear-down). - -#### Protected Methods {#Environment-protected} - -##### SetUp {#Environment::SetUp} - -`virtual void Environment::SetUp()` - -Override this to define how to set up the environment. - -##### TearDown {#Environment::TearDown} - -`virtual void Environment::TearDown()` - -Override this to define how to tear down the environment. - -### ScopedTrace {#ScopedTrace} - -`::testing::ScopedTrace` - -An instance of this class causes a trace to be included in every test failure -message generated by code in the scope of the lifetime of the `ScopedTrace` -instance. The effect is undone with the destruction of the instance. - -The `ScopedTrace` constructor has the following form: - -```cpp -template -ScopedTrace(const char* file, int line, const T& message) -``` - -Example usage: - -```cpp -::testing::ScopedTrace trace("file.cc", 123, "message"); -``` - -The resulting trace includes the given source file path and line number, and the -given message. The `message` argument can be anything streamable to -`std::ostream`. - -See also [`SCOPED_TRACE`](#SCOPED_TRACE). - -### Test {#Test} - -`::testing::Test` - -The abstract class that all tests inherit from. `Test` is not copyable. - -#### Public Methods {#Test-public} - -##### SetUpTestSuite {#Test::SetUpTestSuite} - -`static void Test::SetUpTestSuite()` - -Performs shared setup for all tests in the test suite. GoogleTest calls -`SetUpTestSuite()` before running the first test in the test suite. - -##### TearDownTestSuite {#Test::TearDownTestSuite} - -`static void Test::TearDownTestSuite()` - -Performs shared teardown for all tests in the test suite. GoogleTest calls -`TearDownTestSuite()` after running the last test in the test suite. - -##### HasFatalFailure {#Test::HasFatalFailure} - -`static bool Test::HasFatalFailure()` - -Returns true if and only if the current test has a fatal failure. - -##### HasNonfatalFailure {#Test::HasNonfatalFailure} - -`static bool Test::HasNonfatalFailure()` - -Returns true if and only if the current test has a nonfatal failure. - -##### HasFailure {#Test::HasFailure} - -`static bool Test::HasFailure()` - -Returns true if and only if the current test has any failure, either fatal or -nonfatal. - -##### IsSkipped {#Test::IsSkipped} - -`static bool Test::IsSkipped()` - -Returns true if and only if the current test was skipped. - -##### RecordProperty {#Test::RecordProperty} - -`static void Test::RecordProperty(const std::string& key, const std::string& -value)` \ -`static void Test::RecordProperty(const std::string& key, int value)` - -Logs a property for the current test, test suite, or entire invocation of the -test program. Only the last value for a given key is logged. - -The key must be a valid XML attribute name, and cannot conflict with the ones -already used by GoogleTest (`name`, `file`, `line`, `status`, `time`, -`classname`, `type_param`, and `value_param`). - -`RecordProperty` is `public static` so it can be called from utility functions -that are not members of the test fixture. - -Calls to `RecordProperty` made during the lifespan of the test (from the moment -its constructor starts to the moment its destructor finishes) are output in XML -as attributes of the `` element. Properties recorded from a fixture's -`SetUpTestSuite` or `TearDownTestSuite` methods are logged as attributes of the -corresponding `` element. Calls to `RecordProperty` made in the -global context (before or after invocation of `RUN_ALL_TESTS` or from the -`SetUp`/`TearDown` methods of registered `Environment` objects) are output as -attributes of the `` element. - -#### Protected Methods {#Test-protected} - -##### SetUp {#Test::SetUp} - -`virtual void Test::SetUp()` - -Override this to perform test fixture setup. GoogleTest calls `SetUp()` before -running each individual test. - -##### TearDown {#Test::TearDown} - -`virtual void Test::TearDown()` - -Override this to perform test fixture teardown. GoogleTest calls `TearDown()` -after running each individual test. - -### TestWithParam {#TestWithParam} - -`::testing::TestWithParam` - -A convenience class which inherits from both [`Test`](#Test) and -[`WithParamInterface`](#WithParamInterface). - -### TestSuite {#TestSuite} - -Represents a test suite. `TestSuite` is not copyable. - -#### Public Methods {#TestSuite-public} - -##### name {#TestSuite::name} - -`const char* TestSuite::name() const` - -Gets the name of the test suite. - -##### type_param {#TestSuite::type_param} - -`const char* TestSuite::type_param() const` - -Returns the name of the parameter type, or `NULL` if this is not a typed or -type-parameterized test suite. See [Typed Tests](../advanced.md#typed-tests) and -[Type-Parameterized Tests](../advanced.md#type-parameterized-tests). - -##### should_run {#TestSuite::should_run} - -`bool TestSuite::should_run() const` - -Returns true if any test in this test suite should run. - -##### successful_test_count {#TestSuite::successful_test_count} - -`int TestSuite::successful_test_count() const` - -Gets the number of successful tests in this test suite. - -##### skipped_test_count {#TestSuite::skipped_test_count} - -`int TestSuite::skipped_test_count() const` - -Gets the number of skipped tests in this test suite. - -##### failed_test_count {#TestSuite::failed_test_count} - -`int TestSuite::failed_test_count() const` - -Gets the number of failed tests in this test suite. - -##### reportable_disabled_test_count {#TestSuite::reportable_disabled_test_count} - -`int TestSuite::reportable_disabled_test_count() const` - -Gets the number of disabled tests that will be reported in the XML report. - -##### disabled_test_count {#TestSuite::disabled_test_count} - -`int TestSuite::disabled_test_count() const` - -Gets the number of disabled tests in this test suite. - -##### reportable_test_count {#TestSuite::reportable_test_count} - -`int TestSuite::reportable_test_count() const` - -Gets the number of tests to be printed in the XML report. - -##### test_to_run_count {#TestSuite::test_to_run_count} - -`int TestSuite::test_to_run_count() const` - -Get the number of tests in this test suite that should run. - -##### total_test_count {#TestSuite::total_test_count} - -`int TestSuite::total_test_count() const` - -Gets the number of all tests in this test suite. - -##### Passed {#TestSuite::Passed} - -`bool TestSuite::Passed() const` - -Returns true if and only if the test suite passed. - -##### Failed {#TestSuite::Failed} - -`bool TestSuite::Failed() const` - -Returns true if and only if the test suite failed. - -##### elapsed_time {#TestSuite::elapsed_time} - -`TimeInMillis TestSuite::elapsed_time() const` - -Returns the elapsed time, in milliseconds. - -##### start_timestamp {#TestSuite::start_timestamp} - -`TimeInMillis TestSuite::start_timestamp() const` - -Gets the time of the test suite start, in ms from the start of the UNIX epoch. - -##### GetTestInfo {#TestSuite::GetTestInfo} - -`const TestInfo* TestSuite::GetTestInfo(int i) const` - -Returns the [`TestInfo`](#TestInfo) for the `i`-th test among all the tests. `i` -can range from 0 to `total_test_count() - 1`. If `i` is not in that range, -returns `NULL`. - -##### ad_hoc_test_result {#TestSuite::ad_hoc_test_result} - -`const TestResult& TestSuite::ad_hoc_test_result() const` - -Returns the [`TestResult`](#TestResult) that holds test properties recorded -during execution of `SetUpTestSuite` and `TearDownTestSuite`. - -### TestInfo {#TestInfo} - -`::testing::TestInfo` - -Stores information about a test. - -#### Public Methods {#TestInfo-public} - -##### test_suite_name {#TestInfo::test_suite_name} - -`const char* TestInfo::test_suite_name() const` - -Returns the test suite name. - -##### name {#TestInfo::name} - -`const char* TestInfo::name() const` - -Returns the test name. - -##### type_param {#TestInfo::type_param} - -`const char* TestInfo::type_param() const` - -Returns the name of the parameter type, or `NULL` if this is not a typed or -type-parameterized test. See [Typed Tests](../advanced.md#typed-tests) and -[Type-Parameterized Tests](../advanced.md#type-parameterized-tests). - -##### value_param {#TestInfo::value_param} - -`const char* TestInfo::value_param() const` - -Returns the text representation of the value parameter, or `NULL` if this is not -a value-parameterized test. See -[Value-Parameterized Tests](../advanced.md#value-parameterized-tests). - -##### file {#TestInfo::file} - -`const char* TestInfo::file() const` - -Returns the file name where this test is defined. - -##### line {#TestInfo::line} - -`int TestInfo::line() const` - -Returns the line where this test is defined. - -##### is_in_another_shard {#TestInfo::is_in_another_shard} - -`bool TestInfo::is_in_another_shard() const` - -Returns true if this test should not be run because it's in another shard. - -##### should_run {#TestInfo::should_run} - -`bool TestInfo::should_run() const` - -Returns true if this test should run, that is if the test is not disabled (or it -is disabled but the `also_run_disabled_tests` flag has been specified) and its -full name matches the user-specified filter. - -GoogleTest allows the user to filter the tests by their full names. Only the -tests that match the filter will run. See -[Running a Subset of the Tests](../advanced.md#running-a-subset-of-the-tests) -for more information. - -##### is_reportable {#TestInfo::is_reportable} - -`bool TestInfo::is_reportable() const` - -Returns true if and only if this test will appear in the XML report. - -##### result {#TestInfo::result} - -`const TestResult* TestInfo::result() const` - -Returns the result of the test. See [`TestResult`](#TestResult). - -### TestParamInfo {#TestParamInfo} - -`::testing::TestParamInfo` - -Describes a parameter to a value-parameterized test. The type `T` is the type of -the parameter. - -Contains the fields `param` and `index` which hold the value of the parameter -and its integer index respectively. - -### UnitTest {#UnitTest} - -`::testing::UnitTest` - -This class contains information about the test program. - -`UnitTest` is a singleton class. The only instance is created when -`UnitTest::GetInstance()` is first called. This instance is never deleted. - -`UnitTest` is not copyable. - -#### Public Methods {#UnitTest-public} - -##### GetInstance {#UnitTest::GetInstance} - -`static UnitTest* UnitTest::GetInstance()` - -Gets the singleton `UnitTest` object. The first time this method is called, a -`UnitTest` object is constructed and returned. Consecutive calls will return the -same object. - -##### original_working_dir {#UnitTest::original_working_dir} - -`const char* UnitTest::original_working_dir() const` - -Returns the working directory when the first [`TEST()`](#TEST) or -[`TEST_F()`](#TEST_F) was executed. The `UnitTest` object owns the string. - -##### current_test_suite {#UnitTest::current_test_suite} - -`const TestSuite* UnitTest::current_test_suite() const` - -Returns the [`TestSuite`](#TestSuite) object for the test that's currently -running, or `NULL` if no test is running. - -##### current_test_info {#UnitTest::current_test_info} - -`const TestInfo* UnitTest::current_test_info() const` - -Returns the [`TestInfo`](#TestInfo) object for the test that's currently -running, or `NULL` if no test is running. - -##### random_seed {#UnitTest::random_seed} - -`int UnitTest::random_seed() const` - -Returns the random seed used at the start of the current test run. - -##### successful_test_suite_count {#UnitTest::successful_test_suite_count} - -`int UnitTest::successful_test_suite_count() const` - -Gets the number of successful test suites. - -##### failed_test_suite_count {#UnitTest::failed_test_suite_count} - -`int UnitTest::failed_test_suite_count() const` - -Gets the number of failed test suites. - -##### total_test_suite_count {#UnitTest::total_test_suite_count} - -`int UnitTest::total_test_suite_count() const` - -Gets the number of all test suites. - -##### test_suite_to_run_count {#UnitTest::test_suite_to_run_count} - -`int UnitTest::test_suite_to_run_count() const` - -Gets the number of all test suites that contain at least one test that should -run. - -##### successful_test_count {#UnitTest::successful_test_count} - -`int UnitTest::successful_test_count() const` - -Gets the number of successful tests. - -##### skipped_test_count {#UnitTest::skipped_test_count} - -`int UnitTest::skipped_test_count() const` - -Gets the number of skipped tests. - -##### failed_test_count {#UnitTest::failed_test_count} - -`int UnitTest::failed_test_count() const` - -Gets the number of failed tests. - -##### reportable_disabled_test_count {#UnitTest::reportable_disabled_test_count} - -`int UnitTest::reportable_disabled_test_count() const` - -Gets the number of disabled tests that will be reported in the XML report. - -##### disabled_test_count {#UnitTest::disabled_test_count} - -`int UnitTest::disabled_test_count() const` - -Gets the number of disabled tests. - -##### reportable_test_count {#UnitTest::reportable_test_count} - -`int UnitTest::reportable_test_count() const` - -Gets the number of tests to be printed in the XML report. - -##### total_test_count {#UnitTest::total_test_count} - -`int UnitTest::total_test_count() const` - -Gets the number of all tests. - -##### test_to_run_count {#UnitTest::test_to_run_count} - -`int UnitTest::test_to_run_count() const` - -Gets the number of tests that should run. - -##### start_timestamp {#UnitTest::start_timestamp} - -`TimeInMillis UnitTest::start_timestamp() const` - -Gets the time of the test program start, in ms from the start of the UNIX epoch. - -##### elapsed_time {#UnitTest::elapsed_time} - -`TimeInMillis UnitTest::elapsed_time() const` - -Gets the elapsed time, in milliseconds. - -##### Passed {#UnitTest::Passed} - -`bool UnitTest::Passed() const` - -Returns true if and only if the unit test passed (i.e. all test suites passed). - -##### Failed {#UnitTest::Failed} - -`bool UnitTest::Failed() const` - -Returns true if and only if the unit test failed (i.e. some test suite failed or -something outside of all tests failed). - -##### GetTestSuite {#UnitTest::GetTestSuite} - -`const TestSuite* UnitTest::GetTestSuite(int i) const` - -Gets the [`TestSuite`](#TestSuite) object for the `i`-th test suite among all -the test suites. `i` can range from 0 to `total_test_suite_count() - 1`. If `i` -is not in that range, returns `NULL`. - -##### ad_hoc_test_result {#UnitTest::ad_hoc_test_result} - -`const TestResult& UnitTest::ad_hoc_test_result() const` - -Returns the [`TestResult`](#TestResult) containing information on test failures -and properties logged outside of individual test suites. - -##### listeners {#UnitTest::listeners} - -`TestEventListeners& UnitTest::listeners()` - -Returns the list of event listeners that can be used to track events inside -GoogleTest. See [`TestEventListeners`](#TestEventListeners). - -### TestEventListener {#TestEventListener} - -`::testing::TestEventListener` - -The interface for tracing execution of tests. The methods below are listed in -the order the corresponding events are fired. - -#### Public Methods {#TestEventListener-public} - -##### OnTestProgramStart {#TestEventListener::OnTestProgramStart} - -`virtual void TestEventListener::OnTestProgramStart(const UnitTest& unit_test)` - -Fired before any test activity starts. - -##### OnTestIterationStart {#TestEventListener::OnTestIterationStart} - -`virtual void TestEventListener::OnTestIterationStart(const UnitTest& unit_test, -int iteration)` - -Fired before each iteration of tests starts. There may be more than one -iteration if `GTEST_FLAG(repeat)` is set. `iteration` is the iteration index, -starting from 0. - -##### OnEnvironmentsSetUpStart {#TestEventListener::OnEnvironmentsSetUpStart} - -`virtual void TestEventListener::OnEnvironmentsSetUpStart(const UnitTest& -unit_test)` - -Fired before environment set-up for each iteration of tests starts. - -##### OnEnvironmentsSetUpEnd {#TestEventListener::OnEnvironmentsSetUpEnd} - -`virtual void TestEventListener::OnEnvironmentsSetUpEnd(const UnitTest& -unit_test)` - -Fired after environment set-up for each iteration of tests ends. - -##### OnTestSuiteStart {#TestEventListener::OnTestSuiteStart} - -`virtual void TestEventListener::OnTestSuiteStart(const TestSuite& test_suite)` - -Fired before the test suite starts. - -##### OnTestStart {#TestEventListener::OnTestStart} - -`virtual void TestEventListener::OnTestStart(const TestInfo& test_info)` - -Fired before the test starts. - -##### OnTestPartResult {#TestEventListener::OnTestPartResult} - -`virtual void TestEventListener::OnTestPartResult(const TestPartResult& -test_part_result)` - -Fired after a failed assertion or a `SUCCEED()` invocation. If you want to throw -an exception from this function to skip to the next test, it must be an -[`AssertionException`](#AssertionException) or inherited from it. - -##### OnTestEnd {#TestEventListener::OnTestEnd} - -`virtual void TestEventListener::OnTestEnd(const TestInfo& test_info)` - -Fired after the test ends. - -##### OnTestSuiteEnd {#TestEventListener::OnTestSuiteEnd} - -`virtual void TestEventListener::OnTestSuiteEnd(const TestSuite& test_suite)` - -Fired after the test suite ends. - -##### OnEnvironmentsTearDownStart {#TestEventListener::OnEnvironmentsTearDownStart} - -`virtual void TestEventListener::OnEnvironmentsTearDownStart(const UnitTest& -unit_test)` - -Fired before environment tear-down for each iteration of tests starts. - -##### OnEnvironmentsTearDownEnd {#TestEventListener::OnEnvironmentsTearDownEnd} - -`virtual void TestEventListener::OnEnvironmentsTearDownEnd(const UnitTest& -unit_test)` - -Fired after environment tear-down for each iteration of tests ends. - -##### OnTestIterationEnd {#TestEventListener::OnTestIterationEnd} - -`virtual void TestEventListener::OnTestIterationEnd(const UnitTest& unit_test, -int iteration)` - -Fired after each iteration of tests finishes. - -##### OnTestProgramEnd {#TestEventListener::OnTestProgramEnd} - -`virtual void TestEventListener::OnTestProgramEnd(const UnitTest& unit_test)` - -Fired after all test activities have ended. - -### TestEventListeners {#TestEventListeners} - -`::testing::TestEventListeners` - -Lets users add listeners to track events in GoogleTest. - -#### Public Methods {#TestEventListeners-public} - -##### Append {#TestEventListeners::Append} - -`void TestEventListeners::Append(TestEventListener* listener)` - -Appends an event listener to the end of the list. GoogleTest assumes ownership -of the listener (i.e. it will delete the listener when the test program -finishes). - -##### Release {#TestEventListeners::Release} - -`TestEventListener* TestEventListeners::Release(TestEventListener* listener)` - -Removes the given event listener from the list and returns it. It then becomes -the caller's responsibility to delete the listener. Returns `NULL` if the -listener is not found in the list. - -##### default_result_printer {#TestEventListeners::default_result_printer} - -`TestEventListener* TestEventListeners::default_result_printer() const` - -Returns the standard listener responsible for the default console output. Can be -removed from the listeners list to shut down default console output. Note that -removing this object from the listener list with -[`Release()`](#TestEventListeners::Release) transfers its ownership to the -caller and makes this function return `NULL` the next time. - -##### default_xml_generator {#TestEventListeners::default_xml_generator} - -`TestEventListener* TestEventListeners::default_xml_generator() const` - -Returns the standard listener responsible for the default XML output controlled -by the `--gtest_output=xml` flag. Can be removed from the listeners list by -users who want to shut down the default XML output controlled by this flag and -substitute it with custom one. Note that removing this object from the listener -list with [`Release()`](#TestEventListeners::Release) transfers its ownership to -the caller and makes this function return `NULL` the next time. - -### TestPartResult {#TestPartResult} - -`::testing::TestPartResult` - -A copyable object representing the result of a test part (i.e. an assertion or -an explicit `FAIL()`, `ADD_FAILURE()`, or `SUCCESS()`). - -#### Public Methods {#TestPartResult-public} - -##### type {#TestPartResult::type} - -`Type TestPartResult::type() const` - -Gets the outcome of the test part. - -The return type `Type` is an enum defined as follows: - -```cpp -enum Type { - kSuccess, // Succeeded. - kNonFatalFailure, // Failed but the test can continue. - kFatalFailure, // Failed and the test should be terminated. - kSkip // Skipped. -}; -``` - -##### file_name {#TestPartResult::file_name} - -`const char* TestPartResult::file_name() const` - -Gets the name of the source file where the test part took place, or `NULL` if -it's unknown. - -##### line_number {#TestPartResult::line_number} - -`int TestPartResult::line_number() const` - -Gets the line in the source file where the test part took place, or `-1` if it's -unknown. - -##### summary {#TestPartResult::summary} - -`const char* TestPartResult::summary() const` - -Gets the summary of the failure message. - -##### message {#TestPartResult::message} - -`const char* TestPartResult::message() const` - -Gets the message associated with the test part. - -##### skipped {#TestPartResult::skipped} - -`bool TestPartResult::skipped() const` - -Returns true if and only if the test part was skipped. - -##### passed {#TestPartResult::passed} - -`bool TestPartResult::passed() const` - -Returns true if and only if the test part passed. - -##### nonfatally_failed {#TestPartResult::nonfatally_failed} - -`bool TestPartResult::nonfatally_failed() const` - -Returns true if and only if the test part non-fatally failed. - -##### fatally_failed {#TestPartResult::fatally_failed} - -`bool TestPartResult::fatally_failed() const` - -Returns true if and only if the test part fatally failed. - -##### failed {#TestPartResult::failed} - -`bool TestPartResult::failed() const` - -Returns true if and only if the test part failed. - -### TestProperty {#TestProperty} - -`::testing::TestProperty` - -A copyable object representing a user-specified test property which can be -output as a key/value string pair. - -#### Public Methods {#TestProperty-public} - -##### key {#key} - -`const char* key() const` - -Gets the user-supplied key. - -##### value {#value} - -`const char* value() const` - -Gets the user-supplied value. - -##### SetValue {#SetValue} - -`void SetValue(const std::string& new_value)` - -Sets a new value, overriding the previous one. - -### TestResult {#TestResult} - -`::testing::TestResult` - -Contains information about the result of a single test. - -`TestResult` is not copyable. - -#### Public Methods {#TestResult-public} - -##### total_part_count {#TestResult::total_part_count} - -`int TestResult::total_part_count() const` - -Gets the number of all test parts. This is the sum of the number of successful -test parts and the number of failed test parts. - -##### test_property_count {#TestResult::test_property_count} - -`int TestResult::test_property_count() const` - -Returns the number of test properties. - -##### Passed {#TestResult::Passed} - -`bool TestResult::Passed() const` - -Returns true if and only if the test passed (i.e. no test part failed). - -##### Skipped {#TestResult::Skipped} - -`bool TestResult::Skipped() const` - -Returns true if and only if the test was skipped. - -##### Failed {#TestResult::Failed} - -`bool TestResult::Failed() const` - -Returns true if and only if the test failed. - -##### HasFatalFailure {#TestResult::HasFatalFailure} - -`bool TestResult::HasFatalFailure() const` - -Returns true if and only if the test fatally failed. - -##### HasNonfatalFailure {#TestResult::HasNonfatalFailure} - -`bool TestResult::HasNonfatalFailure() const` - -Returns true if and only if the test has a non-fatal failure. - -##### elapsed_time {#TestResult::elapsed_time} - -`TimeInMillis TestResult::elapsed_time() const` - -Returns the elapsed time, in milliseconds. - -##### start_timestamp {#TestResult::start_timestamp} - -`TimeInMillis TestResult::start_timestamp() const` - -Gets the time of the test case start, in ms from the start of the UNIX epoch. - -##### GetTestPartResult {#TestResult::GetTestPartResult} - -`const TestPartResult& TestResult::GetTestPartResult(int i) const` - -Returns the [`TestPartResult`](#TestPartResult) for the `i`-th test part result -among all the results. `i` can range from 0 to `total_part_count() - 1`. If `i` -is not in that range, aborts the program. - -##### GetTestProperty {#TestResult::GetTestProperty} - -`const TestProperty& TestResult::GetTestProperty(int i) const` - -Returns the [`TestProperty`](#TestProperty) object for the `i`-th test property. -`i` can range from 0 to `test_property_count() - 1`. If `i` is not in that -range, aborts the program. - -### TimeInMillis {#TimeInMillis} - -`::testing::TimeInMillis` - -An integer type representing time in milliseconds. - -### Types {#Types} - -`::testing::Types` - -Represents a list of types for use in typed tests and type-parameterized tests. - -The template argument `T...` can be any number of types, for example: - -``` -::testing::Types -``` - -See [Typed Tests](../advanced.md#typed-tests) and -[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more -information. - -### WithParamInterface {#WithParamInterface} - -`::testing::WithParamInterface` - -The pure interface class that all value-parameterized tests inherit from. - -A value-parameterized test fixture class must inherit from both [`Test`](#Test) -and `WithParamInterface`. In most cases that just means inheriting from -[`TestWithParam`](#TestWithParam), but more complicated test hierarchies may -need to inherit from `Test` and `WithParamInterface` at different levels. - -This interface defines the type alias `ParamType` for the parameter type `T` and -has support for accessing the test parameter value via the `GetParam()` method: - -``` -static const ParamType& GetParam() -``` - -For more information, see -[Value-Parameterized Tests](../advanced.md#value-parameterized-tests). - -## Functions - -GoogleTest defines the following functions to help with writing and running -tests. - -### InitGoogleTest {#InitGoogleTest} - -`void ::testing::InitGoogleTest(int* argc, char** argv)` \ -`void ::testing::InitGoogleTest(int* argc, wchar_t** argv)` \ -`void ::testing::InitGoogleTest()` - -Initializes GoogleTest. This must be called before calling -[`RUN_ALL_TESTS()`](#RUN_ALL_TESTS). In particular, it parses the command line -for the flags that GoogleTest recognizes. Whenever a GoogleTest flag is seen, it -is removed from `argv`, and `*argc` is decremented. - -No value is returned. Instead, the GoogleTest flag variables are updated. - -The `InitGoogleTest(int* argc, wchar_t** argv)` overload can be used in Windows -programs compiled in `UNICODE` mode. - -The argument-less `InitGoogleTest()` overload can be used on Arduino/embedded -platforms where there is no `argc`/`argv`. - -### AddGlobalTestEnvironment {#AddGlobalTestEnvironment} - -`Environment* ::testing::AddGlobalTestEnvironment(Environment* env)` - -Adds a test environment to the test program. Must be called before -[`RUN_ALL_TESTS()`](#RUN_ALL_TESTS) is called. See -[Global Set-Up and Tear-Down](../advanced.md#global-set-up-and-tear-down) for -more information. - -See also [`Environment`](#Environment). - -### RegisterTest {#RegisterTest} - -```cpp -template -TestInfo* ::testing::RegisterTest(const char* test_suite_name, const char* test_name, - const char* type_param, const char* value_param, - const char* file, int line, Factory factory) -``` - -Dynamically registers a test with the framework. - -The `factory` argument is a factory callable (move-constructible) object or -function pointer that creates a new instance of the `Test` object. It handles -ownership to the caller. The signature of the callable is `Fixture*()`, where -`Fixture` is the test fixture class for the test. All tests registered with the -same `test_suite_name` must return the same fixture type. This is checked at -runtime. - -The framework will infer the fixture class from the factory and will call the -`SetUpTestSuite` and `TearDownTestSuite` methods for it. - -Must be called before [`RUN_ALL_TESTS()`](#RUN_ALL_TESTS) is invoked, otherwise -behavior is undefined. - -See -[Registering tests programmatically](../advanced.md#registering-tests-programmatically) -for more information. - -### RUN_ALL_TESTS {#RUN_ALL_TESTS} - -`int RUN_ALL_TESTS()` - -Use this function in `main()` to run all tests. It returns `0` if all tests are -successful, or `1` otherwise. - -`RUN_ALL_TESTS()` should be invoked after the command line has been parsed by -[`InitGoogleTest()`](#InitGoogleTest). - -This function was formerly a macro; thus, it is in the global namespace and has -an all-caps name. - -### AssertionSuccess {#AssertionSuccess} - -`AssertionResult ::testing::AssertionSuccess()` - -Creates a successful assertion result. See -[`AssertionResult`](#AssertionResult). - -### AssertionFailure {#AssertionFailure} - -`AssertionResult ::testing::AssertionFailure()` - -Creates a failed assertion result. Use the `<<` operator to store a failure -message: - -```cpp -::testing::AssertionFailure() << "My failure message"; -``` - -See [`AssertionResult`](#AssertionResult). - -### StaticAssertTypeEq {#StaticAssertTypeEq} - -`::testing::StaticAssertTypeEq()` - -Compile-time assertion for type equality. Compiles if and only if `T1` and `T2` -are the same type. The value it returns is irrelevant. - -See [Type Assertions](../advanced.md#type-assertions) for more information. - -### PrintToString {#PrintToString} - -`std::string ::testing::PrintToString(x)` - -Prints any value `x` using GoogleTest's value printer. - -See -[Teaching GoogleTest How to Print Your Values](../advanced.md#teaching-googletest-how-to-print-your-values) -for more information. - -### PrintToStringParamName {#PrintToStringParamName} - -`std::string ::testing::PrintToStringParamName(TestParamInfo& info)` - -A built-in parameterized test name generator which returns the result of -[`PrintToString`](#PrintToString) called on `info.param`. Does not work when the -test parameter is a `std::string` or C string. See -[Specifying Names for Value-Parameterized Test Parameters](../advanced.md#specifying-names-for-value-parameterized-test-parameters) -for more information. - -See also [`TestParamInfo`](#TestParamInfo) and -[`INSTANTIATE_TEST_SUITE_P`](#INSTANTIATE_TEST_SUITE_P). diff --git a/tests/lib/docs/samples.md b/tests/lib/docs/samples.md deleted file mode 100644 index 2d97ca55b2..0000000000 --- a/tests/lib/docs/samples.md +++ /dev/null @@ -1,22 +0,0 @@ -# Googletest Samples - -If you're like us, you'd like to look at -[googletest samples.](https://github.com/google/googletest/tree/master/googletest/samples) -The sample directory has a number of well-commented samples showing how to use a -variety of googletest features. - -* Sample #1 shows the basic steps of using googletest to test C++ functions. -* Sample #2 shows a more complex unit test for a class with multiple member - functions. -* Sample #3 uses a test fixture. -* Sample #4 teaches you how to use googletest and `googletest.h` together to - get the best of both libraries. -* Sample #5 puts shared testing logic in a base test fixture, and reuses it in - derived fixtures. -* Sample #6 demonstrates type-parameterized tests. -* Sample #7 teaches the basics of value-parameterized tests. -* Sample #8 shows using `Combine()` in value-parameterized tests. -* Sample #9 shows use of the listener API to modify Google Test's console - output and the use of its reflection API to inspect test results. -* Sample #10 shows use of the listener API to implement a primitive memory - leak checker. diff --git a/tests/lib/googlemock/CMakeLists.txt b/tests/lib/googlemock/CMakeLists.txt deleted file mode 100644 index 5c1f0dafea..0000000000 --- a/tests/lib/googlemock/CMakeLists.txt +++ /dev/null @@ -1,218 +0,0 @@ -######################################################################## -# Note: CMake support is community-based. The maintainers do not use CMake -# internally. -# -# CMake build script for Google Mock. -# -# To run the tests for Google Mock itself on Linux, use 'make test' or -# ctest. You can select which tests to run using 'ctest -R regex'. -# For more options, run 'ctest --help'. - -option(gmock_build_tests "Build all of Google Mock's own tests." OFF) - -# A directory to find Google Test sources. -if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt") - set(gtest_dir gtest) -else() - set(gtest_dir ../googletest) -endif() - -# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build(). -include("${gtest_dir}/cmake/hermetic_build.cmake" OPTIONAL) - -if (COMMAND pre_project_set_up_hermetic_build) - # Google Test also calls hermetic setup functions from add_subdirectory, - # although its changes will not affect things at the current scope. - pre_project_set_up_hermetic_build() -endif() - -######################################################################## -# -# Project-wide settings - -# Name of the project. -# -# CMake files in this project can refer to the root source directory -# as ${gmock_SOURCE_DIR} and to the root binary directory as -# ${gmock_BINARY_DIR}. -# Language "C" is required for find_package(Threads). -cmake_minimum_required(VERSION 3.5) -cmake_policy(SET CMP0048 NEW) -project(gmock VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C) - -if (COMMAND set_up_hermetic_build) - set_up_hermetic_build() -endif() - -# Instructs CMake to process Google Test's CMakeLists.txt and add its -# targets to the current scope. We are placing Google Test's binary -# directory in a subdirectory of our own as VC compilation may break -# if they are the same (the default). -add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/${gtest_dir}") - - -# These commands only run if this is the main project -if(CMAKE_PROJECT_NAME STREQUAL "gmock" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution") - # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to - # make it prominent in the GUI. - option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF) -else() - mark_as_advanced(gmock_build_tests) -endif() - -# Although Google Test's CMakeLists.txt calls this function, the -# changes there don't affect the current scope. Therefore we have to -# call it again here. -config_compiler_and_linker() # from ${gtest_dir}/cmake/internal_utils.cmake - -# Adds Google Mock's and Google Test's header directories to the search path. -set(gmock_build_include_dirs - "${gmock_SOURCE_DIR}/include" - "${gmock_SOURCE_DIR}" - "${gtest_SOURCE_DIR}/include" - # This directory is needed to build directly from Google Test sources. - "${gtest_SOURCE_DIR}") -include_directories(${gmock_build_include_dirs}) - -######################################################################## -# -# Defines the gmock & gmock_main libraries. User tests should link -# with one of them. - -# Google Mock libraries. We build them using more strict warnings than what -# are used for other targets, to ensure that Google Mock can be compiled by -# a user aggressive about warnings. -if (MSVC) - cxx_library(gmock - "${cxx_strict}" - "${gtest_dir}/src/gtest-all.cc" - src/gmock-all.cc) - - cxx_library(gmock_main - "${cxx_strict}" - "${gtest_dir}/src/gtest-all.cc" - src/gmock-all.cc - src/gmock_main.cc) -else() - cxx_library(gmock "${cxx_strict}" src/gmock-all.cc) - target_link_libraries(gmock PUBLIC gtest) - set_target_properties(gmock PROPERTIES VERSION ${GOOGLETEST_VERSION}) - cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc) - target_link_libraries(gmock_main PUBLIC gmock) - set_target_properties(gmock_main PROPERTIES VERSION ${GOOGLETEST_VERSION}) -endif() -# If the CMake version supports it, attach header directory information -# to the targets for when we are part of a parent build (ie being pulled -# in via add_subdirectory() rather than being a standalone build). -if (DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11") - string(REPLACE ";" "$" dirs "${gmock_build_include_dirs}") - target_include_directories(gmock SYSTEM INTERFACE - "$" - "$/${CMAKE_INSTALL_INCLUDEDIR}>") - target_include_directories(gmock_main SYSTEM INTERFACE - "$" - "$/${CMAKE_INSTALL_INCLUDEDIR}>") -endif() - -######################################################################## -# -# Install rules -install_project(gmock gmock_main) - -######################################################################## -# -# Google Mock's own tests. -# -# You can skip this section if you aren't interested in testing -# Google Mock itself. -# -# The tests are not built by default. To build them, set the -# gmock_build_tests option to ON. You can do it by running ccmake -# or specifying the -Dgmock_build_tests=ON flag when running cmake. - -if (gmock_build_tests) - # This must be set in the root directory for the tests to be run by - # 'make test' or ctest. - enable_testing() - - if (MINGW OR CYGWIN) - if (CMAKE_VERSION VERSION_LESS "2.8.12") - add_compile_options("-Wa,-mbig-obj") - else() - add_definitions("-Wa,-mbig-obj") - endif() - endif() - - ############################################################ - # C++ tests built with standard compiler flags. - - cxx_test(gmock-actions_test gmock_main) - cxx_test(gmock-cardinalities_test gmock_main) - cxx_test(gmock_ex_test gmock_main) - cxx_test(gmock-function-mocker_test gmock_main) - cxx_test(gmock-internal-utils_test gmock_main) - cxx_test(gmock-matchers-arithmetic_test gmock_main) - cxx_test(gmock-matchers-comparisons_test gmock_main) - cxx_test(gmock-matchers-containers_test gmock_main) - cxx_test(gmock-matchers-misc_test gmock_main) - cxx_test(gmock-more-actions_test gmock_main) - cxx_test(gmock-nice-strict_test gmock_main) - cxx_test(gmock-port_test gmock_main) - cxx_test(gmock-spec-builders_test gmock_main) - cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc) - cxx_test(gmock_test gmock_main) - - if (DEFINED GTEST_HAS_PTHREAD) - cxx_test(gmock_stress_test gmock) - endif() - - # gmock_all_test is commented to save time building and running tests. - # Uncomment if necessary. - # cxx_test(gmock_all_test gmock_main) - - ############################################################ - # C++ tests built with non-standard compiler flags. - - if (MSVC) - cxx_library(gmock_main_no_exception "${cxx_no_exception}" - "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) - - cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" - "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) - - else() - cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc) - target_link_libraries(gmock_main_no_exception PUBLIC gmock) - - cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc) - target_link_libraries(gmock_main_no_rtti PUBLIC gmock) - endif() - cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}" - gmock_main_no_exception test/gmock-more-actions_test.cc) - - cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}" - gmock_main_no_rtti test/gmock-spec-builders_test.cc) - - cxx_shared_library(shared_gmock_main "${cxx_default}" - "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) - - # Tests that a binary can be built with Google Mock as a shared library. On - # some system configurations, it may not possible to run the binary without - # knowing more details about the system configurations. We do not try to run - # this binary. To get a more robust shared library coverage, configure with - # -DBUILD_SHARED_LIBS=ON. - cxx_executable_with_flags(shared_gmock_test_ "${cxx_default}" - shared_gmock_main test/gmock-spec-builders_test.cc) - set_target_properties(shared_gmock_test_ - PROPERTIES - COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") - - ############################################################ - # Python tests. - - cxx_executable(gmock_leak_test_ test gmock_main) - py_test(gmock_leak_test) - - cxx_executable(gmock_output_test_ test gmock) - py_test(gmock_output_test) -endif() diff --git a/tests/lib/googlemock/README.md b/tests/lib/googlemock/README.md deleted file mode 100644 index 7da60655db..0000000000 --- a/tests/lib/googlemock/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Googletest Mocking (gMock) Framework - -### Overview - -Google's framework for writing and using C++ mock classes. It can help you -derive better designs of your system and write better tests. - -It is inspired by: - -* [jMock](http://www.jmock.org/) -* [EasyMock](http://www.easymock.org/) -* [Hamcrest](http://code.google.com/p/hamcrest/) - -It is designed with C++'s specifics in mind. - -gMock: - -- Provides a declarative syntax for defining mocks. -- Can define partial (hybrid) mocks, which are a cross of real and mock - objects. -- Handles functions of arbitrary types and overloaded functions. -- Comes with a rich set of matchers for validating function arguments. -- Uses an intuitive syntax for controlling the behavior of a mock. -- Does automatic verification of expectations (no record-and-replay needed). -- Allows arbitrary (partial) ordering constraints on function calls to be - expressed. -- Lets a user extend it by defining new matchers and actions. -- Does not use exceptions. -- Is easy to learn and use. - -Details and examples can be found here: - -* [gMock for Dummies](https://google.github.io/googletest/gmock_for_dummies.html) -* [Legacy gMock FAQ](https://google.github.io/googletest/gmock_faq.html) -* [gMock Cookbook](https://google.github.io/googletest/gmock_cook_book.html) -* [gMock Cheat Sheet](https://google.github.io/googletest/gmock_cheat_sheet.html) - -GoogleMock is a part of -[GoogleTest C++ testing framework](http://github.com/google/googletest/) and a -subject to the same requirements. diff --git a/tests/lib/googlemock/cmake/gmock.pc.in b/tests/lib/googlemock/cmake/gmock.pc.in deleted file mode 100644 index 23c67b5c88..0000000000 --- a/tests/lib/googlemock/cmake/gmock.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -libdir=@CMAKE_INSTALL_FULL_LIBDIR@ -includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ - -Name: gmock -Description: GoogleMock (without main() function) -Version: @PROJECT_VERSION@ -URL: https://github.com/google/googletest -Requires: gtest = @PROJECT_VERSION@ -Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@ -Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ diff --git a/tests/lib/googlemock/cmake/gmock_main.pc.in b/tests/lib/googlemock/cmake/gmock_main.pc.in deleted file mode 100644 index 66ffea7f44..0000000000 --- a/tests/lib/googlemock/cmake/gmock_main.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -libdir=@CMAKE_INSTALL_FULL_LIBDIR@ -includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ - -Name: gmock_main -Description: GoogleMock (with main() function) -Version: @PROJECT_VERSION@ -URL: https://github.com/google/googletest -Requires: gmock = @PROJECT_VERSION@ -Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@ -Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ diff --git a/tests/lib/googlemock/docs/README.md b/tests/lib/googlemock/docs/README.md deleted file mode 100644 index 1bc57b799c..0000000000 --- a/tests/lib/googlemock/docs/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Content Moved - -We are working on updates to the GoogleTest documentation, which has moved to -the top-level [docs](../../docs) directory. diff --git a/tests/lib/googlemock/include/gmock/gmock-actions.h b/tests/lib/googlemock/include/gmock/gmock-actions.h deleted file mode 100644 index c785ad8abb..0000000000 --- a/tests/lib/googlemock/include/gmock/gmock-actions.h +++ /dev/null @@ -1,2298 +0,0 @@ -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Google Mock - a framework for writing C++ mock classes. -// -// The ACTION* family of macros can be used in a namespace scope to -// define custom actions easily. The syntax: -// -// ACTION(name) { statements; } -// -// will define an action with the given name that executes the -// statements. The value returned by the statements will be used as -// the return value of the action. Inside the statements, you can -// refer to the K-th (0-based) argument of the mock function by -// 'argK', and refer to its type by 'argK_type'. For example: -// -// ACTION(IncrementArg1) { -// arg1_type temp = arg1; -// return ++(*temp); -// } -// -// allows you to write -// -// ...WillOnce(IncrementArg1()); -// -// You can also refer to the entire argument tuple and its type by -// 'args' and 'args_type', and refer to the mock function type and its -// return type by 'function_type' and 'return_type'. -// -// Note that you don't need to specify the types of the mock function -// arguments. However rest assured that your code is still type-safe: -// you'll get a compiler error if *arg1 doesn't support the ++ -// operator, or if the type of ++(*arg1) isn't compatible with the -// mock function's return type, for example. -// -// Sometimes you'll want to parameterize the action. For that you can use -// another macro: -// -// ACTION_P(name, param_name) { statements; } -// -// For example: -// -// ACTION_P(Add, n) { return arg0 + n; } -// -// will allow you to write: -// -// ...WillOnce(Add(5)); -// -// Note that you don't need to provide the type of the parameter -// either. If you need to reference the type of a parameter named -// 'foo', you can write 'foo_type'. For example, in the body of -// ACTION_P(Add, n) above, you can write 'n_type' to refer to the type -// of 'n'. -// -// We also provide ACTION_P2, ACTION_P3, ..., up to ACTION_P10 to support -// multi-parameter actions. -// -// For the purpose of typing, you can view -// -// ACTION_Pk(Foo, p1, ..., pk) { ... } -// -// as shorthand for -// -// template -// FooActionPk Foo(p1_type p1, ..., pk_type pk) { ... } -// -// In particular, you can provide the template type arguments -// explicitly when invoking Foo(), as in Foo(5, false); -// although usually you can rely on the compiler to infer the types -// for you automatically. You can assign the result of expression -// Foo(p1, ..., pk) to a variable of type FooActionPk. This can be useful when composing actions. -// -// You can also overload actions with different numbers of parameters: -// -// ACTION_P(Plus, a) { ... } -// ACTION_P2(Plus, a, b) { ... } -// -// While it's tempting to always use the ACTION* macros when defining -// a new action, you should also consider implementing ActionInterface -// or using MakePolymorphicAction() instead, especially if you need to -// use the action a lot. While these approaches require more work, -// they give you more control on the types of the mock function -// arguments and the action parameters, which in general leads to -// better compiler error messages that pay off in the long run. They -// also allow overloading actions based on parameter types (as opposed -// to just based on the number of parameters). -// -// CAVEAT: -// -// ACTION*() can only be used in a namespace scope as templates cannot be -// declared inside of a local class. -// Users can, however, define any local functors (e.g. a lambda) that -// can be used as actions. -// -// MORE INFORMATION: -// -// To learn more about using these macros, please search for 'ACTION' on -// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md - -// IWYU pragma: private, include "gmock/gmock.h" -// IWYU pragma: friend gmock/.* - -#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_ -#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_ - -#ifndef _WIN32_WCE -#include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include "gmock/internal/gmock-internal-utils.h" -#include "gmock/internal/gmock-port.h" -#include "gmock/internal/gmock-pp.h" - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4100) -#endif - -namespace testing { - -// To implement an action Foo, define: -// 1. a class FooAction that implements the ActionInterface interface, and -// 2. a factory function that creates an Action object from a -// const FooAction*. -// -// The two-level delegation design follows that of Matcher, providing -// consistency for extension developers. It also eases ownership -// management as Action objects can now be copied like plain values. - -namespace internal { - -// BuiltInDefaultValueGetter::Get() returns a -// default-constructed T value. BuiltInDefaultValueGetter::Get() crashes with an error. -// -// This primary template is used when kDefaultConstructible is true. -template -struct BuiltInDefaultValueGetter { - static T Get() { return T(); } -}; -template -struct BuiltInDefaultValueGetter { - static T Get() { - Assert(false, __FILE__, __LINE__, - "Default action undefined for the function return type."); - return internal::Invalid(); - // The above statement will never be reached, but is required in - // order for this function to compile. - } -}; - -// BuiltInDefaultValue::Get() returns the "built-in" default value -// for type T, which is NULL when T is a raw pointer type, 0 when T is -// a numeric type, false when T is bool, or "" when T is string or -// std::string. In addition, in C++11 and above, it turns a -// default-constructed T value if T is default constructible. For any -// other type T, the built-in default T value is undefined, and the -// function will abort the process. -template -class BuiltInDefaultValue { - public: - // This function returns true if and only if type T has a built-in default - // value. - static bool Exists() { return ::std::is_default_constructible::value; } - - static T Get() { - return BuiltInDefaultValueGetter< - T, ::std::is_default_constructible::value>::Get(); - } -}; - -// This partial specialization says that we use the same built-in -// default value for T and const T. -template -class BuiltInDefaultValue { - public: - static bool Exists() { return BuiltInDefaultValue::Exists(); } - static T Get() { return BuiltInDefaultValue::Get(); } -}; - -// This partial specialization defines the default values for pointer -// types. -template -class BuiltInDefaultValue { - public: - static bool Exists() { return true; } - static T* Get() { return nullptr; } -}; - -// The following specializations define the default values for -// specific types we care about. -#define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \ - template <> \ - class BuiltInDefaultValue { \ - public: \ - static bool Exists() { return true; } \ - static type Get() { return value; } \ - } - -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void, ); // NOLINT -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(::std::string, ""); -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(bool, false); -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned char, '\0'); -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed char, '\0'); -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(char, '\0'); - -// There's no need for a default action for signed wchar_t, as that -// type is the same as wchar_t for gcc, and invalid for MSVC. -// -// There's also no need for a default action for unsigned wchar_t, as -// that type is the same as unsigned int for gcc, and invalid for -// MSVC. -#if GMOCK_WCHAR_T_IS_NATIVE_ -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(wchar_t, 0U); // NOLINT -#endif - -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned short, 0U); // NOLINT -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed short, 0); // NOLINT -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned int, 0U); -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed int, 0); -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long, 0UL); // NOLINT -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long, 0L); // NOLINT -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long long, 0); // NOLINT -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long long, 0); // NOLINT -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(float, 0); -GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0); - -#undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_ - -// Partial implementations of metaprogramming types from the standard library -// not available in C++11. - -template -struct negation - // NOLINTNEXTLINE - : std::integral_constant {}; - -// Base case: with zero predicates the answer is always true. -template -struct conjunction : std::true_type {}; - -// With a single predicate, the answer is that predicate. -template -struct conjunction : P1 {}; - -// With multiple predicates the answer is the first predicate if that is false, -// and we recurse otherwise. -template -struct conjunction - : std::conditional, P1>::type {}; - -template -struct disjunction : std::false_type {}; - -template -struct disjunction : P1 {}; - -template -struct disjunction - // NOLINTNEXTLINE - : std::conditional, P1>::type {}; - -template -using void_t = void; - -// Detects whether an expression of type `From` can be implicitly converted to -// `To` according to [conv]. In C++17, [conv]/3 defines this as follows: -// -// An expression e can be implicitly converted to a type T if and only if -// the declaration T t=e; is well-formed, for some invented temporary -// variable t ([dcl.init]). -// -// [conv]/2 implies we can use function argument passing to detect whether this -// initialization is valid. -// -// Note that this is distinct from is_convertible, which requires this be valid: -// -// To test() { -// return declval(); -// } -// -// In particular, is_convertible doesn't give the correct answer when `To` and -// `From` are the same non-moveable type since `declval` will be an rvalue -// reference, defeating the guaranteed copy elision that would otherwise make -// this function work. -// -// REQUIRES: `From` is not cv void. -template -struct is_implicitly_convertible { - private: - // A function that accepts a parameter of type T. This can be called with type - // U successfully only if U is implicitly convertible to T. - template - static void Accept(T); - - // A function that creates a value of type T. - template - static T Make(); - - // An overload be selected when implicit conversion from T to To is possible. - template (Make()))> - static std::true_type TestImplicitConversion(int); - - // A fallback overload selected in all other cases. - template - static std::false_type TestImplicitConversion(...); - - public: - using type = decltype(TestImplicitConversion(0)); - static constexpr bool value = type::value; -}; - -// Like std::invoke_result_t from C++17, but works only for objects with call -// operators (not e.g. member function pointers, which we don't need specific -// support for in OnceAction because std::function deals with them). -template -using call_result_t = decltype(std::declval()(std::declval()...)); - -template -struct is_callable_r_impl : std::false_type {}; - -// Specialize the struct for those template arguments where call_result_t is -// well-formed. When it's not, the generic template above is chosen, resulting -// in std::false_type. -template -struct is_callable_r_impl>, R, F, Args...> - : std::conditional< - std::is_void::value, // - std::true_type, // - is_implicitly_convertible, R>>::type {}; - -// Like std::is_invocable_r from C++17, but works only for objects with call -// operators. See the note on call_result_t. -template -using is_callable_r = is_callable_r_impl; - -// Like std::as_const from C++17. -template -typename std::add_const::type& as_const(T& t) { - return t; -} - -} // namespace internal - -// Specialized for function types below. -template -class OnceAction; - -// An action that can only be used once. -// -// This is accepted by WillOnce, which doesn't require the underlying action to -// be copy-constructible (only move-constructible), and promises to invoke it as -// an rvalue reference. This allows the action to work with move-only types like -// std::move_only_function in a type-safe manner. -// -// For example: -// -// // Assume we have some API that needs to accept a unique pointer to some -// // non-copyable object Foo. -// void AcceptUniquePointer(std::unique_ptr foo); -// -// // We can define an action that provides a Foo to that API. Because It -// // has to give away its unique pointer, it must not be called more than -// // once, so its call operator is &&-qualified. -// struct ProvideFoo { -// std::unique_ptr foo; -// -// void operator()() && { -// AcceptUniquePointer(std::move(Foo)); -// } -// }; -// -// // This action can be used with WillOnce. -// EXPECT_CALL(mock, Call) -// .WillOnce(ProvideFoo{std::make_unique(...)}); -// -// // But a call to WillRepeatedly will fail to compile. This is correct, -// // since the action cannot correctly be used repeatedly. -// EXPECT_CALL(mock, Call) -// .WillRepeatedly(ProvideFoo{std::make_unique(...)}); -// -// A less-contrived example would be an action that returns an arbitrary type, -// whose &&-qualified call operator is capable of dealing with move-only types. -template -class OnceAction final { - private: - // True iff we can use the given callable type (or lvalue reference) directly - // via StdFunctionAdaptor. - template - using IsDirectlyCompatible = internal::conjunction< - // It must be possible to capture the callable in StdFunctionAdaptor. - std::is_constructible::type, Callable>, - // The callable must be compatible with our signature. - internal::is_callable_r::type, - Args...>>; - - // True iff we can use the given callable type via StdFunctionAdaptor once we - // ignore incoming arguments. - template - using IsCompatibleAfterIgnoringArguments = internal::conjunction< - // It must be possible to capture the callable in a lambda. - std::is_constructible::type, Callable>, - // The callable must be invocable with zero arguments, returning something - // convertible to Result. - internal::is_callable_r::type>>; - - public: - // Construct from a callable that is directly compatible with our mocked - // signature: it accepts our function type's arguments and returns something - // convertible to our result type. - template ::type>>, - IsDirectlyCompatible> // - ::value, - int>::type = 0> - OnceAction(Callable&& callable) // NOLINT - : function_(StdFunctionAdaptor::type>( - {}, std::forward(callable))) {} - - // As above, but for a callable that ignores the mocked function's arguments. - template ::type>>, - // Exclude callables for which the overload above works. - // We'd rather provide the arguments if possible. - internal::negation>, - IsCompatibleAfterIgnoringArguments>::value, - int>::type = 0> - OnceAction(Callable&& callable) // NOLINT - // Call the constructor above with a callable - // that ignores the input arguments. - : OnceAction(IgnoreIncomingArguments::type>{ - std::forward(callable)}) {} - - // We are naturally copyable because we store only an std::function, but - // semantically we should not be copyable. - OnceAction(const OnceAction&) = delete; - OnceAction& operator=(const OnceAction&) = delete; - OnceAction(OnceAction&&) = default; - - // Invoke the underlying action callable with which we were constructed, - // handing it the supplied arguments. - Result Call(Args... args) && { - return function_(std::forward(args)...); - } - - private: - // An adaptor that wraps a callable that is compatible with our signature and - // being invoked as an rvalue reference so that it can be used as an - // StdFunctionAdaptor. This throws away type safety, but that's fine because - // this is only used by WillOnce, which we know calls at most once. - // - // Once we have something like std::move_only_function from C++23, we can do - // away with this. - template - class StdFunctionAdaptor final { - public: - // A tag indicating that the (otherwise universal) constructor is accepting - // the callable itself, instead of e.g. stealing calls for the move - // constructor. - struct CallableTag final {}; - - template - explicit StdFunctionAdaptor(CallableTag, F&& callable) - : callable_(std::make_shared(std::forward(callable))) {} - - // Rather than explicitly returning Result, we return whatever the wrapped - // callable returns. This allows for compatibility with existing uses like - // the following, when the mocked function returns void: - // - // EXPECT_CALL(mock_fn_, Call) - // .WillOnce([&] { - // [...] - // return 0; - // }); - // - // Such a callable can be turned into std::function. If we use an - // explicit return type of Result here then it *doesn't* work with - // std::function, because we'll get a "void function should not return a - // value" error. - // - // We need not worry about incompatible result types because the SFINAE on - // OnceAction already checks this for us. std::is_invocable_r_v itself makes - // the same allowance for void result types. - template - internal::call_result_t operator()( - ArgRefs&&... args) const { - return std::move(*callable_)(std::forward(args)...); - } - - private: - // We must put the callable on the heap so that we are copyable, which - // std::function needs. - std::shared_ptr callable_; - }; - - // An adaptor that makes a callable that accepts zero arguments callable with - // our mocked arguments. - template - struct IgnoreIncomingArguments { - internal::call_result_t operator()(Args&&...) { - return std::move(callable)(); - } - - Callable callable; - }; - - std::function function_; -}; - -// When an unexpected function call is encountered, Google Mock will -// let it return a default value if the user has specified one for its -// return type, or if the return type has a built-in default value; -// otherwise Google Mock won't know what value to return and will have -// to abort the process. -// -// The DefaultValue class allows a user to specify the -// default value for a type T that is both copyable and publicly -// destructible (i.e. anything that can be used as a function return -// type). The usage is: -// -// // Sets the default value for type T to be foo. -// DefaultValue::Set(foo); -template -class DefaultValue { - public: - // Sets the default value for type T; requires T to be - // copy-constructable and have a public destructor. - static void Set(T x) { - delete producer_; - producer_ = new FixedValueProducer(x); - } - - // Provides a factory function to be called to generate the default value. - // This method can be used even if T is only move-constructible, but it is not - // limited to that case. - typedef T (*FactoryFunction)(); - static void SetFactory(FactoryFunction factory) { - delete producer_; - producer_ = new FactoryValueProducer(factory); - } - - // Unsets the default value for type T. - static void Clear() { - delete producer_; - producer_ = nullptr; - } - - // Returns true if and only if the user has set the default value for type T. - static bool IsSet() { return producer_ != nullptr; } - - // Returns true if T has a default return value set by the user or there - // exists a built-in default value. - static bool Exists() { - return IsSet() || internal::BuiltInDefaultValue::Exists(); - } - - // Returns the default value for type T if the user has set one; - // otherwise returns the built-in default value. Requires that Exists() - // is true, which ensures that the return value is well-defined. - static T Get() { - return producer_ == nullptr ? internal::BuiltInDefaultValue::Get() - : producer_->Produce(); - } - - private: - class ValueProducer { - public: - virtual ~ValueProducer() {} - virtual T Produce() = 0; - }; - - class FixedValueProducer : public ValueProducer { - public: - explicit FixedValueProducer(T value) : value_(value) {} - T Produce() override { return value_; } - - private: - const T value_; - FixedValueProducer(const FixedValueProducer&) = delete; - FixedValueProducer& operator=(const FixedValueProducer&) = delete; - }; - - class FactoryValueProducer : public ValueProducer { - public: - explicit FactoryValueProducer(FactoryFunction factory) - : factory_(factory) {} - T Produce() override { return factory_(); } - - private: - const FactoryFunction factory_; - FactoryValueProducer(const FactoryValueProducer&) = delete; - FactoryValueProducer& operator=(const FactoryValueProducer&) = delete; - }; - - static ValueProducer* producer_; -}; - -// This partial specialization allows a user to set default values for -// reference types. -template -class DefaultValue { - public: - // Sets the default value for type T&. - static void Set(T& x) { // NOLINT - address_ = &x; - } - - // Unsets the default value for type T&. - static void Clear() { address_ = nullptr; } - - // Returns true if and only if the user has set the default value for type T&. - static bool IsSet() { return address_ != nullptr; } - - // Returns true if T has a default return value set by the user or there - // exists a built-in default value. - static bool Exists() { - return IsSet() || internal::BuiltInDefaultValue::Exists(); - } - - // Returns the default value for type T& if the user has set one; - // otherwise returns the built-in default value if there is one; - // otherwise aborts the process. - static T& Get() { - return address_ == nullptr ? internal::BuiltInDefaultValue::Get() - : *address_; - } - - private: - static T* address_; -}; - -// This specialization allows DefaultValue::Get() to -// compile. -template <> -class DefaultValue { - public: - static bool Exists() { return true; } - static void Get() {} -}; - -// Points to the user-set default value for type T. -template -typename DefaultValue::ValueProducer* DefaultValue::producer_ = nullptr; - -// Points to the user-set default value for type T&. -template -T* DefaultValue::address_ = nullptr; - -// Implement this interface to define an action for function type F. -template -class ActionInterface { - public: - typedef typename internal::Function::Result Result; - typedef typename internal::Function::ArgumentTuple ArgumentTuple; - - ActionInterface() {} - virtual ~ActionInterface() {} - - // Performs the action. This method is not const, as in general an - // action can have side effects and be stateful. For example, a - // get-the-next-element-from-the-collection action will need to - // remember the current element. - virtual Result Perform(const ArgumentTuple& args) = 0; - - private: - ActionInterface(const ActionInterface&) = delete; - ActionInterface& operator=(const ActionInterface&) = delete; -}; - -template -class Action; - -// An Action is a copyable and IMMUTABLE (except by assignment) -// object that represents an action to be taken when a mock function of type -// R(Args...) is called. The implementation of Action is just a -// std::shared_ptr to const ActionInterface. Don't inherit from Action! You -// can view an object implementing ActionInterface as a concrete action -// (including its current state), and an Action object as a handle to it. -template -class Action { - private: - using F = R(Args...); - - // Adapter class to allow constructing Action from a legacy ActionInterface. - // New code should create Actions from functors instead. - struct ActionAdapter { - // Adapter must be copyable to satisfy std::function requirements. - ::std::shared_ptr> impl_; - - template - typename internal::Function::Result operator()(InArgs&&... args) { - return impl_->Perform( - ::std::forward_as_tuple(::std::forward(args)...)); - } - }; - - template - using IsCompatibleFunctor = std::is_constructible, G>; - - public: - typedef typename internal::Function::Result Result; - typedef typename internal::Function::ArgumentTuple ArgumentTuple; - - // Constructs a null Action. Needed for storing Action objects in - // STL containers. - Action() {} - - // Construct an Action from a specified callable. - // This cannot take std::function directly, because then Action would not be - // directly constructible from lambda (it would require two conversions). - template < - typename G, - typename = typename std::enable_if, std::is_constructible, - G>>::value>::type> - Action(G&& fun) { // NOLINT - Init(::std::forward(fun), IsCompatibleFunctor()); - } - - // Constructs an Action from its implementation. - explicit Action(ActionInterface* impl) - : fun_(ActionAdapter{::std::shared_ptr>(impl)}) {} - - // This constructor allows us to turn an Action object into an - // Action, as long as F's arguments can be implicitly converted - // to Func's and Func's return type can be implicitly converted to F's. - template - Action(const Action& action) // NOLINT - : fun_(action.fun_) {} - - // Returns true if and only if this is the DoDefault() action. - bool IsDoDefault() const { return fun_ == nullptr; } - - // Performs the action. Note that this method is const even though - // the corresponding method in ActionInterface is not. The reason - // is that a const Action means that it cannot be re-bound to - // another concrete action, not that the concrete action it binds to - // cannot change state. (Think of the difference between a const - // pointer and a pointer to const.) - Result Perform(ArgumentTuple args) const { - if (IsDoDefault()) { - internal::IllegalDoDefault(__FILE__, __LINE__); - } - return internal::Apply(fun_, ::std::move(args)); - } - - // An action can be used as a OnceAction, since it's obviously safe to call it - // once. - operator OnceAction() const { // NOLINT - // Return a OnceAction-compatible callable that calls Perform with the - // arguments it is provided. We could instead just return fun_, but then - // we'd need to handle the IsDoDefault() case separately. - struct OA { - Action action; - - R operator()(Args... args) && { - return action.Perform( - std::forward_as_tuple(std::forward(args)...)); - } - }; - - return OA{*this}; - } - - private: - template - friend class Action; - - template - void Init(G&& g, ::std::true_type) { - fun_ = ::std::forward(g); - } - - template - void Init(G&& g, ::std::false_type) { - fun_ = IgnoreArgs::type>{::std::forward(g)}; - } - - template - struct IgnoreArgs { - template - Result operator()(const InArgs&...) const { - return function_impl(); - } - - FunctionImpl function_impl; - }; - - // fun_ is an empty function if and only if this is the DoDefault() action. - ::std::function fun_; -}; - -// The PolymorphicAction class template makes it easy to implement a -// polymorphic action (i.e. an action that can be used in mock -// functions of than one type, e.g. Return()). -// -// To define a polymorphic action, a user first provides a COPYABLE -// implementation class that has a Perform() method template: -// -// class FooAction { -// public: -// template -// Result Perform(const ArgumentTuple& args) const { -// // Processes the arguments and returns a result, using -// // std::get(args) to get the N-th (0-based) argument in the tuple. -// } -// ... -// }; -// -// Then the user creates the polymorphic action using -// MakePolymorphicAction(object) where object has type FooAction. See -// the definition of Return(void) and SetArgumentPointee(value) for -// complete examples. -template -class PolymorphicAction { - public: - explicit PolymorphicAction(const Impl& impl) : impl_(impl) {} - - template - operator Action() const { - return Action(new MonomorphicImpl(impl_)); - } - - private: - template - class MonomorphicImpl : public ActionInterface { - public: - typedef typename internal::Function::Result Result; - typedef typename internal::Function::ArgumentTuple ArgumentTuple; - - explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {} - - Result Perform(const ArgumentTuple& args) override { - return impl_.template Perform(args); - } - - private: - Impl impl_; - }; - - Impl impl_; -}; - -// Creates an Action from its implementation and returns it. The -// created Action object owns the implementation. -template -Action MakeAction(ActionInterface* impl) { - return Action(impl); -} - -// Creates a polymorphic action from its implementation. This is -// easier to use than the PolymorphicAction constructor as it -// doesn't require you to explicitly write the template argument, e.g. -// -// MakePolymorphicAction(foo); -// vs -// PolymorphicAction(foo); -template -inline PolymorphicAction MakePolymorphicAction(const Impl& impl) { - return PolymorphicAction(impl); -} - -namespace internal { - -// Helper struct to specialize ReturnAction to execute a move instead of a copy -// on return. Useful for move-only types, but could be used on any type. -template -struct ByMoveWrapper { - explicit ByMoveWrapper(T value) : payload(std::move(value)) {} - T payload; -}; - -// The general implementation of Return(R). Specializations follow below. -template -class ReturnAction final { - public: - explicit ReturnAction(R value) : value_(std::move(value)) {} - - template >, // - negation>, // - std::is_convertible, // - std::is_move_constructible>::value>::type> - operator OnceAction() && { // NOLINT - return Impl(std::move(value_)); - } - - template >, // - negation>, // - std::is_convertible, // - std::is_copy_constructible>::value>::type> - operator Action() const { // NOLINT - return Impl(value_); - } - - private: - // Implements the Return(x) action for a mock function that returns type U. - template - class Impl final { - public: - // The constructor used when the return value is allowed to move from the - // input value (i.e. we are converting to OnceAction). - explicit Impl(R&& input_value) - : state_(new State(std::move(input_value))) {} - - // The constructor used when the return value is not allowed to move from - // the input value (i.e. we are converting to Action). - explicit Impl(const R& input_value) : state_(new State(input_value)) {} - - U operator()() && { return std::move(state_->value); } - U operator()() const& { return state_->value; } - - private: - // We put our state on the heap so that the compiler-generated copy/move - // constructors work correctly even when U is a reference-like type. This is - // necessary only because we eagerly create State::value (see the note on - // that symbol for details). If we instead had only the input value as a - // member then the default constructors would work fine. - // - // For example, when R is std::string and U is std::string_view, value is a - // reference to the string backed by input_value. The copy constructor would - // copy both, so that we wind up with a new input_value object (with the - // same contents) and a reference to the *old* input_value object rather - // than the new one. - struct State { - explicit State(const R& input_value_in) - : input_value(input_value_in), - // Make an implicit conversion to Result before initializing the U - // object we store, avoiding calling any explicit constructor of U - // from R. - // - // This simulates the language rules: a function with return type U - // that does `return R()` requires R to be implicitly convertible to - // U, and uses that path for the conversion, even U Result has an - // explicit constructor from R. - value(ImplicitCast_(internal::as_const(input_value))) {} - - // As above, but for the case where we're moving from the ReturnAction - // object because it's being used as a OnceAction. - explicit State(R&& input_value_in) - : input_value(std::move(input_value_in)), - // For the same reason as above we make an implicit conversion to U - // before initializing the value. - // - // Unlike above we provide the input value as an rvalue to the - // implicit conversion because this is a OnceAction: it's fine if it - // wants to consume the input value. - value(ImplicitCast_(std::move(input_value))) {} - - // A copy of the value originally provided by the user. We retain this in - // addition to the value of the mock function's result type below in case - // the latter is a reference-like type. See the std::string_view example - // in the documentation on Return. - R input_value; - - // The value we actually return, as the type returned by the mock function - // itself. - // - // We eagerly initialize this here, rather than lazily doing the implicit - // conversion automatically each time Perform is called, for historical - // reasons: in 2009-11, commit a070cbd91c (Google changelist 13540126) - // made the Action conversion operator eagerly convert the R value to - // U, but without keeping the R alive. This broke the use case discussed - // in the documentation for Return, making reference-like types such as - // std::string_view not safe to use as U where the input type R is a - // value-like type such as std::string. - // - // The example the commit gave was not very clear, nor was the issue - // thread (https://github.com/google/googlemock/issues/86), but it seems - // the worry was about reference-like input types R that flatten to a - // value-like type U when being implicitly converted. An example of this - // is std::vector::reference, which is often a proxy type with an - // reference to the underlying vector: - // - // // Helper method: have the mock function return bools according - // // to the supplied script. - // void SetActions(MockFunction& mock, - // const std::vector& script) { - // for (size_t i = 0; i < script.size(); ++i) { - // EXPECT_CALL(mock, Call(i)).WillOnce(Return(script[i])); - // } - // } - // - // TEST(Foo, Bar) { - // // Set actions using a temporary vector, whose operator[] - // // returns proxy objects that references that will be - // // dangling once the call to SetActions finishes and the - // // vector is destroyed. - // MockFunction mock; - // SetActions(mock, {false, true}); - // - // EXPECT_FALSE(mock.AsStdFunction()(0)); - // EXPECT_TRUE(mock.AsStdFunction()(1)); - // } - // - // This eager conversion helps with a simple case like this, but doesn't - // fully make these types work in general. For example the following still - // uses a dangling reference: - // - // TEST(Foo, Baz) { - // MockFunction()> mock; - // - // // Return the same vector twice, and then the empty vector - // // thereafter. - // auto action = Return(std::initializer_list{ - // "taco", "burrito", - // }); - // - // EXPECT_CALL(mock, Call) - // .WillOnce(action) - // .WillOnce(action) - // .WillRepeatedly(Return(std::vector{})); - // - // EXPECT_THAT(mock.AsStdFunction()(), - // ElementsAre("taco", "burrito")); - // EXPECT_THAT(mock.AsStdFunction()(), - // ElementsAre("taco", "burrito")); - // EXPECT_THAT(mock.AsStdFunction()(), IsEmpty()); - // } - // - U value; - }; - - const std::shared_ptr state_; - }; - - R value_; -}; - -// A specialization of ReturnAction when R is ByMoveWrapper for some T. -// -// This version applies the type system-defeating hack of moving from T even in -// the const call operator, checking at runtime that it isn't called more than -// once, since the user has declared their intent to do so by using ByMove. -template -class ReturnAction> final { - public: - explicit ReturnAction(ByMoveWrapper wrapper) - : state_(new State(std::move(wrapper.payload))) {} - - T operator()() const { - GTEST_CHECK_(!state_->called) - << "A ByMove() action must be performed at most once."; - - state_->called = true; - return std::move(state_->value); - } - - private: - // We store our state on the heap so that we are copyable as required by - // Action, despite the fact that we are stateful and T may not be copyable. - struct State { - explicit State(T&& value_in) : value(std::move(value_in)) {} - - T value; - bool called = false; - }; - - const std::shared_ptr state_; -}; - -// Implements the ReturnNull() action. -class ReturnNullAction { - public: - // Allows ReturnNull() to be used in any pointer-returning function. In C++11 - // this is enforced by returning nullptr, and in non-C++11 by asserting a - // pointer type on compile time. - template - static Result Perform(const ArgumentTuple&) { - return nullptr; - } -}; - -// Implements the Return() action. -class ReturnVoidAction { - public: - // Allows Return() to be used in any void-returning function. - template - static void Perform(const ArgumentTuple&) { - static_assert(std::is_void::value, "Result should be void."); - } -}; - -// Implements the polymorphic ReturnRef(x) action, which can be used -// in any function that returns a reference to the type of x, -// regardless of the argument types. -template -class ReturnRefAction { - public: - // Constructs a ReturnRefAction object from the reference to be returned. - explicit ReturnRefAction(T& ref) : ref_(ref) {} // NOLINT - - // This template type conversion operator allows ReturnRef(x) to be - // used in ANY function that returns a reference to x's type. - template - operator Action() const { - typedef typename Function::Result Result; - // Asserts that the function return type is a reference. This - // catches the user error of using ReturnRef(x) when Return(x) - // should be used, and generates some helpful error message. - static_assert(std::is_reference::value, - "use Return instead of ReturnRef to return a value"); - return Action(new Impl(ref_)); - } - - private: - // Implements the ReturnRef(x) action for a particular function type F. - template - class Impl : public ActionInterface { - public: - typedef typename Function::Result Result; - typedef typename Function::ArgumentTuple ArgumentTuple; - - explicit Impl(T& ref) : ref_(ref) {} // NOLINT - - Result Perform(const ArgumentTuple&) override { return ref_; } - - private: - T& ref_; - }; - - T& ref_; -}; - -// Implements the polymorphic ReturnRefOfCopy(x) action, which can be -// used in any function that returns a reference to the type of x, -// regardless of the argument types. -template -class ReturnRefOfCopyAction { - public: - // Constructs a ReturnRefOfCopyAction object from the reference to - // be returned. - explicit ReturnRefOfCopyAction(const T& value) : value_(value) {} // NOLINT - - // This template type conversion operator allows ReturnRefOfCopy(x) to be - // used in ANY function that returns a reference to x's type. - template - operator Action() const { - typedef typename Function::Result Result; - // Asserts that the function return type is a reference. This - // catches the user error of using ReturnRefOfCopy(x) when Return(x) - // should be used, and generates some helpful error message. - static_assert(std::is_reference::value, - "use Return instead of ReturnRefOfCopy to return a value"); - return Action(new Impl(value_)); - } - - private: - // Implements the ReturnRefOfCopy(x) action for a particular function type F. - template - class Impl : public ActionInterface { - public: - typedef typename Function::Result Result; - typedef typename Function::ArgumentTuple ArgumentTuple; - - explicit Impl(const T& value) : value_(value) {} // NOLINT - - Result Perform(const ArgumentTuple&) override { return value_; } - - private: - T value_; - }; - - const T value_; -}; - -// Implements the polymorphic ReturnRoundRobin(v) action, which can be -// used in any function that returns the element_type of v. -template -class ReturnRoundRobinAction { - public: - explicit ReturnRoundRobinAction(std::vector values) { - GTEST_CHECK_(!values.empty()) - << "ReturnRoundRobin requires at least one element."; - state_->values = std::move(values); - } - - template - T operator()(Args&&...) const { - return state_->Next(); - } - - private: - struct State { - T Next() { - T ret_val = values[i++]; - if (i == values.size()) i = 0; - return ret_val; - } - - std::vector values; - size_t i = 0; - }; - std::shared_ptr state_ = std::make_shared(); -}; - -// Implements the polymorphic DoDefault() action. -class DoDefaultAction { - public: - // This template type conversion operator allows DoDefault() to be - // used in any function. - template - operator Action() const { - return Action(); - } // NOLINT -}; - -// Implements the Assign action to set a given pointer referent to a -// particular value. -template -class AssignAction { - public: - AssignAction(T1* ptr, T2 value) : ptr_(ptr), value_(value) {} - - template - void Perform(const ArgumentTuple& /* args */) const { - *ptr_ = value_; - } - - private: - T1* const ptr_; - const T2 value_; -}; - -#if !GTEST_OS_WINDOWS_MOBILE - -// Implements the SetErrnoAndReturn action to simulate return from -// various system calls and libc functions. -template -class SetErrnoAndReturnAction { - public: - SetErrnoAndReturnAction(int errno_value, T result) - : errno_(errno_value), result_(result) {} - template - Result Perform(const ArgumentTuple& /* args */) const { - errno = errno_; - return result_; - } - - private: - const int errno_; - const T result_; -}; - -#endif // !GTEST_OS_WINDOWS_MOBILE - -// Implements the SetArgumentPointee(x) action for any function -// whose N-th argument (0-based) is a pointer to x's type. -template -struct SetArgumentPointeeAction { - A value; - - template - void operator()(const Args&... args) const { - *::std::get(std::tie(args...)) = value; - } -}; - -// Implements the Invoke(object_ptr, &Class::Method) action. -template -struct InvokeMethodAction { - Class* const obj_ptr; - const MethodPtr method_ptr; - - template - auto operator()(Args&&... args) const - -> decltype((obj_ptr->*method_ptr)(std::forward(args)...)) { - return (obj_ptr->*method_ptr)(std::forward(args)...); - } -}; - -// Implements the InvokeWithoutArgs(f) action. The template argument -// FunctionImpl is the implementation type of f, which can be either a -// function pointer or a functor. InvokeWithoutArgs(f) can be used as an -// Action as long as f's type is compatible with F. -template -struct InvokeWithoutArgsAction { - FunctionImpl function_impl; - - // Allows InvokeWithoutArgs(f) to be used as any action whose type is - // compatible with f. - template - auto operator()(const Args&...) -> decltype(function_impl()) { - return function_impl(); - } -}; - -// Implements the InvokeWithoutArgs(object_ptr, &Class::Method) action. -template -struct InvokeMethodWithoutArgsAction { - Class* const obj_ptr; - const MethodPtr method_ptr; - - using ReturnType = - decltype((std::declval()->*std::declval())()); - - template - ReturnType operator()(const Args&...) const { - return (obj_ptr->*method_ptr)(); - } -}; - -// Implements the IgnoreResult(action) action. -template -class IgnoreResultAction { - public: - explicit IgnoreResultAction(const A& action) : action_(action) {} - - template - operator Action() const { - // Assert statement belongs here because this is the best place to verify - // conditions on F. It produces the clearest error messages - // in most compilers. - // Impl really belongs in this scope as a local class but can't - // because MSVC produces duplicate symbols in different translation units - // in this case. Until MS fixes that bug we put Impl into the class scope - // and put the typedef both here (for use in assert statement) and - // in the Impl class. But both definitions must be the same. - typedef typename internal::Function::Result Result; - - // Asserts at compile time that F returns void. - static_assert(std::is_void::value, "Result type should be void."); - - return Action(new Impl(action_)); - } - - private: - template - class Impl : public ActionInterface { - public: - typedef typename internal::Function::Result Result; - typedef typename internal::Function::ArgumentTuple ArgumentTuple; - - explicit Impl(const A& action) : action_(action) {} - - void Perform(const ArgumentTuple& args) override { - // Performs the action and ignores its result. - action_.Perform(args); - } - - private: - // Type OriginalFunction is the same as F except that its return - // type is IgnoredValue. - typedef - typename internal::Function::MakeResultIgnoredValue OriginalFunction; - - const Action action_; - }; - - const A action_; -}; - -template -struct WithArgsAction { - InnerAction inner_action; - - // The signature of the function as seen by the inner action, given an out - // action with the given result and argument types. - template - using InnerSignature = - R(typename std::tuple_element>::type...); - - // Rather than a call operator, we must define conversion operators to - // particular action types. This is necessary for embedded actions like - // DoDefault(), which rely on an action conversion operators rather than - // providing a call operator because even with a particular set of arguments - // they don't have a fixed return type. - - template >::type...)>>::value, - int>::type = 0> - operator OnceAction() && { // NOLINT - struct OA { - OnceAction> inner_action; - - R operator()(Args&&... args) && { - return std::move(inner_action) - .Call(std::get( - std::forward_as_tuple(std::forward(args)...))...); - } - }; - - return OA{std::move(inner_action)}; - } - - template >::type...)>>::value, - int>::type = 0> - operator Action() const { // NOLINT - Action> converted(inner_action); - - return [converted](Args&&... args) -> R { - return converted.Perform(std::forward_as_tuple( - std::get(std::forward_as_tuple(std::forward(args)...))...)); - }; - } -}; - -template -class DoAllAction; - -// Base case: only a single action. -template -class DoAllAction { - public: - struct UserConstructorTag {}; - - template - explicit DoAllAction(UserConstructorTag, T&& action) - : final_action_(std::forward(action)) {} - - // Rather than a call operator, we must define conversion operators to - // particular action types. This is necessary for embedded actions like - // DoDefault(), which rely on an action conversion operators rather than - // providing a call operator because even with a particular set of arguments - // they don't have a fixed return type. - - template >::value, - int>::type = 0> - operator OnceAction() && { // NOLINT - return std::move(final_action_); - } - - template < - typename R, typename... Args, - typename std::enable_if< - std::is_convertible>::value, - int>::type = 0> - operator Action() const { // NOLINT - return final_action_; - } - - private: - FinalAction final_action_; -}; - -// Recursive case: support N actions by calling the initial action and then -// calling through to the base class containing N-1 actions. -template -class DoAllAction - : private DoAllAction { - private: - using Base = DoAllAction; - - // The type of reference that should be provided to an initial action for a - // mocked function parameter of type T. - // - // There are two quirks here: - // - // * Unlike most forwarding functions, we pass scalars through by value. - // This isn't strictly necessary because an lvalue reference would work - // fine too and be consistent with other non-reference types, but it's - // perhaps less surprising. - // - // For example if the mocked function has signature void(int), then it - // might seem surprising for the user's initial action to need to be - // convertible to Action. This is perhaps less - // surprising for a non-scalar type where there may be a performance - // impact, or it might even be impossible, to pass by value. - // - // * More surprisingly, `const T&` is often not a const reference type. - // By the reference collapsing rules in C++17 [dcl.ref]/6, if T refers to - // U& or U&& for some non-scalar type U, then InitialActionArgType is - // U&. In other words, we may hand over a non-const reference. - // - // So for example, given some non-scalar type Obj we have the following - // mappings: - // - // T InitialActionArgType - // ------- ----------------------- - // Obj const Obj& - // Obj& Obj& - // Obj&& Obj& - // const Obj const Obj& - // const Obj& const Obj& - // const Obj&& const Obj& - // - // In other words, the initial actions get a mutable view of an non-scalar - // argument if and only if the mock function itself accepts a non-const - // reference type. They are never given an rvalue reference to an - // non-scalar type. - // - // This situation makes sense if you imagine use with a matcher that is - // designed to write through a reference. For example, if the caller wants - // to fill in a reference argument and then return a canned value: - // - // EXPECT_CALL(mock, Call) - // .WillOnce(DoAll(SetArgReferee<0>(17), Return(19))); - // - template - using InitialActionArgType = - typename std::conditional::value, T, const T&>::type; - - public: - struct UserConstructorTag {}; - - template - explicit DoAllAction(UserConstructorTag, T&& initial_action, - U&&... other_actions) - : Base({}, std::forward(other_actions)...), - initial_action_(std::forward(initial_action)) {} - - template ...)>>, - std::is_convertible>>::value, - int>::type = 0> - operator OnceAction() && { // NOLINT - // Return an action that first calls the initial action with arguments - // filtered through InitialActionArgType, then forwards arguments directly - // to the base class to deal with the remaining actions. - struct OA { - OnceAction...)> initial_action; - OnceAction remaining_actions; - - R operator()(Args... args) && { - std::move(initial_action) - .Call(static_cast>(args)...); - - return std::move(remaining_actions).Call(std::forward(args)...); - } - }; - - return OA{ - std::move(initial_action_), - std::move(static_cast(*this)), - }; - } - - template < - typename R, typename... Args, - typename std::enable_if< - conjunction< - // Both the initial action and the rest must support conversion to - // Action. - std::is_convertible...)>>, - std::is_convertible>>::value, - int>::type = 0> - operator Action() const { // NOLINT - // Return an action that first calls the initial action with arguments - // filtered through InitialActionArgType, then forwards arguments directly - // to the base class to deal with the remaining actions. - struct OA { - Action...)> initial_action; - Action remaining_actions; - - R operator()(Args... args) const { - initial_action.Perform(std::forward_as_tuple( - static_cast>(args)...)); - - return remaining_actions.Perform( - std::forward_as_tuple(std::forward(args)...)); - } - }; - - return OA{ - initial_action_, - static_cast(*this), - }; - } - - private: - InitialAction initial_action_; -}; - -template -struct ReturnNewAction { - T* operator()() const { - return internal::Apply( - [](const Params&... unpacked_params) { - return new T(unpacked_params...); - }, - params); - } - std::tuple params; -}; - -template -struct ReturnArgAction { - template ::type> - auto operator()(Args&&... args) const -> decltype(std::get( - std::forward_as_tuple(std::forward(args)...))) { - return std::get(std::forward_as_tuple(std::forward(args)...)); - } -}; - -template -struct SaveArgAction { - Ptr pointer; - - template - void operator()(const Args&... args) const { - *pointer = std::get(std::tie(args...)); - } -}; - -template -struct SaveArgPointeeAction { - Ptr pointer; - - template - void operator()(const Args&... args) const { - *pointer = *std::get(std::tie(args...)); - } -}; - -template -struct SetArgRefereeAction { - T value; - - template - void operator()(Args&&... args) const { - using argk_type = - typename ::std::tuple_element>::type; - static_assert(std::is_lvalue_reference::value, - "Argument must be a reference type."); - std::get(std::tie(args...)) = value; - } -}; - -template -struct SetArrayArgumentAction { - I1 first; - I2 last; - - template - void operator()(const Args&... args) const { - auto value = std::get(std::tie(args...)); - for (auto it = first; it != last; ++it, (void)++value) { - *value = *it; - } - } -}; - -template -struct DeleteArgAction { - template - void operator()(const Args&... args) const { - delete std::get(std::tie(args...)); - } -}; - -template -struct ReturnPointeeAction { - Ptr pointer; - template - auto operator()(const Args&...) const -> decltype(*pointer) { - return *pointer; - } -}; - -#if GTEST_HAS_EXCEPTIONS -template -struct ThrowAction { - T exception; - // We use a conversion operator to adapt to any return type. - template - operator Action() const { // NOLINT - T copy = exception; - return [copy](Args...) -> R { throw copy; }; - } -}; -#endif // GTEST_HAS_EXCEPTIONS - -} // namespace internal - -// An Unused object can be implicitly constructed from ANY value. -// This is handy when defining actions that ignore some or all of the -// mock function arguments. For example, given -// -// MOCK_METHOD3(Foo, double(const string& label, double x, double y)); -// MOCK_METHOD3(Bar, double(int index, double x, double y)); -// -// instead of -// -// double DistanceToOriginWithLabel(const string& label, double x, double y) { -// return sqrt(x*x + y*y); -// } -// double DistanceToOriginWithIndex(int index, double x, double y) { -// return sqrt(x*x + y*y); -// } -// ... -// EXPECT_CALL(mock, Foo("abc", _, _)) -// .WillOnce(Invoke(DistanceToOriginWithLabel)); -// EXPECT_CALL(mock, Bar(5, _, _)) -// .WillOnce(Invoke(DistanceToOriginWithIndex)); -// -// you could write -// -// // We can declare any uninteresting argument as Unused. -// double DistanceToOrigin(Unused, double x, double y) { -// return sqrt(x*x + y*y); -// } -// ... -// EXPECT_CALL(mock, Foo("abc", _, _)).WillOnce(Invoke(DistanceToOrigin)); -// EXPECT_CALL(mock, Bar(5, _, _)).WillOnce(Invoke(DistanceToOrigin)); -typedef internal::IgnoredValue Unused; - -// Creates an action that does actions a1, a2, ..., sequentially in -// each invocation. All but the last action will have a readonly view of the -// arguments. -template -internal::DoAllAction::type...> DoAll( - Action&&... action) { - return internal::DoAllAction::type...>( - {}, std::forward(action)...); -} - -// WithArg(an_action) creates an action that passes the k-th -// (0-based) argument of the mock function to an_action and performs -// it. It adapts an action accepting one argument to one that accepts -// multiple arguments. For convenience, we also provide -// WithArgs(an_action) (defined below) as a synonym. -template -internal::WithArgsAction::type, k> WithArg( - InnerAction&& action) { - return {std::forward(action)}; -} - -// WithArgs(an_action) creates an action that passes -// the selected arguments of the mock function to an_action and -// performs it. It serves as an adaptor between actions with -// different argument lists. -template -internal::WithArgsAction::type, k, ks...> -WithArgs(InnerAction&& action) { - return {std::forward(action)}; -} - -// WithoutArgs(inner_action) can be used in a mock function with a -// non-empty argument list to perform inner_action, which takes no -// argument. In other words, it adapts an action accepting no -// argument to one that accepts (and ignores) arguments. -template -internal::WithArgsAction::type> WithoutArgs( - InnerAction&& action) { - return {std::forward(action)}; -} - -// Creates an action that returns a value. -// -// The returned type can be used with a mock function returning a non-void, -// non-reference type U as follows: -// -// * If R is convertible to U and U is move-constructible, then the action can -// be used with WillOnce. -// -// * If const R& is convertible to U and U is copy-constructible, then the -// action can be used with both WillOnce and WillRepeatedly. -// -// The mock expectation contains the R value from which the U return value is -// constructed (a move/copy of the argument to Return). This means that the R -// value will survive at least until the mock object's expectations are cleared -// or the mock object is destroyed, meaning that U can safely be a -// reference-like type such as std::string_view: -// -// // The mock function returns a view of a copy of the string fed to -// // Return. The view is valid even after the action is performed. -// MockFunction mock; -// EXPECT_CALL(mock, Call).WillOnce(Return(std::string("taco"))); -// const std::string_view result = mock.AsStdFunction()(); -// EXPECT_EQ("taco", result); -// -template -internal::ReturnAction Return(R value) { - return internal::ReturnAction(std::move(value)); -} - -// Creates an action that returns NULL. -inline PolymorphicAction ReturnNull() { - return MakePolymorphicAction(internal::ReturnNullAction()); -} - -// Creates an action that returns from a void function. -inline PolymorphicAction Return() { - return MakePolymorphicAction(internal::ReturnVoidAction()); -} - -// Creates an action that returns the reference to a variable. -template -inline internal::ReturnRefAction ReturnRef(R& x) { // NOLINT - return internal::ReturnRefAction(x); -} - -// Prevent using ReturnRef on reference to temporary. -template -internal::ReturnRefAction ReturnRef(R&&) = delete; - -// Creates an action that returns the reference to a copy of the -// argument. The copy is created when the action is constructed and -// lives as long as the action. -template -inline internal::ReturnRefOfCopyAction ReturnRefOfCopy(const R& x) { - return internal::ReturnRefOfCopyAction(x); -} - -// DEPRECATED: use Return(x) directly with WillOnce. -// -// Modifies the parent action (a Return() action) to perform a move of the -// argument instead of a copy. -// Return(ByMove()) actions can only be executed once and will assert this -// invariant. -template -internal::ByMoveWrapper ByMove(R x) { - return internal::ByMoveWrapper(std::move(x)); -} - -// Creates an action that returns an element of `vals`. Calling this action will -// repeatedly return the next value from `vals` until it reaches the end and -// will restart from the beginning. -template -internal::ReturnRoundRobinAction ReturnRoundRobin(std::vector vals) { - return internal::ReturnRoundRobinAction(std::move(vals)); -} - -// Creates an action that returns an element of `vals`. Calling this action will -// repeatedly return the next value from `vals` until it reaches the end and -// will restart from the beginning. -template -internal::ReturnRoundRobinAction ReturnRoundRobin( - std::initializer_list vals) { - return internal::ReturnRoundRobinAction(std::vector(vals)); -} - -// Creates an action that does the default action for the give mock function. -inline internal::DoDefaultAction DoDefault() { - return internal::DoDefaultAction(); -} - -// Creates an action that sets the variable pointed by the N-th -// (0-based) function argument to 'value'. -template -internal::SetArgumentPointeeAction SetArgPointee(T value) { - return {std::move(value)}; -} - -// The following version is DEPRECATED. -template -internal::SetArgumentPointeeAction SetArgumentPointee(T value) { - return {std::move(value)}; -} - -// Creates an action that sets a pointer referent to a given value. -template -PolymorphicAction> Assign(T1* ptr, T2 val) { - return MakePolymorphicAction(internal::AssignAction(ptr, val)); -} - -#if !GTEST_OS_WINDOWS_MOBILE - -// Creates an action that sets errno and returns the appropriate error. -template -PolymorphicAction> SetErrnoAndReturn( - int errval, T result) { - return MakePolymorphicAction( - internal::SetErrnoAndReturnAction(errval, result)); -} - -#endif // !GTEST_OS_WINDOWS_MOBILE - -// Various overloads for Invoke(). - -// Legacy function. -// Actions can now be implicitly constructed from callables. No need to create -// wrapper objects. -// This function exists for backwards compatibility. -template -typename std::decay::type Invoke(FunctionImpl&& function_impl) { - return std::forward(function_impl); -} - -// Creates an action that invokes the given method on the given object -// with the mock function's arguments. -template -internal::InvokeMethodAction Invoke(Class* obj_ptr, - MethodPtr method_ptr) { - return {obj_ptr, method_ptr}; -} - -// Creates an action that invokes 'function_impl' with no argument. -template -internal::InvokeWithoutArgsAction::type> -InvokeWithoutArgs(FunctionImpl function_impl) { - return {std::move(function_impl)}; -} - -// Creates an action that invokes the given method on the given object -// with no argument. -template -internal::InvokeMethodWithoutArgsAction InvokeWithoutArgs( - Class* obj_ptr, MethodPtr method_ptr) { - return {obj_ptr, method_ptr}; -} - -// Creates an action that performs an_action and throws away its -// result. In other words, it changes the return type of an_action to -// void. an_action MUST NOT return void, or the code won't compile. -template -inline internal::IgnoreResultAction IgnoreResult(const A& an_action) { - return internal::IgnoreResultAction(an_action); -} - -// Creates a reference wrapper for the given L-value. If necessary, -// you can explicitly specify the type of the reference. For example, -// suppose 'derived' is an object of type Derived, ByRef(derived) -// would wrap a Derived&. If you want to wrap a const Base& instead, -// where Base is a base class of Derived, just write: -// -// ByRef(derived) -// -// N.B. ByRef is redundant with std::ref, std::cref and std::reference_wrapper. -// However, it may still be used for consistency with ByMove(). -template -inline ::std::reference_wrapper ByRef(T& l_value) { // NOLINT - return ::std::reference_wrapper(l_value); -} - -// The ReturnNew(a1, a2, ..., a_k) action returns a pointer to a new -// instance of type T, constructed on the heap with constructor arguments -// a1, a2, ..., and a_k. The caller assumes ownership of the returned value. -template -internal::ReturnNewAction::type...> ReturnNew( - Params&&... params) { - return {std::forward_as_tuple(std::forward(params)...)}; -} - -// Action ReturnArg() returns the k-th argument of the mock function. -template -internal::ReturnArgAction ReturnArg() { - return {}; -} - -// Action SaveArg(pointer) saves the k-th (0-based) argument of the -// mock function to *pointer. -template -internal::SaveArgAction SaveArg(Ptr pointer) { - return {pointer}; -} - -// Action SaveArgPointee(pointer) saves the value pointed to -// by the k-th (0-based) argument of the mock function to *pointer. -template -internal::SaveArgPointeeAction SaveArgPointee(Ptr pointer) { - return {pointer}; -} - -// Action SetArgReferee(value) assigns 'value' to the variable -// referenced by the k-th (0-based) argument of the mock function. -template -internal::SetArgRefereeAction::type> SetArgReferee( - T&& value) { - return {std::forward(value)}; -} - -// Action SetArrayArgument(first, last) copies the elements in -// source range [first, last) to the array pointed to by the k-th -// (0-based) argument, which can be either a pointer or an -// iterator. The action does not take ownership of the elements in the -// source range. -template -internal::SetArrayArgumentAction SetArrayArgument(I1 first, - I2 last) { - return {first, last}; -} - -// Action DeleteArg() deletes the k-th (0-based) argument of the mock -// function. -template -internal::DeleteArgAction DeleteArg() { - return {}; -} - -// This action returns the value pointed to by 'pointer'. -template -internal::ReturnPointeeAction ReturnPointee(Ptr pointer) { - return {pointer}; -} - -// Action Throw(exception) can be used in a mock function of any type -// to throw the given exception. Any copyable value can be thrown. -#if GTEST_HAS_EXCEPTIONS -template -internal::ThrowAction::type> Throw(T&& exception) { - return {std::forward(exception)}; -} -#endif // GTEST_HAS_EXCEPTIONS - -namespace internal { - -// A macro from the ACTION* family (defined later in gmock-generated-actions.h) -// defines an action that can be used in a mock function. Typically, -// these actions only care about a subset of the arguments of the mock -// function. For example, if such an action only uses the second -// argument, it can be used in any mock function that takes >= 2 -// arguments where the type of the second argument is compatible. -// -// Therefore, the action implementation must be prepared to take more -// arguments than it needs. The ExcessiveArg type is used to -// represent those excessive arguments. In order to keep the compiler -// error messages tractable, we define it in the testing namespace -// instead of testing::internal. However, this is an INTERNAL TYPE -// and subject to change without notice, so a user MUST NOT USE THIS -// TYPE DIRECTLY. -struct ExcessiveArg {}; - -// Builds an implementation of an Action<> for some particular signature, using -// a class defined by an ACTION* macro. -template -struct ActionImpl; - -template -struct ImplBase { - struct Holder { - // Allows each copy of the Action<> to get to the Impl. - explicit operator const Impl&() const { return *ptr; } - std::shared_ptr ptr; - }; - using type = typename std::conditional::value, - Impl, Holder>::type; -}; - -template -struct ActionImpl : ImplBase::type { - using Base = typename ImplBase::type; - using function_type = R(Args...); - using args_type = std::tuple; - - ActionImpl() = default; // Only defined if appropriate for Base. - explicit ActionImpl(std::shared_ptr impl) : Base{std::move(impl)} {} - - R operator()(Args&&... arg) const { - static constexpr size_t kMaxArgs = - sizeof...(Args) <= 10 ? sizeof...(Args) : 10; - return Apply(MakeIndexSequence{}, - MakeIndexSequence<10 - kMaxArgs>{}, - args_type{std::forward(arg)...}); - } - - template - R Apply(IndexSequence, IndexSequence, - const args_type& args) const { - // Impl need not be specific to the signature of action being implemented; - // only the implementing function body needs to have all of the specific - // types instantiated. Up to 10 of the args that are provided by the - // args_type get passed, followed by a dummy of unspecified type for the - // remainder up to 10 explicit args. - static constexpr ExcessiveArg kExcessArg{}; - return static_cast(*this) - .template gmock_PerformImpl< - /*function_type=*/function_type, /*return_type=*/R, - /*args_type=*/args_type, - /*argN_type=*/ - typename std::tuple_element::type...>( - /*args=*/args, std::get(args)..., - ((void)excess_id, kExcessArg)...); - } -}; - -// Stores a default-constructed Impl as part of the Action<>'s -// std::function<>. The Impl should be trivial to copy. -template -::testing::Action MakeAction() { - return ::testing::Action(ActionImpl()); -} - -// Stores just the one given instance of Impl. -template -::testing::Action MakeAction(std::shared_ptr impl) { - return ::testing::Action(ActionImpl(std::move(impl))); -} - -#define GMOCK_INTERNAL_ARG_UNUSED(i, data, el) \ - , const arg##i##_type& arg##i GTEST_ATTRIBUTE_UNUSED_ -#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_ \ - const args_type& args GTEST_ATTRIBUTE_UNUSED_ GMOCK_PP_REPEAT( \ - GMOCK_INTERNAL_ARG_UNUSED, , 10) - -#define GMOCK_INTERNAL_ARG(i, data, el) , const arg##i##_type& arg##i -#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_ \ - const args_type& args GMOCK_PP_REPEAT(GMOCK_INTERNAL_ARG, , 10) - -#define GMOCK_INTERNAL_TEMPLATE_ARG(i, data, el) , typename arg##i##_type -#define GMOCK_ACTION_TEMPLATE_ARGS_NAMES_ \ - GMOCK_PP_TAIL(GMOCK_PP_REPEAT(GMOCK_INTERNAL_TEMPLATE_ARG, , 10)) - -#define GMOCK_INTERNAL_TYPENAME_PARAM(i, data, param) , typename param##_type -#define GMOCK_ACTION_TYPENAME_PARAMS_(params) \ - GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_TYPENAME_PARAM, , params)) - -#define GMOCK_INTERNAL_TYPE_PARAM(i, data, param) , param##_type -#define GMOCK_ACTION_TYPE_PARAMS_(params) \ - GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_TYPE_PARAM, , params)) - -#define GMOCK_INTERNAL_TYPE_GVALUE_PARAM(i, data, param) \ - , param##_type gmock_p##i -#define GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params) \ - GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_TYPE_GVALUE_PARAM, , params)) - -#define GMOCK_INTERNAL_GVALUE_PARAM(i, data, param) \ - , std::forward(gmock_p##i) -#define GMOCK_ACTION_GVALUE_PARAMS_(params) \ - GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GVALUE_PARAM, , params)) - -#define GMOCK_INTERNAL_INIT_PARAM(i, data, param) \ - , param(::std::forward(gmock_p##i)) -#define GMOCK_ACTION_INIT_PARAMS_(params) \ - GMOCK_PP_TAIL(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_INIT_PARAM, , params)) - -#define GMOCK_INTERNAL_FIELD_PARAM(i, data, param) param##_type param; -#define GMOCK_ACTION_FIELD_PARAMS_(params) \ - GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_FIELD_PARAM, , params) - -#define GMOCK_INTERNAL_ACTION(name, full_name, params) \ - template \ - class full_name { \ - public: \ - explicit full_name(GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params)) \ - : impl_(std::make_shared( \ - GMOCK_ACTION_GVALUE_PARAMS_(params))) {} \ - full_name(const full_name&) = default; \ - full_name(full_name&&) noexcept = default; \ - template \ - operator ::testing::Action() const { \ - return ::testing::internal::MakeAction(impl_); \ - } \ - \ - private: \ - class gmock_Impl { \ - public: \ - explicit gmock_Impl(GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params)) \ - : GMOCK_ACTION_INIT_PARAMS_(params) {} \ - template \ - return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const; \ - GMOCK_ACTION_FIELD_PARAMS_(params) \ - }; \ - std::shared_ptr impl_; \ - }; \ - template \ - inline full_name name( \ - GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params)) GTEST_MUST_USE_RESULT_; \ - template \ - inline full_name name( \ - GMOCK_ACTION_TYPE_GVALUE_PARAMS_(params)) { \ - return full_name( \ - GMOCK_ACTION_GVALUE_PARAMS_(params)); \ - } \ - template \ - template \ - return_type \ - full_name::gmock_Impl::gmock_PerformImpl( \ - GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const - -} // namespace internal - -// Similar to GMOCK_INTERNAL_ACTION, but no bound parameters are stored. -#define ACTION(name) \ - class name##Action { \ - public: \ - explicit name##Action() noexcept {} \ - name##Action(const name##Action&) noexcept {} \ - template \ - operator ::testing::Action() const { \ - return ::testing::internal::MakeAction(); \ - } \ - \ - private: \ - class gmock_Impl { \ - public: \ - template \ - return_type gmock_PerformImpl(GMOCK_ACTION_ARG_TYPES_AND_NAMES_) const; \ - }; \ - }; \ - inline name##Action name() GTEST_MUST_USE_RESULT_; \ - inline name##Action name() { return name##Action(); } \ - template \ - return_type name##Action::gmock_Impl::gmock_PerformImpl( \ - GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const - -#define ACTION_P(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP, (__VA_ARGS__)) - -#define ACTION_P2(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP2, (__VA_ARGS__)) - -#define ACTION_P3(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP3, (__VA_ARGS__)) - -#define ACTION_P4(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP4, (__VA_ARGS__)) - -#define ACTION_P5(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP5, (__VA_ARGS__)) - -#define ACTION_P6(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP6, (__VA_ARGS__)) - -#define ACTION_P7(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP7, (__VA_ARGS__)) - -#define ACTION_P8(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP8, (__VA_ARGS__)) - -#define ACTION_P9(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP9, (__VA_ARGS__)) - -#define ACTION_P10(name, ...) \ - GMOCK_INTERNAL_ACTION(name, name##ActionP10, (__VA_ARGS__)) - -} // namespace testing - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#endif // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_ diff --git a/tests/lib/googlemock/include/gmock/gmock-cardinalities.h b/tests/lib/googlemock/include/gmock/gmock-cardinalities.h deleted file mode 100644 index b6ab648e50..0000000000 --- a/tests/lib/googlemock/include/gmock/gmock-cardinalities.h +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Google Mock - a framework for writing C++ mock classes. -// -// This file implements some commonly used cardinalities. More -// cardinalities can be defined by the user implementing the -// CardinalityInterface interface if necessary. - -// IWYU pragma: private, include "gmock/gmock.h" -// IWYU pragma: friend gmock/.* - -#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_ -#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_ - -#include - -#include -#include // NOLINT - -#include "gmock/internal/gmock-port.h" -#include "gtest/gtest.h" - -GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \ -/* class A needs to have dll-interface to be used by clients of class B */) - -namespace testing { - -// To implement a cardinality Foo, define: -// 1. a class FooCardinality that implements the -// CardinalityInterface interface, and -// 2. a factory function that creates a Cardinality object from a -// const FooCardinality*. -// -// The two-level delegation design follows that of Matcher, providing -// consistency for extension developers. It also eases ownership -// management as Cardinality objects can now be copied like plain values. - -// The implementation of a cardinality. -class CardinalityInterface { - public: - virtual ~CardinalityInterface() {} - - // Conservative estimate on the lower/upper bound of the number of - // calls allowed. - virtual int ConservativeLowerBound() const { return 0; } - virtual int ConservativeUpperBound() const { return INT_MAX; } - - // Returns true if and only if call_count calls will satisfy this - // cardinality. - virtual bool IsSatisfiedByCallCount(int call_count) const = 0; - - // Returns true if and only if call_count calls will saturate this - // cardinality. - virtual bool IsSaturatedByCallCount(int call_count) const = 0; - - // Describes self to an ostream. - virtual void DescribeTo(::std::ostream* os) const = 0; -}; - -// A Cardinality is a copyable and IMMUTABLE (except by assignment) -// object that specifies how many times a mock function is expected to -// be called. The implementation of Cardinality is just a std::shared_ptr -// to const CardinalityInterface. Don't inherit from Cardinality! -class GTEST_API_ Cardinality { - public: - // Constructs a null cardinality. Needed for storing Cardinality - // objects in STL containers. - Cardinality() {} - - // Constructs a Cardinality from its implementation. - explicit Cardinality(const CardinalityInterface* impl) : impl_(impl) {} - - // Conservative estimate on the lower/upper bound of the number of - // calls allowed. - int ConservativeLowerBound() const { return impl_->ConservativeLowerBound(); } - int ConservativeUpperBound() const { return impl_->ConservativeUpperBound(); } - - // Returns true if and only if call_count calls will satisfy this - // cardinality. - bool IsSatisfiedByCallCount(int call_count) const { - return impl_->IsSatisfiedByCallCount(call_count); - } - - // Returns true if and only if call_count calls will saturate this - // cardinality. - bool IsSaturatedByCallCount(int call_count) const { - return impl_->IsSaturatedByCallCount(call_count); - } - - // Returns true if and only if call_count calls will over-saturate this - // cardinality, i.e. exceed the maximum number of allowed calls. - bool IsOverSaturatedByCallCount(int call_count) const { - return impl_->IsSaturatedByCallCount(call_count) && - !impl_->IsSatisfiedByCallCount(call_count); - } - - // Describes self to an ostream - void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); } - - // Describes the given actual call count to an ostream. - static void DescribeActualCallCountTo(int actual_call_count, - ::std::ostream* os); - - private: - std::shared_ptr impl_; -}; - -// Creates a cardinality that allows at least n calls. -GTEST_API_ Cardinality AtLeast(int n); - -// Creates a cardinality that allows at most n calls. -GTEST_API_ Cardinality AtMost(int n); - -// Creates a cardinality that allows any number of calls. -GTEST_API_ Cardinality AnyNumber(); - -// Creates a cardinality that allows between min and max calls. -GTEST_API_ Cardinality Between(int min, int max); - -// Creates a cardinality that allows exactly n calls. -GTEST_API_ Cardinality Exactly(int n); - -// Creates a cardinality from its implementation. -inline Cardinality MakeCardinality(const CardinalityInterface* c) { - return Cardinality(c); -} - -} // namespace testing - -GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251 - -#endif // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_ diff --git a/tests/lib/googlemock/include/gmock/gmock-function-mocker.h b/tests/lib/googlemock/include/gmock/gmock-function-mocker.h deleted file mode 100644 index f565d980c5..0000000000 --- a/tests/lib/googlemock/include/gmock/gmock-function-mocker.h +++ /dev/null @@ -1,514 +0,0 @@ -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Google Mock - a framework for writing C++ mock classes. -// -// This file implements MOCK_METHOD. - -// IWYU pragma: private, include "gmock/gmock.h" -// IWYU pragma: friend gmock/.* - -#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT -#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT - -#include // IWYU pragma: keep -#include // IWYU pragma: keep - -#include "gmock/gmock-spec-builders.h" -#include "gmock/internal/gmock-internal-utils.h" -#include "gmock/internal/gmock-pp.h" - -namespace testing { -namespace internal { -template -using identity_t = T; - -template -struct ThisRefAdjuster { - template - using AdjustT = typename std::conditional< - std::is_const::type>::value, - typename std::conditional::value, - const T&, const T&&>::type, - typename std::conditional::value, T&, - T&&>::type>::type; - - template - static AdjustT Adjust(const MockType& mock) { - return static_cast>(const_cast(mock)); - } -}; - -constexpr bool PrefixOf(const char* a, const char* b) { - return *a == 0 || (*a == *b && internal::PrefixOf(a + 1, b + 1)); -} - -template -constexpr bool StartsWith(const char (&prefix)[N], const char (&str)[M]) { - return N <= M && internal::PrefixOf(prefix, str); -} - -template -constexpr bool EndsWith(const char (&suffix)[N], const char (&str)[M]) { - return N <= M && internal::PrefixOf(suffix, str + M - N); -} - -template -constexpr bool Equals(const char (&a)[N], const char (&b)[M]) { - return N == M && internal::PrefixOf(a, b); -} - -template -constexpr bool ValidateSpec(const char (&spec)[N]) { - return internal::Equals("const", spec) || - internal::Equals("override", spec) || - internal::Equals("final", spec) || - internal::Equals("noexcept", spec) || - (internal::StartsWith("noexcept(", spec) && - internal::EndsWith(")", spec)) || - internal::Equals("ref(&)", spec) || - internal::Equals("ref(&&)", spec) || - (internal::StartsWith("Calltype(", spec) && - internal::EndsWith(")", spec)); -} - -} // namespace internal - -// The style guide prohibits "using" statements in a namespace scope -// inside a header file. However, the FunctionMocker class template -// is meant to be defined in the ::testing namespace. The following -// line is just a trick for working around a bug in MSVC 8.0, which -// cannot handle it if we define FunctionMocker in ::testing. -using internal::FunctionMocker; -} // namespace testing - -#define MOCK_METHOD(...) \ - GMOCK_PP_VARIADIC_CALL(GMOCK_INTERNAL_MOCK_METHOD_ARG_, __VA_ARGS__) - -#define GMOCK_INTERNAL_MOCK_METHOD_ARG_1(...) \ - GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) - -#define GMOCK_INTERNAL_MOCK_METHOD_ARG_2(...) \ - GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) - -#define GMOCK_INTERNAL_MOCK_METHOD_ARG_3(_Ret, _MethodName, _Args) \ - GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, ()) - -#define GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, _Spec) \ - GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Args); \ - GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Spec); \ - GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE( \ - GMOCK_PP_NARG0 _Args, GMOCK_INTERNAL_SIGNATURE(_Ret, _Args)); \ - GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) \ - GMOCK_INTERNAL_MOCK_METHOD_IMPL( \ - GMOCK_PP_NARG0 _Args, _MethodName, GMOCK_INTERNAL_HAS_CONST(_Spec), \ - GMOCK_INTERNAL_HAS_OVERRIDE(_Spec), GMOCK_INTERNAL_HAS_FINAL(_Spec), \ - GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Spec), \ - GMOCK_INTERNAL_GET_CALLTYPE_SPEC(_Spec), \ - GMOCK_INTERNAL_GET_REF_SPEC(_Spec), \ - (GMOCK_INTERNAL_SIGNATURE(_Ret, _Args))) - -#define GMOCK_INTERNAL_MOCK_METHOD_ARG_5(...) \ - GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) - -#define GMOCK_INTERNAL_MOCK_METHOD_ARG_6(...) \ - GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) - -#define GMOCK_INTERNAL_MOCK_METHOD_ARG_7(...) \ - GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) - -#define GMOCK_INTERNAL_WRONG_ARITY(...) \ - static_assert( \ - false, \ - "MOCK_METHOD must be called with 3 or 4 arguments. _Ret, " \ - "_MethodName, _Args and optionally _Spec. _Args and _Spec must be " \ - "enclosed in parentheses. If _Ret is a type with unprotected commas, " \ - "it must also be enclosed in parentheses.") - -#define GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Tuple) \ - static_assert( \ - GMOCK_PP_IS_ENCLOSED_PARENS(_Tuple), \ - GMOCK_PP_STRINGIZE(_Tuple) " should be enclosed in parentheses.") - -#define GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(_N, ...) \ - static_assert( \ - std::is_function<__VA_ARGS__>::value, \ - "Signature must be a function type, maybe return type contains " \ - "unprotected comma."); \ - static_assert( \ - ::testing::tuple_size::ArgumentTuple>::value == _N, \ - "This method does not take " GMOCK_PP_STRINGIZE( \ - _N) " arguments. Parenthesize all types with unprotected commas.") - -#define GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) \ - GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT, ~, _Spec) - -#define GMOCK_INTERNAL_MOCK_METHOD_IMPL(_N, _MethodName, _Constness, \ - _Override, _Final, _NoexceptSpec, \ - _CallType, _RefSpec, _Signature) \ - typename ::testing::internal::Function::Result \ - GMOCK_INTERNAL_EXPAND(_CallType) \ - _MethodName(GMOCK_PP_REPEAT(GMOCK_INTERNAL_PARAMETER, _Signature, _N)) \ - GMOCK_PP_IF(_Constness, const, ) _RefSpec _NoexceptSpec \ - GMOCK_PP_IF(_Override, override, ) GMOCK_PP_IF(_Final, final, ) { \ - GMOCK_MOCKER_(_N, _Constness, _MethodName) \ - .SetOwnerAndName(this, #_MethodName); \ - return GMOCK_MOCKER_(_N, _Constness, _MethodName) \ - .Invoke(GMOCK_PP_REPEAT(GMOCK_INTERNAL_FORWARD_ARG, _Signature, _N)); \ - } \ - ::testing::MockSpec gmock_##_MethodName( \ - GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_PARAMETER, _Signature, _N)) \ - GMOCK_PP_IF(_Constness, const, ) _RefSpec { \ - GMOCK_MOCKER_(_N, _Constness, _MethodName).RegisterOwner(this); \ - return GMOCK_MOCKER_(_N, _Constness, _MethodName) \ - .With(GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_ARGUMENT, , _N)); \ - } \ - ::testing::MockSpec gmock_##_MethodName( \ - const ::testing::internal::WithoutMatchers&, \ - GMOCK_PP_IF(_Constness, const, )::testing::internal::Function< \ - GMOCK_PP_REMOVE_PARENS(_Signature)>*) const _RefSpec _NoexceptSpec { \ - return ::testing::internal::ThisRefAdjuster::Adjust(*this) \ - .gmock_##_MethodName(GMOCK_PP_REPEAT( \ - GMOCK_INTERNAL_A_MATCHER_ARGUMENT, _Signature, _N)); \ - } \ - mutable ::testing::FunctionMocker \ - GMOCK_MOCKER_(_N, _Constness, _MethodName) - -#define GMOCK_INTERNAL_EXPAND(...) __VA_ARGS__ - -// Valid modifiers. -#define GMOCK_INTERNAL_HAS_CONST(_Tuple) \ - GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_CONST, ~, _Tuple)) - -#define GMOCK_INTERNAL_HAS_OVERRIDE(_Tuple) \ - GMOCK_PP_HAS_COMMA( \ - GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_OVERRIDE, ~, _Tuple)) - -#define GMOCK_INTERNAL_HAS_FINAL(_Tuple) \ - GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_FINAL, ~, _Tuple)) - -#define GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Tuple) \ - GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_NOEXCEPT_SPEC_IF_NOEXCEPT, ~, _Tuple) - -#define GMOCK_INTERNAL_NOEXCEPT_SPEC_IF_NOEXCEPT(_i, _, _elem) \ - GMOCK_PP_IF( \ - GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)), \ - _elem, ) - -#define GMOCK_INTERNAL_GET_CALLTYPE_SPEC(_Tuple) \ - GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_CALLTYPE_SPEC_IF_CALLTYPE, ~, _Tuple) - -#define GMOCK_INTERNAL_CALLTYPE_SPEC_IF_CALLTYPE(_i, _, _elem) \ - GMOCK_PP_IF( \ - GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_CALLTYPE(_i, _, _elem)), \ - GMOCK_PP_CAT(GMOCK_INTERNAL_UNPACK_, _elem), ) - -#define GMOCK_INTERNAL_GET_REF_SPEC(_Tuple) \ - GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_REF_SPEC_IF_REF, ~, _Tuple) - -#define GMOCK_INTERNAL_REF_SPEC_IF_REF(_i, _, _elem) \ - GMOCK_PP_IF(GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_REF(_i, _, _elem)), \ - GMOCK_PP_CAT(GMOCK_INTERNAL_UNPACK_, _elem), ) - -#ifdef GMOCK_INTERNAL_STRICT_SPEC_ASSERT -#define GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT(_i, _, _elem) \ - static_assert( \ - ::testing::internal::ValidateSpec(GMOCK_PP_STRINGIZE(_elem)), \ - "Token \'" GMOCK_PP_STRINGIZE( \ - _elem) "\' cannot be recognized as a valid specification " \ - "modifier. Is a ',' missing?"); -#else -#define GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT(_i, _, _elem) \ - static_assert( \ - (GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem)) + \ - GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem)) + \ - GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem)) + \ - GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)) + \ - GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_REF(_i, _, _elem)) + \ - GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_CALLTYPE(_i, _, _elem))) == 1, \ - GMOCK_PP_STRINGIZE( \ - _elem) " cannot be recognized as a valid specification modifier."); -#endif // GMOCK_INTERNAL_STRICT_SPEC_ASSERT - -// Modifiers implementation. -#define GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem) \ - GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_CONST_I_, _elem) - -#define GMOCK_INTERNAL_DETECT_CONST_I_const , - -#define GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem) \ - GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_OVERRIDE_I_, _elem) - -#define GMOCK_INTERNAL_DETECT_OVERRIDE_I_override , - -#define GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem) \ - GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_FINAL_I_, _elem) - -#define GMOCK_INTERNAL_DETECT_FINAL_I_final , - -#define GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem) \ - GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_NOEXCEPT_I_, _elem) - -#define GMOCK_INTERNAL_DETECT_NOEXCEPT_I_noexcept , - -#define GMOCK_INTERNAL_DETECT_REF(_i, _, _elem) \ - GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_REF_I_, _elem) - -#define GMOCK_INTERNAL_DETECT_REF_I_ref , - -#define GMOCK_INTERNAL_UNPACK_ref(x) x - -#define GMOCK_INTERNAL_DETECT_CALLTYPE(_i, _, _elem) \ - GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_CALLTYPE_I_, _elem) - -#define GMOCK_INTERNAL_DETECT_CALLTYPE_I_Calltype , - -#define GMOCK_INTERNAL_UNPACK_Calltype(...) __VA_ARGS__ - -// Note: The use of `identity_t` here allows _Ret to represent return types that -// would normally need to be specified in a different way. For example, a method -// returning a function pointer must be written as -// -// fn_ptr_return_t (*method(method_args_t...))(fn_ptr_args_t...) -// -// But we only support placing the return type at the beginning. To handle this, -// we wrap all calls in identity_t, so that a declaration will be expanded to -// -// identity_t method(method_args_t...) -// -// This allows us to work around the syntactic oddities of function/method -// types. -#define GMOCK_INTERNAL_SIGNATURE(_Ret, _Args) \ - ::testing::internal::identity_t( \ - GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_TYPE, _, _Args)) - -#define GMOCK_INTERNAL_GET_TYPE(_i, _, _elem) \ - GMOCK_PP_COMMA_IF(_i) \ - GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(_elem), GMOCK_PP_REMOVE_PARENS, \ - GMOCK_PP_IDENTITY) \ - (_elem) - -#define GMOCK_INTERNAL_PARAMETER(_i, _Signature, _) \ - GMOCK_PP_COMMA_IF(_i) \ - GMOCK_INTERNAL_ARG_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature)) \ - gmock_a##_i - -#define GMOCK_INTERNAL_FORWARD_ARG(_i, _Signature, _) \ - GMOCK_PP_COMMA_IF(_i) \ - ::std::forward(gmock_a##_i) - -#define GMOCK_INTERNAL_MATCHER_PARAMETER(_i, _Signature, _) \ - GMOCK_PP_COMMA_IF(_i) \ - GMOCK_INTERNAL_MATCHER_O(_i, GMOCK_PP_REMOVE_PARENS(_Signature)) \ - gmock_a##_i - -#define GMOCK_INTERNAL_MATCHER_ARGUMENT(_i, _1, _2) \ - GMOCK_PP_COMMA_IF(_i) \ - gmock_a##_i - -#define GMOCK_INTERNAL_A_MATCHER_ARGUMENT(_i, _Signature, _) \ - GMOCK_PP_COMMA_IF(_i) \ - ::testing::A() - -#define GMOCK_INTERNAL_ARG_O(_i, ...) \ - typename ::testing::internal::Function<__VA_ARGS__>::template Arg<_i>::type - -#define GMOCK_INTERNAL_MATCHER_O(_i, ...) \ - const ::testing::Matcher::template Arg<_i>::type>& - -#define MOCK_METHOD0(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 0, __VA_ARGS__) -#define MOCK_METHOD1(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 1, __VA_ARGS__) -#define MOCK_METHOD2(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 2, __VA_ARGS__) -#define MOCK_METHOD3(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 3, __VA_ARGS__) -#define MOCK_METHOD4(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 4, __VA_ARGS__) -#define MOCK_METHOD5(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 5, __VA_ARGS__) -#define MOCK_METHOD6(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 6, __VA_ARGS__) -#define MOCK_METHOD7(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 7, __VA_ARGS__) -#define MOCK_METHOD8(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 8, __VA_ARGS__) -#define MOCK_METHOD9(m, ...) GMOCK_INTERNAL_MOCK_METHODN(, , m, 9, __VA_ARGS__) -#define MOCK_METHOD10(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, , m, 10, __VA_ARGS__) - -#define MOCK_CONST_METHOD0(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 0, __VA_ARGS__) -#define MOCK_CONST_METHOD1(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 1, __VA_ARGS__) -#define MOCK_CONST_METHOD2(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 2, __VA_ARGS__) -#define MOCK_CONST_METHOD3(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 3, __VA_ARGS__) -#define MOCK_CONST_METHOD4(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 4, __VA_ARGS__) -#define MOCK_CONST_METHOD5(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 5, __VA_ARGS__) -#define MOCK_CONST_METHOD6(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 6, __VA_ARGS__) -#define MOCK_CONST_METHOD7(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 7, __VA_ARGS__) -#define MOCK_CONST_METHOD8(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 8, __VA_ARGS__) -#define MOCK_CONST_METHOD9(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 9, __VA_ARGS__) -#define MOCK_CONST_METHOD10(m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, , m, 10, __VA_ARGS__) - -#define MOCK_METHOD0_T(m, ...) MOCK_METHOD0(m, __VA_ARGS__) -#define MOCK_METHOD1_T(m, ...) MOCK_METHOD1(m, __VA_ARGS__) -#define MOCK_METHOD2_T(m, ...) MOCK_METHOD2(m, __VA_ARGS__) -#define MOCK_METHOD3_T(m, ...) MOCK_METHOD3(m, __VA_ARGS__) -#define MOCK_METHOD4_T(m, ...) MOCK_METHOD4(m, __VA_ARGS__) -#define MOCK_METHOD5_T(m, ...) MOCK_METHOD5(m, __VA_ARGS__) -#define MOCK_METHOD6_T(m, ...) MOCK_METHOD6(m, __VA_ARGS__) -#define MOCK_METHOD7_T(m, ...) MOCK_METHOD7(m, __VA_ARGS__) -#define MOCK_METHOD8_T(m, ...) MOCK_METHOD8(m, __VA_ARGS__) -#define MOCK_METHOD9_T(m, ...) MOCK_METHOD9(m, __VA_ARGS__) -#define MOCK_METHOD10_T(m, ...) MOCK_METHOD10(m, __VA_ARGS__) - -#define MOCK_CONST_METHOD0_T(m, ...) MOCK_CONST_METHOD0(m, __VA_ARGS__) -#define MOCK_CONST_METHOD1_T(m, ...) MOCK_CONST_METHOD1(m, __VA_ARGS__) -#define MOCK_CONST_METHOD2_T(m, ...) MOCK_CONST_METHOD2(m, __VA_ARGS__) -#define MOCK_CONST_METHOD3_T(m, ...) MOCK_CONST_METHOD3(m, __VA_ARGS__) -#define MOCK_CONST_METHOD4_T(m, ...) MOCK_CONST_METHOD4(m, __VA_ARGS__) -#define MOCK_CONST_METHOD5_T(m, ...) MOCK_CONST_METHOD5(m, __VA_ARGS__) -#define MOCK_CONST_METHOD6_T(m, ...) MOCK_CONST_METHOD6(m, __VA_ARGS__) -#define MOCK_CONST_METHOD7_T(m, ...) MOCK_CONST_METHOD7(m, __VA_ARGS__) -#define MOCK_CONST_METHOD8_T(m, ...) MOCK_CONST_METHOD8(m, __VA_ARGS__) -#define MOCK_CONST_METHOD9_T(m, ...) MOCK_CONST_METHOD9(m, __VA_ARGS__) -#define MOCK_CONST_METHOD10_T(m, ...) MOCK_CONST_METHOD10(m, __VA_ARGS__) - -#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 0, __VA_ARGS__) -#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 1, __VA_ARGS__) -#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 2, __VA_ARGS__) -#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 3, __VA_ARGS__) -#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 4, __VA_ARGS__) -#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 5, __VA_ARGS__) -#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 6, __VA_ARGS__) -#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 7, __VA_ARGS__) -#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 8, __VA_ARGS__) -#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 9, __VA_ARGS__) -#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(, ct, m, 10, __VA_ARGS__) - -#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 0, __VA_ARGS__) -#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 1, __VA_ARGS__) -#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 2, __VA_ARGS__) -#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 3, __VA_ARGS__) -#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 4, __VA_ARGS__) -#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 5, __VA_ARGS__) -#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 6, __VA_ARGS__) -#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 7, __VA_ARGS__) -#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 8, __VA_ARGS__) -#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 9, __VA_ARGS__) -#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, ...) \ - GMOCK_INTERNAL_MOCK_METHODN(const, ct, m, 10, __VA_ARGS__) - -#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD0_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD1_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD2_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD3_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD4_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD5_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD6_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD7_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD8_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD9_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_METHOD10_WITH_CALLTYPE(ct, m, __VA_ARGS__) - -#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, __VA_ARGS__) -#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \ - MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, __VA_ARGS__) - -#define GMOCK_INTERNAL_MOCK_METHODN(constness, ct, Method, args_num, ...) \ - GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE( \ - args_num, ::testing::internal::identity_t<__VA_ARGS__>); \ - GMOCK_INTERNAL_MOCK_METHOD_IMPL( \ - args_num, Method, GMOCK_PP_NARG0(constness), 0, 0, , ct, , \ - (::testing::internal::identity_t<__VA_ARGS__>)) - -#define GMOCK_MOCKER_(arity, constness, Method) \ - GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__) - -#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ diff --git a/tests/lib/googlemock/include/gmock/gmock-matchers.h b/tests/lib/googlemock/include/gmock/gmock-matchers.h deleted file mode 100644 index 6282901145..0000000000 --- a/tests/lib/googlemock/include/gmock/gmock-matchers.h +++ /dev/null @@ -1,5610 +0,0 @@ -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Google Mock - a framework for writing C++ mock classes. -// -// The MATCHER* family of macros can be used in a namespace scope to -// define custom matchers easily. -// -// Basic Usage -// =========== -// -// The syntax -// -// MATCHER(name, description_string) { statements; } -// -// defines a matcher with the given name that executes the statements, -// which must return a bool to indicate if the match succeeds. Inside -// the statements, you can refer to the value being matched by 'arg', -// and refer to its type by 'arg_type'. -// -// The description string documents what the matcher does, and is used -// to generate the failure message when the match fails. Since a -// MATCHER() is usually defined in a header file shared by multiple -// C++ source files, we require the description to be a C-string -// literal to avoid possible side effects. It can be empty, in which -// case we'll use the sequence of words in the matcher name as the -// description. -// -// For example: -// -// MATCHER(IsEven, "") { return (arg % 2) == 0; } -// -// allows you to write -// -// // Expects mock_foo.Bar(n) to be called where n is even. -// EXPECT_CALL(mock_foo, Bar(IsEven())); -// -// or, -// -// // Verifies that the value of some_expression is even. -// EXPECT_THAT(some_expression, IsEven()); -// -// If the above assertion fails, it will print something like: -// -// Value of: some_expression -// Expected: is even -// Actual: 7 -// -// where the description "is even" is automatically calculated from the -// matcher name IsEven. -// -// Argument Type -// ============= -// -// Note that the type of the value being matched (arg_type) is -// determined by the context in which you use the matcher and is -// supplied to you by the compiler, so you don't need to worry about -// declaring it (nor can you). This allows the matcher to be -// polymorphic. For example, IsEven() can be used to match any type -// where the value of "(arg % 2) == 0" can be implicitly converted to -// a bool. In the "Bar(IsEven())" example above, if method Bar() -// takes an int, 'arg_type' will be int; if it takes an unsigned long, -// 'arg_type' will be unsigned long; and so on. -// -// Parameterizing Matchers -// ======================= -// -// Sometimes you'll want to parameterize the matcher. For that you -// can use another macro: -// -// MATCHER_P(name, param_name, description_string) { statements; } -// -// For example: -// -// MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; } -// -// will allow you to write: -// -// EXPECT_THAT(Blah("a"), HasAbsoluteValue(n)); -// -// which may lead to this message (assuming n is 10): -// -// Value of: Blah("a") -// Expected: has absolute value 10 -// Actual: -9 -// -// Note that both the matcher description and its parameter are -// printed, making the message human-friendly. -// -// In the matcher definition body, you can write 'foo_type' to -// reference the type of a parameter named 'foo'. For example, in the -// body of MATCHER_P(HasAbsoluteValue, value) above, you can write -// 'value_type' to refer to the type of 'value'. -// -// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P$n to -// support multi-parameter matchers. -// -// Describing Parameterized Matchers -// ================================= -// -// The last argument to MATCHER*() is a string-typed expression. The -// expression can reference all of the matcher's parameters and a -// special bool-typed variable named 'negation'. When 'negation' is -// false, the expression should evaluate to the matcher's description; -// otherwise it should evaluate to the description of the negation of -// the matcher. For example, -// -// using testing::PrintToString; -// -// MATCHER_P2(InClosedRange, low, hi, -// std::string(negation ? "is not" : "is") + " in range [" + -// PrintToString(low) + ", " + PrintToString(hi) + "]") { -// return low <= arg && arg <= hi; -// } -// ... -// EXPECT_THAT(3, InClosedRange(4, 6)); -// EXPECT_THAT(3, Not(InClosedRange(2, 4))); -// -// would generate two failures that contain the text: -// -// Expected: is in range [4, 6] -// ... -// Expected: is not in range [2, 4] -// -// If you specify "" as the description, the failure message will -// contain the sequence of words in the matcher name followed by the -// parameter values printed as a tuple. For example, -// -// MATCHER_P2(InClosedRange, low, hi, "") { ... } -// ... -// EXPECT_THAT(3, InClosedRange(4, 6)); -// EXPECT_THAT(3, Not(InClosedRange(2, 4))); -// -// would generate two failures that contain the text: -// -// Expected: in closed range (4, 6) -// ... -// Expected: not (in closed range (2, 4)) -// -// Types of Matcher Parameters -// =========================== -// -// For the purpose of typing, you can view -// -// MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... } -// -// as shorthand for -// -// template -// FooMatcherPk -// Foo(p1_type p1, ..., pk_type pk) { ... } -// -// When you write Foo(v1, ..., vk), the compiler infers the types of -// the parameters v1, ..., and vk for you. If you are not happy with -// the result of the type inference, you can specify the types by -// explicitly instantiating the template, as in Foo(5, -// false). As said earlier, you don't get to (or need to) specify -// 'arg_type' as that's determined by the context in which the matcher -// is used. You can assign the result of expression Foo(p1, ..., pk) -// to a variable of type FooMatcherPk. This -// can be useful when composing matchers. -// -// While you can instantiate a matcher template with reference types, -// passing the parameters by pointer usually makes your code more -// readable. If, however, you still want to pass a parameter by -// reference, be aware that in the failure message generated by the -// matcher you will see the value of the referenced object but not its -// address. -// -// Explaining Match Results -// ======================== -// -// Sometimes the matcher description alone isn't enough to explain why -// the match has failed or succeeded. For example, when expecting a -// long string, it can be very helpful to also print the diff between -// the expected string and the actual one. To achieve that, you can -// optionally stream additional information to a special variable -// named result_listener, whose type is a pointer to class -// MatchResultListener: -// -// MATCHER_P(EqualsLongString, str, "") { -// if (arg == str) return true; -// -// *result_listener << "the difference: " -/// << DiffStrings(str, arg); -// return false; -// } -// -// Overloading Matchers -// ==================== -// -// You can overload matchers with different numbers of parameters: -// -// MATCHER_P(Blah, a, description_string1) { ... } -// MATCHER_P2(Blah, a, b, description_string2) { ... } -// -// Caveats -// ======= -// -// When defining a new matcher, you should also consider implementing -// MatcherInterface or using MakePolymorphicMatcher(). These -// approaches require more work than the MATCHER* macros, but also -// give you more control on the types of the value being matched and -// the matcher parameters, which may leads to better compiler error -// messages when the matcher is used wrong. They also allow -// overloading matchers based on parameter types (as opposed to just -// based on the number of parameters). -// -// MATCHER*() can only be used in a namespace scope as templates cannot be -// declared inside of a local class. -// -// More Information -// ================ -// -// To learn more about using these macros, please search for 'MATCHER' -// on -// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md -// -// This file also implements some commonly used argument matchers. More -// matchers can be defined by the user implementing the -// MatcherInterface interface if necessary. -// -// See googletest/include/gtest/gtest-matchers.h for the definition of class -// Matcher, class MatcherInterface, and others. - -// IWYU pragma: private, include "gmock/gmock.h" -// IWYU pragma: friend gmock/.* - -#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_ -#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_ - -#include -#include -#include -#include -#include -#include -#include // NOLINT -#include -#include -#include -#include -#include - -#include "gmock/internal/gmock-internal-utils.h" -#include "gmock/internal/gmock-port.h" -#include "gmock/internal/gmock-pp.h" -#include "gtest/gtest.h" - -// MSVC warning C5046 is new as of VS2017 version 15.8. -#if defined(_MSC_VER) && _MSC_VER >= 1915 -#define GMOCK_MAYBE_5046_ 5046 -#else -#define GMOCK_MAYBE_5046_ -#endif - -GTEST_DISABLE_MSC_WARNINGS_PUSH_( - 4251 GMOCK_MAYBE_5046_ /* class A needs to have dll-interface to be used by - clients of class B */ - /* Symbol involving type with internal linkage not defined */) - -namespace testing { - -// To implement a matcher Foo for type T, define: -// 1. a class FooMatcherImpl that implements the -// MatcherInterface interface, and -// 2. a factory function that creates a Matcher object from a -// FooMatcherImpl*. -// -// The two-level delegation design makes it possible to allow a user -// to write "v" instead of "Eq(v)" where a Matcher is expected, which -// is impossible if we pass matchers by pointers. It also eases -// ownership management as Matcher objects can now be copied like -// plain values. - -// A match result listener that stores the explanation in a string. -class StringMatchResultListener : public MatchResultListener { - public: - StringMatchResultListener() : MatchResultListener(&ss_) {} - - // Returns the explanation accumulated so far. - std::string str() const { return ss_.str(); } - - // Clears the explanation accumulated so far. - void Clear() { ss_.str(""); } - - private: - ::std::stringstream ss_; - - StringMatchResultListener(const StringMatchResultListener&) = delete; - StringMatchResultListener& operator=(const StringMatchResultListener&) = - delete; -}; - -// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION -// and MUST NOT BE USED IN USER CODE!!! -namespace internal { - -// The MatcherCastImpl class template is a helper for implementing -// MatcherCast(). We need this helper in order to partially -// specialize the implementation of MatcherCast() (C++ allows -// class/struct templates to be partially specialized, but not -// function templates.). - -// This general version is used when MatcherCast()'s argument is a -// polymorphic matcher (i.e. something that can be converted to a -// Matcher but is not one yet; for example, Eq(value)) or a value (for -// example, "hello"). -template -class MatcherCastImpl { - public: - static Matcher Cast(const M& polymorphic_matcher_or_value) { - // M can be a polymorphic matcher, in which case we want to use - // its conversion operator to create Matcher. Or it can be a value - // that should be passed to the Matcher's constructor. - // - // We can't call Matcher(polymorphic_matcher_or_value) when M is a - // polymorphic matcher because it'll be ambiguous if T has an implicit - // constructor from M (this usually happens when T has an implicit - // constructor from any type). - // - // It won't work to unconditionally implicit_cast - // polymorphic_matcher_or_value to Matcher because it won't trigger - // a user-defined conversion from M to T if one exists (assuming M is - // a value). - return CastImpl(polymorphic_matcher_or_value, - std::is_convertible>{}, - std::is_convertible{}); - } - - private: - template - static Matcher CastImpl(const M& polymorphic_matcher_or_value, - std::true_type /* convertible_to_matcher */, - std::integral_constant) { - // M is implicitly convertible to Matcher, which means that either - // M is a polymorphic matcher or Matcher has an implicit constructor - // from M. In both cases using the implicit conversion will produce a - // matcher. - // - // Even if T has an implicit constructor from M, it won't be called because - // creating Matcher would require a chain of two user-defined conversions - // (first to create T from M and then to create Matcher from T). - return polymorphic_matcher_or_value; - } - - // M can't be implicitly converted to Matcher, so M isn't a polymorphic - // matcher. It's a value of a type implicitly convertible to T. Use direct - // initialization to create a matcher. - static Matcher CastImpl(const M& value, - std::false_type /* convertible_to_matcher */, - std::true_type /* convertible_to_T */) { - return Matcher(ImplicitCast_(value)); - } - - // M can't be implicitly converted to either Matcher or T. Attempt to use - // polymorphic matcher Eq(value) in this case. - // - // Note that we first attempt to perform an implicit cast on the value and - // only fall back to the polymorphic Eq() matcher afterwards because the - // latter calls bool operator==(const Lhs& lhs, const Rhs& rhs) in the end - // which might be undefined even when Rhs is implicitly convertible to Lhs - // (e.g. std::pair vs. std::pair). - // - // We don't define this method inline as we need the declaration of Eq(). - static Matcher CastImpl(const M& value, - std::false_type /* convertible_to_matcher */, - std::false_type /* convertible_to_T */); -}; - -// This more specialized version is used when MatcherCast()'s argument -// is already a Matcher. This only compiles when type T can be -// statically converted to type U. -template -class MatcherCastImpl> { - public: - static Matcher Cast(const Matcher& source_matcher) { - return Matcher(new Impl(source_matcher)); - } - - private: - class Impl : public MatcherInterface { - public: - explicit Impl(const Matcher& source_matcher) - : source_matcher_(source_matcher) {} - - // We delegate the matching logic to the source matcher. - bool MatchAndExplain(T x, MatchResultListener* listener) const override { - using FromType = typename std::remove_cv::type>::type>::type; - using ToType = typename std::remove_cv::type>::type>::type; - // Do not allow implicitly converting base*/& to derived*/&. - static_assert( - // Do not trigger if only one of them is a pointer. That implies a - // regular conversion and not a down_cast. - (std::is_pointer::type>::value != - std::is_pointer::type>::value) || - std::is_same::value || - !std::is_base_of::value, - "Can't implicitly convert from to "); - - // Do the cast to `U` explicitly if necessary. - // Otherwise, let implicit conversions do the trick. - using CastType = - typename std::conditional::value, - T&, U>::type; - - return source_matcher_.MatchAndExplain(static_cast(x), - listener); - } - - void DescribeTo(::std::ostream* os) const override { - source_matcher_.DescribeTo(os); - } - - void DescribeNegationTo(::std::ostream* os) const override { - source_matcher_.DescribeNegationTo(os); - } - - private: - const Matcher source_matcher_; - }; -}; - -// This even more specialized version is used for efficiently casting -// a matcher to its own type. -template -class MatcherCastImpl> { - public: - static Matcher Cast(const Matcher& matcher) { return matcher; } -}; - -// Template specialization for parameterless Matcher. -template -class MatcherBaseImpl { - public: - MatcherBaseImpl() = default; - - template - operator ::testing::Matcher() const { // NOLINT(runtime/explicit) - return ::testing::Matcher(new - typename Derived::template gmock_Impl()); - } -}; - -// Template specialization for Matcher with parameters. -template